Имя: Пароль:
1C
1C 7.7
v7: Как программно установить картинки на все блоки в форме
0 BPAvel
 
18.08.13
13:55
Есть несколько блоков для картинок в форме, как программно установить  картинки на все блоки в форме в цикле
Сейчас написал так:

    Перем Блоки;
    
    Сп = СоздатьОбъект("СписокЗначений");     
    Сп.УдалитьВсе();
    
    Блоки = СоздатьОбъект("Текст");
    Путь = КаталогИБ()+"\bmp\";
    Блоки.Открыть(Путь+"\bmp.txt");
    
    Для Сч=1 По 4 Цикл
        Стр = Блоки.ПолучитьСтроку(Сч);
        
        Сп.ИзСтрокиСРазделителями(СтрЗаменить(Стр,";",","));
        Стр=СтрЗаменить(Стр,"""","");
        Стр=""""+СтрЗаменить(Стр,",",""",""")+"""";
        
        картинка=СоздатьОбъект("Картинка");
        картинка.Загрузить(Путь+Сп.ПолучитьЗначение(1));
        картинка.РежимРисования(Сп.ПолучитьЗначение(2));

        Если  Сч = 1 Тогда
            Попытка
                Блок1.УстановитьКартинку(картинка);
            Исключение
            КонецПопытки;
        ИначеЕсли Сч = 2 Тогда
            Попытка
                Блок2.УстановитьКартинку(картинка);
            Исключение
            КонецПопытки;
        ИначеЕсли Сч = 3 Тогда
            Попытка
                Блок3.УстановитьКартинку(картинка);
            Исключение
            КонецПопытки;
        ИначеЕсли Сч = 4 Тогда
            Попытка
                Блок4.УстановитьКартинку(картинка);
            Исключение
            КонецПопытки;
        КонецЕсли;
    КонецЦикла;

хотелось бы как то в цикле
1 Armando
 
18.08.13
14:02
Для Сч=1 По 4 Цикл
это ли не цикл?
2 Armando
 
18.08.13
14:03
Блок1,Блок2,Блок3,Блок4 это что? откуда взялось?
3 Злопчинский
 
18.08.13
14:03
В цикле Атрибут=ПолучитьАтрибут() и потом Атрибут.УстановитьКартинку()..??
4 ADirks
 
18.08.13
14:10
штатно - через шаблон()

Функция УстановитьКартинкуБлока(Блок, Картинка)
   Блок.УстановитьКартинку(Картинка);
   Возврат "";
КонецФункции


...


Шаблон("УстановитьКартинкуБлока(Блок"+нБлок+", Картинка)");
5 BPAvel
 
18.08.13
14:31
(4)
если пишу так:
Шаблон("УстановитьКартинкуБлока(Блок"+сч+", Картинка)");
то функция УстановитьКартинкуБлока вообще необрабатывается

а если так:
Шаблон(УстановитьКартинкуБлока("Блок"+сч, Картинка));
то ошибка: Значение не представляет агрегатный объект (УстановитьКартинку)
6 BPAvel
 
18.08.13
14:32
(2) это элементы в форме со свойством - картинка
7 BPAvel
 
18.08.13
15:09
Процедура Загрузить()
    
    Перем Блоки;
    
    Сп = СоздатьОбъект("СписокЗначений");     
    Сп.УдалитьВсе();
    
    Блоки = СоздатьОбъект("Текст");
    Путь = КаталогИБ()+"\bmp\";
    Блоки.Открыть(Путь+"\bmp.txt");
    
    Для Сч=1 По 4 Цикл
        Стр = Блоки.ПолучитьСтроку(Сч);
        Сп.ИзСтрокиСРазделителями(СтрЗаменить(Стр,";",","));
        Стр=СтрЗаменить(Стр,"""","");
        Стр=""""+СтрЗаменить(Стр,",",""",""")+"""";
        
        Картинка=СоздатьОбъект("Картинка");
        Картинка.Загрузить(Путь+Сп.ПолучитьЗначение(1));
        Картинка.РежимРисования(Сп.ПолучитьЗначение(2));
        Шаблон("Блок"+сч).УстановитьКартинку(Картинка);        
    
КонецПроцедуры


ошибка:
Шаблон("Блок"+сч).УстановитьКартинку(Картинка)
Значение не представляет агрегатный объект (УстановитьКартинку)
8 Злопчинский
 
18.08.13
15:11
(7) не надо методом 3П, делай как в (4) написали
9 ADirks
 
18.08.13
15:55
ошибся маленько

Шаблон("[УстановитьКартинкуБлока(Блок"+нБлок+", Картинка)]");
10 BPAvel
 
18.08.13
16:24
(9) спасибо!!!