
3 курс (заочка) / Методические пособия / Пособие для ответов на контрольные вопросы
.pdf
Занятие 26
Некоторые типовые приемы разработки
Продолжительность |
|
Ориентировочная продолжительность занятия – 2 часа. |
|
Организация подборов................................................................................................... |
792 |
Одиночный подбор................................................................................................... |
793 |
Множественный подбор........................................................................................... |
795 |
Подбор с использованием множественного выбора............................................. |
796 |
Множественный подбор с использованием множественного выбора.................. |
798 |
Использование метода «Оповестить о выборе()»................................................. |
799 |
Особенности разработки в режиме без использования модальности....................... |
799 |
Теория........................................................................................................................ |
800 |
Как задать вопрос пользователю в команде формы............................................. |
801 |
Как задать вопрос пользователю в обработчике события.................................... |
804 |
Ввод на основании.......................................................................................................... |
807 |
Команда ввода на основании................................................................................... |
808 |
Объекты, введенные на основании......................................................................... |
810 |
Критерий отбора....................................................................................................... |
811 |
Получение объектов, введенных на основании..................................................... |
811 |
Контрольные вопросы.................................................................................................... |
814 |

792 1С:Предприятие 8.3. Практическое пособие разработчика
На этом занятии речь пойдет о таких общих приемах разработки, как организация подборов, особенности разработки в режиме без использования модальности и ввод данных на основании.
Организация подборов
Задача организации подбора заключается, как правило, в заполнении табличной части документа информацией, которую выбирает пользователь в списке какого-либо объекта.
Для иллюстрации механизма подбора информации в форме мы будем использовать задачу подбора элементов справочника в табличную часть документа как наиболее распространенную.
Поскольку механизм подбора реализован на уровне форм, то в других случаях просто будут задействованы иные прикладные объекты. Сама механика подбора не изменится.
Для организации подбора в форму документа следует открыть форму справочника как подчиненную форме документа в целом либо одному из элементов формы. Способ получения формы справочника может быть любым, также как и сама форма справочника, которая будет использована. Важно лишь то, что эта форма должна быть открыта как подчиненная.
Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии).
Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:
когда в форме справочника будет выполнен интерактивный выбор;
когда в форме справочника будет вызван метод ОповеститьОВы-
боре().
Различные способы подбора мы проиллюстрируем на примере подбора элементов справочника Номенклатура в документ Приход-
наяНакладная.



Занятие 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С:Предприятии» был стандартно реализован специальный режим работы интерфейса без использования модальных окон. В чем заключается его основная особенность?
В этом режиме работы интерфейса окно, которое раньше было бы модальным, рисуется в пределах родительского окна и точно так же блокирует весь остальной интерфейс. Таким образом обеспечивается «модальность» для пользователя. Он не сможет выполнить никакие другие действия, пока не закроет такое окно.
Однако для разработчика в момент отображения блокирующего окна исполнение программного кода не останавливается. Программный код продолжает выполняться дальше. Это означает, что алгоритм, который обычно являлся одним целым, теперь придется разделить на две части: одну, которая заканчивается открытием блокирующего окна, и вторую, которая будет выполнена тогда, когда пользователь закроет это окно.
Чтобы система знала, с какого места продолжать исполнение программного кода, блокирующему окну передается имя процедуры,