|
Перебрать в запросе ТЧ незаписанного документа | ☑ | ||
---|---|---|---|---|
0
vitaliklibra
19.05.15
✎
11:54
|
Добрый день!
Добавляю в ТЧ строки, и хочу в событии "ПриИзменении()" какого-то поля пересчитать значение какого-то реквизита на форме. Выполняю это запросом: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДокументЗаказСписокНоменклатуры.Номенклатура.КодТовара |ИЗ | Документ.ДокументЗаказ.СписокНоменклатуры КАК ДокументЗаказСписокНоменклатуры |ГДЕ | ДокументЗаказСписокНоменклатуры.Номенклатура.ПризнакУслуги = ЛОЖЬ | И ДокументЗаказСписокНоменклатуры.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Но здесь, пока документ не записан, в ТЧ "СписокНоменклатуры" еще НЕ содержится моих добавленных строк! А мне они нужны при каждом новом добавлении. Подскажите, как сделать правильно? |
|||
1
ДенисЧ
19.05.15
✎
11:55
|
Выгрузить в ТЗ, тз передать в запрос
|
|||
2
Рэйв
19.05.15
✎
11:56
|
Запрос вообщето к базе данных, а тебя там еще нет. Можно конечно сначала выгрузить в тз и запихать - только вот зачем?
На кой тебе выбирать то, что и так под руками? Выгрузи в тз + НайтиСтроки по условию |
|||
3
Рэйв
19.05.15
✎
11:58
|
ну..или просто перебрать:-)
|
|||
4
Рэйв
19.05.15
✎
11:58
|
потому что условия в тз не удет если еще колонку не сделать и не заполнить:-)
|
|||
5
vitaliklibra
19.05.15
✎
12:03
|
(1) - т.е. я пишу:
СпНом = СписокНоменклатуры.Выгрузить(); А как теперь дальше обратиться к этой выгрузке в запросе, что её перебрать с наложением условий? |
|||
6
Остап Сулейманович
19.05.15
✎
12:05
|
В ЗУПе "модно" такие вещи делать в транзакции.
НачатьТранзакцию() Провести() //даже не записать, а провести. В проведении рассчитать все, что нужно ОтменитьТранзакцию() |
|||
7
Остап Сулейманович
19.05.15
✎
12:07
|
+ (6) Ну... там для расчетов по незаписанным данным нужно получать соединения с тьмой таблиц из других регистров. Видимо потому так.
|
|||
8
Рэйв
19.05.15
✎
12:11
|
(5)Тебе будет проще перебором пройтись и не мучаться, чем тебе два часа будут объяснять как засунуть тз в запрос и что там потом с ней делать......
|
|||
9
vitaliklibra
19.05.15
✎
12:12
|
(6) Неужели без проведения/отмены проведения этого не сделать?
|
|||
10
samozvanec
19.05.15
✎
12:14
|
(9) см (7)
|
|||
11
samozvanec
19.05.15
✎
12:15
|
+(10) Обратиться к процедуре в модуле одного объекта из другого (обычн. формы) я все понял, у меня новый любимый автор. пора добавить возможность подписки на темы мистян
|
|||
12
Timon1405
19.05.15
✎
12:19
|
||||
13
vitaliklibra
19.05.15
✎
12:19
|
(11) Ничё се) А ты, видимо, ведешь статистику, кто и что на форуме пишет? :D Вопщет, вопросы есть у того, кто пытается что-то сделать, а не тупо сидит на форумах, чтоб троллить менее опытных коллег. Если это твой способ развлечения, то я рад за тебя!)
|
|||
14
vitaliklibra
19.05.15
✎
12:40
|
Делаю по примеру (12). Описано доступно. Получается для моего случая:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СписокНоменклатуры.Номенклатура КАК Номенклатура |ПОМЕСТИТЬ ВремСписокНоменклатуры |ИЗ | &СписокНоменклатуры КАК СписокНоменклатуры |ГДЕ | СписокНоменклатуры.Номенклатура.ПризнакУслуги = ЛОЖЬ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВремСписокНоменклатуры.Номенклатура КАК Номенклатура |ИЗ | ВремСписокНоменклатуры КАК ВремСписокНоменклатуры"; Запрос.УстановитьПараметр("СписокНоменклатуры", СписокНоменклатуры); Выборка = Запрос.Выполнить().Выбрать(); Пишет: {Документ.ДокументЗаказ.Форма.ФормаДокумента.Форма(212)}: Ошибка при вызове метода контекста (Выполнить) Выборка = Запрос.Выполнить().Выбрать(); по причине: {(7, 2)}: Поле не найдено "СписокНоменклатуры.Номенклатура.ПризнакУслуги" <<?>>СписокНоменклатуры.Номенклатура.ПризнакУслуги = ЛОЖЬ Не пойму, чего так? Ведь реквизит "ПризнакУслуги" в номенклатуре есть! Что делаю не так? |
|||
15
vitaliklibra
19.05.15
✎
12:46
|
Вопрос решил, когда условие переставил к основному запросу:
"ВЫБРАТЬ | СписокНоменклатуры.Номенклатура КАК Номенклатура |ПОМЕСТИТЬ ВремСписокНоменклатуры |ИЗ | &СписокНоменклатуры КАК СписокНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВремСписокНоменклатуры.Номенклатура КАК Номенклатура |ИЗ | ВремСписокНоменклатуры КАК ВремСписокНоменклатуры |ГДЕ | ВремСписокНоменклатуры.Номенклатура.ПризнакУслуги = ЛОЖЬ"; Но все же, почему не отработало условие во вложенном запросе? |
|||
16
Любопытная
19.05.15
✎
12:48
|
Потому что первый запрос просто запихивает ТЗ во временную таблицу. Он ничего про твою номенклатуру еще знать не знает. Вот когда во временную таблицу сложит, тогда разберется
|
|||
17
Ёпрст
19.05.15
✎
12:49
|
(15) типизируй поле через выразить в тексте запроса и лепи своё условие
|
|||
18
vitaliklibra
19.05.15
✎
12:51
|
Всё принято!) Ребят, спасибо за помощь!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |