1с обработкавыбора в управляемой форме

Организация выбора из произвольной формы (на примере выбора из списка регистра сведений)

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

Для этого используется возможность открытия формы в режиме выбора и возможность обработки события выбора.

В качестве примера приведем реализацию выбора записи регистра сведений. Стандартные расширения форм не поддерживают механику выбора, однако ее несложно реализовать.

Вначале создадим новую форму списка регистра сведений и назовем ее «ФормаВыбора». В форме реализуем событие Выбор табличного поля отображающего список.

Теперь реализуем функциональность выбора в той форме, в которой это требуется. Например, в форме обработки, имеющей поля ввода «Валюта» и «Период».

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

Далее мы создаем форму, устанавливаем ей режим выбора, владельца формы, и выполняем открытие формы.

Теперь нам нужно только реализовать обработчик выбора в форме и выполнить в нем необходимее действия с выбранным значением.

Источник

Форма выбора (подбор) в управляемых формах

Статья будет состоять из нескольких приведенных примеров кода с описанием того, как прибегнуть к Подбору.

Пример 1.

Простой вызов формы выбора с одним возвращаемым результатом:

Пример 2.

Выбор нескольких значений (документов или справочников) :

В первых 2-х примерах мы использовали обработчик (Событие) формы «ОбработкаВыбора».

Теперь рассмотрим пример с использованием «Обработки оповещения», на мой взгляд более удобно )

Пример 3.

Думаю многие не знают про фишку Оповещением «на Сервере». То есть результат можно вернуть сразу на сервер без дополнительных условий. Работает до 8.3.13.1644, с 8.3.16.1063 этот метод недоступен.

Пример 4.

Мы видим что открывается форма выбора (из списка документов «Реализация товаров и услуг»), но иногда необходимо добавить некий отбор, чтобы при открытии формы не выводить все документы в целом.

Пример 5.

Есть моменты когда не всегда можно обойтись простым отбором, например необходимо открыть форму выбора со списком за определенный период.

Пример 6.

Пример 7.

Как открыть форму выбора с Позиционированием ранее выбранного значения:

Тестировалось на 1С:Предприятие 8.3 (8.3.16.1063) и 1С:Предприятие 8.3 (8.3.13.1644), Спасибо за внимание, возможно, кому-то поможет)

Источник

Как работает ОбработкаВыбора()?

и в форме документа прописал код

в форму вставить кнопку подбор с вызовом процедуры типа:

Процедура ПодборНажатие(ДокументОбъект, ФормаДокумента) Экспорт

ФормаПодбора = Обработки.ПодборНоменклатуры.ПолучитьФорму(«ФормаПодбора», ФормаДокумента, ФормаДокумента);
Если НЕ ФормаПодбора.Открыта() Тогда

ОбработкаПодбора = ФормаПодбора.ОбработкаОбъект;
ОбработкаПодбора.ТипЦен = ТипЦен;

ФормаПодбора.РежимВыбора = Истина;
ФормаПодбора.ПоложениеПрикрепленногоОкна = ВариантПрикрепленияОкна.Право;
ФормаПодбора.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;
ФормаПодбора.ПоложениеОкна = ВариантПоложенияОкна.НеПерекрыватьВладельца;
ФормаПодбора.ЗакрыватьПриЗакрытииВладельца = Истина;
ФормаПодбора.ИзменятьСпособОтображенияОкна = ИзменениеСпособаОтображенияОкна.Запретить;
ФормаПодбора.РазрешитьСостояниеСвободное= Ложь;
ФормаПодбора.РазрешитьСостояниеОбычное= Ложь;
ФормаПодбора.РазрешитьСостояниеПрячущееся = Ложь;
ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
КонецЕсли;
ФормаПодбора.Открыть();

А обработку выбора написать вроде следующей (не забыть её в свойство формы привязать):

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)

Если Источник.Метаданные().Имя = «ПодборНоменклатуры» Тогда

НоваяСтрока = ДокументОбъект.ТоварыУслуги.Добавить();
НоваяСтрока.Номенклатура = ЗначениеВыбора.Получить(0).Значение;

НоваяСтрока.Количество = ЗначениеВыбора.Получить(2).Значение;
Цена = ЗначениеВыбора.Получить(3).Значение;

ЭлементыФормы.ТоварыУслуги.ТекущаяСтрока = НоваяСтрока;
ЭлементыФормы.ТоварыУслуги.ТекущаяКолонка = ЭлементыФормы.ТоварыУслуги.Колонки.Номенклатура;

А в обработке формы подбора разместить список справочника и процедуру ОбработкаВЫБОРА с содержанием для возврата параметров в документ

сп = Новый СписокЗначений;
сп.Добавить(ВыбраннаяСтрока.Ссылка, «Номенклатура»);
сп.Добавить(Колонка, «Колонка»);
сп.Добавить(Количество, «Количество»);
сп.Добавить(Цена, «Цена»);
ЭтаФорма.ОповеститьОВыборе(сп);

Источник

ОбработкаВыбора в управляемой форме срабатывает дважды

В модуле формы документа:

&НаКлиенте
Процедура ДобавитьЗаказПокупателя(Команда)
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить(«Контрагент»,Объект.Контрагент);
СтруктураОтбора.Вставить(«ДоговорКонтрагента»,Объект.ДоговорКонтрагента);
СтруктураОтбора.Вставить(«Склад»,Объект.Склад);
СтруктураОтбора.Вставить(«СписокЗаказов»,Сервер_СписокЗаказов());
ФормаСпискаЗаказов = ОткрытьФорму(«Документ.ЗаказПокупателя.Форма.ФормаВыбораУпр», СтруктураОтбора, ЭтаФорма);
КонецПроцедуры

Вызывается управляемая форма списка, в которой есть код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, «Контрагент», Параметры.Контрагент);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, «ДоговорКонтрагента», Параметры.ДоговорКонтрагента);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, «СкладГруппа», Параметры.Склад);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, «Ссылка», Параметры.СписокЗаказов, ВидСравненияКомпоновкиДанных.НеВСписке);
ЭтаФорма.ЗакрыватьПриВыборе = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
ТекущийСписокОтбора = Список.Отбор.Элементы[3].ПравоеЗначение;
ТекущийСписокОтбора.Добавить(ВыбраннаяСтрока);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, «Ссылка», ТекущийСписокОтбора, ВидСравненияКомпоновкиДанных.НеВСписке);
КонецПроцедуры

В модуле формы документа есть еще

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

Если Не ВыбранноеЗначение = Неопределено Тогда
Сервер_ЗаполнитьПоЗаказуПокупателя(ВыбранноеЗначение);
Элементы.Товары.Обновить();
КонецЕсли;
КонецПроцедуры

Так вот, Выбираю в форме выбора двойным кликом заказ покупателя, а в процедуру «ОбработкаВыбора» заходит дважды. Что я не так делаю?

Источник

SearchSiteYes

Быстрая реализация подбора на управляемых формах 1С 8.2/8.3

1.

2.

3.

&НаСервере
Процедура УправлениеТаблицей ()

5.

4.

6.

7. , ,

&НаСервере
Процедура УправлениеТаблицей ()

&НаКлиенте
Процедура ПеренестиВДокумент ( Команда )

&НаСервере
Функция ПоместитьПодобранныеМатериалыВХранилище ()

&НаСервере
Функция ПриЗакрытииНаСервере ()

СтруктураВозврата = Новый Структура ();

&НаКлиенте
Процедура ПриЗакрытии ()

Если ПеренестиВДокумент Тогда
ОповеститьОВыборе ( СтруктураВозврата );
КонецЕсли;

&НаСервере
Процедура ПоказыватьТолькоОстаткиПриИзмененииНаСервере ()

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с обработка печать трудового договора
  • 1с обработка ожидания в форме