1С подбор

Теги: 1С:Предприятие • Владелец • ОбработкаВыбора • ОповеститьОВыборе • ОткрытьФорму • УправляемаяФорма

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

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

Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии). Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:

  • когда в форме справочника будет выполнен интерактивный выбор;
  • когда в форме справочника будет вызван метод ОповеститьОВыборе.

Одиночный подбор

При одиночном подборе форма справочника будет закрываться сразу после выбора элемента. Для выбора следующего элемента необходимо будет снова инициировать подбор.

Откроем форму документа ПриходнаяНакладная, создадим команду Подбор и назначим для нее обработчик:

&НаКлиенте Процедура ВыборОдногоЭлемента(Команда) // Форма выбора закрывается после двойного клика // по выбранному элементу ОткрытьФорму(«Справочник.Номенклатура.ФормаВыбора»,,Элементы.Материалы); КонецПроцедуры

В этой процедуре мы открываем форму выбора для справочника Номенклатура, указывая, что она подчинена таблице Материалы формы документа ПриходнаяНакладная (Элементы.Материалы). При выборе из формы выбора справочника выбранное значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы, так как она является владельцем открытой формы выбора.

Поэтому откроем палитру свойств таблицы Материалы и создадим обработчик события ОбработкаВыбора:

&НаКлиенте Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Элементы.Материалы.ДобавитьСтроку(); Элементы.Материалы.ТекущиеДанные.Материал = ВыбранноеЗначение; КонецПроцедуры

В этой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение.

Множественный подбор

При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее интерактивно или не будет вызван метод формы Закрыть().

Обработчик команды Подбор:

&НаКлиенте Процедура ВыборЭлементовБезЗакрытияФормы(Команда) // Не закрывать форму после двойного клика; можно выбрать // несколько элементов, дважды кликая на каждом ПараметрыФормы = Новый Структура(«ЗакрыватьПриВыборе», Ложь); ОткрытьФорму( «Справочник.Номенклатура.ФормаВыбора», ПараметрыФормы, Элементы.Материалы ); КонецПроцедуры

Обработчик события ОбработкаВыбора остается без изменений.

Подбор с использованием множественного выбора

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

Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы воспользуемся одним из параметров расширения формы динамического списка — МножественныйВыбор.

Обработчик команды Подбор:

&НаКлиенте Процедура МножественныйВыбор(Команда) // Позволяем выделить и выбрать несколько элементов; в обработчик // ОбработкаВыбора() передается массив элементов ПараметрыФормы = Новый Структура(«МножественныйВыбор», Истина); ОткрытьФорму( «Справочник.Номенклатура.ФормаВыбора», ПараметрыФормы, Элементы.Материалы ); КонецПроцедуры

Обработчик события ОбработкаВыбора:

&НаКлиенте Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл НоваяСтрока = Объект.Материалы.Добавить(); НоваяСтрока.Материал = ВыбранныйЭлемент; КонецЦикла; КонецПроцедуры

Множественный подбор с использованием множественного выбора

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

Обработчик команды Подбор:

&НаКлиенте Процедура МножественныйВыборБезЗакрытияФормы(Команда) // Позволяем выделить и выбрать несколько элементов несколько раз; в // обработчик ОбработкаВыбора() передается массив элементов; после // каждого выбора форма не закрывается ПараметрыФормы = Новый Структура( «ЗакрыватьПриВыборе,МножественныйВыбор», Ложь, Истина ); ОткрытьФорму( «Справочник.Номенклатура.ФормаВыбора», ПараметрыФормы, Элементы.Материалы ); КонецПроцедуры

Обработчик события ОбработкаВыбора остается без изменений.

Использование метода ОповеститьОВыборе()

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

Метод ОповеститьОВыборе() посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение и закрывает форму, если она открыта не в режиме множественного выбора.

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

Справка

ТабличноеПоле.ДобавитьСтроку()

ТабличноеПоле.ДобавитьСтроку()

Добавляет строку в табличное поле, аналогично выполнению команды «Добавить».

  • Если табличное поле связано с таблицей или деревом значений, метод добавляет строку в таблицу или дерево значений (аналогично соответствующим методам этих объектов).
  • Если табличное поле связано со списком объектов, хранимых в базе данных, метод начинает редактирование нового объекта этого списка. (Например, список объектов в форме списка справочника, или документа).
  • Если табличное поле связано с набором записей или табличной частью, то метод начинает редактирование новой записи. (Например, список записей в форме списка регистра сведений; табличная часть документа или справочника).

Доступность: Толстый клиент.

ДанныеФормыКоллекция.Добавить()

ДанныеФормыКоллекция.Добавить()

Добавляет элемент в конец коллекции и возвращает его в качестве результата метода. Возвращаемое значение: ДанныеФормыЭлементКоллекции.

Поиск: 1С:Предприятие • Владелец • Обработка выбора • Оповестить о выборе • Открыть форму • Управляемая форма

ZIP-архив Создание  0
 Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За Автоматическая архивация баз 1С с использованием Cobian Backup и VBS скриптов  8
  Клиент попросил настроить автоматическую архивацию баз 1С раз в три дня и выгрузку архивов на Dropbox и на FTP Сервер. Кроме 1С нужно архивировать папку с рабочими документами. Хочет — так хочет, делаем: Первым делом настроим автоматическую архивац   55
 Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: Объект не найден (84:bf5600145e3710ab11dda4c605dbe824) . https://helpf.pro/uploads/img/_1-46z7I4U7Ww.png В Ввести перечисление, выбор перечисления  1
  // В 8-ой версии нет такой фунции, но можно сделать так: ЗначПер=Перечисления.Важность.Средняя; //Установим перечисление предлагаемое выбрать по умолчанию Если ВвестиЗначение(ЗначПер,»Выберите важность:») тогда Сообщить(ЗначПер); //обработка в Ввод дополнительного ежегодного отпуска  1
 Вид расчета, используемый для начисления оплаты дополнительного ежегодного отпуска , описывается в плане видов расчета Основные начисления организаций . Новый вид расчета удобнее создать копированием предопределенного вида расчета Оплата отпуска п Посмотреть все результаты поиска похожих

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *