|   |   | 
| 
 | Помогите написать обработку которая изменит текст в строке справочника Ø (Волшебник 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) Работайте сами.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |