Wiki source code of Разделение данных по кассам
Last modified by Nefedenkova Viktoria on 2021/03/19 16:33
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | ^^[[Файл>>http://xwiki.una.md/bin/download/UNA/UNA-1C_integration/Maintablefieldsdescription.txt||rel="__blank" title="Описание основных полей для базовых таблиц продаж в кассовой схеме"]] с описанием основных полей для базовых таблиц продаж в кассовой схеме.^^ | ||
| 2 | |||
| 3 | **Как выполнить разделение данных о продажах по кассам?** | ||
| 4 | |||
| 5 | Запрос SELECT * from [[tmdb_comenz>>tmdb_comenz||rel="__blank" title="tmdb_comenz"]] - выводит "шапку" чека, где: | ||
| 6 | |||
| 7 | ~1. tmdb_sold - смены | ||
| 8 | Name Type Nullable Default Comments | ||
| 9 | NRDOC INTEGER Электронный номер смены | ||
| 10 | ID_CASA INTEGER Код кассы из справочника O,CASA | ||
| 11 | |||
| 12 | |||
| 13 | 2. tmdb_comenz - чеки | ||
| 14 | NRDOC NUMBER(10) Y Электронный номер смены (для связи с tmdb_sold.nrdoc) | ||
| 15 | |||
| 16 | (% style="font-size: 14px; font-family: Consolas; background-color:#fbfdff" %) | ||
| 17 | select d.* , | ||
| 18 | (% style="font-size: 14px; font-family: Consolas; background-color:#fbfdff" %) | ||
| 19 | (select s.id_casa from tmdb_sold s where s.nrdoc=d.nrdoc and rownum=1) id_casa | ||
| 20 | from tmdb_comenz d | ||
| 21 | (% style="font-size: 14px; font-family: Consolas; background-color:#fbfdff" %) | ||
| 22 | and rownum=1 -> and s.sid = d.sid - если для архивной кассовой схемы | ||
| 23 | |||
| 24 | sid + nrdoc - это первичный ключ в tmdb_sold, в comenz - sid + cod и если нужно читать данные за большие периоды - лучше соединить таблицы вместо подзапроса. | ||
| 25 | Например, когда нужно читать данные за от месяца до 3-х месецев: | ||
| 26 | (% style="font-size: 14px; font-family: Consolas; background-color:#fbfdff" %) | ||
| 27 | \\ select ~-~-d.* | ||
| 28 | (select s.id_casa from tmdb_sold s where s.nrdoc=d.nrdoc and s.sid = d.sid) id_casa | ||
| 29 | ~-~-,(select count(s.id_casa) from tmdb_sold s where s.nrdoc=d.nrdoc ) cnt_id_casa | ||
| 30 | , d.* | ||
| 31 | from tmdb_comenz d | ||
| 32 | ~-~-order by cnt_id_casa desc | ||
| 33 | |||
| 34 | **Почему кассы имеют нумерацию 101 и 102 а не 1 и 2?** | ||
| 35 | |||
| 36 | 101 - первый магазин, первая касса. | ||
| 37 | 102 - первый магазин, вторая касса. | ||
| 38 | ... | ||
| 39 | N0M - N-й магазин, M-я касса. | ||
| 40 | |||
| 41 | Ключ кассы уникален в рамках всей сети. | ||
| 42 | |||
| 43 | (% style="font-size: 14px; font-family: Consolas; background-color:#fbfdff" %) | ||
| 44 | select ... | ||
| 45 | from tmdb_comenz c, tmdb_sold s | ||
| 46 | where c.sid = s.sid | ||
| 47 | and c.nrdoc = s.nrdoc | ||
| 48 | and trunc(c.data) between :start_date and :end_date | ||
| 49 | \\В зависимости от периода оптимизатор сам выберет, что эффективнее - соединять по индексу или full scan. |