Всем привет.
Это задача не имеет ничего общего с реальными задачами :) (просто учусь писать запросы)...
Задача такая: находим документ РеализацияТоваровУслугТовары мне нужно получить остатки по всем номенкл. из табличной части "Товары".
Проблема: Сообщение выводиться столько раз сколько строк в документе... но РезультатЗапроса.Субконто1(сче 41.1 номенклатура)-пустое значение, а РезультатЗапроса.Номенклатура-нормально выводит подскажите плиз че не так?
Это задача не имеет ничего общего с реальными задачами :) (просто учусь писать запросы)...
Задача такая: находим документ РеализацияТоваровУслугТовары мне нужно получить остатки по всем номенкл. из табличной части "Товары".
Проблема: Сообщение выводиться столько раз сколько строк в документе... но РезультатЗапроса.Субконто1(сче 41.1 номенклатура)-пустое значение, а РезультатЗапроса.Номенклатура-нормально выводит подскажите плиз че не так?
Запрос=Новый Запрос;
Запрос.УстановитьПараметр("ДатаКон",ПолеВвода1);
Запрос.УстановитьПараметр("СчетФормы",СчетФорм1); //сче 41.1
Запрос.УстановитьПараметр("номерДок",Номер1);
Запрос.УстановитьПараметр("ОрганизацияФ",Орг);
Запрос.УстановитьПараметр("СкладФ",Склад1);
Запрос.УстановитьПараметр("номерДок",СокрЛП(Номер1));
Запрос.Текст=
"ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура,
| ХозрасчетныйОстатки.КоличествоОстаток,
| ХозрасчетныйОстатки.КоличествоОстатокКт,
| ХозрасчетныйОстатки.КоличествоОстатокДт,
| ХозрасчетныйОстатки.Субконто1
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
| &ДатаКон,
| Счет.Код = &СчетФормы,
| ,
| Организация = &ОрганизацияФ
| И Субконто2 = &СкладФ) КАК ХозрасчетныйОстатки
| ПО РеализацияТоваровУслугТовары.Номенклатура = ХозрасчетныйОстатки.Субконто1
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
|ГДЕ
| РеализацияТоваровУслуг.Номер = &номерДок"
;
РезультатЗапроса=Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий()Цикл
Сообщить(""+РезультатЗапроса.Номенклатура+РезультатЗапроса.Субконто1+" "+РезультатЗапроса.КоличествоОстаток+" "+РезультатЗапроса.КоличествоОстатокДт);
КонецЦикла;
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Можно так
(2) вот интересно, сколько документов будет отобрано в запрос если уникальность номеров документов данного вида в пределах года и мы имеем базу за пару-тройку лет?
Кстати, не стоит в запросах получать полные ссылки на объекты. Имеется в виду следующее,
если Вы выбирете РеализацияТоваровУслугТовары.Номенклатура, то фактически получите указатель на объект, а если выбирете РеализацияТоваровУслугТовары.Номенклатура.ССЫЛКА, то фактически получите полную ссылку на объект (читайте точка фактически работает как левое соединение в запросе), т.е. будут подтянуты все связанные данные, что может резко замедлить скорость работы запросов. Особенно это заметно на достаточно объемных базах.
"ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ХозрасчетныйОстатки.СуммаОстаток КАК Сумма,
| ХозрасчетныйОстатки.КоличествоОстаток КАК Количество
|ИЗ
| (ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &Реализация) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&ПериодОтчета, Счет = &СчетНоменклатуры, , ) КАК ХозрасчетныйОстатки
| ПО ВложенныйЗапрос.Номенклатура = ХозрасчетныйОстатки.Субконто1
|ИТОГИ
| СУММА(Сумма),
| СУММА(Количество)
|ПО
| ОБЩИЕ,
| Номенклатура"
Показать(2) вот интересно, сколько документов будет отобрано в запрос если уникальность номеров документов данного вида в пределах года и мы имеем базу за пару-тройку лет?
Кстати, не стоит в запросах получать полные ссылки на объекты. Имеется в виду следующее,
если Вы выбирете РеализацияТоваровУслугТовары.Номенклатура, то фактически получите указатель на объект, а если выбирете РеализацияТоваровУслугТовары.Номенклатура.ССЫЛКА, то фактически получите полную ссылку на объект (читайте точка фактически работает как левое соединение в запросе), т.е. будут подтянуты все связанные данные, что может резко замедлить скорость работы запросов. Особенно это заметно на достаточно объемных базах.
ну вот так например:
|ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура,
| ХозрасчетныйОстатки.КоличествоОстаток,
| ХозрасчетныйОстатки.КоличествоОстатокКт,
| ХозрасчетныйОстатки.КоличествоОстатокДт
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
| &ДатаКон,
| Счет.Ссылка = &СчетФормы,
| ,
| Организация = &ОрганизацияФ
| И Субконто3 = &СкладФ) КАК ХозрасчетныйОстатки
| ПО РеализацияТоваровУслугТовары.Номенклатура = ХозрасчетныйОстатки.Субконто1
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка.Ссылка = &СсылкаДок
|ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура,
| ХозрасчетныйОстатки.КоличествоОстаток,
| ХозрасчетныйОстатки.КоличествоОстатокКт,
| ХозрасчетныйОстатки.КоличествоОстатокДт
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
| &ДатаКон,
| Счет.Ссылка = &СчетФормы,
| ,
| Организация = &ОрганизацияФ
| И Субконто3 = &СкладФ) КАК ХозрасчетныйОстатки
| ПО РеализацияТоваровУслугТовары.Номенклатура = ХозрасчетныйОстатки.Субконто1
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка.Ссылка = &СсылкаДок
Может так?
Запрос = Новый Запрос("
|ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура,
| ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокКт, 0) КАК КоличествоОстатокКт,
| ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстатокДт
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
| &ДатаКон,
| Счет = &СчетФормы,
| ,
| Организация = &ОрганизацияФ
| И Субконто3 = &СкладФ
| И Субконто1 В
| (ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &СсылкаДок)) КАК ХозрасчетныйОстатки
| ПО РеализацияТоваровУслугТовары.Номенклатура = ХозрасчетныйОстатки.Субконто1
| И (РеализацияТоваровУслугТовары.Ссылка = &СсылкаДок)");
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот