1с не работает обработка оповещения
Обработчик события ОбработкаЗаполнения
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. В случае если в силу каких-либо условий необходимо ограничивать ввод на основании по команде "Создать на основании", то такую проверку следует выполнять в обработчике ОбработкаЗаполнения модуля объекта (набора записей). Например, это могут быть проверки вида:
- Для команды "Создать на основании" не различимы группы и элементы справочников и планов видов характеристик: команда одинаково доступна в форме списка как для групп, так и для элементов. Требуется запретить ввод на основании групп.
- Требуется запретить ввод на основании непроведенных документов.
2. Для оповещения пользователя о причинах отказа, в обработчике ОбработкаЗаполнения следует использовать исключения:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Сотрудники") Тогда
Если ПолучитьЗначениеРеквизита(ДанныеЗаполнения, "ЭтоГруппа") = Истина Тогда
ВызватьИсключение "Ввод приказа о приеме на основании группы сотрудников невозможен!
|Выберите сотрудника. Для раскрытия группы используйте клавиши Ctrl и стрелку вниз";
КонецЕсли;
// обработка заполнения объекта по данным заполнения
При этом не рекомендуются какие-либо иные решения для подобных проверок. В частности, не следует создавать дополнительные команды для ввода на основании и размещать проверки в обработчиках этих команд.
Методическая рекомендация (полезный совет)
3. Рекомендуется придерживаться следующей логической структуры обработчика ОбработкаЗаполнения (отдельные шаги могут быть пропущены):
3.1. Выполнение специального заполнения в зависимости от типа параметра ДанныеЗаполнения .
Например:
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
Если ТипДанныхЗаполнения = Тип("Структура") Тогда
ЗаполнитьДокументПоОтбору(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказКлиента") Тогда
ЗаполнитьДокументНаОснованииЗаказаКлиента(ДанныеЗаполнения);
// .3.2. Выполнение общего заполнения, с целью заполнить значениями по умолчанию реквизиты, которые не были заполнены специальным заполнением. При этом необходимо предварительно проверять реквизит на заполненность.
Например:
Если Не ЗначениеЗаполнено(Подразделение) Тогда
Подразделение = ЗначениеНастроекПовтИсп.ПодразделениеПоУмолчанию();
КонецЕсли;Также при заполнении реквизитов значениями по умолчанию следует, по возможности, использовать свойство метаданных "Значение заполнения" . Значение, указанное в этом свойстве будет автоматически присваиваться реквизиту при выходе из обработчика ОбработкаЗаполнения , в случае если параметр СтандартнаяОбработка установлен в Истина , и реквизит не был заполнен в обработчике.
Выполнение данной рекомендации позволит уменьшить количество логических ошибок заполнения и повысит читаемость кода.
Описание: не срабатывает update
почему не срабатывает update после формы - вот код <form action="updates.php" method="post">.
Запрос срабатывает в SQL Server, но не корректно срабатывает в Visual Studio 2017
(SELECT ROW_NUMBER() over (ORDER BY AVG(Отметки.Отметка) DESC) ID, .ФИО, .Группа, Отметки.
Таймер срабатывает раньше времени или вообще не срабатывает
Помогите, пожалуйста, разобраться, что нетак с таймером. Браузер Chrome При создании записи.
Где пишется описание для выходного файла .exe (например описание процесса)
Консольный проект, скомпилировали, получили exe. Жмем правой кнопкой на нем\свойства\вкладка.
polax, указывал и 0 и 10 и не указывал
вот тока отрицательный не писал - написано, что будет исключение сразу вызвано
только что вот что там тоже вызывается , в оригинальной процедуре, оповещение.
а оно же работает типа асинхронно. но я ставил и до и после -и не работает. то есть окно есть, но сразу исчезает.
наверно с чем-то около связано, чем с арботой самОй процедуры
"Процедура расш_ПередЗакрытиемПосле"
логично же, что это расширение.
перед тоже пробовал с тем же успехом Точно. Просто не обращаешь внимания на имя процедуры, только на код. Извини0
В родной процедуре тоже есть ОписаниеОповещения? Для начала попробуй Вместо. Если заработает, значит дело именно в ОписанииОповещения родной процедуры. Тогда либо использовать ИзменениеИКонтроль либо конкретней разбираться с После (куда ее поставить)
там есть. но там она про другое.
типа меняешь когда адрес персонажа, то она смотрит - если модифицированность, то записать адрес
а мне надо навесить ещё вопрос - а не записать ли этот новый адрес в адрес для информирования и адрес проживания?
и по ответу да - записать
это второй шаг, который тоже хз как делать, но пока до него не дошёл )
поэтому ставил и до и после. а вместо нельзя. там оно своё. и тоже вызывает оповещение.
помогло изменить режим открытия окна (формы) на независимый (было блокировать окно владельца)Оповещения
Здравствуйте, создается CRM. есть менеджер и бухгалтер, заказы подгружаются AJAXом, если менеджер.
Оповещения Chrome
Добрый день, Кто нибудь в курсе как добавлять свою страничку в список оповещения Chrome.(которая в.
Оповещения с сайта
На некоторых сайтах, например на Ламоде, встречал такую тему. На примере той же Ламоды, чтобы.
Оповещения Evolution
На Debian 9 почтовый клиент Evolution работает так как нужно: при приходе письма выдаётся.
Система оповещения
Всем привет. Есть задача. В квартире в соседней комнате мама-инвалид. Необходимо, чтобы у нее под.
Вслед за браузерами, которые отказались от модальности, технологической платформе пришлось перейти на асинхронную работу клиентской части. Необходимо это было для поддержки веб-клиента.
Ведь формы выбора файлов, вопросов, предупреждений, ввода значений, да и зачастую формы, от результата работы в которых зависит дальнейший ход событий, были модальными.
Основным инструментом отказа от модальности стало ОписаниеОповещения.
Как работает ОписаниеОповещения
Для начала разберем как работает платформа с модальными окнами на примере метода Вопрос(). Напишем не хитрый код, в котором пользователю показывается диалог с вопросом и вариантами ответа Да и Нет.
В данном случае пользователю будет показан диалог, а работа клиентской части будет полностью приостановлена до момента, пока пользователь не ответит на вопрос.
Тогда результат поместится в переменную Ответ и только после этого работа клиентской части будет возобновлена для выполнения алгоритма заполнения.
Напишем аналогичный пример, но уже без модального вызова. Будем использовать метод ПоказатьВопрос(), которому передадим ОписаниеОповещения.
Пользователь не заметит разницы, ведь будет показан точно такой же диалог с вопросом. Но исполнение кода не будет приостановлено, вместо этого будет исполнен дальнейший алгоритм и будет завершена работа текущей процедуры.
После ответа пользователя будет вызвана процедура ОбработатьОтветПользователя(), которую мы указали в конструкторе ОписаниеПоповещения и только тогда будет выполнен алгоритм заполнения.
Описание функционала от разработчиков на ИТС
Синтаксис
Конструктор ОписаниеОповещения имеет 5 необязательных параметров:
Вызываемая процедура и её параметры
Вызываемая процедура должна быть экспортируемой, и в самом простом случае содержать два параметра Результат и ДополнительныеПараметры.
В зависимости от объекта в котором используется ОписаниеОпопвещения, количество параметров вызываемой процедуры может меняться.
Например вызываемая процедура для обработки оповещения метода глобального контекста НачатьПомещениеФайла() должна иметь 4 параметра.
Для избежания ошибок обращайтесь к Синтаксис-помощнику, там описано количество и порядок необходимых параметров.
Выполнение обработки оповещения
В платформе реализован метод ВыполнитьОбработкуОповещения(), для возможности непосредственного выполнения обработки оповещения.
Методу в качестве параметра необходимо передать ОписаниеОповещения, которое будет выполнено. Так же можно передать в процедуру обработки произвольный результат вторым необязательным параметром.
Работа на сервере
ОписаниеОповещения не доступно на сервере, но в качестве исполняемой процедуры можно указать серверный метод. В справке нет явного указания о данной возможности, но и противоречий нет.
Возможные ошибки
Не найден экспортируемый метод
Если вызываемая процедура не экспортная, то при исполнении будет вызвано исключение. Решается указанием экспортной процедуры.
Количество параметров 1. Ожидаемое количество – 2
Если вызываемая процедура будет объявлена с одним параметром, то при исполнении будет вызвано исключение. Решается добавлением второго параметра в вызываемую процедуру.
Примеры использования ОписаниеОповещения
ОписаниеОповещения может использоваться во множестве сценариев, например обработка результата открытия форм, диалог выбора файла, работа с файлами, чтение и запись данных, работа с табличными и текстовыми документами. Разберем некоторые из них.
Оповещение о закрытии формы
Реализуем функционал открытия формы подбора с дальнейшей обработкой результата
Ввод значений и предупреждения
Реализуем функционал ввода числа. После ввода выполним проверку на четность введенного числи, если число не четное выведем предупреждение
Проверка существования файла и передача описания оповещения через дополнительные параметры
При работе на стороне клиента, например с оборудованием, логику работы системы можно организовать при помощи оповещений. Можно передавать ОписаниеОповещения в качестве следующего шага, ветвления логики или вызывать одно оповещение из нескольких мест.
Разработаем функционал проверки существования файла. В модуле реализована процедура для централизованной обработки ошибок ОповеститьОбОшибке(), будем передавать ОписаниеОповещения об ошибке через дополнительные параметры.
Обработаем результат проверки существования файла. Если файл не существует, выполним обработку оповещения переданного через дополнительные параметры
Добрый день. 1с 8.2. обычное приложение Есть внешняя обработка, которая запускается у нескольких пользователей: под админом в ней выполняются различные записи в документы и справочники, а у пользователей по Оповещению - выполняются открытия форм, изменение инфы на форме их, этой же обработки и т.д. Но. не работает :) В конфигураторе под админом - в отладчике вижу событие нужное, а вот у пользователей, в ихних запущенных клиентах - обработка оповещения вообще не отрабатывает. Подскажите, что я делаю не так?
Работает ли вообще Оповестить на эту же внешнюю обработку, запущенную у другого пользователя?
а как тогда можно среагировать на Оповещение из внешней обработки в другой этой же открытой форме, но у пользователя?
а что если подтянуть эту внешнюю обработку к обработкам конфиги? Так будет работать?
Нет. Без внешних компонент организовать взаимодействие пользователь-пользователь можно только через базу или иной общий источник сведений.
Загрузил обработку в базу - у админа отрабатывают действия по оповещению, но всё равно на стороне пользователя ничего не происходит при этой открытой загруженной обработке. Может как то решить это подключением обработчика ожидания..или кто его знает, как ещё можно
Вообще не пойму, почему не работает Оповестить и ОбработкаОповещения для одной и той же формы обработки у разных пользователей. Должно ведь отрабатывать события
или это работает только в рамках данного запущенного клиента?? :( т.е. в данном случае у админа
А я почему то считал, что Оповестить, работает для всех запущенных сеансов 1с :) Жаль..очень жаль, что не так)
ПРоблема в том, что нужно быстро получить новую информацию (по входящему внешнему событию), которую получает админ, и отрисовать её на запущенных формах обработки у пользователей. А считывание информации - "слегка" затянутый процесс, ведь её ещё нужно сначала записать куда то :((( А так вот, событием с параметрами - было бы очень удобно и быстро сделать это
если речь про "отрисовывать", то для постоянной готовности к рисованию на всех этих клиентах нельзя открывать иных форм. Если же не рисовать, а действовать, то надо фоновый процесс запускать. И ясно, что интерактивная реакция для фонового действия противопоказана.
Жаль:( Значит мне при старте клиента нужно делать обработчикОжидания какой то процедуры, которая ежесекундно будет проверять значения регистра/документа на обновление данных, и при удовлетворительном условии заполнять эти данные на форме обработки пользователя. и других вариантов нет ? :(
да нет, работает всё и без фокуса. Я передавал данные между формами в режиме обмена встречными оповещениями. Данные приходили от формы, которая вроде и не в фокусе.
понятно, что заморачиваться со сложными тестами никто не будет, но если в той точке вызова процедуры, которая отправляет данные из формы, поставить длительно работающую процедуру, то никакие другие процедуры не начнут работать в данном сеансе, так ведь?
Читайте также: