Форма выбора регистра сведений

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

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

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

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

В этом событии мы отменяем стандартное действие, предусмотренное расширением табличного поля, и вместо него вызываем метод ОповеститьОВыборе() , передавая ему в качестве параметра текущую строку. Значением текущей строки будет являться значение типа РегистрСведенийКлючЗаписи. .

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

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

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

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

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

Читайте также:  Тип дистанционного управления ик или bluetooth

Заметим, что в качестве владельца формы может устанавливаться не только сама форма, в которой осуществляется выбор, но и ТабличноеПоле , ПолеВвода и ПолеВыбора . Соответственно и обработчик выбора нужно будет реализовывать у этих элементов управления.

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

Кнопка Подбор на форме обработки:

Процедура КоманднаяПанель2Подбор ( Кнопка ) ФормаВыбора = РегистрыСведений . Курсы . ПолучитьФорму ( “ФормаСписка” ); ФормаВыбора . ВладелецФормы = ЭтаФорма ; //ФормаВыбора.Открыть(); ФормаВыбора . РежимВыбора = Истина ; ФормаВыбора . ЗакрыватьПриЗакрытииВладельца = Истина ; ФормаВыбора . ЗакрыватьПриВыборе = Истина ; ВыбранныйЭлемент = ФормаВыбора . ОткрытьМодально (); Для Каждого Эл Из ВыбранныйЭлемент . Домен Цикл Стр = Домены . Добавить (); Стр . Домен = Эл . АдресСайта ; КонецЦикла ; КонецПроцедуры

Далее в самой форме списка регистра сведений добавляем следующую процедуру выбора:

Процедура РегистрСведенийСписокВыбор ( Элемент , ВыбраннаяСтрока , Колонка , СтандартнаяОбработка ) //Если ЭтаФорма.РежимВыбора Тогда // СтандартнаяОбработка = Ложь; // Если мВозвратДанныхКонтактнойИнформации = Истина Тогда // ЭтаФорма.Закрыть(Элемент.ТекущиеДанные); // Иначе // ЭтаФорма.Закрыть(Элемент.ТекущиеДанные.Представление); // КонецЕсли; //КонецЕсли; Стр = Новый Структура ; Стр . Вставить ( “Домен” , Элемент . ВыделенныеСтроки ); //Стр.Вставить(“Коэффициент”,Элемент.ТекущиеДанные.Коэффициент); ОповеститьОВыборе ( Стр ); СтандартнаяОбработка = Ложь ; КонецПроцедуры

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

В типовых конфах можно смотреть как сделана КонтактаяИнформация – там по цивильней все выглядит.

Очень часто возникает необходимость программно открыть какую-то форму выбора (документа, справочника), выбрать нужное значение, и передать это значение на форму, которая инициализировала открытие формы выбора. Давайте разберемся, как это делать.

А делается это при помощи уже знакомого нам метода ОткрытьФорму.

Для тех, кто не знаком с вышеприведенным методом, рекомендую первым делом ознакомиться с моими статьями, где я подробно о нем рассказываю:

Читайте также:  Что задали на завтра скажи пожалуйста

Открытие управляемой формы 1С с передачей параметров

Открытие управляемой формы 1С в отдельном окне

Для этой статьи я в конфигураторе 1С создам обработку, на форму этой обработки помещу команду, при выполнении которой, откроется форма выбора справочника Номенклатура, и запишу выбранное значение в реквизит формы обработки.

Здесь и далее приведена конфигурация из книги «Основы разработки в 1С: Такси».

Замечу, что в моей конфигурации нет формы выбора


т.е. мы будем открывать автоматически сгенерированную форму выбора.
Поэтому в методе ОткрытьФорму, когда мы будем выбирать нужную управляемую форму 1С, то просто выбираем ФормаВыбора.

Для того, чтобы получить какое-то значение с формы нужно использовать шестой параметр метода ОткрытьФорму – ОписаниеОповещенияОЗакрытии, который имеет тип ОписаниеОповещение.

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

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

ОписаниеВыбора = Новый ОписаниеОповещения ( «ОбработатьВыборНоменклатуры» , ЭтаФорма );

Процедура ОбработатьВыборНоменклатуры ( РезультатЗакрытия , ДопПараметры ) Экспорт

Если Не ЗначениеЗаполнено ( РезультатЗакрытия ) Тогда
Возврат;
КонецЕсли;

Где ВыбраннаяНоменклатура это реквизит формы.
Заметьте, процедура ОбработатьВыборНоменклатуры, которую мы указали в описании оповещения, обязательно должна быть экспортной.
Теперь нам осталась указать объект описание выбора в шестом параметре метода ОткрытьФорму

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

ОписаниеВыбора = Новый ОписаниеОповещения ( «ОбработатьВыборНоменклатуры» , ЭтаФорма );

ОткрытьФорму ( «Справочник.Номенклатура.ФормаВыбора» .
ОписаниеВыбора ,
РежимОткрытияОкнаФормы . БлокироватьОкноВладельца );

И всё! Сейчас при выполнении команды, откроется форма выбора, и если какая-то номенклатура будет выбрана, то она запишется в реквизит формы в процедуре ОбработатьВыборНоменклатуры.

Изучайте управляемые формы 1С с моими статьями:

Открытие управляемой формы существующего объекта

Открытие управляемой формы 1С на основании другого объекта

Открытие обычной формы в управляемом приложении 1С

Очень подробно вопросы по работе с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.

Читайте также:  Что значит в телеграм удаленный аккаунт

Многие начинающие думают, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

  1. Без сложных технических терминов;
  2. Более 600 страниц практического материала;
  3. Каждый пример сопровождается рисунком (скриншот);
  4. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

Промо-код на скидку в 15% — 48PVXHeYu

Книга «Программировать в 1С за 11 шагов»

Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»

  1. Без сложных технических терминов. Написана понятным и простым языком — для новичка.
  2. Более 700 страниц практического материала.
  3. Каждое задание сопровождается рисунком (скриншот).
  4. Сборник задач для домашней проработки.
  5. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей

Оцените статью
Добавить комментарий

Adblock detector