1S_8.2_Praktikum
.pdfАналогичным образом вы можете самостоятельно переключить различные функциональные опции и посмотреть, как при этом меняется интерфейс прикладного решения.
461
На этом мы фактически завершили разработку нашей конфигурации.
Следующие две работы будут посвящены отдельным приемам разработки, которые часто используются в 1С:Предприятии 8.
Некоторые примеры мы будем выполнять в нескольких различных вариантах, поэтому какой из этих вариантов использовать в имеющейся конфигурации – дело вашего вкуса.
Контрольные вопросы
Что такое функциональные опции и зачем они нужны.
Как с помощью функциональных опций изменять интерфейс прикладного решения.
462
Практическая работа № 25
Подборы и ввод на основании (1:00)
Существует ряд приемов использования объектов, которые нельзя отнести только к одному виду объектов.
О таких приемах – подбор, ввод на основании – и пойдет речь в этой работе.
Организация подборов
Задача организации подбора заключается, как правило, в заполнении табличной части документа информацией, которую выбирает пользователь в списке какого-либо объекта.
Для иллюстрации механизма подбора информации в форме мы будем использовать задачу подбора элементов справочника в табличную часть документа как наиболее распространенную.
Поскольку механизм подбора реализован на уровне форм, то в других случаях просто будут задействованы иные прикладные объекты. Сама механика подбора не изменится.
Для организации подбора в форму документа следует открыть форму справочника как подчиненную форме документа в целом либо одному из элементов формы. Способ получения формы справочника может быть любым, так же как и сама форма справочника, которая будет использована. Важно лишь то, что эта форма должна быть открыта как подчиненная.
Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии).
Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:
Когда в форме справочника будет выполнен интерактивный выбор,
Когда в форме справочника будет вызван метод
ОповеститьОВыборе().
463
Различные способы подбора мы покажем на примере подбора элементов справочника Номенклатура в документ ПриходнаяНакладная.
Одиночный подбор
При одиночном подборе форма справочника будет закрываться сразу после выбора элемента. Для выбора следующего элемента необходимо будет снова инициировать подбор.
В режиме Конфигуратор
Откроем форму документа ПриходнаяНакладная.
На закладке Команды создадим команду Подбор и в открывшемся окне свойств нажмем кнопку открытия в строке Действие.
Шаблон обработчика события выполнения этой команды заполнять пока не будем, а перейдем на закладку Форма и перетащим эту команду в окно элементов формы, в командную панель таблицы Материалы.
В форме документа, в обработчик события нажатия кнопки Подбор, добавим текст:
464
Процедура Подбор(Команда)
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", , Элементы.Материалы);
КонецПроцедуры
В этой процедуре мы открываем форму выбора для справочника Номенклатура, указывая, что она подчинена таблице Материалы
формы документа ПриходнаяНакладная (Элементы.Материалы).
При выборе из формы выбора справочника значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы, т.к. она является владельцем открытой формы выбора.
Поэтому откроем свойства таблицы Материалы в дереве элементов формы и создадим обработчик события ОбработкаВыбора.
&НаКлиенте Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение,
СтандартнаяОбработка)
НоваяСтрока = Объект.Материалы.Добавить(); НоваяСтрока.Материал = ВыбранноеЗначение;
КонецПроцедуры
465
Вэтой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение.
Врежиме 1С:Предприятие
Запустим режим отладки, перейдем в раздел Учет материалов и создадим новую приходную накладную командой Приходная накладная.
В командной панели списка нажмем Подбор и двойным щелчком подберем в накладную один материал.
Множественный подбор
В режиме Конфигуратор
При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее или не будет вызван метод
формы Закрыть().
В форме документа ПриходнаяНакладная, в обработчике события нажатия кнопки Подбор заменим прежний текст новым:
&НаКлиенте Процедура Подбор(Команда)
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе", Ложь); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.Материалы);
КонецПроцедуры
При открытии формы мы используем ее параметры.
466
Параметры формы нужны для того, чтобы открыть форму в некотором нужном нам состоянии. Параметры формы представляют собой структуру. Каждый элемент этой структуры описывает один параметр формы. Ключ элемента – это имя параметра формы.
Такую структуру мы передаем в метод ОткрытьФорму() вторым параметром (переменная ПараметрыФормы).
Предварительно мы эту структуру формируем. В ней у нас всего один
элемент с ключом ЗакрыватьПриВыборе().
Таким образом, передавая эту структуру в метод ОткрытьФорму(), мы устанавливаем параметр открываемой формы ЗакрыватьПриВыборе в значение Ложь.
Это значит, что созданная форма выбора после двойного щелчка на номенклатуре закрываться не будет.
В режиме 1С:Предприятие
Запустим режим отладки. Перейдем в раздел Учет материалов и создадим новую приходную накладную.
В командной панели списка нажмем Подбор и двойным щелчком мыши подберем в накладную несколько материалов и несколько услуг.
Когда все выберем, закром окно с формой выбора.
467
Подбор с использованием множественного выбора
В режиме Конфигуратор
Еще одним способом организации подбора является возможность выделения в списке сразу нескольких строк.
Режим множественного выделения в списке устанавливается, как правило, во всех формах списков по умолчанию. Однако возможность выбрать сразу несколько элементов из писка по умолчанию, как правило, отключена.
Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы снова воспользуемся одним из параметров расширения формы динамического списка – МножественныйВыбор.
В форме документа ПриходнаяНакладная заменим текст обработчика события нажатия кнопки Подбор:
&НаКлиенте Процедура Подбор(Команда)
ПараметрыФормы = Новый Структура("МножественныйВыбор", Истина); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",
ПараметрыФормы, Элементы.Материалы);
КонецПроцедуры
При множественном выборе форма будет возвращать уже не один элемент, а массив элементов. Поэтому в обработчик события ОбработкаВыбора добавим обход массива переданных элементов и удалим предыдущие строки.
Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл НоваяСтрока = Объект.Материалы.Добавить();
НоваяСтрока.Материал = ВыбранныйЭлемент; КонецЦикла;
КонецПроцедуры
В режиме 1С:Предприятие
Запустим отладку, в разделе Учет материалов создадим новую приходную накладную и нажмем Подбор. Для удобства в открывшейся форме выбора справочника Номенклатура установим режим просмотра в виде списка – Все действия - Режим просмотра – Список.
468
Удерживая Ctrl, выделим в списке несколько товаров и несколько услуг и нажмем кнопку Выбрать. Отмеченные элементы появятся в табличной части документа.
Множественный подбор с использованием множественного выбора
В режиме Конфигуратор
469
Последний способ подбора будет сочетать в себе оба рассмотренных ранее способа. Мы будем отмечать сразу несколько элементов справочника и подбирать их в документ без закрытия формы выбора. Затем снова отмечать несколько элементов справочника и подбирать их в документ.
Для этого нам будет необходимо при открытии формы выбора установить оба параметра: ЗакрыватьПриВыборе и МножественныйВыбор.
Процедура нажатия клавиши Подбор будет выглядеть так:
&НаКлиенте Процедура Подбор(Команда)
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина);
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.Материалы);
КонецПроцедуры
В режиме 1С:Предприятие
Запустите отладку. Создайте новую приходную накладную и нажмите кнопку Подбор.
Откройте группу Услуги – Телевизоры, выделите в ней все услуги и нажмите кнопку Выбрать.
Откройте группу Материалы – Прочее, выделите в ней все материалы и нажмите Выбрать. Закройте окно формы выбора.
Использование метода «Оповестить о выборе()»
Этот метод используется, когда алгоритм формирования данных подбора сложен, и кроме собственно выбора элементов справочника и от пользователя требуется указание некоторой дополнительной информации. В этом случае метод вызывается, когда необходимая информация подбора сформирована.
Метод ОповеститьОВыборе() посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение и закрывает форму, если она открыта не в режиме множественного выбора.
Также метод может использоваться, когда требуется передать в форму документа не только выбранный элемент справочника (или массив элементов), а некоторую произвольную структуру данных.
470