8.х Объединить одинаковых контрагентов с разными договорами

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем zyzo, 10 янв 2011.

  1. TopicStarter Overlay
    zyzo
    Offline

    zyzo

    Регистрация:
    17 июн 2010
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Есть такой вопрос. После ряда действий получилось так , что в справочнике "Контрагенты" есть одинаковые контрагенты , но у них у каждого разные договора. Теперь сам вопрос. Как объединить этих одинаковых контрагентов , чтобы договора не пропали а все перенеслись к результирующему контрагенту ? Пробовал обработкой "Поиск и замена дублирующихся значений справочников", такой возможности я там не увидел , она объединяет контрагентов , но договор сохраняется только у "правильного конрагента"!
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Если таких контрагентов не много, то можно сначала поменять владельца у договоров, а потом уже объединять контрагентов.
  3. TopicStarter Overlay
    zyzo
    Offline

    zyzo

    Регистрация:
    17 июн 2010
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    171 группа одинаковых значений...
  4. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Ну тогда только свою обработку писать.
  5. cska-fanat-kz
    Offline

    cska-fanat-kz

    Регистрация:
    8 янв 2011
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Например такую ;)

    Код:
    Запрос = Новый Запрос;
    
    Запрос.Текст = "ВЫБРАТЬ
    |    Контрагенты.Ссылка,
    |    Контрагенты.Наименование КАК Наименование
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |
    |УПОРЯДОЧИТЬ ПО
    |    Наименование";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    ТаблицаКонтрагентов = Новый ТаблицаЗначений;
    ТаблицаКонтрагентов.Колонки.Добавить("Ссылка");
    ТаблицаКонтрагентов.Колонки.Добавить("Наименование");
    
    ТекКонтрАгент = Справочники.Контрагенты.ПустаяСсылка();
    
    Пока Выборка.Следующий() Цикл
    Если ТекКонтрАгент.Наименование = Выборка.Наименование Тогда
    Продолжить;
    Иначе
    ТекСтрокаТаблицы = ТаблицаКонтрагентов.Добавить();
    ТекСтрокаТаблицы.Ссылка = Выборка.Ссылка;
    ТекСтрокаТаблицы.Наименование = Выборка.Наименование;
    ТекКонтрАгент = Выборка.Ссылка;
    КонецЕсли;
    КонецЦикла;
    
    //на выходе получаем список УНИКАЛЬНЫХ контрагентов
    
    Выборка = Справочники.Договора.Выбрать();
    
    Пока Выборка.Следующий() Цикл
    
    НайденнаяСтрока = ТаблицаКонтрагентов.Найти(Выборка.Владелец.Наименование,"Наименование");
    
    Если НайденнаяСтрока <> Неопределено Тогда
    ТекДоговор = Выборка.Ссылка.ПолучитьОбъект();
    ТекДоговор.Владелец = НайденнаяСтрока.Ссылка;    
    ТекДоговор.Записать();
    КонецЕсли;
    
    КонецЦикла;
    
    //а потом можно и поудалять повторяющиеся
    
    Выборка = Справочники.Контрагенты.Выбрать();
    
    Пока Выборка.Следующий() Цикл
    
    НайденнаяСтрока = ТаблицаКонтрагентов.Найти(Выборка.Ссылка,"Ссылка");
    
    Если НайденнаяСтрока = Неопределено Тогда
    ТекКонтрАгент = Выборка.Ссылка.ПолучитьОбъект();
    ТекКонтрАгент.Удалить();
    КонецЕсли;
    
    КонецЦикла;
    
    Во-первых, перед применением ОБЯЗАТЕЛЬНО сделать резервную копию базы!
    Во-вторых, не отлаживал, но должно сработать, но не обязано ;)
  6. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    метод Удалить(); работает без ссылочной целостности и не уверен будет ли работать если у пользователя не будет прав на непосредственное удаление. советую делать массив удаляемых ссылок и использовать УдалитьОбъекты(). параметры в сп. пример в закрытии дня УТ
  7. TopicStarter Overlay
    zyzo
    Offline

    zyzo

    Регистрация:
    17 июн 2010
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Всем большое спасибо за помощь , особенно cska-fanat-kz . БУду пробовать!
  8. cska-fanat-kz
    Offline

    cska-fanat-kz

    Регистрация:
    8 янв 2011
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    В этом отношении - я верил в лучшее ;)
    Если челу дали разбирать контрагентов, то уж наверное он - не "тварь дрожащая и право [на удаление] имеет" ;)))
    Но это уже вопрос к нему...

Поделиться этой страницей