[ОТВЕТИТЬ]
22.03.2015 08:26
BotMan
 
подскажите куда копать, чтобы добавить позицию в ПН которая в черновике?
smspec - пустой если в нем нету ни одной позиции.

Код:
INSERT INTO smspec
(doctype, docid, article)
VALUES
('WI', 'ПН111111', '000111')
commit
OlegON:
называй тему и пиши внятно, пожалуйста
22.03.2015 09:04
OlegON
 
это без ошибки отрабатывает? я смутно помню, но номер позиции в спецификации я тоже заполнял.
22.03.2015 09:15
BotMan
 
дело в том, что я не пробыл, так как очкую. решил сперва спросить.
22.03.2015 09:28
OlegON
 
где ты не пробыл? со вставкой-то что очковать? и бекап у тебя всегда есть... посмотри, какие колонки is not null
22.03.2015 11:25
konst
 
не совсем в тему, но может пригодится. Мы работаем по принципу: контракт - заказ - приходная накладная. и приходка создается экспортом из заказа и в нее автоматом переносится кол-во из заказа. операторы вручную обнуляют его, а затем уже сканируют товар и проставляют кол-во по факту. если накладная небольшая, то обнуление не занимает много времени, а для больших я как раз и создал процедуру обнуления кол-ва. операторы перегоняют заказ в приход, сохраняют и закрывают накладную в черновике, затем в другой программе жмут кнопку обнулить - и готово.
1. проверяем что накладная никем не занята:
Код:
SELECT a.objtype, a.id, a.sid, a.sernum, a.locklabel, a.timepoint, a.clientproc FROM supermag.sslocks a where a.id = 'ПН111111';
результат должен быть null.
2. обнуляем кол-во
Код:
UPDATE supermag.smspec a SET a.quantity = 0, a.totalprice = 0, a.totalpricenotax = 0, a.totalpricecur = 0 WHERE a.doctype = 'WI' AND a.docid = 'ПН111111';
3. а также добавляем разницу в таблицу расхождений:
Код:
INSERT INTO supermag.slspecqmismatch b (b.doctype, b.docid, b.specitem, b.quantbydoc) VALUES (....);
* последний запрос не содержит данных...
22.03.2015 13:08
BotMan
 
Код:
Describing smspec....

NAME                            Null?     Type
------------------------------- --------- -----
DOCTYPE                         NOT NULL  CHAR(2)
DOCID                           NOT NULL  VARCHAR2(50)
SPECITEM                        NOT NULL  NUMBER(10,0)
DISPLAYITEM                     NOT NULL  NUMBER(10,0)
ARTICLE                         NOT NULL  VARCHAR2(50)
QUANTITY                        NOT NULL  NUMBER(14,3)
ITEMPRICE                                 NUMBER(19,4)
TOTALPRICE                      NOT NULL  NUMBER(19,4)
ITEMPRICENOTAX                            NUMBER(19,4)
TOTALPRICENOTAX                           NUMBER(19,4)
ITEMPRICECUR                              NUMBER(19,4)
TOTALPRICECUR                   NOT NULL  NUMBER(19,4)
CAUSETYPE                                 CHAR(2)
CAUSEID                                   VARCHAR2(50)
CAUSESPECITEM                             NUMBER(10,0)


INSERT INTO smspec
(doctype, docid, SPECITEM, DISPLAYITEM, article, QUANTITY, TOTALPRICE, TOTALPRICECUR)
VALUES
('WI', 'ПН111111', 1,1, '000222',0,0);
нужно заполнять все поля где NOT NULL?
22.03.2015 14:08
OlegON
 
да, и учти, что есть поля с DEFAULT, там сам смотри, устраивает ли тебя значение.
22.03.2015 14:15
BotMan
 
если commit не прописан, то СМ не увидит результат ?
22.03.2015 14:20
OlegON
 
не увидит. ты почитал бы хоть чуть-чуть, что делаешь... что такое commit в том числе...
22.03.2015 14:23
BotMan
 
прошу прощения, за возможно глупые вопросы, но опыта у меня нету. т
Все я это перечитал уже по 100 раз ... и commit и rollback и таблицы поддерживающие транзакции и не поддерживающие. теории много, а практики - 0 . вот и спрашиваю

спасибо за понимание 8)
22.03.2015 14:42
konst
 
могу еще посоветовать поискать здесь на форуме, создание докуметов нЕсколько раз обсуждалось и напрямую - запросами и через почтовый модуль используя XML обмен. Интересно бы было узнать цель создания документа.
22.03.2015 14:55
BotMan
 
почтового модуля у нас нету.

операторы периодически ругаются, что им приходится в ручную набирать большие накладные, поставщики могут выслать электронный вариант накладной. вот я и подумал, написать в 1с обработку которая сверит накладную по артикулам или штрихкогдам(В базе СМ) и загрузит ее в созданную накладную.
конечно можно сделать выгрузку из 1с в виде Terminal.dat и загружать через менюшку в накладной "Портативный терминал", но мне захотелось попробовать что-то новое в sql, а не только select.

конечно хочется 7 раз отмерить и один отрезать, вот и задаю своего рода глупые вопросы тут, на что получаю отличные ответы и спасибо вам за это ОГРОМНОЕ!
23.03.2015 08:03
Mtirt
 
Цитата:
BotMan почтового модуля у нас нету.

операторы периодически ругаются, что им приходится в ручную набирать большие накладные, поставщики могут выслать электронный вариант накладной. вот я и подумал, написать в 1с обработку которая сверит накладную по артикулам или штрихкогдам(В базе СМ) и загрузит ее в созданную накладную.
конечно можно сделать выгрузку из 1с в виде Terminal.dat и загружать через менюшку в накладной "Портативный терминал", но мне захотелось попробовать что-то новое в sql, а не только select.

конечно хочется 7 раз отмерить и один отрезать, вот и задаю своего рода глупые вопросы тут, на что получаю отличные ответы и спасибо вам за это ОГРОМНОЕ!
Предлагаю послушать konst, вместо того, чтобы напрямую лезть в базу пойти почитать документацию про XML-обмен.
23.03.2015 09:43
Ferus
 
Цитата:
Mtirt Предлагаю послушать konst, вместо того, чтобы напрямую лезть в базу пойти почитать документацию про XML-обмен.
Поддерживаю
23.03.2015 10:48
kadr
 
Цитата:
BotMan ..
конечно можно сделать выгрузку из 1с в виде Terminal.dat и загружать через менюшку в накладной "Портативный терминал", но мне захотелось попробовать что-то новое в sql, а не только select.
..
Оставьте что-то новое для других разделов, а тут используйте тот самый Terminal.dat
23.03.2015 10:56
YuraZ
 
Лезть напрямую в базу в любом случае неправильно. Вы можете попросту не знать какие изменения вносятся Супермагом при добавлении записи в спецификацию накладной. В результате, Вы заполните smspec, но оставите незаполненными другие, связанные таблицы. Например, в случае с приходной накладной, данные вносятся не только в smspec, но и в smspecby (для Беларуси). Так же затрагиваются таблицы налогов. И никто не знает какие таблицы будут изменяться в будущих версиях Супермага. Если уж так хочется вносить позиции в накладные, то есть смысл хотя бы посмотреть как это делает сам Супермаг. Ставьте SQL Monitor и смотрите. Потом повторяйте алгоритм Супермага. Но учтите, что никто не даст гарантии, что в следующей версии ничего не измениться, но по крайней мере в текущей версии Вы будете делать все гарантировано правильно. Ну и не забудьте про техподдержку, - никто потом в Ваших глюках разбираться не будет - Вы делаете - Вам и ответ держать :)
23.03.2015 11:03
svtl
 
пока писала ответ - Юрий уже ответил :) Так что - поддерживаю предыдущего оратора :)
Опции темы


Часовой пояс GMT +3, время: 03:47.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.