1с тип не определен описаниеоповещения

Обновлено: 04.07.2024

Данная обработка предназначена для доступа к настройкам, хранящимся в стандартном хранилище, а так же для редактирования хранилища настроек, удаления и/или копирования настроек другим пользователям.

За основу были взяты механизмы детального редактирования настроек Копирование и редактирование пользовательских настроек от smirnov0ser, которую он любезно разрешил.

Стандартные механизмы хранения настроек:

  • Хранилище вариантов отчетов
  • Хранилище пользовательских настроек отчетов
  • Хранилище настроек данных форм
  • Хранилище общих настроек
  • Хранилище системных настроек
  • Хранилище пользовательских настроек динамических списков
  1. Фильтровать по части строки (пользователь, ключ настроек, ключ объекта).
  2. Фильтровать по хранилищу настроек.
  3. Копировать несколько настроек другим пользователям и удалять их.
  4. Редактировать произвольные значения.
  5. Выводить произвольную таблицу значений на форму.
  1. Д обавлена возможность скопировать/вставить настройку другим пользователям
  2. Добавлена возможность удалить настройку(и) пользователя
  3. Убрано ограничение с указанием произвольного значения пользователя
  4. Скопировать/вставить несколько настроек другим пользователям( было : можно копировать только одну настройку и вставить ее другим пользователям, две кнопки "Копировать настройку" и "Вставить настройку"; стало : скопировать несколько настроек другим пользователям по кнопке "Скопировать настройки")
  5. Добавлена возможность детального редактирования настроек следующих типов ( все ссылочные данные, структура, таблица значений, массив, список значений, соответствие, строка, булево, дата, число, массив массивов структур и т.д. )
  6. Фильтровать по части строки пользователя
  7. При редактировании значений через "Открыть настройку" или "Редактировать значение в новой форме" увеличивает размер окна.
  8. Исправление ошибок при открытии настроек в значении соответствия с типом таблицы или дерева значений.

Идеи для разработки :

  • Копировать и удалять варианты отчетов пользователей с хранилищем " ХранилищеВариантовОтчетов " (с таблицей все ок, но не копируются варианты отчетов)
  • Использовать 2 варианта отбора:
    Отбор по части строки.
    Отбор "=".
  • Если в конфигурации в качестве хранилища варианта отчетов используется объект – метаданных, то метод в качестве значения свойства ХранилищеВариантовОтчетов будет выступать объект типа ХранилищаНастроекМенеджер, у которого метода Выбрать нет.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

При открытии вываливается:
256, 55
Тип не определен (ОписаниеОповещения) (1) AlexKoso, платформа должна быть не ниже 8.3. Просто в будущем все модальные вызовы должны быть не модальными. У меня была подобная ошибка "Тип не определен (ОписаниеОповещения)" - долго не мог понять почему не работает, выяснил что "ОписаниеОповещения" - доступен только на клиенте, а я пытался на сервере.

(3) kainder, ну конечно же:
ОписаниеОповещения (NotifyDescription)
Доступность:
Тонкий клиент , веб-клиент, толстый клиент, мобильное приложение(клиент).

Просто у пользователя AlexKoso была запущена платформа 8.2)

Атличная вещь. закоментил // ОписаниеОповещения
и все заработало.
Не пришлось самому писать.

Спасибо за обработку.

Не работает если в поле "Хранилище настроек" указать "Хранилище вариантов отчета".
Выдает ошибку "Метод объекта не обнаружен (Выбрать)". Платформа 8.3. (7) Spacer, Если в конфигурации в качестве хранилища варианта отчетов используется объект – метаданных, то метод в качестве значения свойства ХранилищеВариантовОтчетов будет выступать объект типа ХранилищаНастроекМенеджер., у которого метода Выбрать нет. (8) Что делать в этом случае? Работать с самим объектом, в котором эти настройки хранятся, верно? (9) gavlexx, да, по ключу объекта "Отчет.МойОтчет" программно получить выборку через ХранилищеВариантовОтчетов.Выбрать("Отчет.МойОтчет") либо список через ХранилищеВариантовОтчетов.ПолучитьСписок("Отчет.МойОтчет"). (10) спасибо за быстрый ответ.
Получилось найти тот объект, в котором хранятся настройки отчетов. И открыть напрямую форму этого объекта. В моем случае это был справочник "ВариантыОтчетов". Сбило с толку то, что синоним этого справочника, который я искал в Предприятии, был совсем другой - "Отчеты".
  • Внесены множество изменений касательно детального редактирования настроек. См. в описании.
У меня РИБ, 1 зависимый узел слетел, пришлось создавать занового начальный образ. Я смогу из старого узла перенести настройки пользователя в новый образ? (15) мне кажется это нужно другой обработкой, например в итс "Выгрузка и загрузка пользователей" (16)Она не переносит настройки пользователя форм, отчетов

При копировании системной настройки вываливается в ошибку:

(22)сценарий не дадите или способ исправления? ошибка не воспроизводится. возможно настройки копируете неполноправному пользователю. Ошибка возникает сразу после нажатия кнопки "Копировать настройку". Скрин прилагаю. Платформа 8.3.10.2699.

Только, что скачал обработку.

Можете пояснить, почему менеджер стандартных настроек используется без отбора? В следствии чего, заполнение таблицы происходит чрезмерно долго!

(26)Отбор делал через "ПОДОБНО", чтобы фильтровал по части строки. (26)в плане:
Использовать 2 варианта отбора:
Отбор по части строки. Заполнение таблицы будет происходить долго.
Например, отбирать по пользователю "Администратор" и т.д.
Отбор "=". Заполнение таблицы будет происходить быстро. Например, только по пользователю "Администратор (ОрловАВ)" или "Администратор (СоколовМИ)" и т.д.
Изначальная цель была выявить всех администраторов, ведь администраторов было несколько, так же несколько ключей настроек и объекта.

Просмотры 50180

Загрузки 426

Рейтинг 56

Создание 14.04.15 13:22

Обновление 12.07.19 13:22

№ Публикации 345667

Конфигурация Конфигурации 1cv8

Операционная система Windows

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Да

Разберем, в каких случаях выгоднее автоматизировать раздельный учет и как это сделать, не «ломая» механизмы типовой конфигурации. Вебинар "Автоматизация раздельного учета по 275-ФЗ в 1С:Бухгалтерии 3.0.". 26 ноября 19:00 мск

См. также

Конвертация любых адресов, написанных в свободной форме, к ФИАС Промо

Допустим у нас есть база с адресами клиентов, и написаны они могут быть как душе угодно. С опечатками, без индексов, без разделителей, в совершенно любом формате. Вот было бы здорово иметь функцию, которая одним нажатием кнопки преобразует любую белиберду к строгому представлению адреса по ФИАС? Восстановит индекс, исправит опечатки и вернёт на 100% валидный адрес. Для всех, кто мечтательно сказал "ДА!", выкладываю данную обработку.

2 стартмани

30.06.2020 7695 68 XilDen 15

Управление платформенными обработками (расширение для типовых)

Расширение использует недокументированную возможность для управления платформенными обработками. Например, чтобы подменить "Активные пользователи" или доработать "Конструктор запросов".

1 стартмани

07.10.2021 3385 5 SeiOkami 23

Работа с картами в 1С на примере бесплатной библиотеки Leaflet

Разработка функционала отображения и выбора пунктов доставки на карте прямо в 1С с помощью бесплатной библиотеки Leaflet. Тестирование производилось на платформе 8.3.15.1534 на тонком клиенте.

1 стартмани

31.03.2021 10499 31 Parsec1C 11

Универсальная обработка переноса данных из основной конфигурации в расширение

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

5 стартмани

05.10.2020 10427 65 biz-intel 71

Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо

Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю.

1 стартмани

01.09.2012 66890 1378 AnryMc 46

Улучшенная обработка универсального обмена данными в формате XML (УФ)

Улучшенная обработка "Универсальный обмен данными" с полноценными возможностями СКД для выборки данных (не только для отборов).

1 стартмани

23.06.2020 12978 136 Lem0n 1

Панель команд текущего объекта (документа, справочника и т.д.) со следующим возможностями: Редактор реквизитов, таблиц и движений текущего объекта, Анализ прав доступа к текущему объекту, Поиск ссылок на объект с отборами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Реализована всплывающей панелью в форме объекта. Подключается как расширение конфигурации (*.cfe) либо отдельными обработками.

1 стартмани

01.05.2020 15307 112 sapervodichka 1

Markdown-editor в 1С (с сохранением в HTML)

В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.

1 стартмани

04.07.2019 12853 18 riposte 6

Групповая обработка справочников и документов (Управляемая форма) v 3.6 (+English version) Промо

Старая добрая обработина "Групповая обработка справочников и документов", теперь на Управляемом приложении. Работает на платформе версии не ниже 8.2.16! Работает в интерфейсе "Такси"

3 стартмани

01.06.2013 132264 4970 kser87 352

Работа с файлами (обычная и управляемая форма)

Нужно загрузить файл с клиента на сервер или же, наоборот, файл загрузить с сервера на клиент, а впридачу все это на web-клиенте, да еще и асинхронно? Нет ничего проще, читай далее, как это сделать!

1 стартмани

10.06.2019 41657 222 Xershi 77

Электронная таблица средствами 1С (Версия 2.0)

Функционал электронной таблицы для программ на платформе 1С реализован на основе табличных документов. Функционал реализован в виде обработки. Большую часть формы обработки занимают листы (закладки) с табличными документами, которые выполняет роль электронной таблицы. Листы могут быть добавлены, удалены или переименованы. Ограничение по количеству листов определяется возможностью платформы. В формулах электронной таблицы можно использовать любые языковые конструкции, процедуры и функции 1С, ссылки на другие ячейки электронной таблицы расположенные в том числе и на других листах. Допустимо обращаться к ячейкам электронной таблицы по имени именованной области. В случае использования в формулах электронной таблицы данных из самой таблицы пересчет зависимых ячеек с формулами производится автоматически. Электронную таблицу можно сохранить в файл.

1 стартмани

23.04.2019 23818 78 user706545_kseg1971 40

Удобная консоль регламентных и фоновых заданий

1 стартмани

06.02.2019 22211 211 Alxby 20

Групповая корректировка записей регистров (Управляемое приложение) v 2.1 Промо

Обработка предназначена для групповой корректировки записей регистров Накопления, Сведений и Бухгалтерии. Разработана специально для Управляемого приложения.

3 стартмани

06.09.2013 68810 321 kser87 59

Редактор объектов информационной базы 8.3

Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.57 от 09.10.2021

2 стартмани

23.01.2019 43329 486 ROL32 50

Сравнение pdf-файлов актов сверки

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


Описание: не срабатывает 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 и не указывал
вот тока отрицательный не писал - написано, что будет исключение сразу вызвано

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

Yulunga, Не понял. Так это в расширении (До и После) ? polax, чо? )
"Процедура расш_ПередЗакрытиемПосле"
логично же, что это расширение.
перед тоже пробовал с тем же успехом Точно. Просто не обращаешь внимания на имя процедуры, только на код. Извини0
В родной процедуре тоже есть ОписаниеОповещения? Для начала попробуй Вместо. Если заработает, значит дело именно в ОписанииОповещения родной процедуры. Тогда либо использовать ИзменениеИКонтроль либо конкретней разбираться с После (куда ее поставить)

там есть. но там она про другое.
типа меняешь когда адрес персонажа, то она смотрит - если модифицированность, то записать адрес
а мне надо навесить ещё вопрос - а не записать ли этот новый адрес в адрес для информирования и адрес проживания?
и по ответу да - записать
это второй шаг, который тоже хз как делать, но пока до него не дошёл )

поэтому ставил и до и после. а вместо нельзя. там оно своё. и тоже вызывает оповещение.

помогло изменить режим открытия окна (формы) на независимый (было блокировать окно владельца)

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

Оповещения Chrome
Добрый день, Кто нибудь в курсе как добавлять свою страничку в список оповещения Chrome.(которая в.

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

Оповещения Evolution
На Debian 9 почтовый клиент Evolution работает так как нужно: при приходе письма выдаётся.

Система оповещения
Всем привет. Есть задача. В квартире в соседней комнате мама-инвалид. Необходимо, чтобы у нее под.

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

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

Основным инструментом отказа от модальности стало ОписаниеОповещения.

Как работает ОписаниеОповещения

Для начала разберем как работает платформа с модальными окнами на примере метода Вопрос(). Напишем не хитрый код, в котором пользователю показывается диалог с вопросом и вариантами ответа Да и Нет.

В данном случае пользователю будет показан диалог, а работа клиентской части будет полностью приостановлена до момента, пока пользователь не ответит на вопрос.

Диалог с ОписаниеОповещения

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

Напишем аналогичный пример, но уже без модального вызова. Будем использовать метод ПоказатьВопрос(), которому передадим ОписаниеОповещения.

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

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

Описание функционала от разработчиков на ИТС

Синтаксис

Конструктор ОписаниеОповещения имеет 5 необязательных параметров:

Вызываемая процедура и её параметры

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

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

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

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

Выполнение обработки оповещения

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

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

Работа на сервере

ОписаниеОповещения не доступно на сервере, но в качестве исполняемой процедуры можно указать серверный метод. В справке нет явного указания о данной возможности, но и противоречий нет.

Возможные ошибки

Не найден экспортируемый метод

Если вызываемая процедура не экспортная, то при исполнении будет вызвано исключение. Решается указанием экспортной процедуры.

Не найден экспортируемый метод

Количество параметров 1. Ожидаемое количество – 2

Если вызываемая процедура будет объявлена с одним параметром, то при исполнении будет вызвано исключение. Решается добавлением второго параметра в вызываемую процедуру.

Количество параметров 1. Ожидаемое количество – 2

Примеры использования ОписаниеОповещения

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

Оповещение о закрытии формы

Реализуем функционал открытия формы подбора с дальнейшей обработкой результата

Ввод значений и предупреждения

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

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

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

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

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

Отказ от использования модальных окон

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

Развитие продуктов «1С» и платформы «1С:Предприятие»

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

Эта среда имеет ряд ограничений, которые отсутствуют в среде настольных приложений:

  • Ограничения программ, используемых для работы в Интернете (браузеров),
  • Ограничения, связанные с качеством связи между клиентским приложением и сервером.

Приложения, предназначенные для работы через Интернет, должны быть построены с учетом этих ограничений, поэтому их модель отличается от настольных приложений.

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

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

Проблемы поддержки модальных окон в среде Интернет

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

Такие окна не входят в стандарт веб-разработки, поэтому не поддерживаются всеми браузерами, при помощи которых пользователь получает доступ к приложениям «1С».

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

Такие средства были добавлены в платформу «1С:Предприятие» в версии 8.3.3.

Несколько терминов и определений

Далее в статье будут использоваться следующие термины:

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

Общие принципы при переходе на асинхронную модель построения бизнес-логики

В синхронной модели код, зависящий от выбора пользователя, выполняется последовательно.

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

Таким образом, получается, что такой код разбивается на две процедуры:

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

Новые асинхронные средства платформы для взаимодействия с пользователем

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

Для этого в платформу был добавлен новый тип объектов - ОписаниеОповещения .

Этот объект имеет конструктор со следующими параметрами:

  • ИмяПроцедуры - Указывает имя процедуры-обработчика оповещения, которая будет выполнена после получения ответа пользователя,
  • Модуль -Указывает в каком модуле расположена эта процедура. Этот параметр может иметь следующие типы:
    • УправляемаяФорма - процедура расположена в модуле управляемой формы,
    • ОбщийМодуль - процедура расположена в общем неглобальном клиентском модуле,
    • КомандаКомандногоИнтерфейса - процедура расположена в модуле команды.

    Для получения значения модуля у вышеперечисленных объектов добавлено общее свойство ЭтотОбъект.

    • ДополнительныеПараметры - значение любого типа, которое будет передано в процедуру-обработчик оповещения при ее вызове.

    При вызове указанной процедуры системой ей через параметры передается результат выбора пользователя и значение ДополнительныеПараметры . В некоторых случаях результат выбора может отсутствовать (метод ПоказатьПредупреждение() ) или передаваться несколькими параметрами (метод НачатьПомещениеФайла() ).

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

    Группа этих методов отличается следующим:

    • Их имена начинаются со слова Показать либо Начать, например ПоказатьВопрос() вместо Вопрос() , НачатьПомещениеФайла() вместо ПоместитьФайл() , и так далее,
    • Первым параметром принимают объект ОписаниеОповещения, указывающий на процедуру модуля, которая будет выполнена после того как пользователь сделает выбор в блокирующем окне,
    • Не возвращают значения, вместо этого результат выбора пользователя будет передан в процедуру модуля, описанную объектом ОписаниеОповещения.

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

    • Добавлено свойство формы ОписаниеОповещенияОЗакрытии , которое указывает на процедуру модуля, которая будет вызвана при ее закрытии. Также это значение можно установить при помощи нового параметра метода ОткрытьФорму() ,
    • Добавлен вариант режима открытия окна формы - БлокироватьВеcьИнтерфейс , при использовании которого открываемая форма заблокирует все окна, а не только окно родителя.

    Дополнительно реализован новый метод глобального контекста ВыполнитьОбработкуОповещения(), который позволяет вручную осуществить вызов процедуры-обработчика. Это позволяет реализовать общую процедуру, выполняющую опрос пользователя, которая вызывается из разных мест.

    Особенности реализации асинхронной бизнес-логики

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

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

    Типовые сценарии при переходе на асинхронную модель

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

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

    В рамках асинхронной модели с использованием новых средств этот код будет выглядеть следующим образом:

    Процедура ДобавитьХарактеристику ( Команда )
    //Выберем вид характеристики
    Оповещение = Новый ОписаниеОповещения (
    "ДобавитьХарактеристикуЗавершение" ,
    ЭтотОбъект ) ;
    ОткрытьФорму ( "ПланВидовХарактеристик.ВидыХарактеристик.ФормаВыбора" ,
    , , , , , Оповещение , РежимОткрытияОкнаФормы . БлокироватьВеcьИнтерфейс ) ;
    КонецПроцедуры

    Процедура ДобавитьХарактеристикуЗавершение ( ВидХарактеристики , Параметры ) Экспорт
    Если ВидХарактеристики = Неопределено Тогда
    Возврат ;
    КонецЕсли ;

    //Проверим наличие
    Если ОписаниеХарактеристик . НайтиСтроки (
    Новый Структура ( "ВидХарактеристики" , ВидХарактеристики ) ) . Количество ( ) > 0 Тогда
    ПоказатьПредупреждение ( , НСтр ( "ru = 'Характеристика уже существует!'" , "ru" ) ) ;
    Возврат ;
    КонецЕсли ;


    //Добавим вид характеристики на форму
    ДобавитьХарактеристикуНаСервере ( ВидХарактеристики ) ;
    КонецПроцедуры

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

    Вопрос пользователю при закрытии формы

    Более сложной является ситуация, когда нужно о чем-то спросить пользователя во время обработчика события, например события закрытия формы. В асинхронной модели мы не можем сразу получить результат выбора, чтобы указать дальнейшие действия системе при помощи значения параметра Отказ .

    В таких случаях доступен следующий алгоритм:

    1. Создать в форме переменную, которая будет хранить ответ пользователя при ее закрытии,
    2. Если ответа получено еще не было (переменная содержит Неопределено ), то в обработчике ПередЗакрытием нужно показать окно выбора пользователю, например, при помощи метода ПоказатьВопрос() и прервать закрытие формы, установив Отказ=Истина ,
    3. В процедуре-обработчике выбора следует установить переменной результат выбора и вызвать метод Закрыть() формы,
    4. Если переменная содержит какое-либо значение, то это значит, что идет процесс закрытия, инициированный на предыдущем шаге, результат выбора от пользователя уже получен и обработчик ПередЗакрытием может использовать его значение.

    Ниже приведен пример кода, реализующего этот алгоритм:

    Вопрос пользователю во вложенных процедурах

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

    Предположим, существует общая функция, которая возвращает текст, в зависимости от ответа пользователя:

    В асинхронной модели эту функцию и ее вызовы следует реализовывать следующим образом:

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

    Заключение

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

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

    Читайте также: