|
v7: как запросом выбрать папки с определенным наименованием (находящиеся в иерархии указаной п |
☑ |
0
midguard7
05.09.17
✎
09:31
|
Всем доброго!
С 7.7 почти не знаком. Если кто знает - подскажите, пожалуйста.
Сама задача такая: есть справочник "Программы". в нем есть несколько групп первого уровня. в группе с именем "Дистрибутив" надо найти все папки с именем (передаем имя как параметр) и в каждой их этих папок создать элемент с определенным наименованием (которое, тоже передается как параметр).
|
|
1
catena
05.09.17
✎
09:36
|
"Подскажите" - читать, как "напишите"? Проблемы на каком этапе? Перебор справочника? Поиск по наименованию? Создание элемента?
|
|
2
Ёпрст
гуру
05.09.17
✎
09:43
|
(1) проблема на этом этапе: "С 7.7 почти не знаком". Т.е ничего не знает.
|
|
3
Ёпрст
гуру
05.09.17
✎
09:43
|
|
|
4
midguard7
05.09.17
✎
09:51
|
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "ТекущийЭлемент = Справочник.Программы.ТекущийЭлемент;
|Наименование = Справочник.Программы.Наименование;
|Группировка ТекущийЭлемент; //|Условие (Наименование = ""Онлайн версия""); |";
|
|
5
midguard7
05.09.17
✎
09:51
|
При попытке такого запроса, если передать наименование элементов (не групп), то в выборку попадают нужные. Если передать наименование групп, то выборка пустая.
|
|
6
Ёпрст
гуру
05.09.17
✎
09:54
|
(4)
запрос в 7.7 работает только с элементами справочника, группы потом обрабатывает. Можно, конечно, в запрос добавить поле .Родитель, только вот если в такой группе не будет элементов - тут тоже облом с запросом - такие группы не найдёт.
Самое простое, это выборка и ВключатьПодчиненные(0) - будет бегать только по папкам, без вложенности. И быстро.
|
|
7
midguard7
05.09.17
✎
09:56
|
(6) спасибо! Можете эти пару строк написать? а то, у меня на это часа 3, чувствуется, уйдет. А надо, как всегда вчера)
|
|
8
Ёпрст
гуру
05.09.17
✎
09:56
|
Ну и, если надо скорости, то писать тупо select id [Элем $Справочник.НужныйВид] from $Справочник.НужныйВид where isfolder = 2 and deskr like '%Вася%'
|
|
9
Ёпрст
гуру
05.09.17
✎
09:57
|
(7) база какая SQL/DBF?
|
|
10
midguard7
05.09.17
✎
09:58
|
sql
|
|
11
catena
05.09.17
✎
09:59
|
(2) Для данной задачи это решается чтением одной ветки документации: "Справочники".
А по факту надо было так честно и писать. Как в (7).
|
|
12
Ёпрст
гуру
05.09.17
✎
10:17
|
(10)
Процедура Сформировать()
Парам = "Онлайн версия";
Попытка
Запрос = СоздатьОбъект("ODBCRecordSet");
Исключение
Если ЗагрузитьВнешнююКомпоненту("1cpp.dll")=0 Тогда
Предупреждение("поместите 1cpp.dll в каталог с базой или в \BIN");
Возврат;
КонецЕсли;
Запрос = СоздатьОбъект("ODBCRecordSet");
КонецПопытки;
ТекстЗапроса = "
|select id [элем $Справочник.Программы]
|from $Справочник.Программы
|where descr like '%:Парам%' and isfolder=2
|";
Запрос.УстановитьТекстовыйПараметр("Парам",Парам);
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
Спр = СоздатьОбъект("Справочник.Программы");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Спр.ИспользоватьРодителя(ТЗ.Элем);
Спр.Новый();
Спр.Наименование = "Вася";
Спр.Записать();
КонецЦикла;
КонецПроцедуры
|
|
13
midguard7
05.09.17
✎
11:14
|
(12) спасибо большое! Помогли
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший