Имя: Пароль:
1C
1С v8
программная активизация ячейки табличного поля управляемой формы
0 alnovin
 
09.06.12
08:38
Всем привет!

Имеем табличное поле Управляемой формы. Имея текущие данные нужно активизировать поле в следующей строке табличного поля.

Как таковую следующую строку можно получить.


   
   ТекущаяСтрока = ДеревоНоменклатуры.НайтиПоИдентификатору(ИдентификаторСтроки);
   Родитель = ТекущаяСтрока.ПолучитьРодителя();
   
   ЭлементыСклад = Родитель.ПолучитьЭлементы();
   
   ЭлементНайден = Ложь;
   
   Для Каждого ЭлементСклад Из ЭлементыСклад Цикл

       Если ЭлементНайден Тогда
           Элементы.ДеревоНоменклатуры.ТекущаяСтрока = ДеревоНоменклатуры.НайтиПоИдентификатору(ЭлементСклад.ПолучитьИдентификатор());
           Элементы.ДеревоНоменклатуры.ТекущийЭлемент = Элементы.ДеревоНоменклатурыКоличество;
             Прервать;
       КонецЕсли;
       
       Если ЭлементСклад = ТекущаяСтрока Тогда
           ЭлементНайден = Истина;
       КонецЕсли;    
               
   КонецЦикла;


Но вот с активизацией беда.
1 alnovin
 
09.06.12
09:05
up
2 alnovin
 
09.06.12
09:36
Вот такие костыли получились:


   ТекущаяСтрока = ДеревоНоменклатуры.НайтиПоИдентификатору(ИдентификаторСтроки);
   Родитель = ТекущаяСтрока.ПолучитьРодителя();
   
   ЭлементыСклад = Родитель.ПолучитьЭлементы();
   
   ЭлементНайден = Ложь;
   ЭлементОбработан = Ложь;
   
   Для Каждого ЭлементСклад Из ЭлементыСклад Цикл

       Если ЭлементНайден Тогда
           ЭлементОбработан = истина;
           Элементы.ДеревоНоменклатуры.ТекущаяСтрока = Элементы.ДеревоНоменклатуры.ТекущаяСтрока + 1;
             Прервать;
       КонецЕсли;
       
       Если ЭлементСклад = ТекущаяСтрока Тогда
           ЭлементНайден = Истина;
       КонецЕсли;    
               
   КонецЦикла;
   
   //попробуем активизировать первый элемент склад в следующей ветки если она есть
   ЭлементНайден = ложь;
   Если Не ЭлементОбработан Тогда
       
       ЭлементыНоменклатура = ДеревоНоменклатуры.ПолучитьЭлементы();
       Для каждого ЭлементНоменклатура Из ЭлементыНоменклатура Цикл
           
           Если ЭлементНайден Тогда
               ЭлементыСклад = ЭлементНоменклатура.ПолучитьЭлементы();
               Если ЭлементыСклад.Количество() > 0 тогда
                   
                   Элементы.ДеревоНоменклатуры.ТекущаяСтрока = Элементы.ДеревоНоменклатуры.ТекущаяСтрока + 2;
                   
               КонецЕсли;
               Прервать;
               
           КонецЕсли;
           
           Если ЭлементНоменклатура = Родитель Тогда
               ЭлементНайден = Истина;
           КонецЕсли;
           
       КонецЦикла;
       
   КонецЕсли;