* Учётные регистры

Учетный регистр  – поддерживаемая на системном уровне структура для хранения исторических данных (фактов), их агрегирования и получения на их основе различных отчетов.

Как физическая структура учетный регистр - это совокупность односторонних проводок (движения) и рассчитанного по ним в разных разрезах сальдо (агрегатов). Отличия от стандартных проводок следующие:

  • возможность описывать произвольное количество учетных регистров разной структуры
  • проводки односторонние, нет понятия дебет и кредит,
  • свободная структура аналитик без ограничения по количеству и типу данных, аналитики, как правило, имеют фиксированный смысл,
  • вектор сумм вместо одной суммы в стандартных проводках – экономия места
  • произвольное количество агрегатов различной структуры, построенных по общему множеству фактов (несколько разных структур сальдо)

Для работы с новыми структурами данных в объекты Домино добавлены новые методы:

  1. "Акцепт.Создание записей движения по учетным регистрам" – вызывается при стандартном и коротком акцепте документа, а также при приеме почтой документа с проводками. Служит для добавления записей в указанный (в силу того, что их количество в проекте не лимитировано) набор учетных регистров.
  2. "Деакцепт.Удаление записей движения по учетным регистрам" – вызывается при стандартном и коротком деакцепте документа, а также при удалении/изменении почтой документа. Служит для удаления записей из указанного (в силу того, что их количество в проекте не лимитировано) набора учетных регистров.

Предполагается, что в данных методах будут подключены скриптовые процедуры генерации/удаления, использующие SQL-операторы массового создания/удаления данных.

С точки зрения проекта учетный регистр – это набор таблиц и описание их взаимосвязей. Опишем последовательно все необходимые для создания учетного регистра проектные компоненты.

Таблица фактов

Таблица фактов является аналогом таблицы проводок. В отличие от стандартных проводок факты являются проводками односторонними, у них нет дебетовой и кредитовой стороны. В каждом учетном регистре может быть только одна таблица фактов. С точки зрения проекта таблица фактов – это обычная таблица, к которой возможен доступ из SQL- запросов. Добавление данных в учетный регистр и удаление данных из него происходит именно путем добавления и удаления записей в/из таблицы фактов этого учетного регистра.

Таблица фактов обязательно должна ссылаться на базовую таблицу фактов и наследовать  ее поля (параметры). Для наследования полей в разделе «Параметры» описания таблицы нужно указать атрибут <Наследуемые параметры>.

Описание структуры базовой таблицы 1507433[30867462] ФАКТЫ

Документ

Аналог соответствующего поля проводки.

Строка документа

Аналог соответствующего поля проводки.

Дата

Аналог соответствующего поля проводки.

Приход/Расход
(+/-)

Указывает, как запись таблицы фактов влияет на агрегаты - увеличивает ('+') или уменьшает (‘-‘).
Примечание: для уменьшения размера таблицы тип данного поля - короткая строка в 1 символ.

Влияет на агрегаты (1/0)

Указывает, изменяет ли запись таблицы фактов агрегаты - изменяет ('1') или не изменяет ('0').
Примечание: для уменьшения размера таблицы тип данного поля - короткая строка в 1 символ.

Остальные поля таблицы фактов условно делятся на аналитики и суммы. Их количество и типы не регламентируются. То, как будет интерпретироваться конкретное поле (как аналитика или как сумма), определяется описанием структуры учетного регистра.

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

Планирование набора индексов – это экспертная операция. Не существует однозначных рекомендаций по этому поводу. Например, для небольших по объему таблиц (две-три сотни записей) индексы можно вообще не строить. Для таблиц фактов большого объема минимально необходимый набор – это индекс по полю «Документ»; целесообразно так же построить индексы по основным аналитикам в комбинации с датой.

Таблица пула

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

Таблица пула описывается в проекте обычным образом (с некоторыми оговорками), и является реальной таблицей, которая создается в базе данных. Однако, с точки зрения разработчика прикладных проектных решений, эта таблица является скрытой – напрямую к ее данным обращаться из проектных скриптов не нужно.

Особенности проектного описания таблицы пула:

  1. Таблица пула должна ссылаться на таблицу фактов как на базовую.
  2. В разделе «Параметры» вместо элементов «Параметр» нужно использовать конструкцию «Использовать параметр» со ссылкой на параметр таблицы фактов.
  3. В разделе «Параметры» нельзя использовать конструкцию <Наследуемые параметры>
  4. Таблица пула должна содержать все аналитики и все суммы из таблицы фактов, которые используются в агрегатах.
  5. Поля базовой таблицы фактов в структуру записи таблицы пула включать не нужно, так как они не участвуют в расчете агрегатов.

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

Таблицы-агрегаты

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

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

Особенности проектного описания таблицы-агрегата:

  1. Таблица-агрегат должна ссылаться на таблицу фактов как на базовую.
  2. В разделе «Параметры» вместо элементов «Параметр» нужно использовать конструкцию «Использовать параметр» со ссылкой на параметр таблицы фактов.
  3. В разделе «Параметры» нельзя использовать конструкцию <Наследуемые параметры>
  4. Набор аналитик и сумм, включаемых в запись агрегата, определяется потребностями агрегирования.
  5. Поля базовой таблицы фактов в структуру записи агрегата включать не нужно

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

Таблица оборотов

Таблица оборотов – это виртуальная сущность, которая используется для доступа к данным учетного регистра через оператор SELECT языка скриптов. Хотя обороты описываются в проекте как обычная таблица, физически в базе данных она не создается. К этой виртуальной таблице можно обращаться только для выборки данных, запись в нее невозможна.

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

Особенности проектного описания таблицы оборотов:

  1. Таблица оборотов должна ссылаться на базовую таблицу оборотов: 1507433[30867463] ОБОРОТЫ.
  2. Параметры базовой таблицы оборотов должны быть обязательно включены в структуру записи таблицы путем задания атрибута <Наследуемые параметры> в разделе «Параметры».
  3. В разделе «Параметры» для описания полей используется стандартная конструкция «Параметр».
  4. Параметры таблицы по смыслу (способу использования) делятся на:
    • «Начало периода» и «Конец периода» (наследуются из базовой таблицы)
    • Аналитики – дублируют набор аналитик таблицы «Факты»
    • Приход – сумма прихода (обороты) за период
    • Расход – сумма расхода (обороты) за период
    • Сумма – исходящая сумма на дату конечную
  5. Смысловая привязка параметров оборотов производится непосредственно в описании учетного регистра.

Так как таблица оборотов является виртуальной, описывать индексы по ней не имеет смысла.

Выборка данных оператором SELECT аналогична выборке по стандартным оборотам:

  1. Если запрашиваются набор аналитик и поля со смысловым значением "ПРИХОД", то в разрезе этих аналитик возвращаются суммы, собранные по записям таблицы фактов за указанный диапазон дат и имеющим в качестве значений поля "Приход/Расход (+/-)" значение '+'. Аналогом является поле "Обороты по дебету" стандартной таблицы оборотов.
  2. Если запрашиваются набор аналитик и поля со смысловым значением "РАСХОД", то в разрезе этих аналитик возвращаются суммы, собранные по записям таблицы фактов за указанный диапазон дат и имеющим в качестве значений поля "Приход/Расход (+/-)" значение '-'. Аналогом является поле "Обороты по кредиту" стандартной таблицы оборотов.
  3. Если запрашиваются набор аналитик и поля со смысловым значением "СУММА", то в разрезе этих аналитик возвращаются исходящие суммы на конечную дату, собранные по записям таблиц фактов, пула и подходящего (по набору возвращаемых/ограничивающих аналитик и сумм) агрегата. Аналогом является поле "Исходящее сальдо (дебет - кредит)" стандартной таблицы оборотов. Допустимо ограничение лишь на конечную дату – на равенство. Если ограничение на конечную дату не задано, то рассчитываются суммы без учета фактов, то есть «текущее значение сумм».
  4. Возможна комбинация предыдущих 3-х случаев. В таком случае требуется ограничение на диапазон дат. Ограничение на дату конечную может быть опущено – в этом случае расчет ведется от даты начальной и до конца истории.

Собственно описание учетного регистра

Учетный регистр – это системная структура, которая описывает взаимосвязи таблиц и смысловую привязку их полей. Учетные регистры описываются в специализированном разделе "Структура базы данных"->"Учетные регистры". Описания учетных регистров скрыты от прикладного программиста: для работы с его данными используются таблица фактов (допустимо чтение, добавление и удаление записей) и псевдо-таблица оборотов (допустимо только чтение)

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

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

Раздел «Взаимосвязь таблиц фактов и оборотов» помимо ссылки на таблицу оборотов описывает взаимосвязи полей таблиц фактов и оборотов:

  1. Атрибут «Признак "Приход/Расход (+/-)"» определяет, какое поле таблицы фактов система должна интерпретировать как знак операции. Является обязательным.
  2. Атрибут «Признак "Влияет на агрегаты (1/0)"» определяет, какое поле таблицы фактов система должна интерпретировать как признак отражения записи фактов в агрегатах. Является обязательным.
  3. Атрибут "Начало периода" связывает поле "Дата" таблицы фактов с полем "Начало периода" таблицы оборотов (через атрибут "Отображается в оборотах как"). Является обязательным.
  4. Атрибут "Конец периода" связывает поле "Дата" таблицы фактов с полем "Конец периода" таблицы оборотов (через атрибут "Отображается в оборотах как"). Является обязательным.
  5. Множественный атрибут "Приход" связывает числовое поле таблицы фактов с соответствующим полем таблицы оборотов, смысл которого есть сумма, собранная по записям таблицы фактов за указанный диапазон дат и имеющим в качестве значений поля "Приход/Расход (+/-)" значение '+'. Аналогом является поле "Обороты по дебету" стандартной таблицы оборотов.
  6. Множественный атрибут "Расход" связывает числовое поле таблицы фактов с соответствующим полем таблицы оборотов, смысл которого есть сумма, собранная по записям таблицы фактов за указанный диапазон дат и имеющим в качестве значений поля "Приход/Расход (+/-)" значение '-'. Аналогом является поле "Обороты по кредиту" стандартной таблицы оборотов.
  7. Множественный атрибут "Сумма" связывает числовое поле таблицы фактов с соответствующим полем таблицы оборотов, смысл которого есть исходящая сумма на конечную дату, собранная по записям таблиц фактов, пула и подходящего (по набору возвращаемых/ограничивающих аналитик и сумм) агрегата. Аналогом является поле "Исходящее сальдо (дебет - кредит)" стандартной таблицы оборотов.
  8. Множественный атрибут "Аналитика" связывает поле-аналитику таблицы фактов с полем-аналитикой таблицы оборотов.

Администрирование учетных регистров

Домино при старте автоматически не создает учетные регистры. Для работы с учетными регистрами надо создать соответствующие структуры на сервере БД. Для создания всех описанных в проекте учетных регистров служит процедура:
127[48431867] Создать структуры хранения учетных регистров
подключенная в меню
"Администрирование данных"->"Обслуживание БД"
и
"Администратор организации"->"Обслуживание БД"

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

Учетный регистр «Движение товаров»

Учетный регистр 30867634[30867457] «Движение товаров» предназначен для поэтапного перевода товарного учета со стандартных проводок на более экономичную схему, использующую специализированные структуры хранения. Движение товаров агрегируется в разрезе подразделений(складов), товаров, партий и цветов/размеров. Кроме того, используется понятие «направления» - неагрегатной аналитики, которая позволяет группировать обороты по смыслу (сути) товарной операции. Движение товаров учитывается по количеству и по четырем суммам (закупочной, учетной, продажной и фактической).

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

  • собственно описание учетного регистра и его таблиц
  • признак «Режим обработки товародвижения» и логика его переключения
  • процедуры – методы для создания и удаления записей о движении товаров по документам и по строкам документов
  • базовые SQL- запросы для доступа к данным учетного регистра «Движение товаров»
  • базовый вид просмотра для просмотра записей таблицы фактов

Управление работой учетного регистра «Движение товаров»

Пока не реализовано: Признак включения  -

 Пока не реализовано: Признак отключения стандартных проводок по товародвижению

 Пока не реализовано: Признак использования в расчетах нового механизма вместо старого (отладочный)

 Отнесение операций (классов и типов) документов к разряду товарных. Предполагается, то операция является товарной, если она отражается в учетном регистре «Движение товаров». Иными словами - если создает записи движения в этом учетном регистре. Для создания записей движения производится по учетному регистру «Движение товаров» существует специальная процедура-метод «Создание записей о движении товаров …». В стандартном проекте эта процедура-метод подключена для классов документов «ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ» и «РАСХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ» - соответственно, все документы указанных классов считаются товарными.

Разделение операций на приходные и расходные. Операция считается приходной (увеличивает остаток), если документ относится к классу «ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ», и расходной – если к классу «РАСХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ».

Влияние товарного документа на остаток. Задается признаком на операцию (тип документа) «Влияет на товарный остаток». Если признак не задан, то по умолчанию считается, что операция на остаток влияет.

Привязка типов документов к направлениям. Задается атрибутом на операцию (тип документа) «Направление движения товара». Для каждой товарной операции обязательно должно быть указано направление движения.

Пока не реализовано: Задание для типа документа ограничения на множество классов/типов строк, которые будут обрабатываться как товарные

Кодификатор направлений

Проектный кодификатор «Направление движения товара» 838-18[838-1] описывает группировку товарных операций по стандартным смыслам. Товарные операции относятся к тому или иному направлению путем задания его(направления) в параметрах вызова процедуры-метода создания записей о движении товаров. Непосредственно в записи таблицы фактов хранится аббревиатура этого кодификатора – это сделано для экономии места.

Стандартные направления:

  • Приход/Возврат поставщику (DL)
  • Реализация/Возврат от покупателя (SL)
  • Перемещение (TF)
  • Списание (WO)
  • Инвентаризация (IN)
  • Производство (MN)
  • Пересортица (RG)
  • Переоценка (OE)
  • Прочее (OZ)

Структура сумм и аналитик учетного регистра «Движение товаров»

Имя

Тип

Описание

Аналитики

Подразделение

UID

Подразделение(склад), на котором учитываются остатки товара.

Продукт

UID

Собственно, продукт.

Партия

UID

Партия продукта.

Размер

UID

Дополнительная необязательная аналитика. Как правило, используется для учета в разрезе цветов или размеров.

Направление

STRING(2)

Неагрегатная аналитика, отражающая суть товарной операции, например «Приход от поставщика», «Реализация», «Внутреннее перемещение». Хранится как двухбуквенная аббревиатура соответствующего проектного кодификатора.

Суммы

Количество

NUMBER(19,6)

Количество товара в физических единицах учета.

Сумма закупочная

NUMBER(19,6)

Сумма по цене закупочной

Сумма учетная

NUMBER(19,6)

Сумма по цене учетной

Сумма продажная

NUMBER(19,6)

Сумма по цене продажной (розничной).

Сумма фактическая

NUMBER(19,6)

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

Обороты

Структура псевдо-таблицы оборотов повторяет структуру сумм и аналитик для учетного регистра «Движение товаров», описание которой приведено выше. Проектное описание псевдо-таблицы обороты: 1507433[30867461] «Движение товаров.Обороты».

Таблицы учетного регистра «Движение товаров»

Факты: 1507433[30867460] «Движение товаров. Факты»
Имя таблицы БД:
DB1_TRANSFER

Поле

Имя в БД

Тип

Примечание

Документ

DOCUMENT

UID

Обязательное поле

Строка документа

LINE

UID

 

Дата

FACT_DATE

DATETIME

Обязательное поле

Приход/Расход

SIGN

STRING(1)

Обязательное поле

Влияет на агрегаты (1/0)

AGGR

STRING(1)

Обязательное поле

Подразделение

DEPT

UID

Обязательное поле

Продукт

PRODUCT

UID

Обязательное поле

Партия

PARTY

UID

Обязательное поле

Размер

SIZE

UID

 

Направление

DIRECTION

STRING(2)

Обязательное поле

Количество

QTY

NUMBER(19,6)

Обязательное поле

Сумма
закупочная

PURCHASE_SUM

NUMBER(19,6)

 

Сумма
учетная

ACCOUNT_SUM

NUMBER(19,6)

 

Сумма
продажная

RETAIL_SUM

NUMBER(19,6)

 

Сумма
фактическая

ACTUAL_SUM

NUMBER(19,6)

 

 

Пул: 1507433[48431153] «Движение товаров. Пул»
Имя
таблицы БД: DB1_TRANSFER_POOL

Поле

Имя в БД

Тип

Примечание

Подразделение

DEPT

UID

Обязательное поле

Продукт

PRODUCT

UID

Обязательное поле

Партия

PARTY

UID

Обязательное поле

Размер

SIZE

UID

 

Количество

QTY

NUMBER(19,6)

Обязательное поле

Сумма
закупочная

PURCHASE_SUM

NUMBER(19,6)

 

Сумма
учетная

ACCOUNT_SUM

NUMBER(19,6)

 

Сумма
продажная

RETAIL_SUM

NUMBER(19,6)

 

 

Агрегат: 1507433[48431154] «Движение товаров. Остатки по партиям и размерам»
 Имя таблицы БД:
DB1_TRANSFER_A1

Поле

Имя в БД

Тип

Примечание

Подразделение

DEPT

UID

Обязательное поле

Продукт

PRODUCT

UID

Обязательное поле

Партия

PARTY

UID

Обязательное поле

Размер

SIZE

UID

 

Количество

QTY

NUMBER(19,6)

Обязательное поле

Сумма
закупочная

PURCHASE_SUM

NUMBER(19,6)

 

Сумма
учетная

ACCOUNT_SUM

NUMBER(19,6)

 

Сумма
продажная

RETAIL_SUM

NUMBER(19,6)

 

 

Агрегат: 1507433[48431154] «Движение товаров. Остатки по базовым товарам»
 Имя таблицы БД:
DB1_TRANSFER_A2

Поле

Имя в БД

Тип

Примечание

Подразделение

DEPT

UID

Обязательное поле

Продукт

PRODUCT

UID

Обязательное поле

Количество

QTY

NUMBER(19,6)

Обязательное поле

Сумма
закупочная

PURCHASE_SUM

NUMBER(19,6)

 

Сумма
учетная

ACCOUNT_SUM

NUMBER(19,6)

 

Сумма
продажная

RETAIL_SUM

NUMBER(19,6)

 

 

Процедуры – методы для создания и удаления записей о движении товаров

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

  1. 220[48431151] «Создание записей о движении товаров по документу в целом»
  2. 220[30867500] «Удаление записей о движении товаров по документу в целом»
  3. 220[30867501] «Создание записей о движении товаров по строке документа»
  4. 220[30867502] «Удаление записей о движении товаров по строке документа»

Первая пара процедур предназначена для использования в методах акцепта/деакцепта документа. Вторая пара процедур предназначена для использования в методах акцепта/деакцепта строк только для тех документов, для которых используется построчный акцепт.

Стандартный алгоритм создания записей движения для товарных документов (по учетному регистру «Движение товаров») реализован в виде процедуры-метода 220[48431151] «Создание записей о движении товаров по документу в целом». Эта процедура-метод вызывается стандартной реализацией метода «Акцепт. Создание записей движения по учетным регистрам» для документов с классом «» и «». Метод «Акцепт. Создание записей движения по учетным регистрам» вызывается процедурами акцепта документа и короткого акцепта документа.

Алгоритм процедуры-метода «Создание записей о движении товаров по документу в целом»

  1. Формальные параметры процедуры
    • Влияет на агрегаты ([Да]/Нет) (по умолчанию берется из операции)
    • Направление (по умолчанию берется из операции)
    • Список классов и типов товарных строк
  2. Проверяет значение глобального параметра (флага) «Рассчитывать данные по учетному регистру «Движение товаров»». Если параметр не установлен, то выход с признаком успешного завершения.
  3. Удаляет записи движения по документу из таблицы фактов УР «Движение товаров»
  4. По классу документа определяет знак операции:
    • класс «ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ» - это операция прихода (‘+’)
    • класс «РАСХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ» - это операция расхода (‘-’)
    • любой другой класс – это не товарная операция, выход с ошибкой.
  5. Из типа документа (операции) получает признак влияния на агрегаты - как атрибут типа документа «Влияет на товарный остаток». Если на операцию этот признак не определен, то по умолчанию предполагается, что операция влияет на остаток. Используя формальный параметр процедуры (см.1.1.), можно явно задать признак влияния на агрегаты – в этом случае настройки, заданные на операцию, игнорируются.
  6. Из типа документа (операции) получает направление движения товара - как атрибут типа документа «Направление движения товара». Если на операцию этот признак не определен, то процедура завершается с ошибкой. Используя формальный параметр процедуры (см.1.2.), можно явно задать направление движения товара – в этом случае настройки, заданные на операцию, игнорируются.
  7. Пока не реализовано, планируется: Из проектного описания типа документа (операции) получает список классов/типов товарных строк. Нужно это или нет – вопрос. В текущем варианте это передается через формальный параметр.
  8. Первый цикл по строкам документа. Перебирает строки документа, удовлетворяющие следующим условиям:
         - класс и тип строки удовлетворяют заданным ограничениям
          - заполнено поле «Родитель»
          - заполнено поле «Продукт»
          - значение в поле «Количество» не равно 0
    и создаются записи фактов УР «Движение товаров» со следующими значениями полей

Поле таблицы фактов

Формула для расчета значения

Документ

Строка. Документ

Строка

Строка. Строка

Дата

Строка. Дата строки

Приход/Расход

знак операции, вычисленный в п.4

Влияет на агрегаты

значение, вычисленное в п.6

Направление

значение, вычисленное в п.5

Подразделение

Документ. Подразделение

Продукт

Строка. Продукт. Родитель; если пусто (продукт не имеет родителя), то Строка. Продукт

Партия

Строка. Продукт

Размер

Строка. Размер

Количество

Строка. Количество

Сумма закупочная

Строка. Количество * Строка. Цена закупочная

Сумма учетная

Строка. Количество * Строка. Цена учетная

Сумма продажная

Строка. Количество * (Строка. Родитель. Цена розничная; если пусто, то Строка. Цена розничная)

Сумма фактическая

Строка. Сумма продажная (фактическая); если пусто, то Строка.Количество * (Строка. Родитель. Цена продажная (фактическая); если пусто, то Строка. Цена продажная (фактическая))

  1. Второй цикл по строкам документа. Перебирает строки документа, удовлетворяющие следующим условиям:
         - класс и тип строки удовлетворяют заданным ограничениям
          - поле «Родитель» пусто
          - заполнено поле «Продукт»
          - продукт из строки имеет тип «УСЛУГА»
          - значение в поле «Количество» не равно 0
    и создаются записи фактов УР «Движение товаров» со следующими значениями полей

Поле таблицы фактов

Формула для расчета значения

Документ

Строка. Документ

Строка

Строка. Строка

Дата

Строка. Дата строки

Приход/Расход

знак операции, вычисленный в п.4

Влияет на агрегаты

значение 0 (не влияет)

Направление

значение, вычисленное в п.5

Подразделение

Документ. Подразделение

Продукт

Строка. Продукт. Родитель; если пусто (продукт не имеет родителя), то Строка. Продукт

Партия

Строка. Продукт

Размер

Строка. Размер

Количество

Строка. Количество

Сумма закупочная

Строка. Количество * Строка. Цена закупочная

Сумма учетная

Строка. Количество * Строка. Цена учетная

Сумма продажная

Строка. Количество * Строка. Цена розничная

Сумма фактическая

Строка. Сумма продажная (фактическая); если пусто, то Строка.Количество * Строка. Цена продажная (фактическая)

Стандартный алгоритм удаления записей движения для товарных документов (по учетному регистру «Движение товаров») реализован в виде процедуры-метода 220[30867500] «Удаление записей о движении товаров по документу в целом». Эта процедура-метод вызывается стандартной реализацией метода «Деакцепт. Удаление записей движения по учетным регистрам» для документов с классом «» и «». Метод «Деакцепт. Удаление записей движения по учетным регистрам» вызывается процедурами деакцепта документа и короткого деакцепта документа

220[30867501] Создание записей о движении товаров по строке документа

220[30867502] Удаление записей о движении товаров по строке документа.

Базовые SQL- запросы для доступа к данным учетного регистра «Движение товаров»

12124205[48431347] Движение товаров. Факты

12124205[48431348] Движение товаров .Обороты

Вид просмотра

371[48431396] Движение товаров. Факты