Статьи‎ > ‎

Поиск и замена значений

Для того что бы произвести поиск и замену значений с помощью Ei нам понадобится:
  1. Ei версии 1.09 или выше.
  2. Обработка с диска ИТС поиск и замена значений.
  3. Ну и жертва, в виде любой конфигурации 1С:Предприятие 8 (УПП, УТ, БП и т.д.)
Нет смысла писать самостоятельную замену, таких обработок предостаточно - поэтому нашей целью будет передать этой обработке (Поиск и замена значений) необходимый набор данных. 

Нужный набор данных должен содержать как минимум  3 колонки:
  • ЧтоЗменять;
  • НаЧтоЗаменять;
  • Пометка.
Набор данных как водится получим из запроса или из встроенного языка, используя Конструктор.

Пример запроса

ВЫБРАТЬ

    ДублиИНН.ИНН,

    Контрагенты_УД.Ссылка КАК ЧтоЗаменять,

    Контрагенты.Ссылка КАК НаЧтоЗаменять,

    Истина как Пометка

ИЗ

    Справочник.Контрагенты КАК Контрагенты_УД

        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

            Контрагенты.ИНН КАК ИНН

        ИЗ

            Справочник.Контрагенты КАК Контрагенты

        ГДЕ

            (НЕ Контрагенты.ИНН = "")

 

        СГРУППИРОВАТЬ ПО

            Контрагенты.ИНН

 

        ИМЕЮЩИЕ

            КОЛИЧЕСТВО(Контрагенты.ИНН) > 1) КАК ДублиИНН

            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты

            ПО (Контрагенты.ИНН = ДублиИНН.ИНН)

        ПО Контрагенты_УД.ИНН = ДублиИНН.ИНН

ГДЕ

    Контрагенты_УД.Родитель = &Родитель

    И Контрагенты.Родитель <> &Родитель

Пример запроса

ВЫБРАТЬ

    ДублиИНН.ИНН,

    Контрагенты_УД.Ссылка КАК ЧтоЗаменять,

    Контрагенты.Ссылка КАК НаЧтоЗаменять,

    Истина как Пометка

ИЗ

    Справочник.Контрагенты КАК Контрагенты_УД

        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

            Контрагенты.ИНН КАК ИНН

        ИЗ

            Справочник.Контрагенты КАК Контрагенты

        ГДЕ

            (НЕ Контрагенты.ИНН = "")

 

        СГРУППИРОВАТЬ ПО

            Контрагенты.ИНН

 

        ИМЕЮЩИЕ

            КОЛИЧЕСТВО(Контрагенты.ИНН) > 1) КАК ДублиИНН

            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты

            ПО (Контрагенты.ИНН = ДублиИНН.ИНН)

        ПО Контрагенты_УД.ИНН = ДублиИНН.ИНН

ГДЕ

    Контрагенты_УД.Родитель = &Родитель

    И Контрагенты.Родитель <> &Родитель


после выполнения этого запроса, нашей целью будут его результаты.
Для этого на закладке "Встроенный язык" конструктора, пропишем следующий код.

Код на встроенном языке

ВнешняяОбработка = ВнешниеОбработки.Создать(Параметры.Обработка);

Форма=ВнешняяОбработка.ПолучитьФорму();

Форма.Открыть();

Для Каждого Строка из ЭтаФорма.РезультатЗапроса Цикл

    НоваяСтрока=Форма.ЗаменяемыеЗначения.Добавить();

    ЗаполнитьЗначенияСвойств(НоваяСтрока,Строка);

КонецЦикла;


Комментарии к коду: Создаем обработку. Имя фала обработки храним, в параметрах(создаем параметр вручную)

Примечание

При задании в качестве параметра имени файла в Ei, используется кнопка выбора, для параметра строкового типа.

Для того что бы обратиться к результатам запроса нужно использовать конструкцию ЭтаФорма.РезультатЗапроса 

ЭтаФорма.РезультатЗапроса

Возвращаемый тип значений - Таблица значений, Дерево значений. 
Только чтение.
Описание - возвращает результат отображаемый в панели результата конструктора запросов

Ну вот в принципе и все. Все остальное за вас сделает типовая обработка.


Comments