Добрый день. Прошу подсказать мне по коду запроса, так как не силён в них. Конфигурация УТ 10.3 обычные формы. Есть документ "Перемещение товаров". В нём в табличную часть добавлено поле "место хранения", в которое в зависимости от выбранного склада будет проставляться ячейка, в которой хранится товар. Есть печатная форма "Перемещение товаров", в ней добавил поле "Место". Есть функция "ПолучитьДанныеДляПечатиПеремещенияТоваров() Экспорт" в модуле объекта "перемещение товаров". В ней есть запрос, который я уже подкорректировал:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| НомерСтрокиТЧ,
| ВложенныйЗапросПоТоварам.Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
| ВложенныйЗапросПоТоварам.Номенклатура.Код КАК Код,
| ВложенныйЗапросПоТоварам.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| КоличествоМест,
| ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест.Представление КАК ЕдиницаИзмеренияМест,
| Цена,
| ХарактеристикаНоменклатуры КАК Характеристика,
| СерияНоменклатуры КАК Серия,
| МестаХраненияНоменклатуры.МестоХранения
|ИЗ
| (ВЫБРАТЬ
| МИНИМУМ(НомерСтроки) КАК НомерСтрокиТЧ,
| Номенклатура КАК Номенклатура,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| Цена КАК Цена,
| СерияНоменклатуры КАК СерияНоменклатуры,
| ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(Количество) КАК Количество,
| СУММА(КоличествоМест)КАК КоличествоМест
| ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваров
| ГДЕ
| ПеремещениеТоваров.Ссылка = &ТекущийДокумент
| СГРУППИРОВАТЬ ПО
| Номенклатура,
| ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест,
| Цена,
| СерияНоменклатуры,
| ХарактеристикаНоменклатуры
| ) КАК ВложенныйЗапросПоТоварам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
| ПО ВложенныйЗапросПоТоварам.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
| СГРУППИРОВАТЬ ПО
| ВложенныйЗапросПоТоварам.Номенклатура,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмерения,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмеренияМест,
| ВложенныйЗапросПоТоварам.Цена,
| ВложенныйЗапросПоТоварам.СерияНоменклатуры,
| ВложенныйЗапросПоТоварам.ХарактеристикаНоменклатуры,
| ВложенныйЗапросПоТоварам.НомерСтрокиТЧ,
| ВложенныйЗапросПоТоварам.Номенклатура.Код,
| ВложенныйЗапросПоТоварам.Номенклатура.Артикул,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмерения.Представление,
| МестаХраненияНоменклатуры.МестоХранения,
| ВложенныйЗапросПоТоварам.Количество,
| ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)),
| ВложенныйЗапросПоТоварам.КоличествоМест
|
|УПОРЯДОЧИТЬ ПО
| ВложенныйЗапросПоТоварам.НомерСтрокиТЧ
|";
ВыборкаСтрокТовары = Запрос.Выполнить().Выбрать();
Ошибок никаких программа не выдаёт. Но печатная форма теперь пустая. И если смотреть отладчиком на "ВыборкаСтрокТовары", то выдаёт такое сообщение "ошибка чтения значений". Подскажите в чём может быть проблема? Что я не так делаю?
Замените ВНУТРЕННЕЕ СОЕДИНЕНИЕ, на ЛЕВОЕ СОЕДИНЕНИЕ, потому что, не исключена ситуация, что у Вас нет данных в РС МестаХраненияНоменклатуры.
Посмотрел, в регистре сведений есть данные. Поменял на Левое соединение, теперь ругается на другое:
Если ПечатьМесто1Тогда
ОбластьМакета1 = Макет.ПолучитьОбласть("Строка|Место");
ОбластьМакета1.Параметры.ПМесто = ПараметрыПозиции.Номенклатура.МестаХраненияНоменклатуры.МестоХранения;
ТабДокумент.Присоединить(ОбластьМакета1);
{Документ.ПеремещениеТоваров.МодульОбъекта(501)}: Поле объекта не обнаружено (МестаХраненияНоменклатуры)
ОбластьМакета1.Параметры.ПМесто = ПараметрыПозиции.Номенклатура.МестаХраненияНоменклатуры.МестоХранения;
Живет на форуме
Группа: Местный
Сообщений: 2752
Из: Проскуров
Спасибо сказали: 709 раз
Рейтинг: 688.5
Цитата(r1p88@mail.ru @ 09.12.15, 15:56)
Посмотрел, в регистре сведений есть данные. Поменял на Левое соединение, теперь ругается на другое:Если ПечатьМесто1 Тогда ОбластьМакета1 = Макет.ПолучитьОбласть("Строка|Место"); ОбластьМакета1.Параметры.ПМесто = ПараметрыПозиции.Номенклатура.МестаХраненияНоменклатуры.МестоХранения;
Так почему ищем местоХранения в спр.Номенклатура ?
Немного подыму тему. Решил тоже самое сделать в документе реализация товаров и услуг. В итоге получаю ошибку:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(234)}: Ошибка при вызове метода контекста (Выполнить)
ЗапросТовары = Запрос.Выполнить().Выгрузить();
по причине:
Разное количество полей в объединяемых запросах
Вот сам запрос:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| НомерТЧ,
| НомерСтрокиТЧ,
| ВложенныйЗапросПоТоварам.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
| ВложенныйЗапросПоТоварам.Номенклатура.Код КАК Код,
| ВложенныйЗапросПоТоварам.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| КоличествоМест,
| ЕдиницаИзмерения.Представление КАК ЕдиницаЦены,
| ЕдиницаИзмеренияМест.Представление КАК ЕдиницаМест,
| Цена,
| Сумма,
| СуммаНДС,
| ПроцентСкидкиНаценки КАК Скидка,
| ПроцентАвтоматическихСкидок КАК АвтоматическаяСкидка,
| ХарактеристикаНоменклатуры КАК Характеристика,
| СерияНоменклатуры КАК Серия,
| МестаХраненияНоменклатуры.МестоХранения КАК Ячейка
|ИЗ
| (ВЫБРАТЬ
| 1 КАК НомерТЧ,
| МИНИМУМ(НомерСтроки) КАК НомерСтрокиТЧ,
| Номенклатура КАК Номенклатура,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| Цена КАК Цена,
| СтавкаНДС КАК СтавкаНДС,
| ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
| ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
| СерияНоменклатуры КАК СерияНоменклатуры,
| ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(Количество) КАК Количество,
| СУММА(КоличествоМест)КАК КоличествоМест,
| СУММА(Сумма) КАК Сумма,
| СУММА(СуммаНДС) КАК СуммаНДС
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
| СГРУППИРОВАТЬ ПО
| Номенклатура,
| ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест,
| Цена,
| СтавкаНДС,
| ПроцентСкидкиНаценки,
| ПроцентАвтоматическихСкидок,
| СерияНоменклатуры,
| ХарактеристикаНоменклатуры
| ) КАК ВложенныйЗапросПоТоварам
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
| ПО ВложенныйЗапросПоТоварам.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
| ГДЕ
// | ВложенныйЗапросПоТоварам.Номенклатура = &Номенклатура
| МестаХраненияНоменклатуры.Склад = &Склад
| СГРУППИРОВАТЬ ПО
| ВложенныйЗапросПоТоварам.Номенклатура,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмерения,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмеренияМест,
| ВложенныйЗапросПоТоварам.Цена,
| ВложенныйЗапросПоТоварам.СтавкаНДС,
| ВложенныйЗапросПоТоварам.ПроцентСкидкиНаценки,
| ВложенныйЗапросПоТоварам.ПроцентАвтоматическихСкидок,
| ВложенныйЗапросПоТоварам.СерияНоменклатуры,
| ВложенныйЗапросПоТоварам.ХарактеристикаНоменклатуры,
| ВложенныйЗапросПоТоварам.Количество,
| ВложенныйЗапросПоТоварам.КоличествоМест,
| ВложенныйЗапросПоТоварам.Сумма,
| ВложенныйЗапросПоТоварам.СуммаНДС,
| ВложенныйЗапросПоТоварам.НомерСтрокиТЧ,
| ВложенныйЗапросПоТоварам.НомерТЧ,
| ВложенныйЗапросПоТоварам.Номенклатура.Код,
| ВложенныйЗапросПоТоварам.Номенклатура.Артикул,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмерения.Представление,
| МестаХраненияНоменклатуры.МестоХранения,
| ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2,
| РеализацияТоваровУслуг.НомерСтроки,
| Номенклатура КАК Номенклатура,
| Выразить(РеализацияТоваровУслуг.Содержание КАК Строка(100)),
| Номенклатура.Код КАК Код,
| Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
| Количество,
| NULL,
| Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаЦены,
| NULL,
| Цена,
| Сумма,
| СуммаНДС,
| ПроцентСкидкиНаценки,
| NULL,
| NULL
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| ВложенныйЗапросПоТоварам.НомерТЧ, ВложенныйЗапросПоТоварам.НомерСтрокиТЧ
|";
Запрос.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
ЗапросТовары = Запрос.Выполнить().Выгрузить();
Может у меня со зрением плохо, но в упор не вижу, где разное количество полей?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!