почему заказы 1С не проводятся после обновления: конфликт описания типов
«Описание типов» реквизита в 1С — список значений, которые платформа готова принять для этого поля: например, «Число» и служебное «Неопределено». Если внешняя система — сайт, обмен с другой базой, личный кабинет клиента — присылает значение не из этого списка, 1С отклоняет не поле, а документ целиком. Так после планового обновления заказы с сайта перестают проводиться, хотя выглядят в базе как уже пришедшие.
первый симптом: заказы зависают в статусе «не проведён»
Оптовый дистрибьютор хозтоваров в Москве держит личный кабинет на сайте: клиент сам собирает заказ, а сайт пишет его в 1С:Управление торговлей через HTTP-сервис несколько раз в час, без участия менеджера. Во вторник утром, сразу после планового обновления конфигурации, менеджеры заметили странность: заказы приходят, видны в списке документов, но открываются пустыми — без суммы, без товарных позиций, без статуса на отгрузку. Склад не видит их в очереди на сборку, хотя клиент уже оплатил и ждёт курьера. За то же утро таких заказов набралось достаточно, чтобы старший менеджер завёл отдельный список и стал вручную сверять его с оплатами в банк-клиенте — обычная рутина превратилась в отдельный процесс на полдня.
Сначала подумали на сеть — обмен работал не первый год, и первая версия объяснения всегда «сайт что-то не отправил». Проверили — сайт исправно писал заказы, счётчик обмена рос, ошибок на его стороне не было. Разгадка нашлась не в интерфейсе, а в техническом журнале обмена: там повторялась, раз за разом на разных заказах, одна и та же строка — «Значение не соответствует типу, заданному для реквизита Скидка». Ошибка не мешала записи документа — она мешала его проведению. Заказ формально существовал в базе, но как пустой каркас: реквизиты определены, а данные — нет.
что скрывается за «описанием типов» и почему рушится весь документ
У каждого реквизита объекта в 1С не просто поле ввода, а жёстко заданный список допустимых типов значения — это и есть его описание типов, иногда с составным типом данных из нескольких вариантов сразу. Реквизит «Скидка» до обновления разрешал два варианта: «Число» — если скидка назначена, и «Неопределено» — если её нет вовсе. Сайт для заказов без скидки годами присылал именно пустое значение, и платформа честно понимала его как «Неопределено», ровно как задумано изначально.
Плановое обновление типовой конфигурации сузило список: тип «Неопределено» из описания убрали, оставили только «Число» — для внутренних заказов менеджеров это корректно, там скидка считается заранее и всегда есть значение. Но обмен с сайтом по-прежнему шлёт пустое значение, когда скидки нет, а пустое значение больше не входит в допустимые типы реквизита.
почему ошибка бьёт по всему документу, а не по одному полю
Платформа проверяет структуру объекта целиком при записи, а не поле за полем с возможностью пропустить одно. Реквизит вне описанных для него типов — повод отклонить весь объект, а не оставить его частично заполненным с пустой ячейкой вместо суммы скидки. Отсюда пустой заказ вместо понятной ошибки на конкретном поле в интерфейсе менеджера: интерфейс просто не узнаёт, что документ вообще пытались провести. Та же логика касается не только документов — справочников, регистров сведений, любых объектов с составным типом реквизита, если через обмен, веб-сервис или загрузку из внешнего файла в них может прийти значение за пределами описанного списка типов.
тот же сценарий в 1С:ERP и других конфигурациях
Реквизит «Скидка» — не единственный кандидат на такую поломку. У клиентов на 1С:ERP похожая история регулярно случается с реквизитом «Ответственный» или «Контактное лицо»: составной тип данных из ссылки на справочник пользователей и простой строки, потому что часть интеграций — CRM, маркетплейс, форма обратной связи на сайте — присылает имя человека текстом, а не ссылкой на элемент справочника. Стоит обновлению или доработке сузить список типов до одной ссылки, обмен с внешней системой перестаёт писать документы точно так же, как в примере со скидкой. Проверять описание типов реквизитов, завязанных на внешний обмен, стоит при любой конфигурации, а не только при управлении торговлей.
цена простоя: что теряет бизнес, пока конфликт типов не устранён
Заказ оплачен, но не виден складу — кладовщик либо звонит клиенту вручную, либо собирает заказ по памяти из переписки в мессенджере, теряя на этом рабочее время каждый час, пока баг жив. Менеджер вместо продаж вручную перепроверяет очередь обмена документ за документом, отделяя пустые заказы от нормальных, и по несколько раз в день объясняет клиентам, почему отгрузка задерживается. Часть клиентов, не дождавшись подтверждения, звонит повторно или пишет в поддержку — нагрузка на первую линию растёт ровно тогда, когда там и так разбираются с последствиями обновления. Постоянные клиенты с отсрочкой платежа особенно чувствительны к задержке: для них зависший заказ означает не просто неудобство, а вопрос к менеджеру, почему компания не может отгрузить то, что уже оплачено.
Отчёт по продажам за день не сходится: часть документов не проведена, а значит не попала в выручку и в остатки склада. Если ошибку не закрыть за день-два, расхождение переезжает в закрытие месяца — бухгалтерии придётся вручную сверять, какие из «пустых» заказов на самом деле оплачены и отгружены, а какие зависли по вине обмена, и подтверждать это по каждому клиенту отдельно, поднимая переписку и звонки недельной давности.
три способа закрыть конфликт типов
Когда причина найдена, встаёт вопрос не «чинить», а как чинить так, чтобы не словить тот же баг на следующем обновлении. У этого клиента рассматривали три варианта, и они разошлись именно по устойчивости к будущим обновлениям, а не по скорости первого запуска.
| способ | где меняется | риск на следующем обновлении | время на внедрение |
|---|---|---|---|
| расширить описание типов реквизита в конфигураторе | типовые метаданные объекта | высокий — обновление перезапишет правку | несколько часов |
| конвертер значений на стороне обмена | код интеграции, вне конфигурации | низкий — конфигурация остаётся типовой | 1–2 дня |
| защитное расширение с обработчиком «ПередЗаписью» | расширение конфигурации, не сама конфигурация | низкий — расширения переживают обновления | 2–3 дня |
Первый вариант самый быстрый, но обманчивый: правка описания типов прямо в конфигураторе держится ровно до следующего планового обновления, которое перезапишет типовые метаданные и молча вернёт проблему — команда узнает об этом снова из зависших заказов, а не из уведомления об обновлении. Для интеграции, которая должна прожить не один релиз, разумнее конвертер на стороне обмена или защитное расширение — оба варианта пережили дальнейшие обновления конфигурации у этого клиента, а конвертер к тому же вообще не требует правки типовых объектов. Такую доработку 1С мы обычно закладываем сразу в проект обмена, а не добавляем по факту сбоя.
как выглядело решение и результат
Наша команда подключилась в рамках сопровождения интеграции: за день собрали конвертер на стороне HTTP-сервиса, который перед записью документа переводит пустые и текстовые значения скидки в корректный тип реквизита — «Неопределено» там, где скидки нет, и «Число» с нулём там, где этого ожидает типовая логика документа. Отдельно добавили расширение-подстраховку на случай, если значение придёт напрямую через другой канал обмена, минуя конвертер, — например, при разовой ручной загрузке файла от другого поставщика данных.
Очередь непроведённых заказов очистилась в тот же день: склад снова видит заказы в реальном времени, менеджеры вернулись к продажам, а не к разбору журнала ошибок обмена. Перед передачей в работу конвертер прогнали на копии базы с реальными заказами за прошлую неделю — это заняло меньше часа и сразу показало, что старые зависшие документы после правки проводятся штатно, без ручной донастройки каждого.
как не словить тот же баг на следующем обновлении
Перед каждым обновлением 1С, где есть внешний обмен — сайт, личный кабинет, другая учётная система, — стоит заранее выписать список реквизитов, задействованных в обмене, и сверить их описание типов до и после обновления на тестовой копии базы, а не на боевой. Обновление часто сужает список допустимых типов из соображений внутренней логики платформы, и обмен узнаёт об этом только на реальных данных, когда заказы уже зависли и склад уже звонит клиентам.
- ✓выписать реквизиты объектов, которые участвуют во внешнем обмене, до старта обновления
- ✓сравнить описание типов каждого такого реквизита в старой и новой редакции конфигурации
- ✓прогнать реальный поток обмена на тестовой копии базы перед переносом обновления на боевую
- ✓для реквизитов с составным типом держать логику приведения значений вне типовой конфигурации — в конвертере или расширении
При внедрении 1С мы закладываем контракт типов заранее: какие значения реально может прислать внешняя система, а не то, что разрешает текущая версия типовой конфигурации на момент старта проекта. Это отдельная задача внедрения, а не разовая правка после сбоя, и закладывается она на этапе проектирования обмена — вместе с планом, что произойдёт с контрактом на следующем обновлении, а не только на первом релизе.
❓ Частые вопросы
что такое описание типов реквизита в 1С простыми словами
Это список допустимых типов значения для конкретного поля объекта — например, Число или Неопределено. Платформа проверяет каждое значение при записи, и если оно не входит в список, отклоняет не поле, а весь объект целиком.
почему обмен с сайтом сломался именно после обновления 1С, а не раньше
Обновление типовой конфигурации меняет описание типов реквизитов под свою внутреннюю логику, не зная о внешних обменах. Если реквизит раньше принимал пустое значение, а после обновления — только число, старый формат данных от сайта перестаёт проходить проверку.
можно ли просто вернуть старое описание типов в конфигураторе и не заниматься доработкой
Можно, но это временная мера: следующее обновление типовой конфигурации снова перезапишет метаданные объекта, и заказы зависнут повторно. Устойчивое решение — конвертер значений или расширение, которые не трогают типовые объекты.
как понять, что у нас именно эта проблема, а не сбой сети или ошибка в самом обмене
Признак — заказы появляются в базе, но не проводятся и выглядят пустыми, при этом в журнале обмена есть строка вида «Значение не соответствует типу, заданному для реквизита». Это указывает именно на конфликт описания типов, а не на потерю данных при передаче.
сколько стоит устранить такой конфликт типов при внедрении или сопровождении 1С
Зависит от объёма обмена и числа затронутых реквизитов: разовая доработка через конвертер или расширение обычно укладывается в несколько часов сопровождения по ставке 3800 руб/час. Точную оценку даём после разбора конкретного журнала ошибок и схемы обмена.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

