Имя: Пароль:
1C
1С v8
Программное создание события(не управляемая форма)
0 Save_Vol
 
17.01.17
15:06
На форме есть элемент формы ТабличноеПоле1. Под него создаю программно таблицу значения ТаблицаДанных. В ТаблицеДанных создаем колонки,добавляем строки. Табличному полю, ТабличноеПоле1, указываем Значение = ТаблицаДанных. На ТабличноеПоле1 создаем события. Ни одно из событий не отрабатывает.
Код:
Процедура ИнициализацияТаблицыВВодаДанных()
    ТаблицаДанных = Новый ТаблицаЗначений;
    ТаблицаДанных.Колонки.Добавить("Наименование",Новый ОписаниеТипов(,,,Новый КвалификаторыСтроки(100)));    
    ТаблицаДанных.Колонки.Добавить("ПроцентГод" + Формат(Год,"ЧГ="),Новый ОписаниеТипов(,,,Новый КвалификаторыСтроки(15)),"базовый год");
    ТаблицаДанных.Колонки.Добавить("ПотреблениеГод" + Формат(Год,"ЧГ="),Новый ОписаниеТипов(,,,Новый КвалификаторыСтроки(15)),"базовый год");
    ТаблицаДанных.Колонки.Добавить("Процент",,"ед.изм.");
    ТаблицаДанных.Колонки.Добавить("Потребление");
    Для й = Год + 1 По Год(ДатаКонцаПериода) Цикл                                                  
        ТаблицаДанных.Колонки.Добавить("ПроцентГод" + Формат(й,"ЧГ="),Новый ОписаниеТипов(,,,Новый КвалификаторыЧисла(10,2)),Формат(й,"ЧГ="));
        ТаблицаДанных.Колонки.Добавить("ПотреблениеГод" + Формат(й,"ЧГ="),Новый ОписаниеТипов(,,,Новый КвалификаторыЧисла(10,2)),Формат(й,"ЧГ="));
    КонецЦикла;
    ТаблицаДанных.Колонки.Добавить("ИдентификаторСтроки",Новый ОписаниеТипов(,,,Новый КвалификаторыСтроки(10)));
    
    Новаястрока = ТаблицаДанных.Добавить();
    Новаястрока.Наименование = "Наша строка";
    Новаястрока.ИдентификаторСтроки = "Строка1";
    Новаястрока.Процент = "%";
    Новаястрока.Потребление = "потребление";
    Новаястрока = ТаблицаДанных.Добавить();
    Новаястрока.Наименование = "Объем коммерческих потерь в объеме передачи электрической энергии";
    Новаястрока.ИдентификаторСтроки = "Строка2";
    Новаястрока.Процент = "%";
    Новаястрока.Потребление = "потребление";
    
    ЭлементыФормы.ТабличноеПоле1.Значение = ТаблицаДанных;
    ЭлементыФормы.ТабличноеПоле1.ЧередованиеЦветовСтрок = Истина;
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
    ЭлементыФормы.ТабличноеПоле1.Колонки[0].ОтображатьВШапке = Истина;
    ЭлементыФормы.ТабличноеПоле1.Колонки[0].ТолькоПросмотр = Ложь;
    //ЭлементыФормы.ТабличноеПоле1.Колонки[0].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
    //ЭлементыФормы.ТабличноеПоле1.Колонки[1].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
    //ЭлементыФормы.ТабличноеПоле1.Колонки[2].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
    //ЭлементыФормы.ТабличноеПоле1.Колонки[3].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
    //ЭлементыФормы.ТабличноеПоле1.Колонки[4].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;

    ЭлементыФормы.ТабличноеПоле1.Колонки[1].ОтображатьВШапке = Истина;
    ЭлементыФормы.ТабличноеПоле1.Колонки[1].ЭлементУправления.ТолькоПросмотр = Ложь;
    ЭлементыФормы.ТабличноеПоле1.Колонки[2].Положение = ПоложениеКолонки.НаСледующейСтроке;
    ЭлементыФормы.ТабличноеПоле1.Колонки[2].ОтображатьВШапке = Ложь;
    ЭлементыФормы.ТабличноеПоле1.Колонки[2].ОтображатьВПодвале = Ложь;
    
    ЭлементыФормы.ТабличноеПоле1.Колонки[3].ОтображатьВШапке = Истина;
    ЭлементыФормы.ТабличноеПоле1.Колонки[3].ТолькоПросмотр = Истина;
    ЭлементыФормы.ТабличноеПоле1.Колонки[4].Положение = ПоложениеКолонки.НаСледующейСтроке;
    ЭлементыФормы.ТабличноеПоле1.Колонки[4].ОтображатьВШапке = Ложь;
    ЭлементыФормы.ТабличноеПоле1.Колонки[4].ОтображатьВПодвале = Ложь;
    ЭлементыФормы.ТабличноеПоле1.Колонки[4].ТолькоПросмотр = Истина;
    
    Для й = Год + 1 По Год(ДатаКонцаПериода) Цикл
        
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПроцентГод" + Формат(й,"ЧГ=")].ОтображатьВШапке = Истина;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПроцентГод" + Формат(й,"ЧГ=")].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПроцентГод" + Формат(й,"ЧГ=")].ЭлементУправления.УстановитьДействие("ПриИзменении",Новый Действие("ПолеВводаГодПриИзменении")) ;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПроцентГод" + Формат(й,"ЧГ=")].ЭлементУправления.УстановитьДействие("НачалоВыбора",Новый Действие("ТабличноеПоле2Колонка1НачалоВыбора")) ;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПроцентГод" + Формат(й,"ЧГ=")].ЭлементУправления.УстановитьДействие("ОкончаниеВводаТекста",Новый Действие("ТабличноеПоле2Колонка1ОкончаниеВводаТекста")) ;
        
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПотреблениеГод" + Формат(й,"ЧГ=")].Положение = ПоложениеКолонки.НаСледующейСтроке;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПотреблениеГод" + Формат(й,"ЧГ=")].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПотреблениеГод" + Формат(й,"ЧГ=")].ОтображатьВШапке = Ложь;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПотреблениеГод" + Формат(й,"ЧГ=")].ОтображатьВПодвале = Ложь;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПотреблениеГод" + Формат(й,"ЧГ=")].ЭлементУправления.УстановитьДействие("ПриИзменении",Новый Действие("ПолеВводаГодПриИзменении")) ;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПотреблениеГод" + Формат(й,"ЧГ=")].ЭлементУправления.УстановитьДействие("НачалоВыбора",Новый Действие("ТабличноеПоле2Колонка1НачалоВыбора")) ;
        ЭлементыФормы.ТабличноеПоле1.Колонки["ПотреблениеГод" + Формат(й,"ЧГ=")].ЭлементУправления.УстановитьДействие("ОкончаниеВводаТекста",Новый Действие("ТабличноеПоле2Колонка1ОкончаниеВводаТекста")) ;
    КонецЦикла;
        
КонецПроцедуры


Процедура ПолеВводаГодПриИзменении(Элемент)
    а=1;
    Сообщить(а);
КонецПроцедуры

Процедура ТабличноеПоле2Колонка1НачалоВыбора(Элемент, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    б = 2;
    Сообщить(б);
КонецПроцедуры

Процедура ТабличноеПоле2Колонка1ОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    в = 3;
    Сообщить(в);
КонецПроцедуры
1 Save_Vol
 
17.01.17
15:08
Вешать событие выбор на само ТабличноеПоле1 не красиво как то.
2 vicof
 
17.01.17
15:19
ТабличноеПоле<<2>>Колонка1НачалоВыбора
3 Save_Vol
 
17.01.17
15:22
(2)ЭлементыФормы.ТабличноеПоле1.Колонки["ПотреблениеГод" + Формат(й,"ЧГ=")].ЭлементУправления.УстановитьДействие("НачалоВыбора",Новый Действие("ТабличноеПоле2Колонка1НачалоВыбора")) ;
Независимо от того, куда вы едете — это в гору и против ветра!