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

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

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

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

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

Выясним причину такого поведения системы. В старых редакциях БП и при использовании определенных версий правил обмена логика заполнения счетов могла быть зашита непосредственно в код правил (в конфигурации Конвертация данных 2.0). Однако фирма «1С» постепенно переносит всю логику заполнения на сторону конфигурации-приемника (БП 3.0). Рассмотрим основные факторы:

  1. Режим загрузки данных: При обмене данными почти всегда устанавливается признак ОбменДанными.Загрузка = Истина. В этом режиме в БП 3.0 отключаются многие стандартные обработчики событий (например, ПередЗаписью или ОбработкаЗаполнения), которые в обычном режиме отвечают за подстановку счетов учета из регистров.
  2. Изменение структуры регистра «Счета учета номенклатуры»: После обновлений (особенно таких крупных, как переход на НДС 20% в релизе 3.0.65) в БП могли измениться приоритеты поиска счетов. Если в УТ 10.3 счета учета не ведутся (что является нормой для управленческого учета), то БП должна подставить их самостоятельно. Если в правилах обмена стоит флаг «Не замещать счета», а документ пришел пустым, система может оставить поля незаполненными.
  3. Актуальность правил обмена: Правила обмена (файлы .xml) всегда жестко привязаны к релизам. Если вы обновили БП до версии 3.0.65.91, а правила в УТ остались от старой версии, то структура данных (например, новые ставки НДС или новые субсчета) может не совпадать, что блокирует корректную работу программных модулей заполнения.

Шаг 1: Обновление правил обмена из дистрибутива

Проанализируем наиболее частое решение — обновление самих правил. Многие пользователи ошибочно ищут новые правила в обновлении Бухгалтерии, но для пары УТ 10.3 — БП 3.0 актуальные правила всегда поставляются вместе с Управлением торговлей. Рассмотрим пошагово, где их найти:

  1. Перейдем в каталог, куда устанавливаются шаблоны обновлений 1С (обычно это AppData\Roaming\1C\1cv8\tmplts\...).
  2. Найдем папку с версией вашей УТ 10.3.
  3. Внутри перейдем в подкаталог \Обмены данными\Обмен с конфигурацией Бухгалтерия предприятия, ред. 3.0\.
  4. Там будет находиться файл с правилами обмена (например, Trade_Accounting3_Rules.xml).

Эти правила необходимо загрузить в настройку синхронизации данных как в УТ, так и (если требуется) в БП. Важно помнить, что при переходе на новые ставки НДС (как это было в релизе 3.0.65) старые правила просто не «знают» о существовании новых перечислений, что ломает всю цепочку записи документа.

Шаг 2: Проверка регистра «Счета учета номенклатуры» в БП

Посмотрим на ситуацию со стороны Бухгалтерии предприятия. Счета в документах подставляются на основе регистра сведений СчетаУчетаНоменклатуры. Проанализируем возможные проблемы в нем:

Во-первых, проверьте, не появились ли дубли номенклатуры или видов номенклатуры после обмена. Если из УТ пришел «Вид номенклатуры», которого раньше не было, и для него не прописаны счета в БП, автоподстановка не сработает.

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

Шаг 3: Исправление правил через «Конвертацию данных» (для программистов)

Если обновление типовых правил не помогает, разберем программный способ решения проблемы. Нам нужно заставить БП 3.0 заполнять счета учета, несмотря на режим загрузки. Для этого в конфигурации Конвертация данных 2.0 в ПКО (Правила конвертации объектов) для нужных документов в обработчик «ПослеЗагрузки» можно добавить принудительный вызов процедуры заполнения счетов.

Рассмотрим пример кода, который можно внедрить в обработчик:


// В обработчике "ПослеЗагрузки" ПКО документа
// Проверим, что это не удаление объекта
Если Не ИнформацияОбОбъекте.ДанныеУдалены Тогда
    
    // Вызываем стандартный механизм БП 3.0 для заполнения счетов
    // Это заставит систему обратиться к регистру СчетаУчетаНоменклатуры
    Объект.ЗаполнитьСчетаУчета();
    
    // Если требуется дозаполнение других реквизитов, можно вызвать:
    // Объект.ПриЗаписи(Ложь); 
    
    // Важно: если мы меняем объект, его нужно записать, 
    // но обычно при обмене запись происходит автоматически после этого обработчика
КонецЕсли;

Использование метода ЗаполнитьСчетаУчета() является самым надежным способом, так как он использует внутренние механизмы конфигурации-приемника, учитывая все актуальные изменения законодательства и структуры счетов, внесенные обновлением.

Шаг 4: Массовое исправление уже загруженных документов

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

  1. Откроем обработку и выберем тип документа (например, Реализация (акты, накладные)).
  2. Настроим отбор по периоду или по комментарию обмена.
  3. В списке реквизитов найдем счета учета (в табличной части «Товары»).
  4. Но вместо прямой установки счета, лучше нажать кнопку «Дополнительные параметры» и включить режим «Выполнять в режиме загрузки» (снять флаг) и «Отрабатывать при записи».
  5. Если это не помогает, можно запустить скрипт через «Консоль кода» для программного вызова метода ЗаполнитьСчетаУчета() для выбранного массива документов.

Пример кода для массового исправления:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	РеализацияТоваровУслуг.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода";

Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(Объект.ДатаНачала));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(Объект.ДатаОкончания));

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
    ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
    // Вызываем типовой метод БП
    ДокОбъект.ЗаполнитьСчетаУчета();
    ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;

Подведем итоги

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

← На главную