Групповая поиск и замена строковых значений регистра сведений из табличного документа
Здравствуйте.
Есть готовый csv файл 500 строк "Старое значение" - "Новое значение"
Есть регистр сведений. В нём нужно заменить 500 строковых значений на новые.
Нужно пройтись по строкам файла и по каждой строке выполнить поиск по "Старое значение" в регистре сведений с последующей заменой на "Новое значение".
Хочу написать обработку. Но не знаю каким образом лучше. Есть более оптимальные способы чем код ниже?
Есть готовый csv файл 500 строк "Старое значение" - "Новое значение"
Есть регистр сведений. В нём нужно заменить 500 строковых значений на новые.
Нужно пройтись по строкам файла и по каждой строке выполнить поиск по "Старое значение" в регистре сведений с последующей заменой на "Новое значение".
Хочу написать обработку. Но не знаю каким образом лучше. Есть более оптимальные способы чем код ниже?
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Значение.Установить(СтароеЗначение);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Запись.Значение = НовоеЗначение;
КонецЦикла;
НаборЗаписей.Записать();
ПоказатьПо теме из базы знаний
Найденные решения
лучше всего это в консоли запросов сделать
загружаете туда вашу таблицу из СSV к ней запросом цепляете ваш регистр по Подобно
в итоге получаете результат
СтрокаРегистра.ВсеПоля, НеправильнаяСтрока, ПравильнаяСтрока
а дальше в каждой консоли есть режим обработки произвольного кода над результатом запроса.
в нем в цикле пробегаетесь по результату, получаете строку регистра с неправильной строкой
используете менеджер записи (или набора) меняете значение и записываете.
загружаете туда вашу таблицу из СSV к ней запросом цепляете ваш регистр по Подобно
в итоге получаете результат
СтрокаРегистра.ВсеПоля, НеправильнаяСтрока, ПравильнаяСтрока
а дальше в каждой консоли есть режим обработки произвольного кода над результатом запроса.
в нем в цикле пробегаетесь по результату, получаете строку регистра с неправильной строкой
используете менеджер записи (или набора) меняете значение и записываете.
(3) спасибо огромное за наводку. Очень быстро получилось с помощью консоли запросов из инструментов разработчика.
Там есть замечательная кнопка для параметра типа таблица значений "Получить -> из табличного документа".
Потом вкладка "Обработка строки результата" - установить текст - чтение и запись менеджера записи. Вставляется код из шаблона. Добавил только "СтрокаРезультата.Новое" и запустил. 5 сек и готово.
ВЫБРАТЬ
ТабЭксель.Новое,
ТабЭксель.Старое
ПОМЕСТИТЬ ВТТаб
ИЗ
&ТЗ КАК ТабЭксель
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЗначенияСвойствОбъектов.Объект,
ЗначенияСвойствОбъектов.Свойство,
ЗначенияСвойствОбъектов.Значение,
ВТТаб.Новое
ИЗ
ВТТаб КАК ВТТаб
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ПО ВТТаб.Старое = ЗначенияСвойствОбъектов.Значение
Показать// В результате запроса должны присутствовать все измерения регистра
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, СтрокаРезультата);
МенеджерЗаписи.Прочитать();
// Обработка менеджера записи
МенеджерЗаписи.Значение = СтрокаРезультата.Новое;
МенеджерЗаписи.Записать();
ПоказатьТам есть замечательная кнопка для параметра типа таблица значений "Получить -> из табличного документа".
Потом вкладка "Обработка строки результата" - установить текст - чтение и запись менеджера записи. Вставляется код из шаблона. Добавил только "СтрокаРезультата.Новое" и запустил. 5 сек и готово.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
лучше всего это в консоли запросов сделать
загружаете туда вашу таблицу из СSV к ней запросом цепляете ваш регистр по Подобно
в итоге получаете результат
СтрокаРегистра.ВсеПоля, НеправильнаяСтрока, ПравильнаяСтрока
а дальше в каждой консоли есть режим обработки произвольного кода над результатом запроса.
в нем в цикле пробегаетесь по результату, получаете строку регистра с неправильной строкой
используете менеджер записи (или набора) меняете значение и записываете.
загружаете туда вашу таблицу из СSV к ней запросом цепляете ваш регистр по Подобно
в итоге получаете результат
СтрокаРегистра.ВсеПоля, НеправильнаяСтрока, ПравильнаяСтрока
а дальше в каждой консоли есть режим обработки произвольного кода над результатом запроса.
в нем в цикле пробегаетесь по результату, получаете строку регистра с неправильной строкой
используете менеджер записи (или набора) меняете значение и записываете.
(3) спасибо огромное за наводку. Очень быстро получилось с помощью консоли запросов из инструментов разработчика.
Там есть замечательная кнопка для параметра типа таблица значений "Получить -> из табличного документа".
Потом вкладка "Обработка строки результата" - установить текст - чтение и запись менеджера записи. Вставляется код из шаблона. Добавил только "СтрокаРезультата.Новое" и запустил. 5 сек и готово.
ВЫБРАТЬ
ТабЭксель.Новое,
ТабЭксель.Старое
ПОМЕСТИТЬ ВТТаб
ИЗ
&ТЗ КАК ТабЭксель
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЗначенияСвойствОбъектов.Объект,
ЗначенияСвойствОбъектов.Свойство,
ЗначенияСвойствОбъектов.Значение,
ВТТаб.Новое
ИЗ
ВТТаб КАК ВТТаб
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ПО ВТТаб.Старое = ЗначенияСвойствОбъектов.Значение
Показать// В результате запроса должны присутствовать все измерения регистра
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, СтрокаРезультата);
МенеджерЗаписи.Прочитать();
// Обработка менеджера записи
МенеджерЗаписи.Значение = СтрокаРезультата.Новое;
МенеджерЗаписи.Записать();
ПоказатьТам есть замечательная кнопка для параметра типа таблица значений "Получить -> из табличного документа".
Потом вкладка "Обработка строки результата" - установить текст - чтение и запись менеджера записи. Вставляется код из шаблона. Добавил только "СтрокаРезультата.Новое" и запустил. 5 сек и готово.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот