|
Как просмотреть результаты выполнения запроса в отладчике? | ☑ | ||
---|---|---|---|---|
0
Dmitri446
17.07.17
✎
17:17
|
Делаю 14 занятие по Радченко где в документе "ОказаниеУслуг" некоторая часть кода меняется на запросы
Сам код Процедура ОбработкаПроведения(Отказ, Режим) // регистр ОстаткиМатериалов Расход Движения.ОстаткиМатериалов.Записывать = Истина; Движения.СтоимостьМатериалов.Записывать = Истина; Движения.Продажи.Записывать = Истина; //Создаем менеджер временных таблиц МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ОказаниеУслугПереченьНоменклатуры.Номенклатура КАК Номенклатура, | ОказаниеУслугПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры, | СУММА(ОказаниеУслугПереченьНоменклатуры.Количество) КАК КоличествоВДокументе, | СУММА(ОказаниеУслугПереченьНоменклатуры.Сумма) КАК СуммаВДокументе |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | Документ.ОказаниеУслуг.ПереченьНоменклатуры КАК ОказаниеУслугПереченьНоменклатуры |ГДЕ | ОказаниеУслугПереченьНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ОказаниеУслугПереченьНоменклатуры.Номенклатура, | ОказаниеУслугПереченьНоменклатуры.Номенклатура.ВидНоменклатуры"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); Запрос2 = Новый запрос; Запрос2.МенеджерВременныхТаблиц = МенеджерВТ; Запрос2.Текст = "ВЫБРАТЬ | НоменклатураДокумента.Номенклатура КАК Номенклатура, | НоменклатураДокумента.ВидНоменклатуры КАК ВидНоменклатуры, | НоменклатураДокумента.КоличествоВДокументе КАК КоличествоВДокументе, | НоменклатураДокумента.СуммаВДокументе КАК СуммаВДокументе, | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость, | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество |ИЗ | НоменклатураДокумента КАК НоменклатураДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки( | , | Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки | ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.СтоимостьОстаток | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки( | , | Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки | ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал" ; //Запишем пустые наборы записей чтобы читать остатки без учета данных в документе Движения.СтоимостьМатериалов.Записать(); Движения.ОстаткиМатериалов.Записать(); Результат = Запрос2.Выполнить(); ТЗ = Результат.Выгрузить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда СтоимостьМатериала = 0; Иначе СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество; КонецЕсли; Если ВыборкаДетальныеЗаписи.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал тогда Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Склад = Склад; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; //СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе*СтоимостьМатериала; КонецЕсли; //Регистр продажи Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Сотрудник; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе; Движение.Стоимость = СтоимостьМатериала*ВыборкаДетальныеЗаписи.КоличествоВДокументе; КонецЦикла; КонецПроцедуры Затем чтобы посмотреть результат запроса предлагается установить точку останова на строчку с "ВыборкаДетальныеЗаписи = Результат.Выбрать();" и в режиме 1с перепровести один документ, после выделить переменную ТЗ и через отладка -> вычислить выражение посмотреть результат запроса, но выходит только вот это http://savepic.ru/14936142.png |
|||
1
Джинн
17.07.17
✎
17:19
|
Результат запроса пустой.
|
|||
2
lodger
17.07.17
✎
17:19
|
ты уже заглянул в ТЗ получившуюся в результате запроса и там пусто.
а почему пусто - сам думай. |
|||
3
Бычье сердце
17.07.17
✎
17:19
|
Результат = Запрос2.Выполнить()
Смотрите в отладчике "результат" |
|||
4
h-sp
17.07.17
✎
17:31
|
в отладчике вычислить выражение пишите
Запрос2.Выполнить().Выгрузить(); и не надо никакой там ТЗ |
|||
5
Dmitri446
17.07.17
✎
17:34
|
Вот В отладчике результат, там вообще F2 не активна, не могу значение посмотретьhttp://savepic.ru/14908508.png
|
|||
6
Любопытная
17.07.17
✎
17:36
|
(5) результат нельзя посмотреть. Его можно выгрузить в ТЗ и посмотреть уже ТЗ
|
|||
7
Dmitri446
17.07.17
✎
17:40
|
Любопытная, как видно из первого поста в ТЗ пусто
|
|||
8
Любопытная
17.07.17
✎
17:41
|
(7) И что? Результат запроса пустой. В чем проблема?
|
|||
9
Dmitri446
17.07.17
✎
17:43
|
Любопытная, делаю это упражнение по книге, там автор делает тужу самую процедуру, где в ТЗ отображаются элементы выбранные запросом, собственно для этого ставится точка останова и перерроводится документ, но у меня почему в ТЗ пусто
|
|||
10
h-sp
17.07.17
✎
17:45
|
(7) остатков материалов нет у вас в базе
|
|||
11
lodger
17.07.17
✎
17:45
|
(9) либо код\запрос неправильный, либо данных в бд нет.
мы за тебя учиться будем? |
|||
12
Любопытная
17.07.17
✎
17:46
|
(9) внутреннее соединение в запросе зачем?
|
|||
13
Dmitri446
17.07.17
✎
17:47
|
h-sp, спасибо, действительно
|
|||
14
Nolan
17.07.17
✎
18:14
|
вот вроде бы книга для самого самого начального уровня... Зачем он помещает во временную таблицу ПереченьНоменклатуры, неужели думает, что человеку который открыл для себя 1С 2 недели назад это нужно?
|
|||
15
Nolan
17.07.17
✎
18:16
|
(14) в МенеджерВременныхТаблиц* намного понятнее было бы сделать все в одном запросе
|
|||
16
lodger
17.07.17
✎
18:20
|
(15) напиши об этом Радченко личным рукописным письмом.
|
|||
17
Nolan
17.07.17
✎
18:28
|
(16) было бы не плохо, сам же по нему начинал учить. во многом книга хорошая, но есть "нюансы")
|
|||
18
Лефмихалыч
17.07.17
✎
20:50
|
аааэто... у Радченко такой код в обработке проведения?.. штоле?..
|
|||
19
Nolan
17.07.17
✎
20:53
|
(18) ага)
|
|||
20
Лефмихалыч
17.07.17
✎
20:54
|
(16) (15) их, кагбэ, и должно быть два, но только первый должен быть передЗаписью() и он должен выбирать разницу между табличной частью в базе и табличной частью в документе для проверки остатков только по тому, что реально поменялось.
|
|||
21
Лефмихалыч
17.07.17
✎
20:54
|
(19) не верю
|
|||
22
Nolan
17.07.17
✎
20:56
|
Процедура ОбработкаПроведения(Отказ, Режим)
|
|||
23
Лефмихалыч
17.07.17
✎
21:02
|
(22) это - в ученых целях и для демонстрации. В реальном мире за такие вещи бьют ипплом об стол и неприлично ругают. Не делай так.
Запрос должен быть один. Он может быть длинным, шо капец, но должен быть один всегда, когда это возможно. |
|||
24
mistеr
17.07.17
✎
21:04
|
(23) Зачем так сурово? Чем в данном случае два запроса хуже, чем один?
|
|||
25
Лефмихалыч
17.07.17
✎
21:10
|
(24) да чо-то злой я сегодня.
Плохо количеством соединений с БД. Запрос к МВТ - это не волшебная палка, это такой же запрос к СУДБ, как и все остальные. База данных только tempDB, а не та, в которой товары гниют. Ни кто не умрет от двух запросов. Но и от запросов в цикле ни кто еще не умер за всю историю программирования. Пальцы в розетку совать - не всегда смертельно. Перебегать улицу на красный свет тоже можно безнаказанно какое-то количество раз за всю жизнь. Но это не делает эти все вещи правильными, а выполнение их - разумным. |
|||
26
mistеr
17.07.17
✎
21:20
|
(25) Соединение-то одно, оно никуда не денется. Ты наверное хотел сказать, пакеты по сети лишний раз побегают. Ну так это и правда не смертельно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |