Универсальная замена поиском по подстроке в строковых реквизитах справочников

Универсальная замена поиском по подстроке в строковых реквизитах справочников

Случилось так, что были мы «Читинская обл.» а стали «Забайкальский край». И вот наконец масса людей меня задолбала и родилась эта (уже не маленькая)), читаем комменты) маленькая обработка.

 — работает на любой конфигурации 7.7, где есть справочники и строковые реквизиты в них

 — при запуске обнаруживает у этих справочников реквизиты типа «Строка» с вхождением слова «АДР» (подстроку поиска реквизитов можно изменить). Реквизиты «Наименование» и «Код» добавляются, если они текстовые и не 0

 — работает запуск из внешней обработки (UChoice.ert с диска ИТС). Для интеграции прописать в файл UCPlugIn.txt строку:

< «служб_спр_ЗаменаЧастиАдреса.ert»,  «Замена по подстроке»,     «Справочник»> в блок <Для справочников>
При запуске из UChoice.ert устанавливается фильр на справочник, обработка идет только по выбранному виду справочника

 — при замене реквизитов есть возможность «попытки» исправить неуникальный код справочника (в этом случае работает медленно, т.к. без использования транзакции)

ЗЫ: Всем, скачавшим до 27.01.08 14:10 Москвы ,качаем ОБНОВЛЕННУЮ 4-ю версию

20 Comments

  1. vcv

    «НЕ РАБОТАЕТ с реквизитами типа «Строка неограниченной длины» (из-за Запроса)»

    Жалко. Смотрю в свою конфу, которая какое-то время назад была типовым ТиС, и не вижу ни одного адреса, который бы не был строкой неограниченной длины.

    Reply
  2. Dolly_EV

    (1) Я когда написал — тоже наткнуля на подобное, и быстренько превратил длинные адреса в «Строка,240», ибо длиннее адрес вряд ли встретишь.

    И для базы полезнее, т.к. длинные строки хранятся в отдельном файле.

    Reply
  3. vcv

    (2) А ж не про то, что можно переделать конфу под мелкую сервисную обработку. А про то, что лучше бы переделать обработку под типовую конфу, заявленную, кстати, в описании обработки.

    А на SQL длинные строки хранятся в одной таблице со справочником. И занимают меньше места, чем Строка240.

    Reply
  4. Dolly_EV

    (3) Согласен, переделаю

    Reply
  5. Dolly_EV

    (2)(3) Переделал, РАБОТАЕТ с длинными строками

    Reply
  6. vcv

    Осталось последний, несложный шаг по унификации. Расширить список обрабатываемых справочников. Сделать универсально, анализировать метаданные по всем справочникам, если где обнаружится реквизит «*Адрес*», те и предлагать заменять.

    У меня, например, в конфе замена может понадобиться в следующих справочниках (часть типовые, часть нет): Банки, КлассификаторБанков, Пользователи, Фирмы (СвоиЮрЛица), Склады, Контрагенты (ФизЛица, ЮрЛица).

    Reply
  7. Dolly_EV

    (6) vcv, и ТОЛЬКО ПОСЛЕ этого ты поставишь «+» ?)))

    Reply
  8. Dolly_EV

    Уболтал, напишу универсальную…

    Reply
  9. Altair777

    (6) А почему только по реквизиту «*Адрес*»?

    Можно сделать поле для ввода маски

    Reply
  10. vcv

    (7) А вот не поставлю! 🙂

    Во-первых, согласен с Altair777. Добавлю еще, что было бы хорошо делать нечеткое сравнение. С помощью, например, объекта RegExp. Примеров как пользоваться множество. И совершенно не сложно. Зато упростит исправление ошибок и опечаток в адресах.

    Во-вторых, если уж планируется толковая утилита, достойная выкладывания в инет, то почему бы не сделать дополнительные фильтры. Для отбора, что же именно хочется менять. В виде множественного фильтра или привязки к UChoice.

    Reply
  11. Dolly_EV

    (9) Учтено

    (10) Епрст!)) пока переделывал — уже новые пожелания!)))

    Ладно, пока остановимся на этом:

    -любые справочники,

    -любые реквизиты (по подстроке),

    -обработка неуникальности кода справочника при записи

    Думаю, такое в инет уже можно выложить…

    привязку у ЮЧУЙЗ и «мягкий» фильтр сделаю на досуге, сегодня уже некогда…

    Reply
  12. vcv

    Осталось еще чуть чуть и можно будет патентовать торговую марку «1С:Полнотекстовый поиск и замена 7.7» 🙂

    Reply
  13. Altair777

    Пожелание — Поле ввода «СтрПоискаРекв» — написать формулу лЗаполнитьРеквизиты()

    Неточность — у справочников есть еще предопределенный реквизит «Наименование» 🙂

    он не отрабатывается «Метаданные.Справочник(й).Реквизит()»

    Точно также, как и «Код»

    Reply
  14. PeRom

    За 5, 8, 11 и конечно за саму обработку. А то накинулись на человека, а благодарности никакой. 🙂

    Reply
  15. Altair777

    (14) Мы не накинулись

    Наоборот, помогаем сделать ее лучше 🙂

    Так что еще вопрос, кому плюсики надо ставить 😉

    п.с. отрываюсь от своей разработки что бы человек помочь.

    Reply
  16. Dolly_EV

    (13) учтено

    (14) Спасибо))

    (15) Согласен, САМ ОТОРВАЛСЯ от текущей работы, чтоб сие ДОДЕЛАТЬ!))

    Так и рождается «нетленка» )))

    (12) ЮЧУЙЗ привязал, остался мягкий фильр, но это попозже…

    Reply
  17. vcv

    «Так и рождается «нетленка» )))»

    А может так рождается продукт, идеальный для своего применения?

    Посмотри, например, на молоток. Иголку. Табуретку. Сильно они изменились за последние пару тысяч лет? Тот же UChoice. Прошло уже лет… семь? Восемь? И что, сильно устарел?

    P.S. прошу вышесказанное не воспринимать серьезно. А так, в порядке бреда. Под конец тяжелого дня.

    Reply
  18. Dolly_EV

    (17) Угу, софистика поперла))

    Reply
  19. qwerfv

    В качестве пожелания — нужен промежуточный этап когда список того что будет меняться сформирован, но замена ещё не произошла — и кнопка подтвердить внизу — а то я сильно номенклатуру покоцал по первому разу — слава богу бэкап был.

    а ещё доавить возможность выделений (всёничегонаоборот)

    Reply
  20. Dolly_EV

    (19) Если когда-нибудь вернусь к этому — учту 😉

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *