|
v7: Как получить элементы справочника принадлежащие группам из списка значений? | ☑ | ||
---|---|---|---|---|
0
MathaiShung
04.03.16
✎
14:24
|
Есть форма отчёта в которой выбранные пользователем группы справочника Номенклатура попадают в список значений этой формы.
Процедура ВыборГрупп() Перем КонтФормы; ОткрытьПодбор("Справочник.Номенклатура","ФормаСписка",КонтФормы,1); КонтФормы.ВыборГруппы(1); КонецПроцедуры Процедура ОбработкаПодбора(Элемент,КонтФормы) ВыбГруппы.ДобавитьЗначение(Элемент); //ВыбГруппы - идентификатор списка значений ВыбГруппы.ТекущаяСтрока(ВыбГруппы.РазмерСписка()); Форма.УдалитьСтрокуТовара.Доступность(1); Форма.УдалитьВсеСтроки.Доступность(1); КонецПроцедуры Теперь нужно как-то отобрать из всего справочника только те элементы, которые принадлежат группам из Списка Значений и сами эти группы тоже, для последующей обработки этих значений процедурой Сформировать. Что делать после перебора списка? Для ТекГруппа=1 По ВыбГруппы.РазмерСписка () Цикл ВыбГруппы.ПолучитьЗначение(ВыбГруппы.ТекущаяСтрока()); Или может вообще по-другому? |
|||
1
Kondarat
04.03.16
✎
14:26
|
Зачем? Наложить условие в запросе?
|
|||
2
MathaiShung
04.03.16
✎
14:35
|
(1) Что зачем?
|
|||
3
palpetrovich
04.03.16
✎
14:38
|
(2) зачем перебирать список?
|
|||
4
MathaiShung
04.03.16
✎
14:40
|
Не знаю, первое, что пришло в голову, может и не надо. А как тогда?
|
|||
5
HardBall
04.03.16
✎
14:41
|
(4) Пиши запрос.
|
|||
6
HardBall
04.03.16
✎
14:42
|
(5) Попутал, это клюшки.
|
|||
7
НЕА123
04.03.16
✎
14:42
|
можно и запрос.
я бы через выбрать(), использоватьродителя(). |
|||
8
palpetrovich
04.03.16
✎
14:43
|
(6) и че? думаешь в клюшках запросов еще не бьло? :)
|
|||
9
MathaiShung
04.03.16
✎
14:43
|
(5) Как условие прописать в запросе?
|
|||
10
Kondarat
04.03.16
✎
14:44
|
Условие Товар В ВыбГруппы
|
|||
11
Davalebor
04.03.16
✎
14:44
|
Перебор не нужен. Напиши запрос (черный) к справочнику. В нем можно в условии написать принадлежность элементов к списку состоящему из групп.
|
|||
12
Масянька
04.03.16
✎
14:44
|
(9)
Спр.ПорядокКодов(); Спр.ИспользоватьРодителя(ВыбЗнач); Спр.ВыбратьЭлементы(1); ВыбЗнач - указанная папка. |
|||
13
palpetrovich
04.03.16
✎
14:46
|
(12) пятница? :)
|
|||
14
Масянька
04.03.16
✎
14:47
|
+(12)
Пока Спр.ПолучитьЭлемент() = 1 Цикл // выбираешь, делаешь, что надо КонецЦикла |
|||
15
Масянька
04.03.16
✎
14:47
|
(13) А что - нет?
|
|||
16
НЕА123
04.03.16
✎
14:48
|
элспр.ПринадлежитГруппе(г1) или элспр.ПринадлежитГруппе(г2) или...
|
|||
17
MathaiShung
04.03.16
✎
14:49
|
Всем спасибо, уже стало яснее... Буду пробовать.
|
|||
18
HardBall
04.03.16
✎
14:51
|
(8) Сервер положу :-)
|
|||
19
palpetrovich
04.03.16
✎
14:52
|
(17) не надо так пробовать, дяди и тети шутят, так делай
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Товар = Справочник.Номенклатура.ТекущийЭлемент; |Условие(Товар В СписокТоваровНаФорме); |Группировка Товар; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл // БлаБлаБла КонецЦикла; |
|||
20
Mikeware
04.03.16
✎
14:54
|
народ открывает для себя черные запросы клюшек. и это в 2016 году....
|
|||
21
palpetrovich
04.03.16
✎
14:54
|
(20) клюшки - вечны!
|
|||
22
Mikeware
04.03.16
✎
14:55
|
(21) "хрен продашь"? :-)
|
|||
23
MathaiShung
04.03.16
✎
19:48
|
(19) Так не работает - формирует пустой прайс. По-моему дело в условии - сейчас в выборку попадают только группы, а мне надо получить все элементы принадлежащие группам из Списка Значений. Как прописать такое условие?
|
|||
24
Это_mike
04.03.16
✎
20:21
|
(23) все работает. В конце концов, воспользуйтесь конструктором. Мне ,честно говоря, даже лениво запускать конфигуратор...
|
|||
25
MathaiShung
04.03.16
✎
20:23
|
(24) В конструкторе всё равно условие вручную прописывать придётся - элементарным условием тут не получится
|
|||
26
MathaiShung
04.03.16
✎
20:24
|
Сдела вот так:
Пока Тов.ПолучитьЭлемент("Номенклатура")>0 Цикл Товар=Тов.ТекущийЭлемент(); Если ВыбГруппы.Принадлежит(Товар)=1 Тогда //И дальше процедура Сформировать... Теперь выдаёт только группы без элементов |
|||
27
MathaiShung
04.03.16
✎
20:28
|
(26) Сам увидел ошибку. Теперь получилось. И без всяких запросов.
|
|||
28
Mikeware
04.03.16
✎
20:44
|
(25) Оторвал задницу, дошел до компа. сделпл тупо конструктором, и дописал руками 4 строчки. на форме - три поля ввода. все работает как надо.
Перем Запрос, ТекстЗапроса, Таб; сз=СоздатьОбъект("СписокЗначений"); сз.ДобавитьЗначение(выбГруппа1); сз.ДобавитьЗначение(выбГруппа2); сз.ДобавитьЗначение(выбГруппа3); //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать1) |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент; |Группировка ТекущийЭлемент Без Групп; |Условие(ТекущийЭлемент в сз); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать1"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей ТекущийЭлемент Таб.ВывестиСекцию("ТекущийЭлемент"); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать1", ""); |
|||
29
Злопчинский
05.03.16
✎
00:50
|
(0) Код в (0) - "кривой", ибо помимо групп (как заявленно нужное) - могут быть подобраны элементы (это может и не приведет к ошибке, но это - "быдлокод").
Модифицируем: Процедура ОбработкаПодбора(Элемент,КонтФормы) Если Элемент.ЭтоГруппа()=0 Тогда Возврат; КонецЕсли; |
|||
30
Злопчинский
05.03.16
✎
00:53
|
(0) Код в (0) - "кривой", ибо одна группа будет внесена нескольо раз (это может и не приведет к ошибке, но это - "быдлокод").
Модифицируем: Процедура ОбработкаПодбора(Элемент,КонтФормы) Если Элемент.ЭтоГруппа()=0 Тогда Возврат; КонецЕсли; Если ВыбГруппы.Принадлежит(Элемент)=1 Тогда Возврат; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |