03. Таблицы (регистры или журналы)
Таблицы (в синтаксисе DSL — ЖУРНАЛ) предназначены для хранения учётных данных: остатков, оборотов, взаиморасчётов. Заполняются автоматически при проведении документов.
3.1. Синтаксис регистра
ЖУРНАЛ ИмяРегистра
КОНТРОЛЬ_ОСТАТКОВ ДА|НЕТ
ИЗМЕРЕНИЕ ИмяИзмерения ТИП_ДАННЫХ
ИЗМЕРЕНИЕ ИмяДругогоИзмерения ТИП_ДАННЫХ
РЕСУРС ИмяРесурса ТИП_ДАННЫХ
РЕСУРС ИмяДругогоРесурса ТИП_ДАННЫХ
КНОПКА "Записать" ЗАПИСАТЬ
КНОПКА "Отмена" ЗАКРЫТЬ
КОНЕЦ
3.2. Пример регистра журналов
ЖУРНАЛ ОстаткиЗапчастей
КОНТРОЛЬ_ОСТАТКОВ ДА
ИЗМЕРЕНИЕ Организация ВЫБОР Организации
ИЗМЕРЕНИЕ Склад ВЫБОР Склады
ИЗМЕРЕНИЕ Номенклатура ВЫБОР Номенклатура
РЕСУРС Количество ЧИСЛО
РЕСУРС Сумма ЧИСЛО
КНОПКА "Записать" ЗАПИСАТЬ
КНОПКА "Отмена" ЗАКРЫТЬ
КОНЕЦ
3.3. Системные поля журналов
| Поле | Тип | Описание |
|---|---|---|
| Дата | ДАТАВРЕМЯ | Дата движения (из документа) |
| Номер | СТРОКА | Номер документа |
| Документ | СТРОКА | Строковое представление документа |
| parent_id | ЧИСЛО | ID документа-источника |
| parent_type | СТРОКА | Тип документа |
| _type | ЧИСЛО | 1 = ПРИХОД, -1 = РАСХОД |
3.4. Контроль остатков
При КОНТРОЛЬ_ОСТАТКОВ ДА платформа блокирует проведение документа с расходом, если остаток становится отрицательным.
При КОНТРОЛЬ_ОСТАТКОВ НЕТ допускается отрицательный остаток (используется для взаиморасчётов, где возможна переплата).
3.5. Движения по журналу
В документах движения описываются блоком ДВИЖЕНИЕ:
ДВИЖЕНИЕ ОстаткиЗапчастей РАСХОД
ПОЛЯ Организация = Организация,
Склад = Склад,
Номенклатура = Запчасти.Номенклатура,
Количество = Запчасти.Количество,
Сумма = Запчасти.Сумма
3.6. Расчёт остатков
-- Текущий остаток
SELECT Номенклатура, SUM(_type * Количество) as Остаток
FROM Журнал_ОстаткиЗапчастей
GROUP BY Номенклатура
-- Обороты за период
SELECT
SUM(CASE WHEN _type = 1 THEN Количество ELSE 0 END) as Приход,
SUM(CASE WHEN _type = -1 THEN Количество ELSE 0 END) as Расход
FROM Журнал_ОстаткиЗапчастей
WHERE Дата BETWEEN '2024-01-01' AND '2024-12-31'