что такое события и с чем они связаны 1с
Вирус скуки
пятница, 17 мая 2013 г.
1С-ное.(Заметки быдло-ученика-погромиста)
Продолжение одинэсной темы, ответы на книгу Радченко, занятие 2 и 3.
14 комментариев:
Большое человеческое 1Спасибо!
Я вас обожаю, кто это создал.
а какой вопрос вызывает сложность то? Напишите, может, я напишу какой-нибудь развернутый пост, а то я не понимаю, уже три человека находят что-то особенное на этой странице.
только это 4 занятие
И к вам обращусь
а какой вопрос вызывает сложность то? Напишите, может, я напишу какой-нибудь развернутый пост, а то я не понимаю, уже три человека находят что-то особенное на этой странице.
Сори что анонимно, но сайт очень полезный
Спасибо чувак выручил перед экзаменом 🙂
Всё отлично, спс! Ток ето 4 занятие, а не 2 и 3
просто я читал книгу очень давно)))) она уже изменилась, другая редакция. Но принципы те же, хз, может, перечитаю и напишу новые ответы
Изучение событий 1С для программирования
Почему появилась эта статья?
При совершении любых действий пользователем платформа 1С генерирует программные события. Как правило генерируется не одно событие, а целая цепочка событий. Задача программиста правильно разместить программный код в событиях, чтобы добиться ожидаемого поведения от программы. Однако начинающему программисту по 1С это не просто будет сделать, по причинам перечисленным ниже.
В управляемой форме могут быть сгенерированы события: ПриЧтенииНаСервере, ПриСозданииНаСервере, ПриОткрытии и т.д.
События в управляемой форме генерируются на клиенте и на сервере: ПередЗаписью, ПередЗаписьюНаСервере.
События вызываются в разных модулях: ФормаЭлемента, МодульОбъекта, МодульМенеджера.
Некоторые события могут вызываться несколько раз, если в списке несколько элементов справочника, например: ОбработкаПолученияПредставления.
Управляемая форма может быть открыта в результате выполнения разных действий пользователя при этом цепочки вызова событий будут различаться. При любых следующих действиях пользователя со справочником будет открыта управляемая форма: создание нового элемента, копирование элемента, изменение существующего элемента справочника.
События также генерируются элементами формы: при добавлении строки в табличную часть, при редактировании строки табличной части, при активизации строки или поля, при выборе элемента справочника в поле ввода и т.д.
Чтобы лучше понять логику и последовательность вызываемых событий, можно воспользоваться разработкой «Изучение событий» прикрепленной к данной статье. Зная контекст вызова события, последовательность событий и действия которые будет выполнять пользователь будет легче понять в какой обработчик событий лучше всего поместить свой программный код.
Инструкция к применению программы «Изучение событий»
Программа «Изучение событий» показывает события, которые генерирует платформа 1С при интерактивных действиях пользователя. Принцип работы следующий, пользователь открывает справочник, программа показывает цепочку событий. Пользователь помечает на удаление элемент справочника, программа выводит последовательность возникающих событий. События отображаются с небольшой задержкой по умолчанию 3 секунды, это необходимо чтобы отделить одну цепочку событий от другой цепочки событий. Поэтому выполнять интерактивные действия нужно «неторопливо».
Все события отображаются в специальном окне «Последние события». В нем можно включить или выключить запись событий. По умолчанию при первом открытии запись событий включена. Окно «Последние события» советую закрепить снизу экрана сразу при запуске программы, для удобного просмотра событий.
Программа не может сама определить каким действием вызвана цепочка событий, советую в поле «Действие причина» набирать с клавиатуры названия ваших последних действий, например «Открыта форма списка справочника», «Помечен на удаление элемент в списке справочника» и т.д. Это облегчит затем анализ действий и событий.
События записываются и отображаются для объектов, размещенных в разделе «Трассировка событий» при условии включенной записи событий в форме «Последние события».
Все записанные события можно посмотреть через «Отчет по событиям», который находится в разделе «Сервис».
Чтобы быстро очистить все записанные действия и события в разделе «Сервис» выбираем «Очистить события и действия».
Работа программы тестировалась на 1С платформе версии «8.3.9».
Программа «Изучение событий» может полезна как новичкам, так и программистам с опытом.
Обучение программированию на 1С
Подписки на события 1С
Подписка на событие
» data-medium-file=»https://i0.wp.com/life1c.ru/wp-content/uploads/rassyilka-i-podpiska.jpg?fit=300%2C200&ssl=1″ data-large-file=»https://i0.wp.com/life1c.ru/wp-content/uploads/rassyilka-i-podpiska.jpg?fit=520%2C347&ssl=1″ loading=»lazy» src=»https://i1.wp.com/life1c.ru/wp-content/uploads/rassyilka-i-podpiska-300×200.jpg?resize=244%2C166″ alt=»Подписка на событие» width=»244″ height=»166″ data-recalc-dims=»1″ />Программа 1С является одной из самых часто используемых во многих сферах деятельности. Вот уже несколько лет с её помощью ведутся базы данных в организациях, ведётся учёт основной деятельности и упорядочивается бухгалтерская отчётность.
Программа 1С постоянно усовершенствуется, добавляются новые функции, позволяющие сделать работу в системе более удобной.
Событие в программе 1С возникает в тот момент, когда пользователь использует какую-либо кнопку, в результате нажатия на которую открывается форма или записывается документ.
Функции программы позволяют выполнять определённые действия в результате возникновения определённого события. Для этого необходимо прописать подробные условия во встроенной программе. Для этого программисту необходимо назначить обработчик на каждое событие.
Кроме того, программист может настроить систему таким образом, что обработчик будет назначен сразу на несколько документов при нажатии на одну кнопку.
Как подписка на событие выглядит в дереве конфигурации?
Чтобы найти элемент дерева конфигурации «Подписки на события», достаточно открыть вкладку «Общие» в дереве конфигурации. В выпадающем списке дерева можно выбрать необходимый пункт.
В самой подписке на события выбирается источник, который будет основой для осуществления определённых событий.
Функция-обработчик выбирается в общем модуле в дереве конфигурации.
Как проверить заполнение поля?
Например, для работы в системе программист добавил общий реквизит. Необходимо проконтролировать заполнение данного поля в каждом вновь созданном документе. Для выполнения этого действия следует учитывать несколько этапов.
Пользователю необходимо добавить в систему новую подписку, следует придумать для неё новое название и написать его. В свойствах подписки на событие устанавливаются ссылки на документы, на которые впоследствии будет установлен обработчик.
Следующий шаг – выбор в свойствах одного из вариантов событий, которые будут происходить после нажатия кнопок с документами или справочниками.
Работа с формами 1С
Как показывает практика, можно значительно упростить работу со многими объектами в 1С. Чаще всего это документы и справочники. Однако на данный момент невозможно подписаться на события 1С формы, например, при её открытии.
Следует понимать, что возможность использования событий напрямую зависит от используемого объекта. Однако, если выбрать сразу несколько объектов, в итоге в списке будут только те события, которые возможно применить к каждому из объектов.
Функция-обработчик
Следующий этап – работа с функцией обработчиком события. Для её использования необходимо установить серверный общий модуль. Эти настройки можно изменить во вкладке «Свойства». Функция-обработчик создаётся после нажатия кнопки «Лупа».
Для чего нужна функция подписки на события?
За несколько этапов пользователь сам может установить функцию подписки на событие в 1С. Этот приём позволяет выполнять определённую функцию при записи любого документа или создания нового.
Создание подписки значительно упрощает работу в программе 1С, а также экономит время пользователю.
Механизм бизнес-событий на конкретном примере
На днях попросили меня сделать одну на первый взгляд простую и полезную настройку в 1С:Документооборот: если новый входящий документ пришёл в ответ на исходящий, то автора исходящего необходимо оповестить о новом документе не дожидаясь резолюции руководства.
Вроде всё просто: отлавливаем создание вида связи «В ответ на» и запускаем бизнес-процесс «Ознакомление» с нужными параметрами. Но, зайдя в справочник «Виды бизнес-событий» ничего похожего на создание связи не обнаруживаем. Нам подходит только бизнес событие «Изменение входящего документа», в котором мы уже ручками будем отслеживать создание связи и запускать бизнес процесс.
Как механизм бизнес-событий работает в 1С:Документооборот? Рассмотрим на примере «Изменения входящего документа»:
Вот такой несложный механизм.
Получается, что нам нужно всю логику разместить в дополнительном обработчике бизнес события для вида бизнес события «Изменение входящего документа» и «Создание входящего документа» т. к. при создании входящего документа на основании исходящего предварительной записи карточки документа перед созданием связи не производится.
Первым делом получим ссылку на нужный тип связи (1).
Дальше проверим установлена ли эта связь у данного документа (2).
А дальше нам необходимо установить, что данная связь является новой, чтобы не генерировать оповещения каждый раз при сохранении карточки документа.
Алгоритм, который я предлагаю не самый точный, но рабочий. Мы проверяем не было ли по новому документу когда-либо сформировано бизнес-процессов «Ознакомление» (3). Этот подход будет верным если при создании входящих документов автоматически не стартуют иные процессы «Ознакомление».
Ну и наконец создаём новый бизнес-процесс «Ознакомление», прикрепляем в качестве основного предмета новый документ и стартуем его выбрав в качестве исполнителя автора документа.
И всё, все счастливы, особенно исполнители исходящих запросов.
Процедуры-обработчики событий
Особенностью обработки событий среде 1С:Предприятия 8 является то, что имя процедуры-обработчика в одних случаях должно совпадать с именем события, а в других случаях может от него отличаться. Данная статья написана, чтобы внести ясность в этом вопросе.
Обратите внимание, что термин «Предопределенная процедура», который использовался в версии 7.х, теперь заменен на «процедура-обработчик события» или просто «обработчик события».
ПРАВИЛО №1. Если процедура-обработчик события относится к форме или элементу управления, то ее обязательно нужно указывать в палитре свойств для формы или элемента управления. |
Ниже показана палитра свойств для формы элемента справочника «Номенклатура» с несколькими назначенными обработчиками событий:
Как правило, процедура-обработчик имеет тот же набор параметров, что и событие. Если у нее нет соответствующих параметров, то обработка события может получиться неполной. Поэтому рекомендуется создавать процедуры-обработчики конструктором через палитру свойств, нажимая кнопку с лупой или выбирая процедуру из выпадающего списка.
Есть еще одна интересная возможность: одна и та же процедура может «обслуживать» несколько событий формы или элементов управления, в том числе от разных источников. Элемент управления, который инициировал событие, передается в качестве первого параметра в эту процедуру-обработчик (параметр «Элемент»), и при необходимости алгоритм может проанализировать, откуда пришло событие, и выполнить соответствующие действия.
ПРАВИЛО №2. Процедуры-обработчики событий, расположенные в модуле приложения, модуле внешнего соединения, модуле прикладного объекта должны называться точно так, как называются соответствующие события. |
Поясним это правило на конкретных примерах:
1. Процедуры-обработчики событий, расположенные в модуле приложения или модуле внешнего соединения, совпадают с именами событий:
2. Имена процедур-обработчиков событий, расположенных в модуле объекта, тоже строго соответствуют именам событий:
для модуля документа (события объекта типа «ДокументОбъект»)
Аналогичные обработчики событий могут располагаться в модуле справочника и модулях других прикладных объектов.
3. Есть также модуль набора записей для всех видов регистров, который подобен модулям прикладных объектов. Модуль набора записей может содержать следующие процедуры-обработчики событий (имена процедур должны совпадать с именами событий):
Ниже приведены несколько важных моментов, которые полезно помнить при работе с событиями:
Примечание 1. Событие ПередЗаписью прикладного объекта отличается от события ПередЗаписью формы, связанной с этим прикладным объектом. Обработчик события в модуле формы вызывается при интерактивной записи, а обработчик в модуле объекта при любом способе записи элемента в базу данных.
Примечание 2. Если в процедурах-обработчиках модуля объекта нужно обратиться к самому объекту (текущий элемент справочника, текущий документ и т.д.), то для этого можно использовать свойство ЭтотОбъект. Оно содержит объект типа «СправочникОбъект», «ДокументОбъект» и т.д.
Примечание 3. Считается грубой ошибкой в процедурах-обработчиках событий объектов вызывать такие интерактивные команды, как Вопрос и Предупреждение. Эти команды показывают на экране диалоговое окно и ждут реакции пользователя. Так как событие обрабатывается в рамках транзакции, то это вызовет значительную задержку в обработке события и часть данных (или вся таблица) будет заблокирована на время ожидания.