Как исправить ошибку «Поле "Код" не заполнено» и настроить синхронизацию в 1С:Управление торговлей 11.4

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе работы с конфигурацией 1С:Управление торговлей 11.4 (УТ 11.4) администраторы и программисты часто сталкиваются с необходимостью изменения транспортного механизма обмена данными. Типичная ситуация: сначала была настроена Распределенная информационная база (РИБ), но позже возникла потребность перейти на Универсальный формат (EnterpriseData) или прямое подключение. При попытке сохранить новые правила отправки данных система может выдать критическую ошибку: «Поле "Код" не заполнено!». При этом визуально в форме настройки все поля могут казаться заполненными.

В рамках данной статьи мы разберем причины возникновения этой ошибки, методы её устранения и особенности синхронизации розничных документов, таких как ЧекККМ и ОтчетОРозничныхПродажах.

Выясняем причину ошибки «Поле "Код" не заполнено»

Разберем ситуацию подробно. Ошибка возникает на уровне платформы при попытке записи объекта в ПланОбмена. Каждый узел в любом плане обмена обязан иметь уникальный строковый идентификатор — Код. Когда мы удаляем старую синхронизацию (например, РИБ) и пытаемся создать новую, в базе могут остаться «фантомные» записи или некорректно очищенные узлы.

Проанализируем основные сценарии возникновения проблемы:

  1. Затирание кода предопределенного узла: В каждом плане обмена есть элемент «Этот узел». Если при манипуляциях с РИБ или некорректном удалении настроек код этого узла стал пустым, система не позволит создать ни один другой узел в этом плане, так как запись основного узла будет проходить с ошибкой.
  2. Скрытые записи в списке синхронизаций: Часто при настройке обмена через «Универсальный формат» создается запись, которая не отображается в общем списке, но физически присутствует в таблице плана обмена с незаполненным кодом.
  3. Конфликт типов обмена: Использование одного и того же плана обмена для РИБ и для универсального обмена без предварительной очистки метаданных может привести к логической несогласованности данных.

Устранение ошибки через групповое изменение реквизитов

Если мы столкнулись с тем, что поле Код недоступно для редактирования в обычном интерфейсе, воспользуемся инструментами для разработчиков или стандартной обработкой. Рассмотрим по шагам, как исправить ситуацию:

  1. Перейдем в раздел НСИ и администрирование – Обслуживание – Корректировка данных.
  2. Откроем обработку Групповое изменение реквизитов (или воспользуемся внешней обработкой «Универсальный подбор и обработка объектов»).
  3. В поле «Выбирать элементы типа» найдем нужный ПланОбмена. Обычно это СинхронизацияДанныхЧерезУниверсальныйФормат или тот план, который использовался при создании РИБ.
  4. Нажмем «Дополнительные параметры» и установим флаг «Показывать служебные реквизиты».
  5. В списке элементов найдем те, у которых поле Код пустое. В колонке «Новое значение» введем уникальный код (например, «УТ001»).
  6. Нажмем кнопку «Изменить реквизиты».

После того как все узлы в плане обмена получат свои уникальные коды, ошибка при сохранении правил синхронизации должна исчезнуть. Проверим это, повторно зайдя в настройки синхронизации и попытавшись сохранить параметры отправки.

Особенности прямого подключения (COM) и файлового обмена

Рассмотрим ситуацию, когда прямое подключение (через COM-соединение) вызывает ошибки, в то время как обмен через файлы проходит успешно. Выясним причину такого поведения.

Прямое соединение требует регистрации библиотеки comcntr.dll и совпадения разрядности клиентского приложения и сервера 1С. Кроме того, при прямой связи система пытается мгновенно инициализировать метаданные в обеих базах. Если в одной из баз структура плана обмена нарушена (пустые коды), COM-соединение прервется еще на этапе инициализации.

Рекомендация: Если базы находятся на одном сервере или в терминальной среде, и прямое подключение выдает неинформативные ошибки, используйте обмен через локальный каталог (файловый обмен). Это более стабильный метод, который позволяет изолировать процессы обработки данных в каждой базе.

Проблема синхронизации чеков и закрытия кассовых смен

Проанализируем сложный момент, связанный с розничной торговлей. Пользователи часто замечают, что документы ЧекККМ синхронизируются между базами, но после закрытия смены в одной базе они удаляются (архивируются), а в другой — «зависают».

Разберем логику работы 1С в этом контексте:

Документы ЧекККМ являются оперативными. При выполнении операции «Закрытие смены» в 1С происходит следующее:

  1. Создается сводный документ ОтчетОРозничныхПродажах.
  2. Оперативные чеки за смену архивируются или удаляются (в зависимости от настроек).

Если настроена двусторонняя синхронизация чеков, то база-приемник получает чеки как самостоятельные объекты. Однако команда на удаление или архивацию чека после закрытия смены в источнике не всегда передается в приемник через универсальный формат. В результате в базе-приемнике остаются «лишние» чеки, которые фактически уже вошли в состав Отчета о розничных продажах, что приводит к задвоению выручки в отчетах.

Как правильно настроить обмен розничными данными

Для исключения дублирования данных и корректного учета продаж выполним следующие действия:

  1. Настройка фильтрации по складам: В правилах отправки данных для каждого узла синхронизации установим жесткий фильтр по конкретному складу или подразделению. Это гарантирует, что чеки из Магазина №1 никогда не попадут в базу Магазина №2.
  2. Исключение документов «Чек ККМ» из обмена: Рекомендуется полностью отключить выгрузку документа ЧекККМ в настройках правил обмена. Вместо этого настроим выгрузку только документа ОтчетОРозничныхПродажах.
  3. Регистрация изменений: После изменения состава выгружаемых документов необходимо очистить старую регистрацию изменений. Для этого воспользуемся обработкой «Регистрация изменений для обмена данными» и удалим все зарегистрированные объекты типа ЧекККМ.

Рассмотрим пример кода для программной очистки регистрации изменений, если типовая обработка по каким-то причинам недоступна:


ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Метаданные.Документы.ЧекККМ);
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Метаданные.Документы.ОтчетОРозничныхПродажах);

Использование только Отчетов о розничных продажах значительно упрощает схему обмена, уменьшает объем передаваемого трафика и исключает ошибки, связанные с жизненным циклом кассового чека. Синхронизация итогов дня — это наиболее надежная стратегия для распределенных торговых точек.

Резюме по решению задачи

Подведем итоги нашего исследования. Если вы столкнулись с ошибкой незаполненного кода при настройке синхронизации в УТ 11.4 после удаления РИБ, выполните проверку планов обмена через групповое изменение реквизитов. Убедитесь, что у всех узлов, включая «Этот узел», прописаны уникальные коды. Для стабильной работы обмена в рознице отдавайте предпочтение файловому обмену результатами смен (отчетами), а не оперативными чеками, и всегда используйте фильтрацию данных по местам хранения.

← На главную