1с где может размещаться процедура обработчик события нажатие кнопки диалога
Отказ от использования модальных окон
В статье будут рассмотрены причины отказа от дальнейшей поддержки модальных окон в платформе «1С:Предприятие» и типовые сценарии перевода имеющегося функционала на новую модель.
Развитие продуктов «1С» и платформы «1С:Предприятие»
Одним из основных векторов развития платформы «1С:Предприятие» является возможность ее успешного использования в среде Интернет.
Эта среда имеет ряд ограничений, которые отсутствуют в среде настольных приложений:
- Ограничения программ, используемых для работы в Интернете (браузеров),
- Ограничения, связанные с качеством связи между клиентским приложением и сервером.
Приложения, предназначенные для работы через Интернет, должны быть построены с учетом этих ограничений, поэтому их модель отличается от настольных приложений.
Все интернет-приложения создаются с использованием асинхронной (событийно-управляемой) модели управления логикой, в отличие от принятой в настольных приложениях синхронной (последовательной) модели.
Изначально платформа «1С:Предприятие» создавалась для построения настольных бизнес-приложений, использующих синхронную модель. Однако, с развитием SaaS-решений потребовался постепенный переход на асинхронную логику.
Проблемы поддержки модальных окон в среде Интернет
Модальные окна являются элементом синхронной модели. Они блокируют исполнение логики приложения, позволяя выполнять ее участки последовательно, друг за другом, в зависимости от результата, полученного от пользователя.
Такие окна не входят в стандарт веб-разработки, поэтому не поддерживаются всеми браузерами, при помощи которых пользователь получает доступ к приложениям «1С».
Для разработки качественных веб-приложений требуются асинхронные средства обеспечения взаимодействия с пользователем.
Такие средства были добавлены в платформу «1С:Предприятие» в версии 8.3.3.
Несколько терминов и определений
Далее в статье будут использоваться следующие термины:
- Модальное окно – окно, блокирующее весь интерфейс приложения, при этом исполнение кода останавливается до момента получения ответа пользователя. Например, окно модальной формы.
- Модальный метод – метод глобального контекста или объекта платформы, при выполнении которого происходит открытие модального окна. Например, методы Вопрос() , ОткрытьМодально() .
- Блокирующее окно – окно, блокирующее весь интерфейс или его часть, но при этом исполнение кода не останавливается. Например, форма, блокирующая владельца.
Общие принципы при переходе на асинхронную модель построения бизнес-логики
В синхронной модели код, зависящий от выбора пользователя, выполняется последовательно.
В асинхронной модели мы можем получить результат только обрабатывая события, которые возникают, когда пользователь делает свой выбор. При этом на время ожидания выбора код приложения не останавливается и оно продолжает работать.
Таким образом, получается, что такой код разбивается на две процедуры:
- Процедура, которая создает блокирующее окно, ожидающее действия пользователя,
- Процедура - обработчик оповещения о том, что пользователь сделал свой выбор и мы можем использовать результат его действий для дальнейшей работы.
Новые асинхронные средства платформы для взаимодействия с пользователем
Для реализации асинхронной модели в первую очередь требуется возможность описания процедур-обработчиков оповещений, которые будут вызваны системой при завершении выбора пользователя.
Для этого в платформу был добавлен новый тип объектов - ОписаниеОповещения .
Этот объект имеет конструктор со следующими параметрами:
- ИмяПроцедуры - Указывает имя процедуры-обработчика оповещения, которая будет выполнена после получения ответа пользователя,
- Модуль -Указывает в каком модуле расположена эта процедура. Этот параметр может иметь следующие типы:
- УправляемаяФорма - процедура расположена в модуле управляемой формы,
- ОбщийМодуль - процедура расположена в общем неглобальном клиентском модуле,
- КомандаКомандногоИнтерфейса - процедура расположена в модуле команды.
Для получения значения модуля у вышеперечисленных объектов добавлено общее свойство ЭтотОбъект.
- ДополнительныеПараметры - значение любого типа, которое будет передано в процедуру-обработчик оповещения при ее вызове.
При вызове указанной процедуры системой ей через параметры передается результат выбора пользователя и значение ДополнительныеПараметры . В некоторых случаях результат выбора может отсутствовать (метод ПоказатьПредупреждение() ) или передаваться несколькими параметрами (метод НачатьПомещениеФайла() ).
Для перехода на асинхронную модель в платформу были добавлены методы, аналогичные модальным методам, но, в отличие от них, не блокирующие поток исполнения. Эти методы уже не являются элементами синхронной логики, поэтому могут беспрепятственно использоваться при разработке веб-приложений.
Группа этих методов отличается следующим:
- Их имена начинаются со слова Показать либо Начать, например ПоказатьВопрос() вместо Вопрос() , НачатьПомещениеФайла() вместо ПоместитьФайл() , и так далее,
- Первым параметром принимают объект ОписаниеОповещения, указывающий на процедуру модуля, которая будет выполнена после того как пользователь сделает выбор в блокирующем окне,
- Не возвращают значения, вместо этого результат выбора пользователя будет передан в процедуру модуля, описанную объектом ОписаниеОповещения.
Также были добавлены возможности работы с управляемыми формами в асинхронной модели. Однако, для них не создавалось новых методов, а были доработаны уже имеющиеся средства:
- Добавлено свойство формы ОписаниеОповещенияОЗакрытии , которое указывает на процедуру модуля, которая будет вызвана при ее закрытии. Также это значение можно установить при помощи нового параметра метода ОткрытьФорму() ,
- Добавлен вариант режима открытия окна формы - БлокироватьВеcьИнтерфейс , при использовании которого открываемая форма заблокирует все окна, а не только окно родителя.
Дополнительно реализован новый метод глобального контекста ВыполнитьОбработкуОповещения(), который позволяет вручную осуществить вызов процедуры-обработчика. Это позволяет реализовать общую процедуру, выполняющую опрос пользователя, которая вызывается из разных мест.
Особенности реализации асинхронной бизнес-логики
Следует отметить, что поначалу асинхронная модель может показаться сложнее привычной синхронной. На самом деле, понимая основные различия этих моделей, разработка асинхронных приложений становится не многим труднее.
Это подтверждается тем фактом, что все современные веб-приложения построены именно с использованием асинхронной модели и их количество постоянно растет.
Типовые сценарии при переходе на асинхронную модель
Вопрос пользователю в команде формы
Наиболее частым сценарием является получение информации от пользователя во время исполнения какой-либо команды.
Допустим, существует следующий код, написанный в рамках синхронной модели:В рамках асинхронной модели с использованием новых средств этот код будет выглядеть следующим образом:
Процедура ДобавитьХарактеристику ( Команда )
//Выберем вид характеристики
Оповещение = Новый ОписаниеОповещения (
"ДобавитьХарактеристикуЗавершение" ,
ЭтотОбъект ) ;
ОткрытьФорму ( "ПланВидовХарактеристик.ВидыХарактеристик.ФормаВыбора" ,
, , , , , Оповещение , РежимОткрытияОкнаФормы . БлокироватьВеcьИнтерфейс ) ;
КонецПроцедурыПроцедура ДобавитьХарактеристикуЗавершение ( ВидХарактеристики , Параметры ) Экспорт
Если ВидХарактеристики = Неопределено Тогда
Возврат ;
КонецЕсли ;//Проверим наличие
Если ОписаниеХарактеристик . НайтиСтроки (
Новый Структура ( "ВидХарактеристики" , ВидХарактеристики ) ) . Количество ( ) > 0 Тогда
ПоказатьПредупреждение ( , НСтр ( "ru = 'Характеристика уже существует!'" , "ru" ) ) ;
Возврат ;
КонецЕсли ;
//Добавим вид характеристики на форму
ДобавитьХарактеристикуНаСервере ( ВидХарактеристики ) ;
КонецПроцедурыСледует обратить внимание, что процедура-обработчик объявлена экпортируемой. Это связано с тем, что эта процедура будет вызвана не кодом самого модуля, а системным кодом платформы, поэтому модуль должен предоставить к ней доступ.
Вопрос пользователю при закрытии формы
Более сложной является ситуация, когда нужно о чем-то спросить пользователя во время обработчика события, например события закрытия формы. В асинхронной модели мы не можем сразу получить результат выбора, чтобы указать дальнейшие действия системе при помощи значения параметра Отказ .
В таких случаях доступен следующий алгоритм:
- Создать в форме переменную, которая будет хранить ответ пользователя при ее закрытии,
- Если ответа получено еще не было (переменная содержит Неопределено ), то в обработчике ПередЗакрытием нужно показать окно выбора пользователю, например, при помощи метода ПоказатьВопрос() и прервать закрытие формы, установив Отказ=Истина ,
- В процедуре-обработчике выбора следует установить переменной результат выбора и вызвать метод Закрыть() формы,
- Если переменная содержит какое-либо значение, то это значит, что идет процесс закрытия, инициированный на предыдущем шаге, результат выбора от пользователя уже получен и обработчик ПередЗакрытием может использовать его значение.
Ниже приведен пример кода, реализующего этот алгоритм:
Вопрос пользователю во вложенных процедурах
Теперь рассмотрим случай, когда выбор пользователя осуществляется в некоторой общей процедуре, вызываемой из разных мест другими процедурами. Получается, что в асинхронной модели такая процедура не может сразу вернуть результат, а должна как-то уведомлять вызывающие ее процедуры о том, что результат получен и можно продолжать работу.
Предположим, существует общая функция, которая возвращает текст, в зависимости от ответа пользователя:
В асинхронной модели эту функцию и ее вызовы следует реализовывать следующим образом:
Таким образом, вызовы процедур можно связывать в цепочки, передавая им результат при помощи метода ВыполнитьОбработкуОповещения().
Заключение
В статье были рассмотрены новые средства, позволяющие реализовывать более качественные приложения с использованием асинхронной модели, принятой в среде Интернет.
Несмотря на наличие таких средств, видно, что большое количество диалогов может усложнять программный код. К тому же, в веб-приложениях диалоги выбора используются гораздо реже, чем в настольных, поскольку снижают общее удобство использования.
Модули объектов существуют у прикладных объектов (документы, справочники, планы счетов и т.д.), и предназначены в основном для обработки стандартных событий типа записи. Тут же можно располагать условия типа проверки корректности данных. Важно понимать, что обработка события записи могут располагаться также и в модуле формы, но отрабатывать она будет только при интерактивной работе с объектом. Если же объект записывается программно, то будет выполняться обработчик события именно из модуля объекта.
Модуль объекта может быть открыт по соответствующей кнопке на закладке Прочее:Перечень предопределенных процедур - обработчиков событий модулей объектов:
- Модуль объекта справочника:
- ПриУстановкеНовогоКода
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроверкиЗаполнения
- ОбработкаПроведения
- ОбработкаЗаполнения
- ПриУстановкеНовогоНомера
- ПриКопировании
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаУдаленияПроведения
- ОбработкаПроверкиЗаполнения
- ОбработкаПроверкиЗаполнения
- ПриКомпоновкеРезультата
- УстановитьЗаголовкиПолей
- ОбработкаПроверкиЗаполнения
- ПриУстановкеНовогоКода
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроверкиЗаполнения
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроверкиЗаполнения
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаПроверкиЗаполнения
- ПриУстановкеНовогоНомера
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаИнтерактивнойАктивации
- ОбработкаПроверкиЗаполнения
- ПриУстановкеНовогоНомера
- ПриКопировании
- ОбработкаЗаполнения
- ПередЗаписью
- ПриЗаписи
- ПередУдалением
- ОбработкаИнтерактивнойАктивации
- ОбработкаПроверкиВыполнения
- ПередВыполнением
- ПередИнтерактивнымВыполнением
- ПриВыполнении
- ОбработкаПроверкиВыполнения
Вопрос 06.18 экзамена 1С:Профессионал по платформе. Где располагаются процедуры-обработчики событий прикладных объектов, например, ПриЗаписи, ПередУдалением?
- В модуле формы
- В модуле объекта
- В модуле приложения
- Таких событий у прикладных объектов нет
Вопрос 06.41 экзамена 1С:Профессионал по платформе. С помощью команды "ДобавитьОбработчик" можно назначить обработчик события на:
356. Алгоритмы в модуле обычной формы могут исполняться?
• Только на клиентском компьютере
357. Алгоритмы в модуле управляемой формы могут исполняться?
• Место определяется для каждой процедуры и функции модуля
• 1200
359. В каком обработчике события модуля объекта можно отказаться от записи объекта, например, элемента справочника?
• ПередЗаписью
• ПриЗаписи
360. В каком свойстве хранится время документа?
• Дата
361. В каком свойстве хранится дата документа?
• Дата
362. В каком случае рекомендуется использовать общий модуль для описания только экспортных функций?
• Только раздел процедур и функций
363. В каком формате хранятся тексты конфигурации и базы данных в системе 1С:Предприятие?
• Тексты конфигурации и базы данных хранятся в формате UNICODE
364. В модуле приложения.
• нет ограничений на описание переменных, процедур, функций
365. В общих модулях.
• нельзя описывать переменные
366. Верно ли что в 1С:Предприятие 8 любая текстовая информация может включать одновременно символы различных языков?
• Да, так как все тексты конфигурации и базы данных хранятся в формате UNICODE
367. Возможно ли использование в одном исходном тексте операторов встроенного языка в русском и английском написании?
• Да, для этого не требуется изменения каких-либо настроек конфигуратора
368. Где может размещаться процедура-обработчик события "Нажатие" кнопки диалога?
• В модуле формы
369. Где располагаются процедуры-обработчики событий прикладных объектов, например, ПриЗаписи, ПередУдалением?
• В модуле объекта
370. Для чего предназначен объект ДокументСписок?
• Для управления списком документов, выводимых в табличное поле, т.е. для решения интерфейсных задач
371. Для чего предназначен объект конфигурации "Язык"?
• Для создания интерфейса программы на разных языках
372. Для чего применяется код локализации?
• В форматных строках во встроенном языке для упрощения адаптации решений к конкретным региональным установкам
• Для указания региональных установок информационной базы
373. Если в региональных установках информационной базы ни одно из свойств установлено не будет, тогда.
• язык и форматы отображения чисел, даты и времени будут определяться настройками операционной системы
374. Имя общего модуля может совпадать с именем свойства глобального контекста (например "Отчеты"):
• может, но только если модуль глобальный
375. К чему приведет изменение кода языка в свойстве "Код языка", если уже введены тексты в свойствах "Синоним" или "Заголовок" на этом языке?
• К "потере" введенных текстов с возможностью "восстановления" при указании прежнего значения кода языка
376. Как можно обратиться к менеджеру справочника "Номенклатура"?
• Спр = Справочники.Номенклатура
377. Как повлияет удаление элемента справочника, который уже используется в других объектах, а потом создать новый с такими же реквизитами, на поведение программы?
• У элемента будет другой внутренний идентификатор (ссылка) и это может повлиять на логику программы
378. Какая коллекция из нижеперечисленных не относится к универсальным?
• Коллекция строк табличной части документа
379. Какая процедура выполняет обработку события ввода документа "на основании"?
• "ОбработкаЗаполнения" с формальным параметром "Основание" произвольного типа
380. Какие виды программных модулей существуют "1С:Предприятие 8"?
• Модуль обычного приложения, модуль управляемого приложения, модуль внешнего соединения, модуль сеанса, модуль команды, общие модули, модули менеджера, модули форм, модули объектов и модули набора записей
381. Какие разделы существуют в общем модуле?
• Только раздел процедур и функций
382. Какие утверждения относительно NULL справедливы?
• NULL — обозначает отсутствующее значение
• NULL — относится к примитивным типам данных
• NULL — это литерал
383. Какие функции отсутствуют во встроенном языке "1С:Предприятие8":
• Функции работы со значениями типа Время
384. Каким образом можно сменить язык просмотра (редактирования) конфигурации?
• С помощью кнопки выбора языка, расположенной в строке состояния справа от кнопки "NUM"
• Через пункт меню "Конфигурация — Язык редактирования конфигурации"
385. Какого типа является свойство глобального контекста "Справочники"?
• СправочникиМенеджер
386. Какое высказывание о модуле приложения верно?
• Модуль приложения используется для обработки событий, связанных с началом и завершением работы системы
• Модуль приложения используется для объявления глобальных переменных
387. Какое значение будет стоять в полях записей результата запроса, для которых не найдено соответствия в другой таблице-источнике при внешнем соединении?
• NULL
388. Какое написание имеют операторы встроенного языка?
• Русское и английское написание
389. Какое написание имеют функции встроенного языка?
• Русское и английское написание
390. Какой должен быть порядок определения процедур и функций в программном модуле?
• Порядок следования процедур и функций не имеет значения
391. Какой литерал представляет значение типа "дата" по умолчанию (пустая дата)?
• 10101
• 10101000000
392. Какой метод документа обеспечивает вызов события отмены проведения документа?
• Записать(РежимЗаписиДокумента.ОтменаПроведения), где Записать — метод объекта документа
393. Какой метод документа обеспечивает вызов события проведения документа?
• Записать(РежимЗаписиДокумента.Проведение), где Записать — метод объекта документа
394. Какой режим используется для выполнения задач локализации (создания интерфейса на другом языке)?
• "Редактирование текстов интерфейса"
395. Ключ может быть произвольного типа.
• у соответствия
396. Механизмы интернационализации, заложены в.
• технологическую платформу 1С:Предприятия
397. Модуль приложения рекомендуется использовать.
• для определения предопределенных процедур "ПриНачалеРаботыСистемы" и т.п
398. Модуль сеанса (выберите наиболее полный правильный ответ):
• в кластере серверов 1С:Предприприятия 8 исполняется в привилегированном режиме
• исполнение происходит после начала исполнения модуля приложения (модуля внешнего соединения)
• не содержит экспортируемых процедур и функций
• предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы
399. На что влияют региональные установки информационной базы?
• На порядок сортировки строк в базе данных
• На формат отображения чисел и дат
400. Объект какого типа позволяет изменить элемент справочника в базе данных?
• СправочникОбъект
401. Объект МодельПрогноза создается:
• Из результата анализа данных
402. Пессимистическая блокировка объекта (метод Заблокировать()):
• блокировка объекта не мешает программно менять данные объекта
403. Пессимистическая блокировка объекта (метод Заблокировать()):
• не позволяет интерактивно (в основной форме объекта) менять данные объекта
• для разных объектов
405. При назначении обработчика события на объект (экземпляр объекта 1С:Предприятие, СОМ объект) процедура, отвечающая за отработку данного события должна быть расположена:
• выбор модуля не важен, в "пределах видимости"
406. При необходимости использования англоязычной транскрипции встроенного языка 1С:Предприятие 8 в уже существующей конфигурации можно:
• Использовать англоязычные варианты встроенных процедур/функций. операторных скобок и языковых конструкций
407. При определении на одно событие объекта 1С:Предприятие нескольких подписок на событие, порядок вызова обработчиков следующий:
• процедуры вызываются в произвольном порядке
408. При определении обработчика события на СОМ объект количество параметров в процедуре- обработчике:
• равно количеству параметров соответствующего события объекта
409. При определении обработчика события на экземпляр объекта 1С:Предприятие количество параметров в процедуре-обработчике:
• на один параметр больше, чем у соответствующего обработчика события, располагаемого в модуле объекта (первый параметр содержит сам объект)
410. При определении подписки на событие для разных объектов перечень показываемых событий формируется по принципу:
• должны выполняться оба вышеприведенных требования
411. При определении подписки на событие количество параметров в процедуре-обработчике:
• на один параметр больше, чем у соответствующего обработчика события, располагаемого в модуле объекта (первый параметр содержит сам объект)
412. При определении подписки на событие количество таких подписок:
• Любое количество, процедуры обработчики могут располагаться как в одном, так и в разных общих неглобальных модулях
413. При определении подписки на событие процедура — обработчик должна располагаться:
• в не глобальном общем модуле
414. При определении подписки на событие, в случае если в модуле объекта определен соответствующий обработчик этого же события:
• в начале отработает процедура, расположенная в модуле объекта, затем процедура, определенная по подписке
415. При проведении документа по какому-либо регистру в случае если у документа установлен автоматический режим управления транзакционными блокировками, а у регистра управляемый (в свойствах конфигурации используется вариант "Автоматический и управляемый"), то такое проведение приведет
• вся транзакция будет выполнена в автоматическом режиме
416. При проведении документа по какому-либо регистру в случае если у документа установлен автоматический режим управления транзакционными блокировками, а у регистра управляемый (в свойствах конфигурации используется вариант "Управляемый"), то такое проведение приведет:
• вся транзакция будет выполнена в управляемом режиме
417. При проведении документа по какому-либо регистру в случае если у документа установлен управляемый режим управления транзакционными блокировками, а у регистра автоматический (в свойствах конфигурации используется вариант "Автоматический и управляемый"), то такое проведение приведет
• к возникновению ошибочной ситуации
418. Процедура, используемая подпиской на событие, должна располагаться в модуле с установленными (взведенными) флажками:
• обязательно Клиент, Сервер и Внешнее соединение
419. Пусть Переменная1 имеет тип Дата (состав даты — "Дата") и значение, равное 1 марта 2005 года. Чему будет равно значение выражения "Переменная1+20"?
• 1 марта 2005 г 00 ч 00 мин 20 сек
420. С какого значения начинается индексирование элементов коллекций?
• 0 (с нуля)
421. С какой целью используется встроенный язык?
• Для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи
422. С какой целью тексты конфигурации и базы данных хранятся в формате UNICODE?
• Формате UNICODE позволяет поддерживать различные языки в системе 1С:Предприятие
423. С помощью команды "ДобавитьОбработчик" можно назначить обработчик события на:
• СОМ объект
• экземпляр объекта 1С:Предприятие (назначать на события модуля объекта)
424. С помощью объекта какого типа можно перебирать элементы справочника?
• СправочникВыборка
425. Создание многоязыковых прикладных решений.
• возможно благодаря тому, что существует возможность создания нескольких языков в конфигурации и локализованных интерфейсов платформы
426. Существует ли в 1С:Предприятии 8 возможность настроить конкретное прикладное решение на использование региональных настроек чисел, дат и времени?
• Да, в региональных установках информационной базы можно настроить эти параметры
427. Тип анализа "Дерево решений" подразумевает:
• Построение иерархической структуры классифицирующих правил
428. Тип анализа "Кластерный анализ" подразумевает:
• Разделение исходного набора на группы объектов
429. Тип анализа "Поиск ассоциаций" подразумевает:
• Поиск часто встречаемых вместе групп объектов или значений характеристик
430. Тип анализа "Поиск последовательностей" подразумевает:
• Поиск цепочек событий
431. Типизация переменных во встроенном языке "1С:Предприятие
• не жесткая, т.к. неявным определением переменной является ее первое упоминание в левой части оператора присваивания
• не жесткая, т.к. тип переменной определяется ее значением
432. Только определения процедур и функций может содержать только следующий вид модуля:
• модуль сеанса
• общий модуль
433. У регистра сведений установлен режим записи "Независимый". Редактирование осуществляется в диалоге, ни одна из форм регистра не определена. При попытке интерактивного добавления в него "Записи" со значениями измерений, комбинация которых уже прописана в регистре:
• Возникает ошибочная ситуация
434. Что необходимо выполнить в процедуре "ОбработкаПроведения" в модуле документа для отмены проведения?
• Отказ = Истина
435. Что необходимо для того, чтобы написанная программистом процедура дополнила контекст документа (объекта типа ДокументОбъект)?
• Она должна быть определена в модуле документа
• Она должна быть определена с ключевым словом Экспорт
436. Что обозначает параметр Л(L) в форматной строке функции форматирования ЧислоПрописью()?
• Код локализации
437. Что произойдет, если удалить запись регистра сведений и создать новую с такими же полями (измерениями, ресурсами, реквизитами)?
• Ничего, на логику программы это никак не повлияет
438. Что такое "системные перечисления"?
• Перечень значений, заданный в платформе "1С:Предприятие 8.0"
439. Что такое код локализации?
• Строка, состоящая из кода языка и кода страны и идентифицирующая некоторый регион мира
440. Что такое локализация?
• Адаптация программы под конкретные национальные требования
Процедуры-обработчики событий
Особенностью обработки событий среде 1С:Предприятия 8 является то, что имя процедуры-обработчика в одних случаях должно совпадать с именем события, а в других случаях может от него отличаться. Данная статья написана, чтобы внести ясность в этом вопросе.
Обратите внимание, что термин "Предопределенная процедура", который использовался в версии 7.х, теперь заменен на "процедура-обработчик события" или просто "обработчик события".
Ниже показана палитра свойств для формы элемента справочника "Номенклатура" с несколькими назначенными обработчиками событий:
За информацией о приемах работы с этой частью палитры свойств обращайтесь к документации: книга "Конфигурирование и администрирование", "Глава 3. Объекты конфигурации => Свойства элементов управления => Категория свойств События" (стр. 1 - 204)
Обратите внимание на важный момент, имя процедуры-обработчика событий может не совпадать с именем события . Для элементов управления чаще всего так и бывает, например, процедура "ТипЦенПриИзменении" обрабатывает событие "ПриИзменении" поля ввода для реквизита "ТипЦен", как показано на следующем рисунке:
Как правило, процедура-обработчик имеет тот же набор параметров, что и событие. Если у нее нет соответствующих параметров, то обработка события может получиться неполной. Поэтому рекомендуется создавать процедуры-обработчики конструктором через палитру свойств, нажимая кнопку с лупой или выбирая процедуру из выпадающего списка.
Есть еще одна интересная возможность: одна и та же процедура может "обслуживать" несколько событий формы или элементов управления, в том числе от разных источников. Элемент управления, который инициировал событие, передается в качестве первого параметра в эту процедуру-обработчик (параметр "Элемент"), и при необходимости алгоритм может проанализировать, откуда пришло событие, и выполнить соответствующие действия.
Поясним это правило на конкретных примерах:
1. Процедуры-обработчики событий, расположенные в модуле приложения или модуле внешнего соединения, совпадают с именами событий:
- ПередНачаломРаботыСистемы
- ПриНачалеРаботыСистемы
- ПриЗавершенииРаботыСистемы
- ПередЗавершениемРаботыСистемы
- ОбработкаВнешнегоСобытия
2. Имена процедур-обработчиков событий, расположенных в модуле объекта, тоже строго соответствуют именам событий:
для модуля документа (события объекта типа "ДокументОбъект")
- ПередЗаписью
- ПриЗаписи
- ПриУдалении
- ПриКопировании
- ОбработкаЗаполнения (для обработки "ввода на основании")
- ОбработкаПроведения
- ОбработкаУдаленияПроведения
- ПриУстановкеНовогоНомера
Аналогичные обработчики событий могут располагаться в модуле справочника и модулях других прикладных объектов.
3. Есть также модуль набора записей для всех видов регистров, который подобен модулям прикладных объектов. Модуль набора записей может содержать следующие процедуры-обработчики событий (имена процедур должны совпадать с именами событий):
Ниже приведены несколько важных моментов, которые полезно помнить при работе с событиями:
Примечание 1. Событие ПередЗаписью прикладного объекта отличается от события ПередЗаписью формы, связанной с этим прикладным объектом. Обработчик события в модуле формы вызывается при интерактивной записи, а обработчик в модуле объекта при любом способе записи элемента в базу данных.
Примечание 2. Если в процедурах-обработчиках модуля объекта нужно обратиться к самому объекту (текущий элемент справочника, текущий документ и т.д.), то для этого можно использовать свойство ЭтотОбъект. Оно содержит объект типа "СправочникОбъект", "ДокументОбъект" и т.д.
Примечание 3. Считается грубой ошибкой в процедурах-обработчиках событий объектов вызывать такие интерактивные команды, как Вопрос и Предупреждение. Эти команды показывают на экране диалоговое окно и ждут реакции пользователя. Так как событие обрабатывается в рамках транзакции, то это вызовет значительную задержку в обработке события и часть данных (или вся таблица) будет заблокирована на время ожидания.
На рисунке представлена
?) могут выступать регистры расчета, которые связаны с планами видов расчета, являющимися базовыми для плана видов расчета, с которым связан рассматриваемый регистр расчета
?) может изменяться и отображать все необходимые реквизиты элемента списка, но только в печатной форме
?) всегда имеет вид одной колонки ("Имя Пользователя"), для получения более детальной информации необходимо открывать каждый элемент списка в режиме диалога
?) может изменяться и отображать все необходимые реквизиты элемента списка. Для отображения реквизитов необходимо в меню "Действия" - "Настройка списка" - отметить необходимые реквизиты
При использовании режима "Сравнение, объединение с конфигурацией из файла" флажок "Разрешать удаление объектов основной конфигурации"…
?) при сброшенном флажке, в не зависимости от приоритета объединения, объекты текущей конфигурации, которым не сопоставлены объекты загружаемой конфигурации, будут оставлены в результате объединения
?) при отмеченном флажке, объекты текущей конфигурации, которым не сопоставлены объекты загружаемой конфигурации будут удалены
?) не только русскоязычный интерфейс конфигуратора, но и другие интерфейсы, входящие в поставку 1С:Предприятия
Как определить виды документов, которые могут регистрироваться в качестве границы последовательности "СебестоимостьПродаж"?
?) Только документы, являющиеся регистраторами регистров, указанных в свойстве "Движения, влияющие на последовательность", а именно "ПриходнаяНакладная", "РасходнаяНакладная"
?) будут заменены данные информационной базы и конфигурация базы данных, но посредством операции "Вернуться к конфигурации БД" можно будет вернуться в исходное состояние
Каким образом для элемента управления "Командная панель" реализовать возможность его автоматического заполнения?
?) В окне свойств установить флаг "Автозаполнение" и, обязательно, выбрать значение свойства "Источник действий"
?) В окне свойств установить флаг "Изменяет данные" и, обязательно, выбрать значение свойства "Источник действий"
Если задать в плане видов расчета, что "Отпуск" вытесняет "Оклад", и, в тоже время, что "Оклад" вытесняет "Отпуск", и попытаться сохранить изменения, то.
?) Внедрения объекта, для редактирования которого будет загружено приложение, в котором этот объект создан
?) все разработчики работают в одной информационной базе, синхронизируемой по метаданным с хранилищем
?) является основным элементом механизма групповой разработки и обеспечивает синхронизацию работ нескольких разработчиков
На рисунке красным кружком отмечен
?) Специальный маркер выравнивания, показывающий наложение элементов управления. Выделенный элемент управления предлагается сдвинуть влево и вверх
?) Специальный маркер выравнивания, показывающий наложение элементов управления. Выделенный элемент управления предлагается сдвинуть вправо и вниз
?) Специальный маркер выравнивания, показывающий смещение элементов управления. Выделенный элемент управления предлагается сдвинуть вправо и вниз
?) Специальный маркер выравнивания, показывающий смещение элементов управления. Выделенный элемент управления предлагается сдвинуть влево и вверх
?) C любым количеством файлов dbf, но только в случае указания связей между полями с помощью специальных свойств объекта XBase
При нажатии на кнопку "Далее" в окне редактирования объекта на закладке, предшествующей не активной закладке, действие системы будет следующим
Читайте также: