Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   v7: Как найти пустую папку (группу) справочника в 1С 7.7??? (http://forums.kuban.ru/f1040/v7_kak_najti_pustuyu_papku_gruppu_spravochnika_v_1s_7_7_a-4242071.html)

alex55 23.05.2013 21:32

v7: Как найти пустую папку (группу) справочника в 1С 7.7???
 
Нужно найти и грохнуть пустую папку(группу) справочника в 1с 7.7

angro 23.05.2013 21:47

какую-то конкретно? найди пометь на удаление и удали

alex55 23.05.2013 22:23

в том то и прелесть заморочки, априори конкретная папка мне неизвестна, они могут быть разбросаны по разным веткам на разном (уровне/колене) в рамках одного справочика.

alex55 23.05.2013 22:24

задача найти пустую папку и грохнуть ее......точнее папки/группы на каком бы уровне они бы не находились..

Ткачик 23.05.2013 22:24

Обработку написать.

angro 23.05.2013 22:30

(3) получи все элементы и группы , получи их родителей, получи все группы, те группы которых нет в родителях пустые

kupreeff 23.05.2013 22:33

рекурсия...

VZ 23.05.2013 23:13

Спр = СоздатьОбъект("Справочник.МойБестолковыйНабор");
Ссылки = СоздатьОбъект("ТаблицаЗначений");
Спр.ВыбратьЭлементв(1);
Пока Спр.ПолучитьЭлемент(1)=1 Цикл
Есди Спр.ЭтоГруппа()=1 Тогда
Ссылки.Очистить();
УдалитьОбъекты(Спр.ТекущийЭлемент(),1,Ссылки);
КонецЕсли;
КонецЦикла;

VZ 24.05.2013 00:27

+7 Но лучше сначала собрать в список методом ПолучитьСсылки(), потом в цикле удалить.

alex55 24.05.2013 15:29

9.Спасибо тебе за пример....реально...новую планету открыл, но либо механизм для других задач заточен.
Объясню: Справочник.Номенклатура в ТИС есть куча уже созданных папок, создаю 3 тестовые папки,в первых двух создаю элементы, 3ю оставляю намерено пустой,если механизм правильный он должен был ее удалить.Что в итоге произошло: он судя по строке состояния искал ссылки не только в рамках данного справочника, но лез в другие. в итоге после 5 минут ожидания выходит сообщение, что мол 1 такая то папка удалена.Смотрю что за папка, во первых она не удалилась, во вторых она была битком заполнена элементами......... Буду пробывать метод 5 сообщения.

alex55 24.05.2013 15:30

Спасибо VZ....предыдущее сообщение для VZ.

bma1 24.05.2013 15:35

Пометить все папки на удаление, потом удаление помеченных, кто остался - распометить обратно.

Uho 24.05.2013 15:55

Контрагенты = СоздатьОбъект("Справочник.Контрагенты");
Подчиненные = СоздатьОбъект("Справочник.Контрагенты");

Контрагенты.ВыбратьЭлементы();
Пока Контрагенты.ПолучитьЭлемент() = 1 Цикл
Если Контрагенты.ЭтоГруппа() = 0 Тогда Продолжить; КонецЕсли;
Подчиненные.ИспользоватьРодителя(Контрагенты.ТекущийЭлемент());
Если Подчиненные.ВыбратьЭлементы() = 0 Тогда
Сообщить("Группа """+Контрагенты.Наименование+""" пустая");
КонецЕсли;
КонецЦикла;

101 24.05.2013 16:02

запросом без групп с родителем - родителя в колонке - в ТЗ
запросом только группы в ТЗ
при сравнении одно из второго выкитывать и удалять можно даже перебором ТЗ только с конца
ЗЫ писАть не буду ибо уж сами как нить

alex55 24.05.2013 16:02

не могу,объясню задача следующая: элементы справочника обладают какими то свойствами, мой механизм должен переместить все элементы из исходной папки, которые соответствуют заданным условиям поиска с ее внутренней иерархией в новую,представим,что если 2 элемента из 3х соответствуют отбору они ушли в новую папку, а есть элементы,которые уходят все сразу и на лету нужно грохнуть исходную папку так как в папке получателе уже создана папка с таким именем и чтобы множить тысячу папок с таким именем пустые нужно грохнуть.

101 24.05.2013 16:03

(12) ниале ибо если выбрать а там группа в группе и все пустые ;))

alex55 24.05.2013 16:04

14 сообщение для 11

101 24.05.2013 16:04

(14) афтар растабай ;)))

alex55 24.05.2013 16:06

что такое растабай ;)))

101 24.05.2013 16:07

(17) + я боюсь за людей кому ты ТЗ пишешь - они ж с ума сойдут ;)))

alex55 24.05.2013 16:09

покажи пример. а то разглогольствовать каждый может

101 24.05.2013 16:09

(18) в этом слови изначально две описки и одна буква пропущена ;))

alex55 24.05.2013 16:11

ну и.....? ТЗ на сцену.в исполнении 101, ой а где же он убежал......

101 24.05.2013 16:11

(20) - на лету нужно грохнуть исходную папку так как в папке получателе уже создана папка с таким именем
----- и
ысячу папок с таким именем пустые нужно грохнуть.
--
как минимум 2-е задачи с неявным алгоритмом ... ;)

101 24.05.2013 16:13

(22) Оо откуда я знаю чотенада четенада (с) :)))
ЗЫ как минимум краткий алгоритм выполнения - пустые грохнуть в (13) написал кратенько

alex55 24.05.2013 16:13

ну 2 й

alex55 24.05.2013 16:14

ты уже сам приплел

alex55 24.05.2013 16:14

приянто. Апплодисменты зала!!

101 24.05.2013 16:15

(26) неее , нифига , родной , все таки грохнуть тысячи пустых папок и удалять на лету опустевшую папку это кардинально разные йайца ;)) даже в профиль

Uho 24.05.2013 16:17

28-101 > +1

alex55 24.05.2013 16:17

и чтобы не множить тысячу папок с таким именем пустые нужно грохнуть. - ты хоть копируй почеловечески...

alex55 24.05.2013 16:18

ладно полемика это все...пустая.

101 24.05.2013 16:26

хмм пустая , но пустые нужно грохнуть и пустые нужно грохать ;)) все таки немного отличается
ЗЫ еси те охота на лету - то либо парсить функцией сколько элементов осталось - и ей же грохать можно сопсно , либо изобретать лисапед - другого <на лету> не будет имхо

VZ 24.05.2013 16:54

"Пустые названия" не нужно уничтожать. "Пустые названия" надо не допускать. На этапе записи.
И это принципиально.

alex55 24.05.2013 18:09

спасибо Uho немного переделал для себя получилось...респект и уважуха.

EarlyBird 24.05.2013 19:46

мда.....
имея такого «коллегу», я без работы точно не останусь.


Текущее время: 18:52. Часовой пояс GMT +3.