Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3 курс (заочка) / Методические пособия / Пособие для ответов на контрольные вопросы

.pdf
Скачиваний:
186
Добавлен:
15.02.2021
Размер:
46.69 Mб
Скачать

Занятие 26

Некоторые типовые приемы разработки

Продолжительность

 

Ориентировочная продолжительность занятия – 2 часа.

 

Организация подборов...................................................................................................

792

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

793

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

795

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

796

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

798

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

799

Особенности разработки в режиме без использования модальности.......................

799

Теория........................................................................................................................

800

Как задать вопрос пользователю в команде формы.............................................

801

Как задать вопрос пользователю в обработчике события....................................

804

Ввод на основании..........................................................................................................

807

Команда ввода на основании...................................................................................

808

Объекты, введенные на основании.........................................................................

810

Критерий отбора.......................................................................................................

811

Получение объектов, введенных на основании.....................................................

811

Контрольные вопросы....................................................................................................

814

792 1С:Предприятие 8.3. Практическое пособие разработчика

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

Организация подборов

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

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

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

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

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

Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:

когда в форме справочника будет выполнен интерактивный выбор;

когда в форме справочника будет вызван метод ОповеститьОВы-

боре().

Различные способы подбора мы проиллюстрируем на примере подбора элементов справочника Номенклатура в документ Приход-

наяНакладная.

Занятие 26 793

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

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

В режиме «Конфигуратор»

Откроем форму документа ПриходнаяНакладная.

На закладке Команды создадим команду Подбор и в открывшейся палитре свойств нажмем кнопку открытия в строке Действие. Укажем, что команда будет выполняться на клиенте.

Шаблон обработчика команды заполнять пока не будем, а перейдем на закладку Форма и перетащим эту команду в окно элементов формы, в командную панель таблицы Материалы (рис. 26.1).

Рис. 26.1. Создание кнопки «Подбор»

В форме документа в обработчик команды Подбор добавим следующий текст (листинг 26.1).

794 1С:Предприятие 8.3. Практическое пособие разработчика

Листинг 26.1. Обработчик нажатия кнопки «Подбор»

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

ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", , Элементы.Материалы); КонецПроцедуры

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

формы документа ПриходнаяНакладная (Элементы.Материалы).

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

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

Рис. 26.2. Создание обработчика события «ОбработкаВыбора» для таблицы «Материалы»

Занятие 26 795

Листинг 26.2. Обработчик события «ОбработкаВыбора» таблицы «Материалы»

&НаКлиенте Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

Элементы.Материалы.ДобавитьСтроку(); Элементы.Материалы.ТекущиеДанные.Материал = ВыбранноеЗначение;

КонецПроцедуры

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

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

Врежиме «1С:Предприятие»

Запустим «1С:Предприятие» в режиме отладки.

Перейдем в раздел Учет материалов, откроем список приходных накладных и создадим новую приходную накладную.

В командной панели списка материалов нажмем кнопку Подбор и  двойным щелчком мыши подберем в накладную один материал.

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

В режиме «Конфигуратор»

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

В форме документа ПриходнаяНакладная, в обработчике команды Подбор заменим прежний текст новым (листинг 26.3).

Листинг 26.3. Обработчик нажатия кнопки «Подбор»

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

ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе", Ложь); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",

ПараметрыФормы, Элементы.Материалы);

КонецПроцедуры

796 1С:Предприятие 8.3. Практическое пособие разработчика

При открытии формы мы используем ее параметры.

Параметры формы нужны для того, чтобы открыть форму в  некотором нужном нам состоянии. Параметры формы представляют собой структуру. Каждый элемент этой структуры описывает один параметр формы. Ключ элемента – это имя параметра формы.

Такую структуру мы передаем в метод ОткрытьФорму() вторым параметром (переменная ПараметрыФормы).

Предварительно мы эту структуру формируем. В ней у нас всего один элемент с ключом ЗакрыватьПриВыборе.

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

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

В режиме «1С:Предприятие»

Запустим «1С:Предприятие» в режиме отладки.

Перейдем в раздел Учет материалов, откроем список приходных накладных и создадим новую приходную накладную.

В командной панели списка материалов нажмем кнопку Подбор. Двойным щелчком мыши подберем в накладную один материал, затем другой материал. Перейдем в группу Услуги и подберем несколько услуг.

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

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

В режиме «Конфигуратор»

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

Режим множественного выделения в списке устанавливается, как правило, во всех формах списков по умолчанию.

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

Занятие 26 797

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

В форме документа ПриходнаяНакладная изменим текст обработчика команды Подбор следующим образом (листинг 26.4).

Листинг 26.4. Обработчик нажатия кнопки «Подбор»

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

ПараметрыФормы = Новый Структура("МножественныйВыбор", Истина); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",

ПараметрыФормы, Элементы.Материалы);

КонецПроцедуры

При множественном выборе форма выбора будет возвращать уже не один элемент, а массив элементов.

Поэтому в обработчик события ОбработкаВыбора добавим обход массива переданных элементов (листинг 26.5).

Листинг 26.5. Обработчик события «ОбработкаВыбора» таблицы «Материалы»

&НаКлиенте Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

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

КонецЦикла;

КонецПроцедуры

В режиме «1С:Предприятие»

Запустим «1С:Предприятие» в режиме отладки.

Перейдем в раздел Учет материалов, откроем список приходных накладных и создадим новую приходную накладную.

В командной панели списка материалов нажмем кнопку Подбор. Для  удобства в открывшейся форме выбора справочника Номенклатура установим режим просмотра в виде списка – Еще Режим

просмотра Список.

798 1С:Предприятие 8.3. Практическое пособие разработчика

Удерживая клавишу Ctrl, выделим в списке несколько товаров и  несколько услуг.

Нажмем кнопку Выбрать.

Отмеченные элементы появятся в табличной части документа.

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

В режиме «Конфигуратор»

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

Для этого нам будет необходимо при открытии формы выбора устано-

вить оба параметра: ЗакрыватьПриВыборе и МножественныйВыбор.

Процедура нажатия кнопки Подбор будет выглядеть следующим образом (листинг 26.6).

Листинг 26.6. Обработчик нажатия кнопки «Подбор»

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

ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина);

ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.Материалы);

КонецПроцедуры

В режиме «1С:Предприятие»

Запустим «1С:Предприятие» в режиме отладки.

Перейдем в раздел Учет материалов, откроем список приходных накладных и создадим новую приходную накладную.

В командной панели списка материалов нажмем кнопку Подбор.

Откроем группу Услуги Телевизоры, выделим в ней все услуги и  нажмем кнопку Выбрать.

Занятие 26 799

Откроем группу Материалы Прочее, выделим в ней все материалы и  нажмем кнопку Выбрать.

Закроем окно с формой выбора справочника Номенклатура.

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

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

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

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

Особенности разработки в режиме без использования модальности

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

Этот

режим является

стандартным

для новых,

создаваемых

с  нуля

конфигураций и

определяется

свойством

конфигурации

РежимИспользованияМодальности.

 

 

800 1С:Предприятие 8.3. Практическое пособие разработчика

Теория

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

Исторически сложилось так, что обычные «десктопные» приложения часто используют в своей работе модальные окна. И  «1С:Предприятие» не является исключением. Модальные окна очень удобны в тех ситуациях, когда от пользователя требуется ввод информации, без которой невозможно дальнейшее выполнение алгоритма. При этом полностью блокируется весь остальной интерфейс программы, а исполнение программного кода останавливается до тех пор, пока пользователь не закроет модальное окно.

Однако с тех пор, как «1С:Предприятие» перестало быть «обычным десктопным приложением», с появлением веб-клиента и с переходом «1С:Предприятия» на мобильные платформы использование модальных окон стало вызывать много проблем.

Основные неудобства заключались в том, что для нормальной работы веб-клиента на обычных компьютерах требовалась предварительная настройка браузера. А на мобильных устройствах браузеры вообще не поддерживают работу с модальными окнами.

Поэтому в «1С:Предприятии» был стандартно реализован специальный режим работы интерфейса без использования модальных окон. В чем заключается его основная особенность?

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

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

Чтобы система знала, с какого места продолжать исполнение программного кода, блокирующему окну передается имя процедуры,