gifts2017

Заполнение обработки "Поиск и замена значений" из консоли запросов

Опубликовал Алексей Орлов (_also) в раздел Программирование - Практика программирования

Зачастую возникают задачи по поиску и замене ссылок в базе. Конечно же все пользуется не заменимым инструментом - обработкой "Поиск и замена значений".
Но, также, довольно часто, объем заменяемых данных велик и обработкой проблематично пользоваться вручную.

 

Зачастую возникают задачи по поиску и замене ссылок в базе. Конечно же все пользуется не заменимым инструментом - обработкой "Поиск и замена значений".

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

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

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

 

Функция ВыбратьФайл()

ДиалогФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогФайла.Фильтр = "Внешняя обработка(*.epf)|*.epf"; ДиалогФайла.Заголовок = "Выберете файл обработки Поиска и замены значений"; ВнешняяОбработка = Неопределено; Если ДиалогФайла.Выбрать() Тогда ПолноеИмяФайлаОбработки = ДиалогФайла.ПолноеИмяФайла; Попытка СообщениеОшибки = "Выбранный файл не является внешней обработкой. |Либо, данная обработка не предназначена для |запуска в этой конфигурации."; ВнешняяОбработка = ВнешниеОбработки.Создать(ПолноеИмяФайлаОбработки); Исключение Сообщить(ОписаниеОшибки()); Предупреждение(СообщениеОшибки); ПолноеИмяФайлаОбработки = ""; Возврат Неопределено; КонецПопытки; Иначе Возврат Неопределено; КонецЕсли; Возврат ВнешняяОбработка; КонецФункции Процедура КоманднаяПанельТаблицаПоискИЗамена(Кнопка) Если РезультатТаблица.Колонки.Количество() < 2 Тогда Предупреждение("В таблице должно быть не меньше двух колонок!",6); Возврат; КонецЕсли; ЗначениеВозврата = ВыбратьФайл(); Если ЗначениеВозврата = Неопределено Тогда Возврат; КонецЕсли; ОбработкаОбъект = ЗначениеВозврата; Попытка ФормаОбработки = ОбработкаОбъект.ПолучитьФорму("Форма"); Для каждого СтрокаТЧ Из РезультатТаблица Цикл НоваяСтрока = ФормаОбработки.ЗаменяемыеЗначения.Добавить(); НоваяСтрока.ЧтоЗаменять = СтрокаТЧ[0]; НоваяСтрока.НаЧтоЗаменять = СтрокаТЧ[1]; НоваяСтрока.Пометка = Истина; КонецЦикла; ФормаОбработки.Открыть(); Исключение Сообщить("Данная обработка не подходит"); КонецПопытки; КонецПроцедуры

Похожие материалы по обработке "Поиск и замена значений":

 

См. также

Подписаться Добавить вознаграждение
Комментарии
2. Алексей Орлов (_also) 15.09.11 21:58
(1)German,
Клево конечно. Но я так и не дорос до использования Вашего "монстра" :)
В смысле начинал конечно пользоваться, но бесплатная версия не очень функциональна(
3. Сергей Ожерельев (Поручик) 15.09.11 22:06
(1) Ну как вариант.
А здесь описан простой и быстрый способ добавить функциональности своей любимой консоли запросов.

(0) Вместо
            НоваяСтрока.ЧтоЗаменять   = СтрокаТЧ[0];
            НоваяСтрока.НаЧтоЗаменять = СтрокаТЧ[1];

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

так как в запросе поля могут располагаться в произвольном порядке.
4. Алексей Орлов (_also) 15.09.11 22:09
(3) тогда надо будет поля в запросе обязательно обзывать ЧтоЗаменять, НаЧтоЗаменять..
Я же для себя сделал просто: попадают первые 2 поля. Естественно, можно сделать и по другому, но мне так удобнее :)
5. Доржи Балбаров (Angeros) 16.09.11 09:49
А что это за консоль запросов. Где такую найти посмотреть?!
7. Александр Зубцов (iov) 16.09.11 12:32
(2) Полная платная версия - у меня 50% доступа- только терминалом а ключик только локально. Так что альтернатива таки нужна.
8. Алексей Орлов (_also) 16.09.11 12:35
(7) iov, Ничего не понял если честно :)
9. Александр Зубцов (iov) 16.09.11 12:36
(8) пардон не туда
(1) Полная платная версия - у меня 50% доступа- только терминалом а ключик только локально. Так что альтернатива таки нужна.
10. Алексей Орлов (_also) 16.09.11 12:38
(9) А я и так ничего не понял :)
11. Александр Зубцов (iov) 16.09.11 12:57
(10) платная версия IE - привязана к ключику HASP. То есть чтобы полноценно работать его надо воткнуть в комп...
а очень многие не дают ставить софт проброса или иной софт чтобы мой ключик у них на серваке подцепить...
12. Алексей Орлов (_also) 16.09.11 13:00
(11) Понятно. Действительно наверное тяжко, если работаешь с разными клиентами.
13. Александр Зубцов (iov) 16.09.11 13:05
(12) О да на вас жилетка - я немного поплачусь?
А теперь добавьте к этому невозможность примапить диски свои + реакция админа минимум через час. + перезагрузки и прочие работы без предупреждения... Вот приходится фиксировать время начала (письмом) и также время окончания.
14. Алексей Орлов (_also) 16.09.11 13:06
15. Александр Зубцов (iov) 16.09.11 13:12
(14) Это ладно тут один админ "по вызову" рассказывал историю своей жизни. Вот где "белый бим черное ухо"- плакали все ... Сошлись на мнении что рееркарнация существует и в прошлой жизни он был массовым убийцей раз так сейчас мучается...
16. Данил Оводов (sinichkas) 16.09.11 16:45
очень удобная весч,спасибо
17. Сергей Ожерельев (Поручик) 16.09.11 17:20
(5) Консолей запросов на этом сайте как грязи как перенумераторов.
18. Рома Джин (jjinn) 21.09.11 10:26
19. Гусев Василий (Eldarion999) 21.09.11 13:20
20. Брест Беларусь (zhleonid8) 21.09.11 14:46
21. Сергей Старых (tormozit) 11.12.11 18:21
Внес похожую возможность в "Инструменты разработчика" http://devtool1c.ucoz.ru/
Отличие в том, что в моем случае используется обработка поиска и замены дублей, где не допускается замены ссылок разных типов. Т.е. у меня все ссылки должны быть однотипными. Зато есть возможность сразу много групп дублей создать через дерево.
22. Алексей Орлов (_also) 12.12.11 10:13
(21) tormozit, тебе огромный респект за консоль запросов. Я в нее уже подабавлял кое-чего. Могу поделиться, если надо.
23. Сергей Старых (tormozit) 12.12.11 10:19
(22) Я был бы благодарен за хорошие идеи и тем более с реализацией. Желательно их описать в комментариях к подсистеме или на форуме http://devtool1c.ucoz.ru/forum
24. Алексей Орлов (_also) 12.12.11 10:20
25. Алекс Ю (AlexO) 30.03.12 10:46
что-то я сразу не въехал:
т.е. сначала выбирается запросом в консоли некие соответствия друг другу (например, все контрагенты с "неправильным" ИНН в первой колонке, соответствующие им "правильные" ИНН во второй), и уже этой таблицей (запуск из консоли другой обработки) построчно заполняются поля обработки "ПосикИЗамена"? Или я что-то недопонял?
____________________________
(21) tormozit,
т.е. здесь нет контроля типов при составлении таблицы замен? А у вас контроль реализован?
(23) идеи уже поступили и реализованы в ИР? :)))
26. Алексей Орлов (_also) 30.03.12 10:59
(25) все правильно понял. А зачем контроль типов? Ты же сам будешь пользоваться. В ИР уже есть.
27. Алекс Ю (AlexO) 30.03.12 11:28
(26) _also,
просто у меня таких задач еще не было ))
И пока даже не могу придумать.
28. Алексей Орлов (_also) 30.03.12 11:32
(27) видимо у тебя бухи нормальные)))
29. Алекс Ю (AlexO) 30.03.12 12:03
(28) _also,
бухи качественные, но хотел бы узнать про конкретные косяки, которые исправляет данная обработка - может, мы что упускаем в своей с ними работе....
30. Сергей Старых (tormozit) 31.05.12 20:41
(25) Реализованы пока частично.
32. Алексей Орлов (_also) 14.10.14 16:54
(31) husky, я эту свою внешнюю консоль уже забросил давно. Теперь только инструменты разработчика, а там это есть ))