|
Отбор номенклатуры по единицам измерения | ☑ | ||
---|---|---|---|---|
0
Михаил22
18.07.19
✎
11:18
|
Здравствуйте!
Не могу разобраться как в УТ отобрать номенклатуру по нужной Базовой Единице Измерения. Выборка ругается на 3 параметр, т.е. отбор. Нужно именно через объекты 1С, не через запрос. Подскажите что не так: Отбор = Новый Структура("БазоваяЕдиницаИзмерения",Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("уп")); Выборка = Справочники.Номенклатура.Выбрать(,,Отбор,); |
|||
1
lubitelxml
18.07.19
✎
11:21
|
Выборка = Справочники.Номенклатура.Выбрать(Отбор); - вроде так всегда делал...
|
|||
2
lubitelxml
18.07.19
✎
11:21
|
но лучше запрос написать
|
|||
3
Михаил22
18.07.19
✎
11:24
|
(1) Так тож ругается
И так ругается. Отбор = Новый Структура("БазоваяЕдиницаИзмерения","уп"); Всю голову сломал! Полдня убил еже. |
|||
4
lubitelxml
18.07.19
✎
11:28
|
Запрос.УстановитьПараметр("ВыбБазоваяЕдиницаИзмерения",Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("уп"));
Запрос.Текст = "ВЫБРАТЬ | спр.Ссылка |ИЗ | Справочник.Номенклатура |ГДЕ | Спр.БазоваяЕдиницаИзмерения = &ВыбБазоваяЕдиницаИзмерения |"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл //тут действия с элементами справочника КонецЦикла |
|||
5
Галахад
гуру
18.07.19
✎
11:28
|
(0) Индексирование по полю стоит?
|
|||
6
Михаил22
18.07.19
✎
11:29
|
(4) Спасибо. С запросом нет проблем, но надо с объектами 1с.
|
|||
7
Михаил22
18.07.19
✎
11:30
|
(5) Точно, не стоит. Вот я тормоз. Спасибо!!!
|
|||
8
Михаил22
18.07.19
✎
18:10
|
Нет, что-то не могу совладать и с выборкой по единицам измерения
Что не так с запросом? На выходе ноль элементов, хотя их там много. ВЫБРАТЬ Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.БазоваяЕдиницаИзмерения = "уп" Работает только при таком виде: ВЫБРАТЬ Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.БазоваяЕдиницаИзмерения.Наименование = "уп" Но так мне не подходит. Задача такая. Внешняя обработка в которой стандартными элементами формы выводим и фильтруем номенклатуру, а потом по этой выборке надо пробежаться и сделать кое-какие монипуляции. Стандартные элементы после отбора возвращают СправочникСписок.Номенклатура. Через эту штуку к выбранным элементам Номенклатуры не достучаться. Можно только получить правила отбора. И вот если в отборе участвует БазоваяЕдиницаИзмерения, то сделать запрос или выборку не получается. Выборка дает ошибку, а запрос пустоту. |
|||
9
shuhard
18.07.19
✎
18:15
|
(8)[Номенклатура.БазоваяЕдиницаИзмерения = "уп"]
не может работать и не будет "уп" не является ссылкой |
|||
10
shuhard
18.07.19
✎
18:16
|
ВЫБРАТЬ
Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.БазоваяЕдиницаИзмерения = &уп Запрос.УстановитьПараметры("уп", ТМЦ.ЕдиницаХраненияОстатков); |
|||
11
Михаил22
18.07.19
✎
18:22
|
(10) А без параметров как прописать сразу в текст запроса ссылку?
|
|||
12
shuhard
18.07.19
✎
18:23
|
(11) ВЫБРАТЬ
Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.БазоваяЕдиницаИзмерения = некийзапрос.ТМЦ.ЕдиницаХраненияОстатков |
|||
13
Михаил22
18.07.19
✎
18:33
|
(10) Спасибо. Разобрался. Но возникла другая проблема.
При фильтрации стандартными элементами форму есть условие "Содержит", а как его интерпретировать в Запросе? |
|||
14
shuhard
18.07.19
✎
18:34
|
(13) подобно, он же Like
|
|||
15
Михаил22
18.07.19
✎
18:41
|
(14) Ё. Прейдется условия из Отбора в СправочникСписок.Номенклатура разбирать и менять на ключевые слова запроса.
Может есть какая-то возможность добраться к выбранным элементам справочника из СправочникСписок, используя объекты 1С? |
|||
16
shuhard
18.07.19
✎
18:45
|
(15) какая-то есть
но правильно либо запросы, либо СКД |
|||
17
Михаил22
18.07.19
✎
18:50
|
(16) СКД тож потребует интерпретации условий. Все получается не элегантно.
Извиняюсь, но чем больше работаю с 1С, тем больше понимаю, что ее создатели были не в своем уме. :) |
|||
18
catena
19.07.19
✎
06:09
|
(15)А список ваш на какой форме лежит?
|
|||
19
Михаил22
19.07.19
✎
09:04
|
(18) На главной форме внешней обработки. Не модальная.
|
|||
20
catena
19.07.19
✎
10:02
|
(19)Смешно))) ОФ или УФ?
|
|||
21
Михаил22
19.07.19
✎
10:27
|
ОФ. Не серверная база.
|
|||
22
catena
19.07.19
✎
10:32
|
(21)Тогда можно скопировать отбор в построитель
ТекОтбор = ЭлементыФормы.СписокИзКоторогоБерем.ОтборСтрок; Построитель = Новый ПостроительОтчета; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(СписокИзКоторогоБерем); Для каждого ЭлементОтбора Из ТекОтбор Цикл Если ЭлементОтбора.Использование Тогда НовыйЭлемент = Построитель.Отбор.Добавить(ЭлементОтбора.ПутьКДанным, ЭлементОтбора.Имя, ЭлементОтбора.Представление); НовыйЭлемент.ВидСравнения = ЭлементОтбора.ВидСравнения; НовыйЭлемент.Значение = ЭлементОтбора.Значение; НовыйЭлемент.ЗначениеС = ЭлементОтбора.ЗначениеС; НовыйЭлемент.ЗначениеПо = ЭлементОтбора.ЗначениеПо; НовыйЭлемент.Использование = Истина; КонецЕсли; КонецЦикла; РезультатЗапроса = Построитель.Результат; Возврат РезультатЗапроса.Выгрузить(); |
|||
23
Михаил22
19.07.19
✎
10:43
|
С построителем не работал.
Так понимаю ВидСравнения в построителе совпадает со объектом СправочникСписок. Оба объекты 1С. |
|||
24
catena
19.07.19
✎
10:52
|
(23)м, что? Я вопроса не поняла. ВидСравнения - это вообще говоря системное перечисление, но в данном случае это не важно, т.к. тут просто копируются все элементы и значения из одного отбора в другой. Все, что вам нужно, это поставить таблицу выборки вместо СписокИзКоторогоБерем и элемент формы, на котором отбор вместо ЭлементыФормы.СписокИзКоторогоБерем.ОтборСтрок
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |