Имя: Пароль:
1C
1С v8
Редактирование данных программно
0 igoza
 
07.05.14
12:39
Есть Ссылка на множество объектов, как их отредактировать?
Пример:

Для Каждого Ссылка Из Список Цикл
Ссылка.Реквизит = Что-то
КонецЦикла;

Как сделать?
1 ДенисЧ
 
07.05.14
12:40
Получить объект, изменить, записать
2 Wobland
 
07.05.14
12:41
(1) записывать не обязательно
3 igoza
 
07.05.14
12:41
(1) блин точно, спасибо
4 Михаил Козлов
 
07.05.14
13:30
Может быть Вас устроят обработки с ИТС "Групповая обработка справочников и документов" или "Универсальный подбор и обработка объектов".
5 igoza
 
07.05.14
13:38
Закидайте меня какашками, только что не так по подробнее

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ПроизводственныеЗаказы.Код
    |ИЗ
    |    Справочник.ПроизводственныеЗаказы КАК ПроизводственныеЗаказы
    |";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ДлинаСтроки = 11;
        НовыйКод = Прав(ВыборкаДетальныеЗаписи.Код, ДлинаСтроки - КоличествоСимволов);        
        ИсправляемыйОбъект =  ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
        ИсправляемыйОбъект.Код = НовыйКод;        
        Попытка
            ИсправляемыйОбъект.Записать();
            Сообщить(ВыборкаДетальныеЗаписи.Код + "->" + НовыйКод);
        Исключение
            Предупреждение(НСтр("ru = 'Не удалось записать объект';"
               + " en = 'Can't write the object'")
               + " "" + Объект + ""!
               |"+ ОписаниеОшибки(),60);
        КонецПопытки;    
    КонецЦикла;
6 ДенисЧ
 
07.05.14
13:39
В запросе нет получения ссылки, поэтому
ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
фигня какая-то
7 Godofsin
 
07.05.14
13:41
(5) Это чо? Перенумерация? воспользуйся универсальной обработкой
8 igoza
 
07.05.14
14:16
(6)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ПроизводственныеЗаказы.Ссылка,
    |    ПроизводственныеЗаказы.Код
    |ИЗ
    |    Справочник.ПроизводственныеЗаказы КАК ПроизводственныеЗаказы
    |";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ДлинаСтроки = СтрДлина(ВыборкаДетальныеЗаписи.Код);
        НовыйКод = Прав(ВыборкаДетальныеЗаписи.Код, ДлинаСтроки - КоличествоСимволов);        
        ИсправляемыйОбъект =  ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
        ИсправляемыйОбъект.Код = НовыйКод;        
        Попытка
            ИсправляемыйОбъект.Записать();
        Исключение
            Предупреждение(НСтр("ru = 'Не удалось записать объект';"
               + " en = 'Can't write the object'")
               + " "" + Объект + ""!
               |"+ ОписаниеОшибки(),60);
        КонецПопытки;    
    КонецЦикла;
(7) сокращение длины кода
9 ДенисЧ
 
07.05.14
14:17
(8) И? Не работает?
10 igoza
 
07.05.14
14:18
(9) нет всё работает, обычно меня какашками закидывают, и видно что где не так, или что-то новое, более удобное подкидывают)