Как настроить автоматическое заполнение счетов учета номенклатуры в 1С:Бухгалтерия при обмене из 1С:Управление торговлей?

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

При совместном использовании конфигураций 1С:Управление торговлей (УТ 11) и 1С:Бухгалтерия предприятия (БП 3.0) одной из самых частых проблем является расхождение счетов учета. Бухгалтеры настраивают регистр сведений СчетаУчетаНоменклатуры в БП под свои требования, однако после очередной синхронизации обнаруживают, что в импортированных документах (например, в «Поступлении (акт, накладная)») счета учета заполнились некорректно — так, как они были классифицированы в торговой базе, либо вообще остались пустыми.

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

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

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

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

  1. Разница между интерактивным изменением и программной записью. Когда бухгалтер работает в интерфейсе программы и выбирает номенклатуру в табличной части, срабатывает событие формы ПриИзмененииНоменклатуры. Этот интерактивный обработчик запускает алгоритмы БП, которые обращаются к регистру сведений СчетаУчетаНоменклатуры и подставляют нужные значения. При обмене данными (через формат EnterpriseData или правила конвертации) документы создаются и записываются программно. В этот момент обработчики интерфейса формы не выполняются, и счета учета заполняются исключительно теми значениями, которые передала выгружающая база либо которые жестко прописаны в логике самого обмена.
  2. Трансляция хозяйственных операций «Товар vs Расход». В УТ 11 при оформлении документа «Приобретение товаров и услуг» для некоторых позиций (услуг, инвентаря) пользователи часто взводят признак «Списать на расходы» и выбирают статью расходов. При обмене эта статья транслируется в статью затрат БП. В итоге БП игнорирует настройки счетов номенклатуры (счета 10, 41) и подставляет счета затрат (например, 20, 26, 44), привязанные к этой статье.

Проанализируем детально каждый способ исправления этой ситуации.

---

Вариант 1. Использование встроенных механизмов сопоставления (без программирования)

Если проблема вызвана тем, что в УТ 11 номенклатура списывается на расходы, мы можем отрегулировать поведение системы штатными настройками.

Рассмотрим порядок действий:

  1. Выясним, действительно ли в УТ в документе «Приобретение товаров и услуг» задействована колонка «Списать на расходы». Если это так, то для БП это сигнал отразить прямые затраты.
  2. Если это классическая услуга или малоценное имущество, которое должно сразу попадать на счета затрат, настроим сопоставление Статей расходов. В БП для соответствующей статьи затрат укажем нужный счет учета (например, 26 или 44). При обмене БП автоматически подставит счет из настроек статьи затрат.
  3. Если же позиция должна приходоваться как обычный материал или товар на склад (счета 10 или 41), то в УТ необходимо снять флаг списания на расходы. Тогда документ перенесется как стандартное поступление ТМЦ, и система сможет обратиться к регистру счетов учета номенклатуры.

---

Вариант 2. Групповое перезаполнение счетов в БП (штатное решение для пользователей)

Если документов много, а перевыбирать номенклатуру вручную в каждом документе трудозатратно, мы можем воспользоваться встроенным помощником группового изменения.

Разберем по шагам, как выполнить эту процедуру:

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

---

Вариант 3. Использование расширения и подписки на событие (автоматический режим)

Наиболее надежный технический вариант, не требующий изменения типовой конфигурации БП — создание небольшого расширения с подпиской на событие. Это позволит автоматически перезаполнять счета учета непосредственно в момент загрузки документов из обмена.

Проанализируем, как это реализовать:

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

Рассмотрим пример кода, который необходимо разместить в модуле расширения:


Процедура ПередЗаписьюДокументаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт

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

КонецПроцедуры

Данный код перехватывает запись документа при импорте, обращается к правилам определения счетов БП (к регистру сведений) и принудительно перезаполняет реквизиты счетов учета ТМЦ и затрат в табличных частях.

---

Вариант 4. Доработка правил обмена

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

Рассмотрим, как решить задачу на уровне правил:

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

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

---

Резюме и рекомендации

Выбор конкретного метода зависит от архитектуры вашей системы и регулярности обновлений:

← На главную