|
Получение номенклатуры из справочника по параметрам | ☑ | ||
---|---|---|---|---|
0
Миюки
19.06.24
✎
13:39
|
Добрый день!
Помогите пожалуйста с запросом. У нас КА 2.5. Есть справочник с номенклатурой, у номенклатуры есть "Вид номенклатуры", а у вида есть дополнительные реквизиты. Например "Вид номенклатуры" равен "Дерево". У вида есть дополнительные реквизиты "Толщина" и "Цвет". С определенным видом номенклатуры вывести проблем нет, а как вывести доп реквизиты - не понимаю. |
|||
1
asady
19.06.24
✎
13:42
|
Пиши запрос сюда, мы поправим
|
|||
2
Миюки
19.06.24
✎
13:45
|
так а чего тут писать
ВЫБРАТЬ ПЕРВЫЕ 50 Номенклатура.Наименование КАК Наименование ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ВидНоменклатуры = &ВидНоменклатуры |
|||
3
Valdis2007
19.06.24
✎
13:46
|
(0) доп.реквизиты в какой таблице лежат?
|
|||
4
Миюки
19.06.24
✎
13:47
|
если сделать так
ВЫБРАТЬ ПЕРВЫЕ 50 Номенклатура.Наименование КАК Наименование, Номенклатура.ДополнительныеРеквизиты.( Ссылка КАК Ссылка, НомерСтроки КАК НомерСтроки, Свойство КАК Свойство, Значение КАК Значение, ТекстоваяСтрока КАК ТекстоваяСтрока ) КАК ДополнительныеРеквизиты ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ВидНоменклатуры = &ВидНоменклатуры то все равно в итоге вижу номенклатуру, а в дополнительном столбце ссылку на таблицу значений |
|||
5
Мультук
19.06.24
✎
13:55
|
(4)
Тут два варианта: 1) учить язык запросов в сторону Левое Соединение 2) Ждать и верить P.S. Писал без конфигуратора, может где-то "лишняя запятая" ВЫБРАТЬ Номенклатура.Ссылка, Номенклатура.Наименование КАК Наименование, тЦвет.Значение, ЕстьNULL(тТолщина.Значение, 0) КАК Толщина ИЗ Справочник.Номенклатура КАК Номенклатура Левое Соединение Справочник.Номенклатура.ДополнительныеРеквизиты КАК тЦвет ПО Номенклатура.Ссылка = тЦвет.Ссылка и тЦвет.Свойство = &СвойствоЦвет Левое Соединение Справочник.Номенклатура.ДополнительныеРеквизиты КАК тТолщина ПО Номенклатура.Ссылка = тТолщина.Ссылка и тТолщина.Свойство = &СвойствоТолщина ГДЕ Номенклатура.ВидНоменклатуры = &ВидНоменклатуры |
|||
6
Миюки
19.06.24
✎
14:02
|
(5) иду изучать Левое Соединение!
Огромное вам спасибо, код рабочий! |
|||
7
Ненавижу 1С
19.06.24
✎
14:15
|
(0) вопрос - что в итоге хотим получить?
|
|||
8
Миюки
19.06.24
✎
16:28
|
(7) по итогу хочу получить список номенклатуры, который будет формироваться в зависимости от параметров (доп реквезитов)
|
|||
9
youalex
19.06.24
✎
18:47
|
(0) вывести куда?
стандартно доп. реквизиты прописаны в Характеристиках объекта конфигурации, и в отчетах/отборах их можно вытаскивать через Ссылка. |
|||
10
Миюки
20.06.24
✎
08:54
|
(9) В таблицу. Т.е. пользователь вводит пару параметров, а запросом выбираем подходящую номенклатуру.
|
|||
11
Ненавижу 1С
20.06.24
✎
08:59
|
(10) конечную цель/задачу опиши
|
|||
12
Климов Сергей
20.06.24
✎
09:04
|
(10) Пример. Функция ищет номенклатуру по значениям двух допреквизитов.
Функция ПолучитьНоменклатуруРукаваНаСервере(ТипРукава, ДиаметрРукава) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка, | НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство1, | НоменклатураДополнительныеРеквизиты.Значение КАК Значение1, | NULL КАК Свойство2, | NULL КАК Значение2 |ПОМЕСТИТЬ ВременнаяТаблица |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты |ГДЕ | НоменклатураДополнительныеРеквизиты.Свойство = &Свойство1 | И НоменклатураДополнительныеРеквизиты.Значение = &Значение1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | НоменклатураДополнительныеРеквизиты.Ссылка, | NULL, | NULL, | НоменклатураДополнительныеРеквизиты.Свойство, | НоменклатураДополнительныеРеквизиты.Значение |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты |ГДЕ | НоменклатураДополнительныеРеквизиты.Свойство = &Свойство2 | И НоменклатураДополнительныеРеквизиты.Значение = &Значение2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблица.Ссылка КАК Ссылка, | МАКСИМУМ(ВременнаяТаблица.Свойство1) КАК Свойство1, | МАКСИМУМ(ВременнаяТаблица.Значение1) КАК Значение1, | МАКСИМУМ(ВременнаяТаблица.Свойство2) КАК Свойство2, | МАКСИМУМ(ВременнаяТаблица.Значение2) КАК Значение2 |ПОМЕСТИТЬ ВременнаяТаблица1 |ИЗ | ВременнаяТаблица КАК ВременнаяТаблица | |СГРУППИРОВАТЬ ПО | ВременнаяТаблица.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблица1.Ссылка КАК Ссылка |ИЗ | ВременнаяТаблица1 КАК ВременнаяТаблица1 |ГДЕ | ВременнаяТаблица1.Значение1 = &Значение1 | И ВременнаяТаблица1.Значение2 = &Значение2"; Запрос.УстановитьПараметр("Свойство1", СвойствоТипРукава); Запрос.УстановитьПараметр("Значение1", ТипРукава); Запрос.УстановитьПараметр("Свойство2", СвойствоДиаметрРукава); Запрос.УстановитьПараметр("Значение2", ДиаметрРукава); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда ОбщегоНазначения.СообщитьПользователю("Не найдена номенклатура с таким значением свойств!"); Возврат(Справочники.Номенклатура.ПустаяСсылка()); Иначе ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ВыборкаДетальныеЗаписи.Следующий(); Возврат(ВыборкаДетальныеЗаписи.Ссылка); КонецЕсли; КонецФункции // ПолучитьНоменклатуруРукаваНаСервере() |
|||
13
Мультук
20.06.24
✎
09:10
|
(10)
Не знаю кто вы (чем занимаетесь на рабочем месте) Не знаю что вы заканчивали (где вас добровольно-принудительно учили 1С) Но если вы 1С-программист или считаете себя таковым, то 1) sql нужно учить. Без него печаль Кроме того изучение SQL приводит мозги "в порядок". Нетривиальные задачки по SQL это интересно. А вы к ним всё равно придете. Рано или поздно 2) В 1С есть такая мощная вещь как СКД. Настоятельно советую вам посмотреть хотя бы посмотреть обучающие ролики, для понимания что это, как это, что этим можно делать. В ютубе роликов полно. Я лично смотрел вот эти ролики (ну нравятся эти ребята) https://курсы-по-1с.рф/free/ "Бесплатный курс по СКД (Система Компоновки Данных)" 3) Возможно вы изобретаете велосипед. Велосипеды все изобретают, это нормально. Но лучше не начинать с велосипеда с деревянными колесами, а что-то более-менее приближенное к действительности. Не сочтите за критику, а просто как совет. |
|||
14
Волшебник
20.06.24
✎
09:11
|
(6) Когда изучите Левое Соединение, то приступайте к Правое Соединение! Тоже пригодится!
|
|||
15
Климов Сергей
20.06.24
✎
09:38
|
Ну, а уже потом, перекрестясь, браться за ПОЛНОЕ! :-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |