Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Служба Рассылок Городского Кота


Служба Рассылок Городского Кота

Есть ли способ с минимальными затратами перенести очень много элементов
справочника из одной папки в другую?

Да, вы правы - вручную (CTRL+F5, Enter, CTRL+F5, Enter, CTRL+F5, Enter...)
перемещать элементы из одной папки в другую можно только когда их единицы,
если же их число достигает хотя бы нескольких десятков, то эта операция
становится долгой и мучительной.
Поэтому будем думать...
Мне знакомо два способа выполнения этой операции:

1-й cпособ. Классический.
Пишем обработку которая меняет родителя у наших элементов.

Спр = СоздатьОбъект("Справочник.ХХХХХХ");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 цикл
 Если Спр.Родитель = СтараяПапка тогда
  Спр.Родитель = НоваяПапка;
  Спр.Записать();
 КонецЕсли;
КонецЦикла;

2-й способ. Недокументированный.
Все справочники в нашей базе хранятся в виде таблиц с именами sc*.dbf. Если
открыть такую табличку любым вьювером, то мы увидим, что кроме полей
описанных в конфигураторе, там есть еще служебные поля. Одно из таких полей
называется "ParentID" и в нем храниться ID родителя.
Т.е. наша задача сводится к тому чтобы отобрать элементы у которых значение
ParentId равно ID старого родителя и присвоить ему значение ID нового
родителя. Для поиска воспользуемся полями CODE и DESCR. Все. Запрос для
выполнения этой операции в Access выглядит так:

UPDATE SCXXX SET SCXXX.PARENTID = NewParent
WHERE (((SCXXX.PARENTID)=OldParent));

Да и работает этот способ намного быстрее.
С уважением, Таранов Сергей. Пишите, cons@nm.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное