При организации обмена данными между конфигурациями «Управление торговлей 10.3» и «Бухгалтерия предприятия 1.6» программисты часто сталкиваются с ситуацией, когда в загруженных документах РеализацияТоваровУслуг счета учета заполняются некорректно. Например, вместо ожидаемого счета 41.01 («Товары на складах») система упорно подставляет 10.07 («Материалы, переданные в переработку на сторону»).
Рассмотрим подробно, почему это происходит, и разберем по шагам алгоритм поиска и устранения этой проблемы. Ситуация осложняется тем, что в УТ 10.3 счета бухгалтерского учета обычно не ведутся, и их подстановка происходит либо в момент загрузки по правилам обмена, либо непосредственно в БП 1.6 при записи документа.
Первым делом нам необходимо исключить влияние настроек внутри самой базы «Бухгалтерия предприятия». В БП 1.6 за автоматическое заполнение счетов отвечает регистр сведений СчетаУчетаНоменклатуры. Особенность этого регистра заключается в его многоуровневой иерархии поиска.
Проанализируем приоритетность настроек (от высшего к низшему):
Номенклатура + конкретный Склад.Номенклатура + конкретный Склад.Номенклатура (группа) + пустой Склад.Номенклатура + пустой Склад.Даже если вы удалили явные записи для товара, система может подхватывать счет 10.07 из «пустой» записи, которая установлена как значение по умолчанию для всей базы или конкретного склада. Нам нужно зайти в меню «Предприятие» — «Товары (материалы, продукция, услуги)» — «Счета учета номенклатуры» и внимательно проверить наличие записей, где в колонке «Счет учета» указан 10.07.
Счет 10.07 специфичен: он используется для учета материалов, переданных в переработку. Если система подставляет именно его, выясним причину в настройках объектов:
1. Вид операции документа: Проверим, какой вид операции устанавливается у документа РеализацияТоваровУслуг после загрузки. Если в правилах обмена по какой-то причине устанавливается операция, связанная с передачей сырья, БП 1.6 автоматически применит счета 10-го раздела.
2. Тип склада: Если в документе выбран склад с типом «НТТ» (неавтоматизированная торговая точка) или склад, помеченный как склад переработчика, механизмы конфигурации могут игнорировать общие правила и подставлять счета согласно логике учета переработки.
Чтобы проверить эту гипотезу, попробуем в загруженном документе вручную перевыбрать склад. Если после перевыбора счета не изменились на 41.01, значит, проблема не в настройках регистра БП, а в самих правилах обмена.
Поскольку обмен между УТ 10.3 и БП 1.6 построен на технологии «Конвертация данных 2.0», счета учета могут быть «зашиты» непосредственно в файл правил (обычно это ExchangeRules.xml). Нам необходимо открыть этот файл в конфигурации «Конвертация данных» и найти ПКО (Правило конвертации объекта) для документа РеализацияТоваровУслуг.
Посмотрим на ПКС (Правила конвертации свойств) для реквизитов СчетУчета или СчетДоходов. Там может быть написан произвольный алгоритм на встроенном языке. Рассмотрим пример кода, который часто встречается в обработчиках «Перед выгрузкой» или «При загрузке»:
// Пример алгоритма в ПКС для счета учета
Если Объект.Склад.Наименование = "Склад материалов" Тогда
Значение = "10.07";
Иначе
Значение = "41.01";
КонецЕсли;
Если подобный код присутствует в правилах, то никакие изменения в интерфейсе БП 1.6 не помогут — правила будут принудительно перезаписывать счета при каждом обмене. В этом случае нам нужно отредактировать правила и загрузить их заново в настройку обмена.
В конфигурации БП 1.6 в модулях документов часто вызывается процедура ЗаполнитьСчетаУчета(). Эта процедура срабатывает при событии ПередЗаписью или ПриИзменении реквизитов. Рассмотрим, как это работает программно:
Процедура ПриЗаписи(Отказ)
// Если обмен данными, то обычно стандартные проверки отключаются
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Но если в правилах обмена флаг Загрузка не установлен правильно,
// может сработать стандартное заполнение:
БухгалтерскийУчет.ЗаполнитьСчетаУчетаВТабличнойЧасти(Товары, "Товары");
КонецПроцедуры
Если в вашей базе БП 1.6 были внесены кастомные изменения (доработки), или существуют Подписки на события, они могут принудительно устанавливать счет 10.07. Проанализируем подписки на событие ОбработкаЗагрузкиДанных или ПередЗаписью для документа реализации.
Иногда программисты сталкиваются с тем, что они меняют настройки и правила, но результат остается прежним. Выясним причину в механизме кэширования:
ОбменДаннымиXML может кэшировать правила во временных папках пользователя. Попробуем очистить временные файлы 1С.НастройкиОбменаДанными. Там может быть установлен флаг «Использовать счета учета по умолчанию». Если он включен, система игнорирует всё, что пришло из УТ, и заполняет счета по своим внутренним алгоритмам.Для окончательного решения проблемы рекомендуется следующий алгоритм действий:
1. Откройте в БП 1.6 регистр «Счета учета номенклатуры» и создайте явную запись для пустой номенклатуры и пустого склада со счетом 41.01. Это перекроет возможные «кривые» настройки по умолчанию.
2. Если это не помогло, выгрузите правила обмена из УТ и загрузите их в «Конвертацию данных». Найдите ПКО РеализацияТоваровУслуг и проверьте обработчики событий ПослеЗагрузки и ПКС для счета учета на наличие жестко заданных строк "10.07".
3. Проверьте Вид номенклатуры в БП 1.6. Если у товара установлен вид «Материалы», система будет пытаться подставить 10-й счет. Убедитесь, что для товаров установлен вид номенклатуры «Товар».