|
Помогите написать обработку которая изменит текст в строке справочника Ø (Волшебник 09.08.2017 16:45) | ☑ | ||
---|---|---|---|---|
0
040985
09.08.17
✎
16:14
|
Помогите написать обработку которая изменит текст в строке справочника.
Я не специалист по 1С! Написал вот такую обработку: ______________ Выборка = Справочники.ХранилищеДополнительнойИнформации.Выбрать(); Пока Выборка.Следующий() Цикл Поле = Выборка.ИмяФайла; Если Найти(Поле,"D:\Admin\Base\YTMain\images") = Истина Тогда Переменная = СтрЗаменить (Поле, "D:\Admin\Base\YTMain\images", "E:\backup\clouds\onlinemarket\images"); Переменная1 = Выборка.ПолучитьОбъект(); Переменная1.ИмяФайла = Переменная; Переменная1.Записать(); КонецЕсли; КонецЦикла; ______________ Она вроде работает нормально, но ооочень долго. Как написать более правильный и быстрый код? |
|||
1
aleks_default
09.08.17
✎
16:17
|
Выучить запросы
|
|||
2
СамыйУмный
09.08.17
✎
16:19
|
Если кратко:
Зачем ты выбираешь весь справочник и потом его обходишь и ищешь нужный элемент. Ты сразу сделай запрос где поле содержит нужную тебе строку. |
|||
3
Гаврилин Игор
09.08.17
✎
16:23
|
Долго, потому что вы получаете все объекты справочника. Выше правильно указали что надо делать через запрос, получать ссылку (одну), а из нее получать уже объект.
|
|||
4
Rusland
09.08.17
✎
16:25
|
Как то так: :) :) :) :)
ИмяФайла="D:\Admin\Base\YTMain\images"; Переменная="E:\backup\clouds\onlinemarket\images"; Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Тестовый.Ссылка КАК Ссылка |ИЗ | Справочник.Тестовый КАК Тестовый |ГДЕ | Тестовый.ИмяФайла ПОДОБНО &ИмяФайла" ; Запрос.УстановитьПараметр("ИмяФайла","%"+ИмяФайла+"%"); РезультатЗапроса=Запрос.Выполнить().Выбрать(); Пока РезультатЗапроса.Следующий() Цикл Выборка=РезультатЗапроса.Ссылка.ПолучитьОбъект(); Выборка.ИмяФайла=Переменная; Выборка.Записать(); КонецЦикла; |
|||
5
Rusland
09.08.17
✎
16:25
|
Под себя адаптируешь?
|
|||
6
Волшебник
модератор
09.08.17
✎
16:26
|
(4) запрос будет долгий
надо так Запрос.УстановитьПараметр("ИмяФайла",ИмяФайла); |
|||
7
Rusland
09.08.17
✎
16:30
|
(6) Все равно быстрее будет чем в топике. А так, я ХЗ что у него в том поле хранится. Может еще чего, кроме пути. Учитывая, что ТС с запросами никак, сделал через Подобно, что бы пронебойно. Причем не по началу или концу строки, а вообще по вхождению. :)):):)::)
|
|||
8
Rusland
09.08.17
✎
16:37
|
(0) И вот тут:
Найти(Поле,"D:\Admin\Base\YTMain\images") = Истина Тогда Найти не возвращает булево, Найти возвращает Число, Позицию первого знака найденной подстроки. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0. |
|||
9
040985
09.08.17
✎
16:42
|
(4) Спасибо!
Но не совсем понимаю что в примере значит "тестовый" "ВЫБРАТЬ | Тестовый.Ссылка КАК Ссылка |ИЗ | Справочник.Тестовый КАК Тестовый |ГДЕ | Тестовый.ИмяФайла ПОДОБНО &ИмяФайла" ; |
|||
10
040985
09.08.17
✎
16:44
|
(4) Если не трудно сделайте пож-та вариант чтоб я тупо скопипастил и чтоб все сработало
|
|||
11
Волшебник
модератор
09.08.17
✎
16:45
|
(10) Работайте сами.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |