Книга знаний

1С:Предприятие / Объекты конфигурации / Справочники

Родитель в справочнике

Приемы работы со справочниками с использованием РодителяАвтор статьи:
Последняя редакция №1 от 22.04.06
URL: http://kb.mista.ru/article.php?id=173

Ключевые слова: родитель, группа, папка, сменить, перенести, изменить


Родитель – это группа (папка), которой принадлежит элемент.

Основные методы работы с родителем:


Выбор элементов, принадлежащих группе:

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


Изменение родителя уже существующего элемента:
   
   //Переносим элемент с кодом Гл000485 в группу с кодом Гл005172
   Спр = СоздатьОбъект("Справочник.Номенклатура");
   Если Спр.НайтиПоКоду("Гл005172") = 1 Тогда
       Род = Спр.ТекущийЭлемент();
       Если Спр.НайтиПоКоду("Гл000485") = 1 Тогда
           Спр.Родитель = Род;
           Спр.Записать();
       КонецЕсли;    
   КонецЕсли;    
   
p.s. Обратите внимание на Спр.Записать() – часто забывают это сделать и изменения не принимаются J
p.p.s Обратите внимание на Спр.Родитель = Род. Часто пишут  Спр.ТекущийЭлемент().Родитель = Род и получают ошибку о невозможности перепозиционироваться.


Перенос элементов из одной группы в другую:

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


Перенос из одной группы в другую только элементов, без групп:

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


Сложность двух предыдущих задач состоит в том, что при смене Родителя сбивается выборка, и ее надо делать заново.

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика