gifts2017

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

Опубликовал Евгений Долиновский (Dolly_EV) в раздел Администрирование - Поиск данных

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

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

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

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

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

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

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

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

Скачать файлы

Наименование Файл Версия Размер
- 214
.1232952516 67,50Kb
26.11.09
214
.1232952516 67,50Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Владислав Чинючин (vcv) 26.01.09 14:01
"НЕ РАБОТАЕТ с реквизитами типа "Строка неограниченной длины" (из-за Запроса)"
Жалко. Смотрю в свою конфу, которая какое-то время назад была типовым ТиС, и не вижу ни одного адреса, который бы не был строкой неограниченной длины.
2. Евгений Долиновский (Dolly_EV) 27.01.09 04:33
(1) Я когда написал - тоже наткнуля на подобное, и быстренько превратил длинные адреса в "Строка,240", ибо длиннее адрес вряд ли встретишь.
И для базы полезнее, т.к. длинные строки хранятся в отдельном файле.
3. Владислав Чинючин (vcv) 27.01.09 07:49
(2) А ж не про то, что можно переделать конфу под мелкую сервисную обработку. А про то, что лучше бы переделать обработку под типовую конфу, заявленную, кстати, в описании обработки.
А на SQL длинные строки хранятся в одной таблице со справочником. И занимают меньше места, чем Строка240.
4. Евгений Долиновский (Dolly_EV) 27.01.09 08:09
5. Евгений Долиновский (Dolly_EV) 27.01.09 09:18
(2)(3) Переделал, РАБОТАЕТ с длинными строками
6. Владислав Чинючин (vcv) 27.01.09 09:30
Осталось последний, несложный шаг по унификации. Расширить список обрабатываемых справочников. Сделать универсально, анализировать метаданные по всем справочникам, если где обнаружится реквизит "*Адрес*", те и предлагать заменять.
У меня, например, в конфе замена может понадобиться в следующих справочниках (часть типовые, часть нет): Банки, КлассификаторБанков, Пользователи, Фирмы (СвоиЮрЛица), Склады, Контрагенты (ФизЛица, ЮрЛица).
7. Евгений Долиновский (Dolly_EV) 27.01.09 09:45
(6) vcv, и ТОЛЬКО ПОСЛЕ этого ты поставишь "+" ?)))
8. Евгений Долиновский (Dolly_EV) 27.01.09 09:46
Уболтал, напишу универсальную...
9. Альтаир (Altair777) 27.01.09 09:52
(6) А почему только по реквизиту "*Адрес*"?
Можно сделать поле для ввода маски
10. Владислав Чинючин (vcv) 27.01.09 10:03
(7) А вот не поставлю! :-)

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

Во-вторых, если уж планируется толковая утилита, достойная выкладывания в инет, то почему бы не сделать дополнительные фильтры. Для отбора, что же именно хочется менять. В виде множественного фильтра или привязки к UChoice.
11. Евгений Долиновский (Dolly_EV) 27.01.09 10:40
(9) Учтено
(10) Епрст!)) пока переделывал - уже новые пожелания!)))
Ладно, пока остановимся на этом:
-любые справочники,
-любые реквизиты (по подстроке),
-обработка неуникальности кода справочника при записи
Думаю, такое в инет уже можно выложить...
привязку у ЮЧУЙЗ и "мягкий" фильтр сделаю на досуге, сегодня уже некогда...
12. Владислав Чинючин (vcv) 27.01.09 10:45
Осталось еще чуть чуть и можно будет патентовать торговую марку "1С:Полнотекстовый поиск и замена 7.7" :-)
13. Альтаир (Altair777) 27.01.09 11:55
Пожелание - Поле ввода "СтрПоискаРекв" - написать формулу лЗаполнитьРеквизиты()

Неточность - у справочников есть еще предопределенный реквизит "Наименование" :-)
он не отрабатывается "Метаданные.Справочник(й).Реквизит()"
Точно также, как и "Код"
14. Роман Петров (PeRom) 27.01.09 12:33
За 5, 8, 11 и конечно за саму обработку. А то накинулись на человека, а благодарности никакой. :)
15. Альтаир (Altair777) 27.01.09 12:46
(14) Мы не накинулись
Наоборот, помогаем сделать ее лучше :-)
Так что еще вопрос, кому плюсики надо ставить ;-)

п.с. отрываюсь от своей разработки что бы человек помочь.
16. Евгений Долиновский (Dolly_EV) 27.01.09 13:45
(13) учтено
(14) Спасибо))
(15) Согласен, САМ ОТОРВАЛСЯ от текущей работы, чтоб сие ДОДЕЛАТЬ!))
Так и рождается "нетленка" )))
(12) ЮЧУЙЗ привязал, остался мягкий фильр, но это попозже...
17. Владислав Чинючин (vcv) 27.01.09 13:55
"Так и рождается "нетленка" )))"
А может так рождается продукт, идеальный для своего применения?
Посмотри, например, на молоток. Иголку. Табуретку. Сильно они изменились за последние пару тысяч лет? Тот же UChoice. Прошло уже лет... семь? Восемь? И что, сильно устарел?
P.S. прошу вышесказанное не воспринимать серьезно. А так, в порядке бреда. Под конец тяжелого дня.
18. Евгений Долиновский (Dolly_EV) 27.01.09 14:07
(17) Угу, софистика поперла))
19. qwerfv (qwerfv) 12.01.10 18:36
В качестве пожелания - нужен промежуточный этап когда список того что будет меняться сформирован, но замена ещё не произошла - и кнопка подтвердить внизу - а то я сильно номенклатуру покоцал по первому разу - слава богу бэкап был.
а ещё доавить возможность выделений (всё\ничего\наоборот)
20. Евгений Долиновский (Dolly_EV) 13.01.10 04:14
(19) Если когда-нибудь вернусь к этому - учту ;)