Поиск и замена значений в 1С 8.3
Меню

Поиск и замена значений в 1С 8.3

ПоискИЗаменаЗначений – это обработка 1С позволяющая заменять ссылочные значения во всех объектах конфигурации, которые ссылаются на заменяемый объект.

Перед тем как рассмотреть саму обработку, давайте разберемся, для решения каких прикладных задач применяется эта обработка. Допустим, мы пометили на удаление какой-то справочник, но при удалении (обработкой Удаление помеченных объектов) выясняется, что на удаляемый элемент есть ссылающиеся объекты. При таких условиях обработка «Удаление помеченных объектов» не позволит удалить элемент, т.к. это нарушит референтность базы данных. Если ссылающийся объект один или два, тогда можно ссылки заменить вручную, а если таких объектов 100, 1000? Вот в этом случае нам понадобится обработка ПоискИЗаменаЗначений. Данная обработка заменит удаляемый объект другой ссылкой, тем самым удалит связанность объектов, что позволит, в свою очередь, удалить помеченный на удаление объект.

Еще один из распространенных примеров – когда по ошибке в системе заводится дубль контрагента (номенклатуры, чего угодно), по которому уже успели ввести документы. Обработка ПоискИЗаменаЗначений в этом случае также поможет. Однако для решения второго примера больше подойдет обработка «Поиск и удаление дублей», которая также поставляется на диске ИТС и в составе БСП в одноименной подсистеме «Поиск и удаление дублей».

Рассмотрим работу с обработкой.

GUI обработки выглядит так:

GUI обработки
GUI обработки

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

Давайте по шагам разберем, как пользоваться обработкой:

  • Добавляем в верхнюю табличную часть строку кнопкой «Добавить» (добавлять можно несколько строк);

Добавляем в верхнюю табличную часть строку кнопкой «Добавить»
Добавляем в верхнюю табличную часть строку кнопкой «Добавить»
  • Выбираем заменяемое значение в колонке «Что заменять», в этой же строке заполняем также значение, на что необходимо произвести замену;

Выбираем заменяемое значение в колонке «Что заменять», в этой же строке заполняем также значение, на что необходимо произвести замену
Выбираем заменяемое значение в колонке «Что заменять», в этой же строке заполняем также значение, на что необходимо произвести замену
  • Жмем кнопку «Найти ссылки». Все найденные объекты, которые ссылаются на элемент из колонки «Что заменять», будут выведены в нижнюю табличную часть;

Жмем кнопку «Найти ссылки»
Жмем кнопку «Найти ссылки»
  • В табличной части также можно производить поиск в таблице значений для поиска определенных строк;

В табличной части также можно производить поиск в таблице значений для поиска определенных строк
В табличной части также можно производить поиск в таблице значений для поиска определенных строк
  • Мы может выбрать все или выбрать вручную определенные строки (воспользовавшись поиском описанным пунктом выше);

Мы может выбрать все или выбрать вручную определенные строки
Мы может выбрать все или выбрать вручную определенные строки
  • После чего жмем «Выполнить замену значений».

Выполнить замену значений
Выполнить замену значений

Стоить упомянуть также о дополнительных настройках:

Выполнять в транзакции – включив данную опцию, процесс удаления будет происходить в одной общей транзакции. Наличие общей транзакции означает, что если в процессе удаления произойдет какая-либо ошибка, вся транзакция откатится, и изменения в базе не будут зафиксированы. Для примера можно рассмотреть ситуацию, когда мы обрабатываем 1000 элементов: если при обработке 999 элемента произойдет ошибка, все сделанные до этого изменения в базе данных отменятся. Эта опция позволяет нам поддерживать консистентность базы данных.

Отключить контроль записи – данная опция отвечает за факт включения флага:


       ОбменДанными.Загрузка = Истина;

ОбменДанными – это свойство объекта (справочника, документа, регистров, планов видов характеристик и т.п.). Данный флаг, как правило, означает минимальный контроль при записи, что достигается не платформой, а прикладными разработчиками. При разработке различных подписок или при перехвате различных событий объекта (например, при записи) прикладные разработчики пишут такой код:


	 Если ОбменДанными.Загрузка Тогда
		Возврат;
	 КонецЕсли;

Т.е. если есть данный флаг, выходим из процедуры. За счет этого достигается минимальный контроль при записи объектов.

Пояснять процесс подробно – включение данной опции будет выводить лог обработки объектов через метод


       ОбщегоНазначенияКлиентСервер.СообщитьПользователю().

Данную обработку можно найти на диске ИТС по пути:

\1CITS\EXE\ExtReps\Unireps82\SearchAndChange\

…или скачать по ссылке

В заключении напомним, что важно не забывать делать backup перед применением обработки.

Рассказать друзьям
Предыдущая статья статья
Комиссионная торговля в 1С 8.3 Бухгалтерия
Следующая статья статья
Внешняя обработка 1С: запуск, параметры, вызов
Комментарии