====== Общие сведения ====== Имена таблиц регистров в базе начинаются с 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') ''