Имя: Пароль:
1C
1С v8
Странное поведение при обходе 1с8
0 gr0ck
 
29.08.11
09:34
Нужно настроить обход элементов формы в нужном порядке. Все нужные элементы формы запихнул в массив. И при изменении вызываю процедуру, которая находит в массиве следующий элемент, и свойству формы ТекущийЭлемент устанавливает найденный элемент формы. Все нормально работает, до тех пор пока не встает на Количество. После изменения количества не возникает события ПриИзменении, ОкончаниеВводаТекста тоже не срабатывает. Не пойму в чем глюк
1 Asmody
 
29.08.11
09:36
(0) а встроенная настройка чем не устраивает?
2 gr0ck
 
29.08.11
09:37
Чтобы было понятнее, вот код
ФлагОткрытияИзОбработки = Ложь;
//Массив элеменетов для обхода
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Номер");
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("УчетныйЦентр");
МассивЭлементов.Добавить("УчетныйЦентрСледующий");
МассивЭлементов.Добавить("Номенклатура");
МассивЭлементов.Добавить("Количество");
МассивЭлементов.Добавить("Качество");
МассивЭлементов.Добавить("ВидБракаОТК");

//При изменении вызывается код
Процедура НоменклатураПриИзменении(Элемент)
   Если ФлагОткрытияИзОбработки Тогда
       УстановитьАктивнымЭлемент(Элемент.Имя);
   КонецЕсли;    
КонецПроцедуры

Процедура УстановитьАктивнымЭлемент(ИмяЭлемента)
   НомерЭлемента = МассивЭлементов.Найти(ИмяЭлемента);
   Если НомерЭлемента = Неопределено Тогда
       Возврат;
   КонецЕсли;
   сч = НомерЭлемента+1;
   Пока сч <= МассивЭлементов.Количество()-1 Цикл
       СледующийЭлемент = ЭлементыФормы[МассивЭлементов[сч]];
       Если ЗначениеЗаполнено(СледующийЭлемент.Значение) ИЛИ (НЕ СледующийЭлемент.Доступность) Тогда        
           сч = сч+1;
       Иначе
           ТекущийЭлемент = СледующийЭлемент;
           Прервать;
       КонецЕсли;
   КонецЦикла;    
КонецПроцедуры
3 gr0ck
 
29.08.11
09:38
Нужно для определенного случая обход задавать немного другой
4 lxs
 
29.08.11
09:38
"мсье знает толк в извращениях"©не мое
5 lxs
 
29.08.11
09:38
(3) ну так задавай иначе через порядок обхода
6 gr0ck
 
29.08.11
09:43
Нужно, чтобы изменили номенклатуру, у "них" раз и на количество перешло. Изменили количество, у "них" раз и на следующее что там идет...
7 gr0ck
 
29.08.11
09:44
Проблема в том, что на всех элементах нормально отрабатывает, а на количестве не хочет...
8 gr0ck
 
29.08.11
10:24
ПриИзменении()
Описание:
Возникает после изменения значения поля ввода, то есть при переходе на другой элемент управления, если значение текста было изменено; после отработки выбора из списка выбора; после отработки выбора из календаря, калькулятора и других модальных выборов, кроме программного назначения; после отработки автоматического приема немодального выбора (например, из списка справочника).
Похоже, для текста и для количества так не получится сделать
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн