При совместном использовании конфигураций 1С:Управление торговлей (УТ 11) и 1С:Бухгалтерия предприятия (БП 3.0) одной из самых частых проблем является расхождение счетов учета. Бухгалтеры настраивают регистр сведений СчетаУчетаНоменклатуры в БП под свои требования, однако после очередной синхронизации обнаруживают, что в импортированных документах (например, в «Поступлении (акт, накладная)») счета учета заполнились некорректно — так, как они были классифицированы в торговой базе, либо вообще остались пустыми.
При этом, если открыть документ в БП и вручную перевыбрать номенклатуру в строке, счет учета сразу же встает на место. В данной статье мы подробно разберем, почему возникает эта проблема, проанализируем техническую суть процесса и рассмотрим несколько эффективных способов её решения: от простых организационных настроек до программной автоматизации.
Для того чтобы решить проблему, нам необходимо понять, как функционируют механизмы платформы 1С при интерактивной работе пользователя и при программной загрузке данных.
Разберем две ключевые причины возникновения этой проблемы:
ПриИзмененииНоменклатуры. Этот интерактивный обработчик запускает алгоритмы БП, которые обращаются к регистру сведений СчетаУчетаНоменклатуры и подставляют нужные значения. При обмене данными (через формат EnterpriseData или правила конвертации) документы создаются и записываются программно. В этот момент обработчики интерфейса формы не выполняются, и счета учета заполняются исключительно теми значениями, которые передала выгружающая база либо которые жестко прописаны в логике самого обмена.Проанализируем детально каждый способ исправления этой ситуации.
---
Если проблема вызвана тем, что в УТ 11 номенклатура списывается на расходы, мы можем отрегулировать поведение системы штатными настройками.
Рассмотрим порядок действий:
---
Если документов много, а перевыбирать номенклатуру вручную в каждом документе трудозатратно, мы можем воспользоваться встроенным помощником группового изменения.
Разберем по шагам, как выполнить эту процедуру:
Поступление (акт, накладная).Счет учета.СчетаУчетаНоменклатуры и обновит данные во всей выборке документов программно, имитируя интерактивные действия пользователя.---
Наиболее надежный технический вариант, не требующий изменения типовой конфигурации БП — создание небольшого расширения с подпиской на событие. Это позволит автоматически перезаполнять счета учета непосредственно в момент загрузки документов из обмена.
Проанализируем, как это реализовать:
ПоступлениеТоваровУслуг (в БП это имя объекта для документа «Поступление (акт, накладная)»).ПередЗаписью для этого документа.ОбменДанными.Загрузка.Рассмотрим пример кода, который необходимо разместить в модуле расширения:
Процедура ПередЗаписьюДокументаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
// Проверяем, что документ записывается в процессе обмена данными
Если Источник.ОбменДанными.Загрузка Тогда
// Нам необходимо принудительно заполнить счета учета по правилам БП
// Для этого используем типовые процедуры общего модуля БП
ТаблицаТовары = Источник.Товары.Выгрузить();
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("ЗаполнитьСчетаУчета", Истина);
// Вызываем стандартный метод заполнения счетов учета в табличной части
СчетаУчетаВДокументах.ЗаполнитьТабличнуюЧасть(Источник, "Товары", ПараметрыЗаполнения);
// Аналогично обрабатываем таблицу "Услуги", если это необходимо
Если ОбщегоНазначения.ЕстьРеквизитТабличнойЧасти("Услуги", Источник.Метаданные()) Тогда
СчетаУчетаВДокументах.ЗаполнитьТабличнуюЧасть(Источник, "Услуги", ПараметрыЗаполнения);
EndIf;
КонецЕсли;
КонецПроцедуры
Данный код перехватывает запись документа при импорте, обращается к правилам определения счетов БП (к регистру сведений) и принудительно перезаполняет реквизиты счетов учета ТМЦ и затрат в табличных частях.
---
Если обмен между УТ и БП настроен через нетиповые правила конвертации (с использованием конфигурации «Конвертация данных 2.0»), мы можем скорректировать правила непосредственно в ПКС (Правилах конвертации свойств).
Рассмотрим, как решить задачу на уровне правил:
СчетУчета, СчетУчетаНДС и других связанных реквизитов табличной части отключим прямую выгрузку значений из источника (УТ). Для этого достаточно снять флаг «Передавать в приемник».ПослеЗагрузки на стороне приемника (БП) пропишем алгоритм отложенного заполнения счетов. В БП есть штатные процедуры отложенного заполнения, которые анализируют незаполненные счета и заполняют их на основании настроек ИБ-приемника.Использование этого подхода гарантирует, что из УТ будет переноситься только коммерческая информация (номенклатура, количество, цена), а вся финансово-бухгалтерская аналитика будет формироваться строго по правилам, заданным в БП.
---
Выбор конкретного метода зависит от архитектуры вашей системы и регулярности обновлений: