Имена таблиц регистров в базе начинаются с R_.
Во всех регистрах есть измерения, по которым фиксируются операции (например, FIRMA) и ресурсы (например, сумма, количество). Ресурсы имеют имена, начинающиеся с P_ (приход) и R_ (расход).
Поля вида KO_имя_регистра в настоящее время не используются.
Не существует таблиц остатков регистров, все остатки получаются запросами, суммирующими R_ресурс-P_ресурс (ниже будут приведены примеры таких запросов).
Во всех регистрах присутствуют идентификатор проводки (ID), дата и время операции (DATADOC), ссылка на таблицу (TABLICA), документ (DOC_ID), строку (STR_ID) и ряд вспомогательных полей для корреспондирующих проводок.
Ниже приведены примеры запросов к некоторым регистрам.
ВАЖНО! Проектируя запросы к регистрам, надо иметь в виду, что проводки по ним по мере обновления программы могут меняться (чаще всего добавляются новые измерения или ресурсы, но теоретически возможны и иные изменения структуры таблиц).
Взаиморасчеты (денежные) в базе хранятся в таблице R_VZAIMORASHETY.
Измерения: фирма - FIRMA, клиент - KONTRAGENT, договор - DOGOVOR.
Ресурс один - сумма, соответственно расход по ней (это платежи, возвраты) - R_SUMMA, приход (это отгрузка) - P_SUMMA. Получить долг можно запросом, суммирующим R_SUMMA-P_SUMMA.
Примеры:
SELECT KONTRAGENT,DOGOVOR, SUM(IIF(P_SUMMA IS NULL,0, P_SUMMA))-
SUM(IIF(R_SUMMA IS NULL,0, R_SUMMA)) AS DOLG
FROM r_vzaimorashety GROUP BY KONTRAGENT,DOGOVOR
Этот запрос выдаст долги по всем контрагентам и договорам на конец базы
SELECT SUM(IIF(P_SUMMA IS NULL,0, P_SUMMA))-SUM(IIF(R_SUMMA IS NULL,0, R_SUMMA)) FROM r_vzaimorashety WHERE DATADOC⇐'03.09.2019' AND KONTRAGENT=1000000000001
выдаст долг клиента с кодом 1000000000001 на утро 3.09.2019.
Учет тары ведется в 3 регистрах: остатки тары, собственная (выкупленная) тара и залоговая стоимость тары.
Задолженность клиента по таре = остаток - собственная тара - залог.
R_VKК - регистр физического остатка тары у клиента.
Кроме фирмы и клиента, там есть еще измерения ADRES (адрес доставки) и TARA (код тары).
Соответственно, вместо P_SUMMA и R_SUMMA будут P_KOLICHESTVO и R_KOLICHESTVO.
SELECT SUM(IIF(P_KOLICHESTVO IS NULL,0, P_KOLICHESTVO))-SUM(IIF(R_KOLICHESTVO IS NULL,0, R_KOLICHESTVO))
FROM R_VKK WHERE DATADOC⇐'03.09.2019' AND ADRES=1000000000001
Этот запрос вернет остаток (НО НЕ ЗАДОЛЖЕННОСТЬ) по таре ВСЕХ ВИДОВ по адресу с кодом 1000000000001.
SELECT SUM(IIF(P_KOLICHESTVO IS NULL,0, P_KOLICHESTVO))-SUM(IIF(R_KOLICHESTVO IS NULL,0, R_KOLICHESTVO))
FROM R_VKK WHERE DATADOC⇐'03.09.2019' AND TARA=1000000000001 AND ADRES=1000000000001
Аналогичный запрос, но только по одному виду тары
R_SKK хранит движения по выкупленной клиентом таре.
SELECT SUM(IIF(P_KOLICHESTVO IS NULL,0, P_KOLICHESTVO))-SUM(IIF(R_KOLICHESTVO IS NULL,0, R_KOLICHESTVO))
FROM R_SKK WHERE DATADOC⇐'03.09.2019' AND TARA=1000000000001 AND ADRES=1000000000001
Этот запрос вернет количество выкупленной по адресу 1000000000001 тары определенного вида по данным на утро 3.09.2019.
R_ZAL хранит количество залоговой тары и ее стоимость.
SELECT SUM(IIF(P_KOLICHESTVO IS NULL,0, P_KOLICHESTVO))-SUM(IIF(R_KOLICHESTVO IS NULL,0, R_KOLICHESTVO))
FROM R_ZAL WHERE DATADOC⇐'03.09.2019' AND TARA=1000000000001 AND ADRES=1000000000001
Запрос вернет количество залоговой тары по адресу 1000000000001 тары определенного вида по данным на утро 3.09.2019.
Как уже говорилось выше, задолженность клиента по таре = остаток - собственная тара - залог.
Пример запроса, получающего долг адреса доставки по таре:
SELECT SUM(OST_-SOB_-ZAL_) FROM
(SELECT SUM(IIF(P_KOLICHESTVO IS NULL,0, P_KOLICHESTVO))-SUM(IIF(R_KOLICHESTVO IS NULL,0, R_KOLICHESTVO)) AS OST_,0 AS SOB_, 0 AS ZAL_ FROM R_VKK WHERE TARA=1000000000001 AND ADRES=1000000000001 AND DATADOC⇐'03.09.2019'
UNION ALL
SELECT
0 AS OST_, SUM(IIF(P_KOLICHESTVO IS NULL,0, P_KOLICHESTVO))-SUM(IIF(R_KOLICHESTVO IS NULL,0, R_KOLICHESTVO)) AS SOB_,
0 AS ZAL_
FROM R_SKK WHERE TARA=1000000000001 AND ADRES=1000000000001 AND DATADOC⇐'03.09.2019'
UNION ALL
SELECT 0 AS OST_, 0 AS SOB_,
SUM(IIF(P_KOLICHESTVO IS NULL,0, P_KOLICHESTVO))-SUM(IIF(R_KOLICHESTVO IS NULL,0, R_KOLICHESTVO)) AS ZAL_
FROM R_ZAL WHERE TARA=1000000000001 AND ADRES=1000000000001 AND DATADOC⇐'03.09.2019')