Имя: Пароль:
1C
 
Удаление пустых папок
0 TaHKeP
 
27.11.08
16:24
Есть какая-нибудь универсальная обработка, которая удаляет пустые группы в справочнике или может кто писал, скиньте код :)
1 NcSteel
 
27.11.08
16:26
Предлогаю тебе написать запрос. Я бы использовал внутренние запросы.
2 TaHKeP
 
27.11.08
16:29
С запросиками тяжеловато, я пока только основные объекты изучаю на курсах, до запросов только дошел, а нужно как всегда срочно
3 Fragster
 
гуру
27.11.08
16:31
рекурсия спасет отца русской демократии
4 RacoT
 
27.11.08
16:36
Сперва юзаеш такой запрос
ВЫБРАТЬ
   Номенклатура.Родитель
ИЗ
   Справочник.Номенклатура КАК Номенклатура

СГРУППИРОВАТЬ ПО
   Номенклатура.Родитель
Результат заносиш в список.
Потом юзаеш
ВЫБРАТЬ
   Номенклатура.Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   (НЕ Номенклатура.Предопределенный)
   И Номенклатура.ЭтоГруппа
   И (НЕ Номенклатура.Ссылка В (&СписокГрупп))
И все что выберет второй запрос смело удаляеш.
5 RacoT
 
27.11.08
16:37
Кстати если кто придумал как это одним запросом отобрать выложите если не влом.
6 megalodon
 
27.11.08
16:37
такая задачка в один запрос решается.
7 RacoT
 
27.11.08
16:39
(6) выложи плз.
8 megalodon
 
27.11.08
16:44
ВЫБРАТЬ
   Н1.Ссылка
ИЗ
   Справочник.Номенклатура КАК Н1
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Н2
       ПО Н1.Ссылка = Н2.Родитель
ГДЕ
   Н1.ЭтоГруппа
   И Н2.Родитель ЕСТЬ NULL
9 globalasax
 
27.11.08
16:47
ВЫБРАТЬ
   Группы.Ссылка КАК Ссылка
   
ИЗ
   (ВЫБРАТЬ
       Номенклатура.Ссылка КАК Ссылка
   ИЗ
       Справочник.Номенклатура КАК Номенклатура
   ГДЕ
       Номенклатура.ЭтоГруппа = ИСТИНА) КАК Группы
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           Номенклатура.Родитель КАК Родитель,
           Номенклатура.Ссылка КАК Ссылка
       ИЗ
           Справочник.Номенклатура КАК Номенклатура
       
       СГРУППИРОВАТЬ ПО
           Номенклатура.Родитель,
           Номенклатура.Ссылка) КАК Элементы
       ПО Группы.Ссылка = Элементы.Родитель

СГРУППИРОВАТЬ ПО
   Группы.Ссылка

ИМЕЮЩИЕ
   КОЛИЧЕСТВО(Элементы.Ссылка) = 0
10 RacoT
 
27.11.08
16:50
(8) Класс, если не трудно обясни работу последней строчки.
11 globalasax
 
27.11.08
16:54
типа оставляем только те группы, для которых не найден ни один элемент
12 globalasax
 
27.11.08
16:54
т.е. "пусты папки"
13 globalasax
 
27.11.08
16:56
ВЫБРАТЬ
   Группы.Ссылка КАК Ссылка,
   КОЛИЧЕСТВО(Элементы.Ссылка) КАК Количество
ИЗ
   (ВЫБРАТЬ
       Номенклатура.Ссылка КАК Ссылка
   ИЗ
       Справочник.Номенклатура КАК Номенклатура
   ГДЕ
       Номенклатура.ЭтоГруппа = ИСТИНА) КАК Группы
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           Номенклатура.Родитель КАК Родитель,
           Номенклатура.Ссылка КАК Ссылка
       ИЗ
           Справочник.Номенклатура КАК Номенклатура
       
       СГРУППИРОВАТЬ ПО
           Номенклатура.Родитель,
           Номенклатура.Ссылка) КАК Элементы
       ПО Группы.Ссылка = Элементы.Родитель

СГРУППИРОВАТЬ ПО
   Группы.Ссылка
- выводит группу и кол-во эл-тов в ней
14 RacoT
 
27.11.08
17:00
Все врубился, просто непривычно условия так накладывать, спасибо.
15 RacoT
 
27.11.08
17:01
(13) твое понятно, я сперва не врубился как есть null  в условии отработает, я только в полях применял его.