Почему при обмене из УТ 10.3 в БП 1.6 подставляется неверный счет учета (10.07 вместо 41.01)?

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

При организации обмена данными между конфигурациями «Управление торговлей 10.3» и «Бухгалтерия предприятия 1.6» программисты часто сталкиваются с ситуацией, когда в загруженных документах РеализацияТоваровУслуг счета учета заполняются некорректно. Например, вместо ожидаемого счета 41.01 («Товары на складах») система упорно подставляет 10.07 («Материалы, переданные в переработку на сторону»).

Рассмотрим подробно, почему это происходит, и разберем по шагам алгоритм поиска и устранения этой проблемы. Ситуация осложняется тем, что в УТ 10.3 счета бухгалтерского учета обычно не ведутся, и их подстановка происходит либо в момент загрузки по правилам обмена, либо непосредственно в БП 1.6 при записи документа.

Шаг 1. Анализ регистра «Счета учета номенклатуры»

Первым делом нам необходимо исключить влияние настроек внутри самой базы «Бухгалтерия предприятия». В БП 1.6 за автоматическое заполнение счетов отвечает регистр сведений СчетаУчетаНоменклатуры. Особенность этого регистра заключается в его многоуровневой иерархии поиска.

Проанализируем приоритетность настроек (от высшего к низшему):

  1. Индивидуальная настройка: конкретная Номенклатура + конкретный Склад.
  2. Настройка для склада: пустая Номенклатура + конкретный Склад.
  3. Настройка для группы номенклатуры: Номенклатура (группа) + пустой Склад.
  4. Общая настройка: пустая Номенклатура + пустой Склад.

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

Шаг 2. Проверка типа склада и вида операции документа

Счет 10.07 специфичен: он используется для учета материалов, переданных в переработку. Если система подставляет именно его, выясним причину в настройках объектов:

1. Вид операции документа: Проверим, какой вид операции устанавливается у документа РеализацияТоваровУслуг после загрузки. Если в правилах обмена по какой-то причине устанавливается операция, связанная с передачей сырья, БП 1.6 автоматически применит счета 10-го раздела.

2. Тип склада: Если в документе выбран склад с типом «НТТ» (неавтоматизированная торговая точка) или склад, помеченный как склад переработчика, механизмы конфигурации могут игнорировать общие правила и подставлять счета согласно логике учета переработки.

Чтобы проверить эту гипотезу, попробуем в загруженном документе вручную перевыбрать склад. Если после перевыбора счета не изменились на 41.01, значит, проблема не в настройках регистра БП, а в самих правилах обмена.

Шаг 3. Исследование правил конвертации данных (XML)

Поскольку обмен между УТ 10.3 и БП 1.6 построен на технологии «Конвертация данных 2.0», счета учета могут быть «зашиты» непосредственно в файл правил (обычно это ExchangeRules.xml). Нам необходимо открыть этот файл в конфигурации «Конвертация данных» и найти ПКО (Правило конвертации объекта) для документа РеализацияТоваровУслуг.

Посмотрим на ПКС (Правила конвертации свойств) для реквизитов СчетУчета или СчетДоходов. Там может быть написан произвольный алгоритм на встроенном языке. Рассмотрим пример кода, который часто встречается в обработчиках «Перед выгрузкой» или «При загрузке»:


// Пример алгоритма в ПКС для счета учета
Если Объект.Склад.Наименование = "Склад материалов" Тогда
    Значение = "10.07";
Иначе
    Значение = "41.01";
КонецЕсли;

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

Шаг 4. Влияние программных механизмов при записи

В конфигурации БП 1.6 в модулях документов часто вызывается процедура ЗаполнитьСчетаУчета(). Эта процедура срабатывает при событии ПередЗаписью или ПриИзменении реквизитов. Рассмотрим, как это работает программно:


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

Если в вашей базе БП 1.6 были внесены кастомные изменения (доработки), или существуют Подписки на события, они могут принудительно устанавливать счет 10.07. Проанализируем подписки на событие ОбработкаЗагрузкиДанных или ПередЗаписью для документа реализации.

Шаг 5. Кэширование и внешние обработки

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

  1. Временные файлы: Обработка ОбменДаннымиXML может кэшировать правила во временных папках пользователя. Попробуем очистить временные файлы 1С.
  2. Версия обработки: Убедимся, что используется актуальная версия обработки обмена. Старые версии могли некорректно обрабатывать значения счетов, если они передаются как ссылки, а не как коды счетов.
  3. Настройки узла обмена: Проверим в БП 1.6 настройки в справочнике НастройкиОбменаДанными. Там может быть установлен флаг «Использовать счета учета по умолчанию». Если он включен, система игнорирует всё, что пришло из УТ, и заполняет счета по своим внутренним алгоритмам.

Итоговые рекомендации

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

1. Откройте в БП 1.6 регистр «Счета учета номенклатуры» и создайте явную запись для пустой номенклатуры и пустого склада со счетом 41.01. Это перекроет возможные «кривые» настройки по умолчанию.

2. Если это не помогло, выгрузите правила обмена из УТ и загрузите их в «Конвертацию данных». Найдите ПКО РеализацияТоваровУслуг и проверьте обработчики событий ПослеЗагрузки и ПКС для счета учета на наличие жестко заданных строк "10.07".

3. Проверьте Вид номенклатуры в БП 1.6. Если у товара установлен вид «Материалы», система будет пытаться подставить 10-й счет. Убедитесь, что для товаров установлен вид номенклатуры «Товар».

← На главную