|
Запрос ведёт себя странно | ☑ | ||
---|---|---|---|---|
0
FOI1977
28.08.14
✎
13:18
|
В модуле есть простой запросик
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 ВЫБОР КОГДА Т1.ДатаЗавершенияСделки > ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) ИЛИ Т1.ДатаПолнойОтгрузки > ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) ТОГДА ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовОтгрузка.ПолнаяОтгрузка) КОГДА Т1.ДатаНачалаОтгрузки > ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) И ЕСТЬNULL(Т1.ДатаПолнойОтгрузки, ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1)) < ДАТАВРЕМЯ(2000, 1, 1, 1, 1, 1) ТОГДА ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовОтгрузка.ЧастичнаяОтгрузка) ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовОтгрузка.Неотгруженно) КОНЕЦ КАК Отгрузка, ВЫБОР КОГДА Т1.ДатаЗавершенияСделки > ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) ИЛИ Т1.ДатаПолнойОплаты > ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) ТОГДА ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовОплата.ПолнаяОплата) КОГДА Т1.ДатаНачалаОплаты > ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) И ЕСТЬNULL(Т1.ДатаПолнойОплаты, ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1)) < ДАТАВРЕМЯ(2000, 1, 1, 1, 1, 1) ТОГДА ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовОплата.ЧастичнаяОплата) ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовОплата.Неоплачено) КОНЕЦ КАК Оплата ИЗ РегистрСведений.РезультатыСделокПоПродажам.СрезПоследних(, ЗаказПокупателя = &Ссылка) КАК Т1 Ссылка - заказПокупателя №3536 от этого года так вот в модуле он выдаёт статусы не отгружен и не оплачен, а в консоли запросов - отгружен и не оплачен. Как такое может быть?! Где я туплю?! |
|||
1
Трик
28.08.14
✎
13:20
|
запрос из обработки проведения?
|
|||
2
FOI1977
28.08.14
✎
13:23
|
(1) Из обработки события проведения документа
|
|||
3
Hans
28.08.14
✎
13:25
|
(2) в конце обработки проведения напиши Движения.записать() либо Движения.Взаиморасчеты.Записать();
|
|||
4
Ёпрст
28.08.14
✎
13:26
|
дык мот записи в РезультатыСделокПоПродажам пишутся позже, чем этот код вообще выполняется
|
|||
5
FOI1977
28.08.14
✎
13:26
|
(1) (3) то есть она запускается, а движений пока нет. так я понял?!
|
|||
6
Hans
28.08.14
✎
13:27
|
а такое ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) я обычно заменяю на &Пустаядата
|
|||
7
Hans
28.08.14
✎
13:27
|
(3) да.
|
|||
8
FOI1977
28.08.14
✎
13:27
|
(6) тяжёлое наслендие, не стал переписывать
|
|||
9
FOI1977
28.08.14
✎
13:30
|
(4) это код обработки события.
Событие - проведение документа. |
|||
10
FOI1977
28.08.14
✎
13:54
|
Коллеги, на какое событие "подвесить" эту процедуру, ведь у нас нет события после проведения документа, да и после записи в регистр тоже нет.
|
|||
11
Hans
28.08.14
✎
14:21
|
(10) свои вычисления пиши в самом конце обработки проведения.
Если Не Отказ Тогда ЭтотОбъект.Движения.Записать(); //твои вычисления КонецЕсли; |
|||
12
lxndr
28.08.14
✎
14:31
|
ващето
ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) = '01.01.0001 01:01:01" Этокакбы не пустая дата |
|||
13
FOI1977
28.08.14
✎
14:37
|
(12) В данном случае не игрет роли
|
|||
14
Крошка Ру
28.08.14
✎
14:37
|
(0)Если это из обработки проведения, то в ней не учитываются движения самого документа( т.к. транзакция ещё не зафиксирована и движений в базе ещё нет), а при выполнении в консоли этот документ наверняка уже проведен и его проводки тоже попадают в запрос.
|
|||
15
FOI1977
28.08.14
✎
14:37
|
(11) то есть пихать в каждый документ :( лениво, но что делать...
|
|||
16
FOI1977
28.08.14
✎
14:38
|
(14) то есть (11) не поможет?
|
|||
17
FOI1977
28.08.14
✎
14:39
|
(14) я выше написал откуда это
|
|||
18
Hans
28.08.14
✎
14:39
|
(15) В каждый документ не надо. Сделай подписку на событие, на проведение нужных документов и впиши туда Источник.Движения.записать();
(16) поможет. |
|||
19
FOI1977
28.08.14
✎
14:39
|
(14) но могу уверить что в обработке события - проведение документа та же фигня
|
|||
20
Крошка Ру
28.08.14
✎
14:40
|
(16) Нет. Если тебе в обработке проведения нужны движения самого документа, то используй те данные на основании которых эти движения делаются
|
|||
21
Hans
28.08.14
✎
14:41
|
100 руб ставлю что поможет.
|
|||
22
Крошка Ру
28.08.14
✎
14:42
|
(19) Ещё раз: до конца ОбработкиПроведения() самих движений документа в базе ещё нет. Можно использовать подписку на события, на момент подписки движения уже есть.
|
|||
23
FOI1977
28.08.14
✎
14:43
|
(22) вот как раз это и не прокатывало
(21) можешь уже не ставить помогло. |
|||
24
FOI1977
28.08.14
✎
14:44
|
(21) Огромное спасибо.
|
|||
25
Трик
28.08.14
✎
14:52
|
(24) что значит в каждый? их так много? Если бы было лень типоой код менять я бы понял. А тут как я понял и так самописка.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |