Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с получением свойств номенклатуры в запросе
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
rpodgornyy
Конфигурация УТ для Украины 2.3.15.1

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

ЗапросТовары = Запрос.Выполнить().Выгрузить();




При этом выдаётся ошибка: "Поле не входит в группу ЗначенияСвойствОбъектов.Значения" <<?>> ЗначенияСвойствОбъектов.Значения КАК Значение...
logist
Цитата(rpodgornyy @ 19.05.12, 17:28) необходимо зарегистрироваться для просмотра ссылки
при этом выдаётся ошибка: "Поле не входит в группу ЗначенияСвойствОбъектов.Значения"

Текст ошибки написан вполне понятно, на русском языке, в чем проблема? Поле отсутствует в группировке, это видно из текста запроса.
Vofka
Группировка - это то, что идет после конструкции СГРУППИРОВАТЬ ПО
rpodgornyy
В раздел "Сгруппировать ПО" добавил ЗначенияСвойствОбъектов.Значение. Ошибка исчезла, однако параметр Гарантия в печатной форме пустой... upset.gif
logist
Цитата(rpodgornyy @ 19.05.12, 19:30) необходимо зарегистрироваться для просмотра ссылки
параметр Гарантия в печатной форме пустой...

Вероятно проблема здесь:
 | ПО РеализацияТоваровУслуг.Номенклатура = ЗначенияСвойствОбъектов.Свойство

Потому что Номенклатура это не Свойство а Объект.

Видимо как-то так:
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
            ПО РеализацияТоваровУслуг.Номенклатура = ЗначенияСвойствОбъектов.Объект
    ГДЕ
        РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
        И ЗначенияСвойствОбъектов.Свойство = &Свойство

Где параметр "Свойство" это свойство номенклатуры в котором и содержится нужное значение (если не понятно - можно посмотреть соответствующий регистр, что там отображается в колонке "Свойство").
rpodgornyy
Поменял на "Объект" - получилось! Спасибо! icon_beer17.gif
rpodgornyy
Решил поднять тему, т.к. столкнулся с небольшой трудностью. Когда было только одно свойство в Номенклатуре, я не использовал параметр "И ЗначенияСвойствОбъектов.Свойство = &Свойство". Теперь добавились ещё свойства и запрос делает выборку по всем свойствам, а не конкретно по Гарантии. Я установил параметр:

Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Гарантия"));


Но при данном параметре не выводится вообще ничего...





logist
Значит не находит оно по наименованию (например наименование содержит пробелы или другие символы), попробуйте использовать НайтиПоКоду.
rpodgornyy
Хм... ставлю "НайтиПоКоду(000000001)" , код, соответственно код гарантии, всё равно ничего не выводится...
logist
Цитата(rpodgornyy @ 24.07.12, 21:27) необходимо зарегистрироваться для просмотра ссылки
НайтиПоКоду(000000001)

А если:
НайтиПоКоду("000000001")

rpodgornyy
Увы, такая же беда sad.gif
logist
Ну если найти по коду не работает, тогда вариант один - к гадалке - снимать порчу...
rpodgornyy
Дык, ну конечно же!!! Свойство- то текстовый элемент:
Запрос.УстановитьПараметр("Свойство", СокрЛП (ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000001")));
logist
Цитата(rpodgornyy @ 24.07.12, 22:01) необходимо зарегистрироваться для просмотра ссылки
Свойство- то текстовый элемент:

В типовой свойство это "ПланВидовХарактеристикСсылка.СвойстваОбъектов", о том что в Вашей конфигурации это текст нигде не сказано.

Да и конструкция "СокрЛП (ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000001"))" это глупости.
rpodgornyy
Это и есть типовая конфигурация УТ для Украины.


А почему же конструкция - глупости? Идёт выбор элемента по коду, но ведь сам элемент ("Свойство") - это же текстовое значение 64000000.gif
pablo
Цитата
А почему же конструкция - глупости? Идёт выбор элемента по коду, но ведь сам элемент ("Свойство") - это же текстовое значение

Потому как глупо сравнивать заборы по тому, что на них написано, а не по уникальному идентификатору забора mamba.gif
То есть лишняя конвертация данных может только усугубить ошибки
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.