S-market без слез. Создание документа и заполнение его при помощи SQL. Часть 3. Создание SQL запроса для DOCHEAD.



Как вы уже поняли, для создания документа в S-market необходимо сделать запись в 2 таблицы: DOCHEAD и DOCSPEC.
В первую очередь создаем заголовок документа:

INSERT INTO DOCHEAD (ID_DOCHEAD, SHOPINDEX, DOCHEAD_FILIALINDEX, DOCTYPE, DOCINDEX, DOCKIND,
DOC_DATE, EXT_DOCTYPE, EXT_DOCINDEX, EXT_DOC_DATE, BASE_DOCHEAD, BASE1_DOCHEAD, REGISTERED, 
CLIENT_INDEX, CLIENT2_INDEX, CLIENT_BANK, CLIENT2_BANK, F_SCHET, TOTALRUB, TOTALCUR, PAYMENTRUB, 
PAYMENTCUR, OPERATION, CUR_TYPE, CURS, WEEK, DOC_STATE, POST_STATUS, MANAGER, ADD_PARAM1,
ADD_PARAM2, ADD_PARAM3, ADD_PARAM4, ADD_PARAM5, FIXCOUNT, ACCEPT, BOOK, NOPAY_QUANTITY,
NOLINK_QUANTITY, MODDATE, MODMANAGER, NEEDPAY_QUANTITY, NEEDPAY_RUB, NEEDPAY_CUR, ATTACH,
ACCEPT_FLAG, SUBCLIENT_INDEX, SUBCLIENT_BANK, ORDER_DOCHEAD, PROLON, COMMENT, TOTALRUB1, 
TOTALCUR1, ADD_PARAM6, ADD_PARAM7, ADD_PARAM8, ADD_PARAM9, ADD_PARAM10) VALUES
 (ИД документа, Индекс магазина,Индекс филиала, Тип документа (приход или расход или еще что нибудь), Номер документа с буквенным префиксом, 5, Дата создания документа, NULL, NULL,Дата внешнего основания, NULL, NULL, NULL, Клиент от которого документ,Индекс места хранения, NULL, NULL, NULL, 0, 0, 0, 0, Операция по документу, NULL, 0, NULL, 6192, 0, 1, NULL, NULL, NULL, NULL, NULL, 0, 'F', 'F', 0, 0, Дата последнего изменения, 1, 0, 0, 0, 1, 0, NULL, NULL, NULL, 'F', 'Пусто', 0, 0, NULL, NULL, NULL, NULL, NULL);

Тут можно заметить,что такие параметры, как "ИД документа" и "Номер документа с буквенным префиксом" не фигурируют в таблицах, их можно получить при помощи генератора:
SELECT * FROM GET_NEW_DOCINDEX (1,Тип документа) /* Получение DOCINDEX */
SELECT * FROM GET_NEW_ID ('dochead_gen')  /* Получение  ID_DOCHEAD  */

Таким образом мы получим "красивые" номера и наш список документов не "перекосит"
Список типов документов и операций можно увидеть в таблицах DOCTYPE и OPERATIONS соответственно. Привязки мест хранения к филиалам и магазинам хранятся в таблицах th_classif и th_classbyclient