Механизм замены ссылочных элементов в объектах базы данных реализован в общих модулей встраиваемых в конфигурацию.
Замена ссылок в управляемом интерфейсе.
В обработке есть справка, в которой описан порядок работы с обработкой.
Обработка позволяет указать ключевые поля элементов справочника для поиска дублей, выбрать правильные элементы.
Выполнить замену ссылок неправильных элементов на правильные. Пометить на удаление и удалить объекты из базы данных с проверкой ссылочной целостности.
Можно указать режим замены ссылок: Режим «Обмена данными», выполнение в единой транзакции.
Работать можно сразу с несколькими справочниками, настроив для каждого правила поиска дублей, условие правильности элемента.
Для замены ссылок используется функция из типовой универсальной обработки («Поиск и замена значений») несколько переработанная.
На вложенных скринах указан порядок работы с обработкой.
1. Настройка правил поиска дублей.
2. Запуск поиска дублей.
3. Поиск связанных данных (где используются ссылки наших задвоенных объектов).
4. Выполнение замены неправильных ссылок на правильные ссылки.
5. Пометка удаление неправильных ссылок.
6. Удаление неправильных объектов.
ДОРАБОТКИ
10.03.2012. Сделан удобный выбор объекта метаданных в настройке поиска дублей.
18.07.2012. Версия 1.0.1.4.
1. При записи набора регистра бухгалтрерии в режиме обмена данных (ОбменДанными.Загрузка = Истина) есть фича:
если не ведется учет по измерению («по подразделению»), но в записи установить значение (например, Подразделение.ПустаяСсылка), то не смотря на то, что учет по подразделению не ведется, записывается значение установленное в наборе.
Напротив, если ОбменДанными.Загрузка = Ложь, то в таком случае значение автоматически обNULLяется.
В результате такого поведения при заменах ссылок в регистрах бухгалтерии могли возникать ошибки, если замена велась с отключенным режимом записи (ОбменДанным.Загрузка = Истина).
Исправляется перезаписью записей регистра в режиме ОбменДанными.Загрузка = Ложь.
2. Внесены поправки по замечаниям.
3. Добавлены дополнительные настройки. Таблица ошибок. Ведение журнала регистрации.
4. Добавлена конфигурация с модулями замены, с возможностью вынесения процедуры выполнения замены на сервер, появилась возможность запуска выполнения замены в фоновом режиме. (см. конфигурации «ВыполнениеЗаменыСсылочныхЭлементов.cf» и «ИндикаторФоновогоЗадания.cf»).
Конфигурация «ИндикаторФоновогоЗадания.cf» для клиент-серверного режима.
14.08.2012. Версия 1.0.1.5.
1. Добавлена замена ссылок в общих реквизитах объектов.
2. Исправлены найденные ошибки (см. комментарий 17).
27.11.2012. Версия 2.1.1.10.
1. Переписано ядро механизма выполнения замены ссылок. Повышена стабильность программы, скорость выполнения, оптимальное использование оперативной памяти. При выполнение замены ссылок в больших объемах данных могла возникать ошибка «Нехватка памяти» или выполнение могло проходить слишком медленно.
2. Добавлены новые настройки: Параметры обмена данными, фонового задания, уровней транзакции, контекста выполнения.
3. Усовершенствован механизм индикации хода выполнения обработки.
4. Написана справка для обработки.
11.12.2012. Версия 2.1.1.11.
1. Оптимизированы алгоритмы обработки замены ссылок в движениях документа.
2. Добавлен механизм хранения описаний ошибок (исключений) с возможностью прерывания выполнения обрабоки замены ссылок при накоплении заданного количества исключений.
24.12.2012. Версия 2.1.1.12.
1. Добавлена возможность подключать обработчики для событий обработки замены ссылок. События обработки замены:
— «инициализация дополнительных параметров» — в клиент-серверном варианте выполняется дважды, один раз на клиентской стороне, другой на серверной;
— «перед выполнением замены ссылок» — выполняется один раз перед выполнением всех замен;
— «перед полученим объекта» — выполняется перед получением объекта, в котором необходимо выполнить замены, из базы данных;
— «перед записью объекта» — выполняется перед записью объекта, с уже выполненными заменами, в базу данных;
— «после выполнения замен» — выполняется один раз после выполнения замены всех ссылок.
17.03.2014. Версия 2.1.2.7.
— оптимизация интерфейсных механизмов;
— добавлено автосохранение значений элементов формы (текущих настроек);
— изменен формат файла настроек.
29.04.2014. Версия 2.1.2.7.
— реализована возможность добавлять в ключ поиска дублей строковое поле неограниченной длины (такое поле приводится к ограниченному полю длиной в 1000 символов);
— незначительные исправления и улучшения (если замена ссылки производилась на ту же ссылку, то функция замены уходила в бесконечный цикл).
26.09.2014. Версия 2.3.1.1.
— добавлена управляемая форма для замены ссылок в объектах базы данных;
— незначительные исправления и улучшения (реализована замена в регистрах с регистратором-битой ссылкой, повышена стабильность кода).
01.12.2014. Версия 2.3.1.3.
— добавлена возможность включения привилегированного режима (выполнение замены с полными правами);
— исправлена ошибка выполнения замены ссылок в последовательностях.
В регистрах ссылки без перепроведения документов-регистраторов заменяет?
(1) Magister, заменяет ссылки в записях регистров документов-регистраторов без перепроведения документов.
Кстати, если ссылка есть в связанной записи регистра, но её нет в самом документе-регистраторе, то функция «Поиск ссылок» выдаст ссылку на документ, но не на регистр.
При создании настройки поиска дублей неплохо было бы по аналогии с «Универсальным подбором и обработкой» обработку тайпинга (ввода текста в поле) сделать к полю «Таблица данных», чтобы не только из списка выбирать.
А в остальном — зачет, я успешно опробовал. Автору плюс.
Немного не допонял, а от стандартной с ITS она чем отличается? Та вроде бы делает то же самое, но как бы гарантирована 1С. Здесь какие-то изюминки?
(5) Boroda,
1. Интерфейсом. Основная цель при написании обработки состояла в создании интерфейса для групповой обработки задвоенных элементов справочников с использованием стандартной 1С-овской процедурой замены. Около года пользуюсь успешно обработкой в крупных и мелких проектах. Единственное было, что вылетала 1С-овская «гарантировання» процедура замены на регистрах бухгалтерии и при замене ссылок видов расчета. Пользуюсь для создания правил «ПостроителемОтчета», давно хочу переделать под СКД, но руки не доходят, тем более для 99% случаев хватает «Построителя».
2. Процедура замены отличается обработкой регистра бухгалтерии (стандартная «гарантированная» вылетала, вроде при обработке небалансовых измерений), и заменой ссылок видов расчета.
если бы была на стандартной написана, доверял бы больше, если настройка реально работает + тебе!, буду тестить…
Пока не сделал поиск ссылок на неправильный объект — изменять ссылки не хотела, так и задумано?
(8) serggo, да, так задумано. что бы совсем уж бездумно не действовать.
(7) GoodWinSpr, ))) уж её тестил-перетестил где только возможно: и на самописных, и нетиповых, и всех возможных типовых конфигурациях. Обработка «боевая», всегда собой.
Отличная штука, плюсуем )
(2) Скачал, попробую. Именно то, что сейчас надо 🙂
Баг: если не указать ни одного ключевого поля — всё сохраняется, но при поиске получаем:
{Форма.Форма.Форма(725)}: Помилка при встановленні значення атрибуту контексту (Текст)
| » + МассивВСтрокуПоШаблону(МассивКлючевыхПолей, «,
через:
{(9, 2)}: Синтаксична помилка
<<?>>
При заменен значений в закрытом периоде, не выдаёт такое сообщение: «Редактирование данных этого периода запрещено. Изменения не могут быть записаны…»
Говорит, что замена выполнена успешна, но на самом деле ничего не произошло.
Пожалуйста.
{ВнешняяОбработка.ПоискЗаменаУдалениеДублейОбъектов.МодульОбъекта(369,3)}: Переменная не определена (РаботаСИндикаторомВыполнения)
<<?>>РаботаСИндикаторомВыполнения.УдалитьИндикатор(Свойства.Индикатор);
УПП 1.3.27.4
платформа 15.294
Будем брать). Спасибо)
Та же ошибка {ВнешняяОбработка.ПоискЗаменаУдалениеДублейОбъектов.МодульОбъекта(369,3)}: Переменная не определена (РаботаСИндикаторомВыполнения)
<<?>>РаботаСИндикаторомВыполнения.УдалитьИндикатор(Свойства.Индикатор);
Причем и на УПП, и на бухгалтерии 2.0. Платформа 8.2.15
(18) bitrostov, (16) Darkid, Исправлено.
Плевался на штатные обработки поиска дубликатов при поиске дублей элементов (например, ДоговорКонтрагента) подчиненных другому справочнику…
Как решена подобная проблема у Вас?
(20) V.Nikonov, Просто. Поле «Владелец» должно быть в составе ключа.
Обработка класс!
Но почему её нельзя настроить перед открытием из другой обработки?
У меня почему то не работает УТ11 обновлена до последней версии 1С:Предприятие 8.2 (8.2.16.362)
Еще не плохо бы сделать пометку на удаление всех не основных. А то когда много мусора — руками долго помечать.
Спасибо за обработку — очень помогла.
Нужно посмотреть 🙂
(24) _Vovik,
Реализовано с самого начала существования обработки: нужно в контекстное меню в дереве дублей открыть, там будет.
Красивая штука) Реквизиты только в регистрах не меняет.. Типа корсубконто в партиях товарах бух учет. А так полный зачет)
Очень удобная штука однако!
у меня задача:
есть справочник Оргтехники. как выяснилось, существуют дублирующиеся элементы, причем, дубляж идет по серийным номерам. Требуется проверить и вывести совпадающие серийники как «1-к-1», так и без эн последних знаков (как задано в форме обработки).
может решить подобное ваша обработка?
(29) Serge_ASB,
Сама обработка этого не может.
Но в ней есть функция типа «ВыполнитьЗаменуСсылок» (точное имя не помню), этой функции можно указать, данные которые нужно заменить «что на что».
Добрый день. Очень нужная обработка! А можно ее выслать на s_uu@mail.ru. ?
Спасибо заранее
Стоящая обработка! Автор, пожалуйста, приведите допустимые действия в закладке «Обработчики»? Какие функции, кроме «ВыполнитьЗаменуСсылок», там можно вызывать? Как, к примеру, обратиться к объекту в котором нашлась ссылка искомого объекта? Благодарю.
по ДоговорамКонтрагентов возможны дубли (по владельцу,именам и номеру) с разными видами (Прочее, С Покупателем). Как можно назначить правильным договор с нужным нам видом, нр. «С покупателем»?
Также, как назначить проведение документов, где проводим замену чего-нибудь?
(33) shoy,
В настройках поиска дублей нужно заполнить отбор правильных элементов.
Добавить отбор по полю ВидДоговора = «С покупателем».
Вроде так должно работать.
Так нужна но нужно посмотреть
Я считаю очень нужная и актуальная обработка. Мне например пригодилась в случае когда надо было обновить справочник КПС в конфигурации БГУ.
Я считаю очень нужная и актуальная обработка. Мне например пригодилась в случае когда надо было обновить справочник КПС в конфигурации БГУ. При обновление вылетала ошибка что существуют дубли с помощью данной обработки удалось устранить этот косяк. Автору большое спасибо.
Отличная обработка!
Обратной нет? Коллега свернул всех контрагентов с пустым ИНН, теперь думаю — как из архивной БД вытащить соответствия документ-правильный контрагент.
Чудес не бывает, к сожалению((
Найти всех контрагентов с пустым ИНН в копии базы и все объекты в которых он используется. И выгрузкой загрузкой перенести из копии в базу.
лютый вин
1С: Предприятие 8.3 — НЕ РАБОТАЕТ. Народ автор врет открытым текстом.
(41) rosinfoteh, аккуратней со словами, уже сомневаюсь в адекватности их автора.
Что «НЕ РАБОТАЕТ», на каком основании? (можно скрин кинуть, например)
Если открыл в управляемом интерфейсе и увидел пустую форму, то флаг тебе в руки, обработка работает только в «обычном приложении».
Когда у 75 человек работает, а у одного нет… Напоминает: если седьмой муж бьет жене по роже, значит дело не в муже, а в роже.
Большое спасибо, обработка пригодилась при переходе с 1с 7.7 на 1с 8.3.
Нужная и полезная штука
одна из немногих и очень нужных обработок, мне помогла!!!!
а для толстого (обычного приложения) просто незаменимая обработка, может если руки дойдут я её перепилю на тонкого клиента
PS Ошибка была в конфиге, а не в обработке так что обработка суперская
PPS кстати начал переписывать на управляемые формы, что то стало получаться ))), скоро релиз
(45) gortol, либо ваша УТ11 криво дописана; или, разработчики УТ11 (или БСП) уже не рассчитывают на то, что их конфигурация может быть запущена в толстом клиенте. Ищи в обработчике «Перед записью» регистра сведений «Соответствие объектов информационных баз».
Я посмотрел в БП 3.0 (что под рукой), там нет никаких экстремальных вызовов.
Можешь кинуть код обработчика, если есть сложности, попробую определить источник ошибки.
не доверяю я таким разработкам — все в одному.
(46) всё норм с обработкой, это в конфиге косяк был, обработка работает как надо, спасибо ВАМ!!
Обработкой этой много чего делал. Жаль что на УФ её нет!
Автор, Андрей Андреич, дарагой! А может стоит уже попробовать перенести на УФ? А?
(49) shoy, ))) думаю все, но со временем туго.
Да и потребности в этом никак не возникает. Обычно достаточно запустить конфигурацию в обычном приложении.
Скачал последнюю версию, запускаю на УТ11.1 уф, и че то непойму, там замена ссылок только, а где поиск дублей? Или в толстом надо запускать, что бы другая форма открылась?
(51) lsd_777, на управляемом только замена. До писка дублей пока руки не дошли.
не врубаюсь, ссылки находит, пишет, что заменил, по новой поиск делаю, все по старому! Так же попадаются места, где ругается на нарушение прав, хотя работаю под полными, конф. УТ11.1.7.67
(53) lsd_777, можешь письмо написать со скринами шагов, которые делаешь. (kaabass@mail.ru)
(54) Отправил
Открыл в УФ, никакого упоминания о дублях, кроме как упоминание в справке. Скриншот прилагаю
Автор так и не ответил по моей проблеме!
Что-то у меня единицы измерения не поменяла (УФ). Там общий алгоритм или учитывает структуру типовых конфигураций?
Документы при замене перепроводяться?
(55) lsd_777, извини. Попробую сегодня на УТ 11.1 поиграться.
(56) gull22, поиск дублей только в обычном приложении(.
(58) yc_2011, нет привязки к какой-то конкретной конфигурации.
(59) yc_2011, документы при замене не перепроводятся.
(53) lsd_777, то, что не выполнялась до конца замена, скорее всего связано с заменами в последовательностях, вопрос решен в версии 2.3.1.3. Проверял на УТ 11.1.9, столкнулся с такой же проблемой.
Ошибка при замене ссылок: При записи объекта в базу данных
Объект метаданных: Реализация товаров услуг
Объект: Реализация товаров и услуг ЦСУТ-000012 от 05.09.2014 9:30:18
Описание ошибки: {ВнешняяОбработка.ПоискЗаменаУдалениеДублейОбъектов.МодульОбъекта(1270)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:
Нарушение прав доступа!
Ничего не изменилось!
Спасибо большое за полезную обработку, особенно актуально для УФ.
Здравствуйте, находит ли данная обработка дубли по «Дополнительным реквизитам и сведениям»?
(64) sergey0703, нет.
Сегодня скачал Вашу обработку за стартмани, все красиво-весь заявленный функционал работает, спасибо. Однако должен заметить что если бы еще осуществлялся поиск дублей по «Дополнительным свойствам объектов» в 1С8.2 или по «Дополнительным реквизитам и сведениям» в 1С8.3 -то обработка была бы максимально востребованной.
Спасибо, очень помогла обработка. Неплохо бы включить Режим загрузки данных (ОбменДанными.Загрузка.Истина) и для установки пометки на удаление.
АА, напиши что в УФ не работает поиск дублей, только замена.
Зря потратил время, блин.
Спасибо, очень помогла!
(68) в конфигураторе разрешаем запуск обычного приложения, запускаем отладку обычного приложения и все работает 🙂
(70) «в конфигураторе разрешаем запуск обычного приложения» — это не обязательно.
Скачала обработку , но она не открывается в БГУ 1.0 ,
Очень надо найти дубли , как открыть обработку в обычном приложении , толстый клиент ? Может кто может закинуть для нас на zadoroz1 собака ya точка ru ?
Нашел дубли, выполнил поиск ссылок и определение правильной ссылки, но при попытке выполнить замену выдает что он не может т.к. не установлен правильный элемент и не выполнен поиск ссылок. И вопрос по какой технологии поиск происходит ??? По 100% совпадению или где-то можно указать процент схожести наименования элементов ?
Подскажите, можно как-то отбор на выводимые дубли по количеству записей установить?
А обработчике «Фильтр найденных по ссылке» что имеется в доступных параметрах?