Найти в Дзене
БИТ:ERP

Документ-контейнер или синхронизация зависимых документов

На проектах мы часто сталкиваемся с ситуацией, когда операция пользователя должна быть одновременно отражена в 1С:ERP несколькими документами. Это могут быть экзотические бизнес процессы или процессы, которые пока не поддерживаются в типовой конфигурации. Подписывайтесь на наш телеграмм канал https://t.me/bit_erp, там вы найдете актуальные новости, анонсы, опыт и истории от команды БИТ:ERP. Рассмотрим примеры таких операций и наш вариант реализации. Примеры применения данного подхода Поступление товаров на склад Кладовщик оформляет приходный ордер на товары от поставщика по схеме неотфактурованной поставки (сначала товары, потом приобретения). В типовой конфигурации 1С:ERP задумано, что для поступления товаров по финансовому учету кроме приходного ордера требуется создать еще один документ - "Поступление товаров на склад", а когда придут документы на товар - "Приобретение товаров и услуг". При этом, на предприятии может и не быть специального сотрудника, который будет оформлять посту
Оглавление

На проектах мы часто сталкиваемся с ситуацией, когда операция пользователя должна быть одновременно отражена в 1С:ERP несколькими документами. Это могут быть экзотические бизнес процессы или процессы, которые пока не поддерживаются в типовой конфигурации.

Подписывайтесь на наш телеграмм канал https://t.me/bit_erp, там вы найдете актуальные новости, анонсы, опыт и истории от команды БИТ:ERP.

Рассмотрим примеры таких операций и наш вариант реализации.

Примеры применения данного подхода

Поступление товаров на склад

Кладовщик оформляет приходный ордер на товары от поставщика по схеме неотфактурованной поставки (сначала товары, потом приобретения). В типовой конфигурации 1С:ERP задумано, что для поступления товаров по финансовому учету кроме приходного ордера требуется создать еще один документ - "Поступление товаров на склад", а когда придут документы на товар - "Приобретение товаров и услуг".

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

Для сравнения, в других системах учета, например SAP, есть операция - Good receipt - это приходный ордер + поступление товаров на склад и Invoice - это приобретение товаров и услуг, то есть, оприходование товара в складском и финансовом учетах выполняется одной транзакцией.

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

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

Отправка товаров на контроль качества

Кладовщик оформляет приходный ордер на товары от поставщика. Все принятые товары должны отправиться на контроль качества.

Здесь так же потребуется автоматическое создание связанного документа, только этот документ будет не типовым. Поскольку в типовой конфигурации 1С:ERP нет документа, отражающего факт передачи образцов в лабораторию - это будет новый объект, который должен создаваться автоматически при создании приходного ордера.

Отражение бонусных баллов в финансовом учете

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

Для решения этой задачи мы так же применили автоматическое создание документов отражения прочих доходов и расходов на основании типового документа-источника "Начисление и списание бонусных баллов".

Вариант реализации синхронизации зависимых документов

Реализация данного подхода развивалась постепенно и теперь стала универсальной. Ниже описан вариант, который может быть встроен для синхронизации различных документов. Для его работы нам понадобится следующее:

  • Найти обработчик проведения документа источника.
  • Написать процедуру синхронизации.
  • Добавить реквизит в зависимый документ для связи с источником и настроить критерий отбора, чтобы связанные документы отображались в структуре подчиненности.

В качестве примера возьмем кейс: не типовой документ "Факторинг" должен автоматически создавать типовой документ регистрации расходов.

Мы не будем рассматривать суть документа "Факторинг", важно, что с этим документом работает пользователь, в нем есть какие-то данные и этих данных достаточно, чтобы зарегистрировать расходы типовым документом. На практике документ "Факторинг" создает еще несколько других документов корректировки взаиморасчетов, по аналогии с регистрацией расходов. Смысл нашего подхода в том, что пользователь работает с одним документом, а в фоне создаются несколько типовых.

Процедура синхронизации

Процедура вызывается из обработки проведения, в процедуру передается ссылка на документ источник:

Вызов основной процедуры

Основная процедура синхронизации

-2

Поскольку на основе одного документа может быть создано несколько разных видов документов, то нам понадобится таблица описаний синхронизации. Каждое описание содержит условия и другую информацию о синхронизируемом документе. Синхронизация по каждому описанию выполняется в цикле.

Описание синхронизации

-3

В описании задается процедура, которая будет использоваться для заполнения документа, имя документа и текст запроса. В тексте запроса определены следующие поля:

  • Зависимый документ (при первом проведении зависимого документа нет и он будет создан, а при последующих - перезаполнен).
  • Признак пометки удаления зависимого документа.
  • Признак того, что зависимый документ требуется (может быть ситуация, когда в результате редактирования документа источника зависимый документ уже не нужен, тогда его нужно пометить на удаление).

Синхронизация по описанию

-4

Здесь выполняется запрос из описания синхронизации, накладывается блокировка на зависимые документы, и для каждого зависимого документа (их тоже может быть несколько) выполняется процедура заполнения. После заполнения зависимые документы записываются.

Процедура заполнения зависимого документа

-5

В данной процедуре заполняется зависимый документ. Для этого выполняется запрос к документу источнику, в данном случае из документа Факторинг выбираются суммы, статьи расходов и этими данными заполняется типовой документ регистрации расходов.

Полный листинг кода доступен по ссылке.

На некоторых проектах мы применяем очередь синхронизации - при оперативном проведении документа источника создается запись в регистр документов для синхронизации, а сама синхронизация выполняется регламентным заданием.

Данный подход получил широкое применение на наших проектах, поскольку позволяет использовать типовые документы для отражения операций, минимизировать участие пользователей и как следствие - уменьшить количество ошибок.

Материал подготовил:
Алексей Тачеев, Product Owner, БИТ:ERP.

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