Прошу помощи уже месяц воюю с этим вопросом, а именно есть документ "Установка цен номенклатуры" и там есть заполнить по ценам номенклатуры или по ценам контрагентов, когда нажимаем открывается обработка формирование цен там есть: Тип цен, Номенклатура, Номенклатурная группа, Ценовая группа, когда я добавляю следующий реквизит то там нет того что мне нужно. А именно у меня в номенклатуре есть свойства а там есть значения сезон и год которые хранятся в регистре ЗначенияСвойствОъектов. Вопрос как добавить их в этот отбор???
ТекстЗапроса = " |ВЫБРАТЬ //РАЗЛИЧНЫЕ |Тип.Ссылка КАК ТипЦен, |Ном.Ссылка КАК Номенклатура, |Ном.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, |Ном.ЦеноваяГруппа КАК ЦеноваяГруппа, |Ном.ЭтоГруппа КАК ЭтоГруппа, |ХарактеристикиНоменклатуры.Ссылка КАК ХарактеристикаНоменклатуры, |Ном.Родитель КАК Группа, |ВЫБОР | КОГДА Ном.НаименованиеПолное ПОДОБНО &ПустаяСтрока | ТОГДА Ном.Наименование | ИНАЧЕ Ном.НаименованиеПолное КОНЕЦ КАК ПолноеНаименование, |ВЫБОР | КОГДА &ДопКолонка = &Артикул | ТОГДА Ном.Артикул | КОГДА &ДопКолонка = &Код | ТОГДА Ном.Код | ИНАЧЕ | NULL | КОНЕЦ КАК Артикул, |Рег.ЕдиницаИзмерения КАК ЕдиницаИзмерения, |Рег.Валюта, |Рег.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки, |Рег.СпособРасчетаЦены КАК СпособРасчетаЦены, |Тип.ВалютаЦены, |КурсыВалют.Курс КАК КурсВалюты, |КурсыВалют.Кратность КАК КратностьВалюты, |КурсыВалютЦены.Курс КАК КурсВалютыЦены, |КурсыВалютЦены.Кратность КАК КратностьВалютыЦены, |ВЫБОР | КОГДА Тип.Рассчитывается ТОГДА | Рег.Цена * (100 + Тип.ПроцентСкидкиНаценки)/100 | ИНАЧЕ | Рег.Цена | КОНЕЦ КАК Цена | |{ВЫБРАТЬ | Тип.Ссылка.* КАК ТипЦен, | Ном.Ссылка.* КАК Номенклатура, | Ном.Родитель.* КАК Группа | //СВОЙСТВА |} | |ИЗ | Справочник.Номенклатура КАК Ном | //СОЕДИНЕНИЯ | |СОЕДИНЕНИЕ | (ВЫБРАТЬ | Характеристики.Ссылка КАК Ссылка, | Характеристики.Владелец КАК Владелец | ИЗ | Справочник.ХарактеристикиНоменклатуры КАК Характеристики | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Ссылка, | Номенклатура.Ссылка КАК Владелец | ИЗ | Справочник.Номенклатура КАК Номенклатура | | ) КАК ХарактеристикиНоменклатуры |ПО | ХарактеристикиНоменклатуры.Владелец = Ном.Ссылка | |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ТипыЦенНоменклатуры КАК Тип |ПО | ИСТИНА | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЦенСкидок, ) КАК Рег |ПО | (Тип.Ссылка = Рег.ТипЦен) | И | Ном.Ссылка = Рег.Номенклатура | И | Рег.ХарактеристикаНоменклатуры = ХарактеристикиНоменклатуры.Ссылка | |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаЦенСкидок) КАК КурсыВалют |ПО | КурсыВалют.Валюта = Рег.Валюта | |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаЦенСкидок) КАК КурсыВалютЦены |ПО | КурсыВалютЦены.Валюта = Тип.ВалютаЦены | |ГДЕ | НЕ Ном.Набор |";
Если Не ВключатьНезаполненные Тогда ТекстЗапроса = ТекстЗапроса + " | И | Ном.Ссылка В (Выбрать Номенклатура ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЦенСкидок,)) | И | ХарактеристикиНоменклатуры.Ссылка В (Выбрать ХарактеристикаНоменклатуры ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЦенСкидок,)) |"; КонецЕсли;
ТекстЗапроса = ТекстЗапроса + " |{ГДЕ | Тип.Ссылка.* КАК ТипЦен, | Ном.Ссылка.* КАК Номенклатура, | НоменклатурнаяГруппа.Ссылка.* КАК НоменклатурнаяГруппа, | ЦеноваяГруппа.Ссылка.* КАК ЦеноваяГруппа, | Ном.Родитель.* КАК Группа | //СВОЙСТВА | //КАТЕГОРИИ |} | |УПОРЯДОЧИТЬ ПО | Номенклатура, | ХарактеристикаНоменклатуры, | ТипЦен | //СВОЙСТВА | |ИТОГИ ПО | Номенклатура ТОЛЬКО ИЕРАРХИЯ |АВТОУПОРЯДОЧИВАНИЕ |";
ПостроительОтчета.Текст = ТекстЗапроса;
Если Не ЗаполнятьТолькоТекстЗапроса Тогда
// Соответствие имен полей в запросе и их представлений в отчете СтруктураПредставлениеПолей = Новый Структура( " ТипЦен, | Номенклатура, | НоменклатурнаяГруппа, | ЦеноваяГруппа", "Тип цен", "Номенклатура", "Номенклатурная группа", "Ценовая группа");
В модуле обработки есть запросы для построителя : "ЗаполнитьПостроительОтчета..." в них добавьте соединение с нужными свойствами или со всеми свойствами если разбираетесь в запросах. Если не разбираетесь, тут дело другое , задавайте вопросы, что не получается, с примерами кода. Вам необходимо не настраивать сразу отбор а задать заполнения полей для отбора, на вкладке построителя запросов.
Сообщение отредактировал TipsyKID - 17.09.15, 9:24
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
[необходимо зарегистрироваться для просмотра ссылки] вот обработка формирование цен, я так думаю там устанавливается отбор, я честно говоря за месяц перебрал кучу вариантов, на формах никто данной темы не поднимал, а если поднимали то все равно мне эта информация не помогла.
Я не прошу за меня это сделать, я прошу подсказать в какую сторону двигаться.
Если ТипЗнч(Элемент.Значение) = Тип("СправочникСсылка.ТипыЦенНоменклатурыКонтрагентов") Тогда Контрагент = ПостроительОтчета.Отбор.Контрагент.Значение; Если ЗначениеЗаполнено(Контрагент) Тогда СтандартнаяОбработка = Ложь; ФормаВыбора = Справочники.ТипыЦенНоменклатурыКонтрагентов.ПолучитьФормуВыбора();
Если ТипЗнч(Контрагент) = Тип("СписокЗначений") Тогда ФормаВыбора.Отбор.Владелец.ВидСравнения = ВидСравнения.ВСписке; Иначе ФормаВыбора.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно; КонецЕсли; ФормаВыбора.Отбор.Владелец.Значение = Контрагент; ФормаВыбора.Отбор.Владелец.Использование = Истина; Элемент.Значение = ФормаВыбора.ОткрытьМодально();
Если ТипЗнч(Элемент.Значение) = Тип("СправочникСсылка.ТипыЦенНоменклатурыКонтрагентов") И ЗначениеЗаполнено(Элемент.Значение) И НЕ ЗначениеЗаполнено(Элемент.Значение.ТипЦеныНоменклатуры) Тогда ОбщегоНазначения.СообщитьОбОшибке("У выбранного типа цен контрагентов """ + Элемент.Значение + """ не заполнен реквизит ""Тип цены номенклатуры""! Заполнение невозможно."); Элемент.Значение = Неопределено; Возврат; КонецЕсли;
КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект, | ВЫБОР | КОГДА ЗначенияСвойствОбъектов.Свойство.Наименование = ""Сезон"" | ТОГДА ЗначенияСвойствОбъектов.Значение | ИНАЧЕ """" | КОНЕЦ КАК Сезон |ПОМЕСТИТЬ ВТСезон |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &СвойствоСезон |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект, | ВЫБОР | КОГДА ЗначенияСвойствОбъектов.Свойство.Наименование = ""Год"" | ТОГДА ЗначенияСвойствОбъектов.Значение | ИНАЧЕ """" | КОНЕЦ КАК Год |ПОМЕСТИТЬ ВТГод |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &СвойствоГод |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект, | ВЫБОР | КОГДА ЗначенияСвойствОбъектов.Свойство.Наименование = ""Производитель"" | ТОГДА ЗначенияСвойствОбъектов.Значение | ИНАЧЕ """" | КОНЕЦ КАК Производитель |ПОМЕСТИТЬ ВТПроизводитель |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &СвойствоПроизводитель |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.Наименование КАК Наименование, | Номенклатура.Артикул, | ВТСезон.Сезон, | ВТГод.Год, | ВТПроизводитель.Производитель |ПОМЕСТИТЬ ВТНоменклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ ВТСезон КАК ВТСезон | ПО Номенклатура.Ссылка = ВТСезон.Объект | ЛЕВОЕ СОЕДИНЕНИЕ ВТГод КАК ВТГод | ПО Номенклатура.Ссылка = ВТГод.Объект | ЛЕВОЕ СОЕДИНЕНИЕ ВТПроизводитель КАК ВТПроизводитель | ПО Номенклатура.Ссылка = ВТПроизводитель.Объект |ГДЕ | Номенклатура.ЭтоГруппа = ЛОЖЬ | |СГРУППИРОВАТЬ ПО | Номенклатура.Ссылка, | Номенклатура.Наименование, | Номенклатура.Артикул, | ВТСезон.Сезон, | ВТГод.Год, | ВТПроизводитель.Производитель |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТНоменклатура.Ссылка, | ВТНоменклатура.Сезон, | ВТНоменклатура.Год, | ВТНоменклатура.Производитель КАК Производитель |ИЗ | ВТНоменклатура КАК ВТНоменклатура | |УПОРЯДОЧИТЬ ПО | Производитель, | ВТНоменклатура.Наименование"; //Параметры запроса Запрос.УстановитьПараметр("СвойствоГод",ПланыВидовХарактеристик.СвойстваОбъектов.ПолучитьСсылку(Новый УникальныйИдентификатор("2296389c-4045-11e5-828e-f0def1170684")));// Свойства объектов (Год) Запрос.УстановитьПараметр("СвойствоПроизводитель",ПланыВидовХарактеристик.СвойстваОбъектов.ПолучитьСсылку(Новый УникальныйИдентификатор("c3b4cd79-52fb-11e5-8298-f0def1170684")));// Свойства объектов (Производитель) Запрос.УстановитьПараметр("СвойствоСезон",ПланыВидовХарактеристик.СвойстваОбъектов.ПолучитьСсылку(Новый УникальныйИдентификатор("22963899-4045-11e5-828e-f0def1170684")));// Свойства объектов (Сезон) Результат = Запрос.Выполнить();
Ниже добавляю
МассивОтбора.Добавить("СвойствоСезон",ПланыВидовХарактеристик.СвойстваОбъектов.ПолучитьСсылку(Новый УникальныйИдентификатор("22963899-4045-11e5-828e-f0def1170684")));// Свойства объектов (Сезон)
все равно не получается пишет Слишком много фактических параметров
Вам необходимо не настраивать сразу отбор а задать заполнения полей для отбора, на вкладке построителя запросов.
Если Вам не понятно, что здесь написано прочитайте в С.П. "ПостроительЗапроса". ( это те магические символы, которые пишутся в запросе между символом {})
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!