Почему при обмене УТ 10.3 в БП 3.0 не заполняются счета учета и как это исправить?

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

Синхронизация данных между конфигурациями «Управление торговлей» (редакция 10.3) и «Бухгалтерия предприятия» (редакция 3.0) — это классический сценарий автоматизации, который активно используется тысячами организаций. Однако в конце 2019 — начале 2020 года многие технические специалисты и бухгалтеры столкнулись с неприятной ситуацией: после очередного обновления конфигурации БП 3.0 (начиная с релизов 3.0.73.х и 3.0.74.х) документы поступления и реализации перестали проводиться после загрузки. В логах синхронизации регистрировалась ошибка: "Поле 'Счёт учёта расчётов с контрагентом' не заполнено".

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

Выясняем причину: почему счета заполняются вручную, но не при обмене?

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

Дело в разнице между интерактивным и программным созданием объектов в платформе «1С:Предприятие»:

  1. Интерактивное создание (вручную): Когда бухгалтер создает документ в интерфейсе программы, срабатывают обработчики событий формы (например, событие ПриИзменении для реквизитов «Контрагент» или «Договор»). Именно эти обработчики вызывают встроенные механизмы конфигурации, которые обращаются к регистрам сведений СчетаУчетаРасчетовСКонтрагентами и заполняют нужные поля на форме.
  2. Программное создание (при обмене): Во время выполнения синхронизации через механизм «Конвертация данных 2.0» (который используется для обмена с УТ 10.3) данные записываются напрямую в базу данных программным путем. Формы документов при этом не открываются, и стандартные форменные обработчики событий не вызываются.

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

В релизах БП 3.0.73.х и 3.0.74.х разработчики фирмы «1С» допустили критическую ошибку (зарегистрирована под кодом 00-00259266). В XML-правилах обмена внутри обработчика загрузки были закомментированы условия проверки типов документов. Программа перестала распознавать документ ПоступлениеТоваровУслуг (и ряд других) как объекты, требующие автоматического заполнения счетов при записи. В результате документы переносились с пустыми счетами учета и оставались в статусе «Не проведен».

---

Способ 1. Официальное исправление (обновление конфигурации)

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

Проанализируем шаги для исправления ситуации штатным путем:

  1. Выполните резервное копирование баз данных «1С:Управление торговлей 10.3» и «1С:Бухгалтерия предприятия 3.0».
  2. Обновите конфигурацию «1С:Бухгалтерия предприятия» до релиза 3.0.75.x или выше. В этих релизах правила конвертации данных уже содержат исправленный код. Для автоматического обновления нескольких информационных баз можно задействовать программу для автоматического архивирования и обновления баз 1С.
  3. Проверьте настройки синхронизации данных в обеих базах. Убедитесь, что используются типовые правила обмена, поставляемые в составе конфигурации. Если ранее для обмена использовались измененные («кастомные») внешние правила из файла, их необходимо обновить или переключить синхронизацию на использование встроенных правил.

---

Способ 2. Ручная правка XML-файла правил обмена

Если по каким-то причинам оперативно обновить конфигурацию «1С:Бухгалтерия предприятия» невозможно (например, база находится на доработке или требует сложного нетипового обновления), вы можете самостоятельно исправить правила обмена. Этот способ требует базовых навыков работы с XML-файлами и XML-редакторами (подойдет даже обычный Блокнот или Notepad++). В качестве альтернативы ручной правке можно использовать готовые обновленные правила обмена из УТ 10.3 в БП 3.0.

Рассмотрим алгоритм внесения изменений по шагам:

  1. Зайдите в базу «1С:Бухгалтерия предприятия» под правами администратора.
  2. Перейдите в раздел Администрирование -> Синхронизация данных.
  3. Откройте настройки вашей синхронизации с УТ 10.3 и выгрузите текущие правила обмена во внешний XML-файл на диск.
  4. Откройте полученный XML-файл в текстовом редакторе и найдите обработчик события, отвечающий за действия после загрузки объектов. Нам нужен блок кода, в котором упоминается документ ПоступлениеТоваровУслуг или ПоступлениеНаРасчетныйСчет.
  5. Проанализируйте строки кода. В ошибочных правилах вы обнаружите закомментированные символами // строки, подобные этой: //ТипОбъекта = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") ИЛИ Из-за этого комментария всё условие проверки типа документа переставало работать корректно.
  6. Чтобы восстановить работоспособность механизма, раскомментируйте эту строку (уберите символы косой черты //) либо добавьте явное заполнение свойств объекта. Нам необходимо добиться того, чтобы для загружаемого документа выполнялся следующий код инициализации:
    
    ДокументОбъект.ДополнительныеСвойства.Вставить("ЗаполнитьСчетаУчетаПередЗаписью", Истина);
    СчетаУчетаВДокументах.ЗаполнитьПередЗаписью(ДокументОбъект, РежимЗаписи);
    
    Именно эта конструкция сообщает платформе, что перед записью документа в базу данных необходимо принудительно запустить серверную процедуру заполнения счетов расчетов и счетов учета номенклатуры из соответствующих регистров сведений БП 3.0.
  7. Сохраните изменения в XML-файле.
  8. Вернитесь в настройки синхронизации в 1С и загрузите измененный XML-файл правил обмена обратно в систему.
  9. Выполните тестовую выгрузку документов из УТ 10.3 и убедитесь, что в БП 3.0 они теперь создаются со всеми заполненными счетами учета и успешно проводятся.

---

Способ 3. Временный обходной путь (Групповая обработка документов)

Что делать, если документы уже перенесены в БП 3.0, их очень много, они не проведены, а исправлять правила обмена прямо сейчас нет возможности? В этом случае мы можем воспользоваться встроенным инструментом платформы для массового программного перезаполнения реквизитов.

Разберем, как восстановить проведение документов с помощью стандартной обработки:

  1. В конфигурации «Бухгалтерия предприятия 3.0» перейдите в раздел Администрирование -> Обслуживание -> Корректировка данных.
  2. Выберите пункт Групповое изменение реквизитов.
  3. В поле «Выбирать элементы» укажите тип данных: Документ: Поступление (акты, накладные, УПД).
  4. При необходимости настройте отбор (например, укажите конкретный период, за который документы перенеслись с ошибками, или выберите только непроведенные документы).
  5. В списке доступных для изменения реквизитов найдите параметры, связанные со счетами учета расчетов (например, «Счет учета расчетов с контрагентом», «Счет учета расчетов по авансам»).
  6. Вместо ручного указания конкретных счетов (ведь у разных договоров они могут отличаться, например 60.01 и 76.05) мы можем просто запустить перезапись документов с вызовом стандартных алгоритмов заполнения. Для этого нажмите кнопку Дополнительные параметры (в правом нижнем углу формы обработки) и установите флаг «Вызывать обработчики при записи».
  7. Запустите процесс изменения. Платформа начнет последовательно перезаписывать каждый выбранный документ. Благодаря включенному флагу вызова обработчиков, система программно вызовет механизмы заполнения счетов учета, которые обратятся к регистрам сведений, подставят нужные счета в шапку и табличные части документов, а затем автоматически проведут их.

Используя предложенные методики, вы сможете быстро локализовать проблему незаполнения счетов учета при синхронизации УТ 10.3 и БП 3.0, исправить правила конвертации данных и восстановить корректный документооборот между базами. Для проверки корректности перенесенных данных можно использовать инструмент для сверки документов между УТ 10.3 и БП 3.0.

← На главную