Сведения о проектировании: структура учета трассировки товаров
Для того чтобы скоординировать с функцией учета стоимости товаров и получить более простое и надежное решение, операции журнала товаров используются как основные носители номеров трассировки товаров.
Номера трассировки товаров в объектах сети заказов и незаказанных сетевых единицах указываются в таблице T337 Операция резервирования. Номера трассировки товара, относящиеся к историческим данным, извлекаются непосредственно из операций книги товаров, связанных с данной транзакцией. Это означает, что операции журнала товаров отражают спецификацию трассировки товаров строки учтенного заказа.
Страница Строки трассировки товаров извлекает информацию из T337 и операций журнала товаров и отображает их во временной таблице, Спецификация трассировки (T336). В таблице T336 также содержатся данные трассировки на странице Строки трассировки товаров для количеств трассировок товаров, по которым еще предстоит выставить счет.
Отношение "один-ко-многим"
Таблица Связь товарной операции, которая используется для того, чтобы связать строку учтенного документа с точно соответствующей операцией книги товаров, состоит, в основном, из 2 элементов.
- Указатель на учтенную строку документа, поле Номер строки заказа.
- Номер операции, указывающий на операцию книги товаров, поле Код товарной операции.
Функция существующего поля Номер операции, которое связывает операцию журнала товаров с учтенной строкой документа, обрабатывает стандартные одноуровневые отношения без номеров трассировки товаров в учтенной строке документа. Если существуют номера трассировки товара, поле Номер операции остается пустым, а отношениями один-ко-многим обрабатывается в таблице Связь товарной операции. Если учтенная строка документа содержит номера трассировки товара, но относится только к одной операции книги товаров, отношение определяется в поле Номер операции, и запись в таблице Связь товарной операции не создается.
Модули Codeunit 80 (учет продажи) и 90 (учет покупки)
Чтобы разделить операции журнала товаров во время учета, код в модулях codeunit 80 и codeunit 90 заключается в циклы, выполняющие обход глобальных переменных временной записи. Этот код вызывает модуль codeunit 22 со строкой журнала товаров. Эти переменные инициализируются, если номера трассировки товаров существуют для строки документа. Для упрощения кода всегда используется эта циклическая структура Если для строки документа не существуют номера трассировки товара, вставляется одна запись, и цикл выполняется только один раз.
Учет журнала товаров
Номера трассировки товара переносятся в операциях резервирования, которые связаны с операцией книги товаров, и цикл выполняется с помощью номеров трассировки товара в модуле codeunit 22 (Журнал товаров – Строка учета). Это принцип работает так же, когда строка журнала товаров используется неявно для учета заказа на покупку или заказа на продажу, как при использовании строки журнала товаров напрямую. Если журнал товаров используется напрямую, поле ИД строки источника указывает на саму строку журнала товаров.
CodeUnit 22 (Журнал товаров – Строка учета)
Модули codeunit 80 (Продажи-учет) и 90 (Покупки-учет) создают цикл вызова codeunit 22 (Журнал товаров – Строка учета) во время учета счета номеров трассировки товара и во время учета существующих расходных и приходных накладных.
Во время учета количества номеров трассировки товаров модуль codeunit 22 (Журнал товаров – Строка учета) извлекает номера трассировки товаров из операций в T337 (Операция резервирования), относящихся к учету. Эти операции помещаются напрямую в строку журнала товаров.
Codeunit 22 (Журнал товаров – Строка учета) переходит по номерам трассировки товара и разделяет учет на соответствующие операции книги товаров, включающие номера трассировки товара. Информация о том, какие операции книги товаров создаются, возвращается в T337 (Операция резервирования) с помощью временной записи T336, которая вызывается в ходе выполнения процедуры в модуле codeunit 22. Данная процедура вызывается, когда модуль codeunit 22 заканчивает выполнение, поскольку на данный момент объект codeunit 22 содержит информацию. Если временная запись T336 извлечена, модули codeunit 80 (Продажи-учет) и 90 (Покупки-учет) создают записи в таблице Связь товарной операции, чтобы связать созданные операции книги товаров со строкой созданной отгрузки или приходной накладной. Затем модули codeunit 80 (Продажи-учет) и 90 (Покупки-учет) преобразовывают временные записи T336 (Спецификация трассировки) в фактические записи T336 (Спецификация трассировки), связанные с данной строкой. Однако это преобразование выполняется, только если учтенная строка документа не удаляется, поскольку она учтена лишь частично.
См. также
Сведения о проектировании: трассировка товара
Технические подробности: архитектура трассировки товаров
Бесплатные модули электронного обучения для Business Central можно найти здесь