Почему не регистрируются документы «Авансовый отчет» при обмене между 1С:Бухгалтерия и 1С:Управление торговлей и как решить эту проблему?

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

Синхронизация данных между конфигурациями «1С:Бухгалтерия предприятия, редакция 3.0» (БП) и «1С:Управление торговлей, редакция 11» (УТ) — один из наиболее часто используемых сценариев в экосистеме решений 1С. В современных версиях этот обмен базируется на универсальном формате Enterprise Data (обмен через универсальный формат).

Однако специалисты часто сталкиваются со следующей проблемой: при попытке выгрузить документы Авансовый отчет из БП 3.0 в УТ 11 система упорно отказывается их регистрировать. Документы не уходят ни в автоматическом режиме, ни принудительно через обработку «Регистрация изменений для обмена». При попытке ручной регистрации администратор видит системное сообщение: «Зарегистрировано 0 изменений из N на узле...». В этой статье мы подробно разберем, почему так происходит, рассмотрим техническую суть проблемы и изучим несколько эффективных способов ее решения.

Техническая суть проблемы: почему блокируется регистрация?

В универсальном формате обмена логика регистрации объектов описывается специальными правилами регистрации (ПРД), которые поставляются в составе конфигурации в виде XML-файлов. В отличие от старых версий обмена (на базе «Конвертации данных 2.0»), здесь используется событийная модель подписок на события, которая обращается к правилам регистрации для проверки условий.

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

По умолчанию при создании типовой синхронизации «УТ — БП» со стороны торговли данный флаг в базе бухгалтерии принимает значение Ложь. Сделано это намеренно: методологи фирмы 1С предполагают, что первичный оперативный учет ведется в торговой базе (УТ), откуда данные выгружаются в БП. Обратная миграция авансовых отчетов из бухгалтерии в торговлю в типовом сценарии отключена, чтобы избежать зацикливания обмена, дублирования документов и затирания оперативных данных в УТ упрощенными проводками из БП. Поскольку этот реквизит является служебным, он скрыт из стандартного пользовательского интерфейса настройки синхронизации, что и вызывает тупик у пользователей.

Рассмотрим по шагам все возможные способы решения этой проблемы.

Способ 1. Включение признака «Отправлять авансовые отчеты» через групповое изменение реквизитов

Это самый простой, быстрый и безопасный способ, который не требует изменения конфигурации или снятия ее с поддержки. Мы включим скрытый признак непосредственно в базе «1С:Бухгалтерия предприятия».

  1. Откроем базу БП 3.0 с правами администратора.
  2. Перейдем в раздел Администрирование, далее выберем пункт Обслуживание.
  3. В раскрывающемся блоке Корректировка данных найдем и откроем ссылку Групповое изменение реквизитов.
  4. В поле «Выбирать элементы типа» введем название нашего плана обмена. В зависимости от версии это может быть Синхронизация данных через универсальный формат или специализированный план обмена с УТ.
  5. Нажмем кнопку Дополнительные параметры (в правом верхнем углу или под шестеренкой настройки) и в появившемся окне обязательно установим флаг Показывать служебные реквизиты. Без этого шага система не выведет на экран нужный нам параметр. Нажмем «Администрирование / Готово».
  6. Вернемся к основному окну обработки. Нам крайне важно настроить отбор, чтобы изменения не затронули другие узлы обмена (если они есть). В поле «Отбор» добавим условие: Ссылка Равно [Имя вашего узла обмена с УТ].
  7. В основном списке доступных реквизитов найдем строку Отправлять авансовые отчеты (имя в конфигураторе — ОтправлятьАвансовыйОтчет).
  8. Установим напротив нее галочку и в колонке «Новое значение» выберем вариант Да (Истина).
  9. Нажмем кнопку Изменить реквизиты внизу экрана.

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

Способ 2. Программное включение флага (для разработчиков)

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


// Определим имя плана обмена для универсального формата
ИмяПланаОбмена = "СинхронизацияДанныхЧерезУниверсальныйФормат";

// Найдем нужный узел обмена по коду или наименованию
УзелОбмена = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду("УТ"); // Укажите код вашего узла

Если ЗначениеЗаполнено(УзелОбмена) Тогда
    // Получим объект для редактирования
    ОбъектУзла = УзелОбмена.ПолучитьОбъект();
    
    // Установим служебное свойство в Истина
    ОбъектУзла.ОтправлятьАвансовыеОтчеты = Истина;
    
    // Запишем изменения в базу данных
    ОбъектУзла.Записать();
    
    Сообщить("Свойство 'Отправлять авансовые отчеты' успешно включено для узла: " + УзелОбмена);
Иначе
    Сообщить("Не удалось найти указанный узел плана обмена!");
КонецЕсли;

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

Способ 3. Настройка обмена через вариант «Другая программа»

Существует еще один интересный обходной путь, который не требует работы со служебными реквизитами. При создании настройки синхронизации в БП 3.0 мы можем выбрать шаблон не конкретно «1С:Управление торговлей», а универсальный вариант «Другая программа» (который также работает по технологии Enterprise Data).

При такой настройке система считает получателя абстрактной информационной системой. Как результат, БП не накладывает специфических жестких ограничений, разработанных специально для связки «БП — УТ». Ограничение на регистрацию авансовых отчетов снимается автоматически, и документы начинают свободно регистрироваться и выгружаться. Однако у этого способа есть обратная сторона: могут отключиться и другие полезные фильтры, специфичные для обмена с УТ, поэтому использовать его нужно с осторожностью.

Способ 4. Проверка даты начала действия синхронизации

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

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

  1. В БП 3.0 перейдем в раздел Администрирование — Синхронизация данных — Настройки синхронизации данных.
  2. Откроем свойства нашей синхронизации с УТ и выберем пункт Параметры подключения и правила отправки (или аналогичную кнопку настройки правил).
  3. Обратим внимание на реквизит Начало действия синхронизации / Отправлять документы начиная с даты.
  4. Если вам требуется выгрузить старые авансовые отчеты (например, за прошлый квартал), временно установите эту дату на более ранний период (например, на начало года).
  5. Сохраните настройки и повторите попытку ручной регистрации документов через обработку изменения регистрации.

Способ 5. Изменение правил регистрации в конфигурации «Конвертация данных 3.0»

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

Для этого необходимо:

  1. Выгрузить правила регистрации из конфигурации БП (они хранятся в макетах соответствующего плана обмена).
  2. Открыть XML-файл правил в специализированной базе «Конвертация данных, редакция 3.0».
  3. Найти в списке объектов Документ.АвансовыйОтчет.
  4. Перейти в настройки правил регистрации данного объекта и удалить условное выражение, проверяющее реквизит ОтправлятьАвансовыйОтчет.
  5. Сохранить измененные правила регистрации, выгрузить их в XML и загрузить обратно в БП 3.0 как внешние правила регистрации через настройки синхронизации данных.

Методологические риски выгрузки «Авансовых отчетов» из БП в УТ

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

Рекомендация: Оптимальным решением с точки зрения методологии 1С является создание авансовых отчетов исключительно в оперативной базе (УТ 11) с последующей их односторонней трансляцией в регламентированную базу (БП 3.0). Описанные выше методы по принудительному включению регистрации в БП рекомендуется использовать только для разового переноса исторических данных или в специфических схемах учета, где бухгалтерия строго определена как единственное место ввода первичных документов.

← На главную