При активации строки управляемые формы 1с

В 1С:Предприятии 8 появился режим ввода ссылочных значений путем ввода первых символов кода, наименования или номера соответствующего объекта. Это позволяет существенно ускорить ввод информации. Чтобы этот режим мог эффективно использоваться, изменено типовое поведение автоматического открытия списка выбора. Оно выполняется теперь не при активизации элемента управления, а при нажатии клавиши Enter, если значение не заполнено. Таким образом, после активизации элемента управления пользователь может или ввести несколько первых символов и нажать Enter для выполнения поиска по символам или сразу нажать Enter чтобы инициировать выбор из списка. Такое решение позволяет эффективно сочетать обе возможности.

Для включения режима выбора незаполненного следует установить свойство АвтоВыборНезаполненного . Кроме того, с помощью свойства РежимВыбораНезаполненного можно установить вариант открытия списка при активизации элемента управления. Однако это рекомендуется делать только в отдельных случаях, так как открытие списка при активизации поля ввода не позволит использовать режим ввода значения по первым буквам.

личный блог

Часто на форме приходится интерактивно связывать 2 табличных поля. При изменении данных в 1-ом поле, автоматически обновлять данные во втором. С аналогичной задачей я столкнулся когда реализовывал подбор на РМК. При выборе строки в таблице остатков товаров, нужно было отобразить остатки в остальных магазинах сети в отдельной таблице. Вроде как делов на раз два, да не тут то было.

Наблюдается очень неприятная особенность платформы — событие ПриАктивизацииСтроки() не вызывается, при поиске в Динамическом списке. То есть при осуществлении поиска, текущая строка меняется программно самой платформой, а события ПриАктивизацииСтроки() не возникает. Соответственно данные во второй таблице не обновляются.

Решение было найдена не без помощи добрых людей. Помогли на инфостарте.

Итак первым делом нужно на форме, завести реквизит ТекСтрока с типом строка.

Читайте также:  Как отключить родительский контроль eset

Далее при открытии подбора, в момент первичной реализации события ПриАктивизацииСтроки(), мы сохраняем текущую активированную строку в наш созданный реквизит ТекСтрока. Делается это для того, чтоб потом мы могли сравнить изменилась ли фактическая текущая строка с течением времени.

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

Ну и дальше в событии формы ПриОткрытии() и инициализируем обработчик ожидания ПодключитьОбработчикОжидания. Отметим, что интервал ожидания события, нужно выставить более 1 секунды, чтоб мы могли ожидать событие многократно. Если интервал будет меньше 1, то событие выполнится однократно.

На этом собственно все. При обновлении текущей строки динамического списка и соответственно при смене текущей строки, будет вызываться наша процедура обновления 2-ой таблицы.

После неудачного применения различных методик появилась собственная идея реализации данной задачи. Вот пример:

ДокПоступления = Документы . ПоступлениеТоваровУслуг . СоздатьДокумент ();
ФормаДокПоступления = ДокПоступления . ПолучитьФорму ();
ФормаДокПоступления . Открыть ();

ПервоначальноПриАктивизацииСтроки = ФормаДокПоступления . ЭлементыФормы . Товары . ПолучитьДействие ( «ПриАктивизацииСтроки» );
ПолеВводаПриИзменении = ФормаДокПоступления . ЭлементыФормы . Товары . Колонки . Номенклатура . ЭлементУправления . ПолучитьДействие ( «ПриИзменении» );
ФормаДокПоступления . ЭлементыФормы . Товары . УстановитьДействие ( «ПриАктивизацииСтроки» , ПолеВводаПриИзменении );

Для каждого СтрокаТЗ Из ТЗКЗаполнению Цикл
НоваяСтрокаТовары = ДокПоступления . Товары . Добавить ();
НоваяСтрокаТовары . Номенклатура = СтрокаТЗ . Номенклатура ;
НоваяСтрокаТовары . Количество = СтрокаТЗ . Количество ;
НоваяСтрокаТовары . Цена = СтрокаТЗ . Цена ;
ФормаДокПоступления . ЭлементыФормы . Товары . ТекущаяСтрока = НоваяСтрокаТовары ;
КонецЦикла;

ФормаДокПоступления . ЭлементыФормы . Товары . УстановитьДействие ( «ПриАктивизацииСтроки» , ПервоначальноПриАктивизацииСтроки );

ДокПоступления . Записать ( РежимЗаписиДокумента . Проведение );
ФормаДокПоступления . Закрыть ();
ФормаДокПоступления = Неопределено;

Суть заключается в подмене действия, происходящего при активизации строки, на действие, происходящее при изменении Номенклатуры. Потом действие возвращается назад.

9726552