Вход | Регистрация
 

как объединить 2 элемента справочника?

как объединить 2 элемента справочника?
Я
   Мисти
 
02.04.20 - 21:39
один из них встречается 500 тыс. раз, а второй немного поменьше.
Только поиск занял часов 10.
   DTX 4th
 
1 - 02.04.20 - 21:54
Один пометить на удаление, на второй перекинуть все остатки.
   Garykom
 
2 - 02.04.20 - 21:59
(0) Если sql то прямой заменой ссылок в базе можно
   Сияющий в темноте
 
3 - 02.04.20 - 22:01
(2) предположим,что в регистре сведений в измерениях встречаются оба этих справочника-и что сделает прчмая замена?

потом,в квалификацию на прямую замену создателя вопроса я просто не верю.
   Мисти
 
4 - 02.04.20 - 22:05
да знать бы рецепт! (3) встречается, и в регистрах сведений и везде. Хотя - надо посмотреть, может, и нет.
   Garykom
 
5 - 02.04.20 - 22:06
(3) Надо смотреть понятно дело где ссылки на эти справочники используются.
   Garykom
 
6 - 02.04.20 - 22:07
Могу еще посоветовать один метод, но он пока теоретический.
Есть такая штука погугли "data_dump.zip" если конфа типовая из списка облачных то повезло.
   Garykom
 
7 - 02.04.20 - 22:09
(6)+ По сути это zip архив а внутри все данные в виде xml.
Работать с xml можно на чем угодно и даже вручную Найти/Заменить ))
   Garykom
 
8 - 02.04.20 - 22:10
(6)+ Точнее повезло если сам объем базы не сильно большой и оно в разумные сроки выгружается/загружается в этом формате
   Garykom
 
9 - 02.04.20 - 22:12
Какие знакомые имена Как достать базу из data_dump?
   mistеr
 
10 - 02.04.20 - 23:21
(0) Обработка из ИР, "Поиск и замена ссылок".
   Мисти
 
11 - 03.04.20 - 12:04
(10) я ж говорю, только поиск занял 10 часов, маловероятно, что этот объем обработается.
   Мисти
 
12 - 03.04.20 - 12:05
(9) всё получилось в тот раз!
конфа теперь совсем нетиповая.
   mistеr
 
13 - 03.04.20 - 12:08
(11) Когда найдены все ссылки, можно отбирать по типам объектов. Это если не терпится.
   timeforlive
 
14 - 03.04.20 - 12:16
Если нужно во всех документах и справочниках выполнить замену одного элемента справочника на другой, то я применяю следующий способ:
(об этом писали выше)
1. пометить на удаление заменяемый элемент
2. получить все ссылки на удаляемый элемент (код ниже)
3. выполнить условие замены.

На примере с номенклатурой

// получить результат запроса по удаляемому элементу.

ТЗ = РезультатЗапроса.Выгрузить();
                
// Получить всю номенклатуру, помеченную на удаление

МассивСсылок = ТЗ.ВыгрузитьКолонку("Ссылка");

ТабСсылок = НайтиПоСсылкам(МассивСсылок);
ТабСсылок.Сортировать("Ссылка");

СписокНоменклатурыИсключение = Новый Массив;

// Найти движения по документам.

// Если есть движения, то номенклатуру не трогаем.

Для Каждого Стр Из ТабСсылок Цикл
    Если СтрНайти(Стр.Метаданные.ПолноеИмя(), "Документ.") Тогда
        Сообщить(Стр.Ссылка);
        СписокНоменклатурыИсключение.Добавить(Стр.Ссылка);
    КонецЕсли;
КонецЦикла;    //Справочники.Спецификации.НайтиПоКоду("ФР-001589") = Стр.Ссылка


// Удалить номенклатуру из списка, по которой есть движения    

Для Каждого Эл Из СписокНоменклатурыИсключение Цикл
    
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Ссылка", Эл);
    
    МассивСтрок = ТабСсылок.НайтиСтроки(ПараметрыОтбора);
    
    Для Каждого ЭлСтр Из МассивСтрок Цикл
        ТабСсылок.Удалить(ЭлСтр);
    КонецЦикла;
    
КонецЦикла;

// Пометить на удаление все ссылки на номенклатуру

Для Каждого Стр Из ТабСсылок Цикл
    
    // Справочник

    Если СтрНайти(Стр.Метаданные.ПолноеИмя(), "Справочник.") Тогда
        
        ПометитьОбъектНаУдаление(Стр.Данные.Ссылка);
        
    // Регистр    

    ИначеЕсли СтрНайти(Стр.Метаданные.ПолноеИмя(), "РегистрСведений.") Тогда        
            
        УдалитьЗаписьРегистра(Стр.Метаданные.Имя, Стр.Данные); 
        ////МенеджерЗаписи=РегистрыСведений[Стр.Метаданные.Имя].СоздатьМенеджерЗаписи(); 

        ////МенеджерЗаписи.Заполнить(Стр.Данные); 

        ////МенеджерЗаписи.Удалить();

        
    КонецЕсли;
    
КонецЦикла;
   timeforlive
 
15 - 03.04.20 - 12:17
Коротко: используйте метод НайтиПоСсылкам()
   Мисти
 
16 - 03.04.20 - 14:21
спасибо! Проблема просто в том, что очень большой объем, надо как-то порционно менять!
и потом - движения-то есть! Мне нужно и в движениях заменить.
   Сияющий в темноте
 
17 - 04.04.20 - 23:37
(16) так движения в регистре отбираются по регистратору и сразу видно,есть там нужный элемент и есть ли там второй.
просто,если элемент встречается в неиндексируемых полях,то для каждого реквизита это полное сканирование таблицы.
   Креатив
 
18 - 05.04.20 - 20:39
(0)Поиск и удаление дублей в современных конфигурациях есть. Долго, но надёжно.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.