Разбор трассировки асинхронных вызовов в дракон-схемах

16.08.22

Разработка - Языки и среды

1С развивается. Появились асинхронные вызовы. Как аналитику, работающему с определенной нотацией, которая описывает логику разработки, нужно их описать. Подготовил для этого небольшой пример, как асинхронные вызовы предлагается описывать в языке ДРАКОН. Тестировалось на платформе 1С:Предприятие 8.3 (8.3.21.1302).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Тест асинхронностию.epf
.epf 5,79Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.
Тест асинхронности.drt
.drt 5,09Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

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

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

  • прохождение дракон-схемы должно повторять поведение программы при трассировке.
  • дракон-схема описывает логику построения кода с помощью понятных комментариев и подписей.
  • дракон-схемы связаны между собой по аналогии с вызовами процедур и функций и хранят путь до этих процедур и функций
  • дракон-схемы на одном листе соответствуют одному месту (например, "общий модуль" или "модуль формы")

Рассмотрим сначала сам код примера асинхронного вызова (обработка во вложении) из модуля формы:


&НаКлиенте
Процедура ЗапуститьТест(Команда)
	
	ТестАсинхронности();	
	
КонецПроцедуры


&НаКлиенте
Асинх Процедура ТестАсинхронности()
	
	Об1 = КопироватьФайлАД(1);
	Об2 = КопироватьФайлАД(2);
	Об3 = КопироватьФайлАД(3);
	
	Результат1 = Ждать Об1;
	Результат2 = Ждать Об2;
	Результат3 = Ждать Об3;
	
	
КонецПроцедуры


&НаКлиенте
Асинх Функция КопироватьФайлАД(НомерФайла) 
	
	Об4 = НайтиФайлыАсинх("C:\", "*", Ложь); 

    Результат = Ждать Об4;	
	
	Возврат НомерФайла;
	
КонецФункции

Теперь приведу дракон-схему, описывающую этот код:

 

Жирной линией обозначен путь трассировки при выполнении схемы.

Получается, что сначала мы отправляем на выполнение три асинхронных потока, а затем одномоментно приходит три результата наших вызовов.

Дракон-схему для программы ИС Дракон вы найдете во вложении.

ИС Дракон Асинхронные вызовы Анализ кода Трассировка язык дракон аналитика контроль разработки

См. также

EDT Языки и среды Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Решил перейти на EDT, чтобы повысить эффективность разработки? А теперь приостановись и выдохни! Я расскажу сейчас о том, из-за чего многие новички в EDT (будучи матёрыми кодерами в конфигураторе) воспринимают встречу с новшествами так, будто их с велосипеда пересадили за штурвал Боинга.

16.09.2021    29673    stas_ganiev    22    

114

Языки и среды Системный администратор Программист Бесплатно (free)

PowerShell. Что, зачем, как и почему? И причем тут 1С?

16.05.2021    25512    Infostart    31    

177

Математика и алгоритмы Языки и среды Программист Платформа 1С v8.3 Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    6171    comol    10    

31

Языки и среды Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

В статье мы передадим данные в JavaScript и получим результат обратно в 1С-объекты средствами JSON. Также "поиграем" с переданными данными.

02.01.2021    20546    John_d    21    

138

Языки и среды Программист Бесплатно (free)

Тенденции современности - это SaaS и микросервисы. Про SaaS не слышал только ленивый, но на всякий случай, Ленивый, это для тебя: SaaS это облачная модель работы с сервисами по подписке. У 1С это технология 1С:Фреш. Но мы поговорим не о SaaS и не об 1С:Фреш, а о методологии "Приложение двенадцати факторов", которая родилась для облегчения жизни разработчикам SaaS приложений. Вы спросите: "А где здесь про 1С?". Давайте разберемся.

19.11.2020    2206    Lars Ulrich    0    

4

WEB-интеграция Языки и среды Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Абонемент ($m)

Инструмент для создания Json-схем по формату 4 драфта. В современном мире модно пользоваться Http-сервисами и Json, но если для старого доброго xml все уже придумано и xsd схемы можно рисовать в 1С из коробки, то с json и его форматом Json schema все не так хорошо. Зачастую нужно стандартизировать формат сообщений обмена json и для этого можно воспользоваться Конструктором. Есть возможность проверить свой Json на соответствие схеме. Схемы после выгрузки проходят валидацию в Liquid studio 2020. Стандартизируйте обмен Json с комфортом и удобством.

1 стартмани

16.07.2020    14886    56    Segate    11    

22

Языки и среды Программист Платформа 1С v8.3 Бесплатно (free)

На прошлой неделе произошел долгожданный громкий релиз в мире 1С: вышла бета версия 1С:Исполнителя. И пусть не оправдались все ожидания после анонса, пусть язык еще сырой, что-то сделать на нем очень интересно. Посмотрим, что это такое, и даже произведем небольшую модернизацию языка (Velocity-pad Costilization).

23.06.2020    24425    CyberCerber    294    

52
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. o.nikolaev 216 02.01.23 10:11 Сейчас в теме
А не пробовали плагин для EDT написать - чтобы прикрутить Дракон к 1С-ине?
2. o.nikolaev 216 02.01.23 10:22 Сейчас в теме
Дракон мне очень понравился, но вот стыковка с ПО - сход с повышенного уровня абстракции собственно "в код" - которое подразумевает интерактивную работу пользователя с командными элементами, особенно если форма насыщена ими, например какой-нибудь развесистый АРМ - пока не представляется реализуемой. Ибо, если доводить идею до полной автоматизации, то наличие присутствия человека не подразумевается вообще, собственно как в той области для которой Дракон и был придуман - автоматические системы управления космическими аппаратами. И тут тогда вопрос - можно ли натянуть сову на глобус? Т.е. описание бизнес-процессов - да, видимо ложится хорошо, но укладка этого благолепия в программный код текущего уровня абстракции - 1с-ный код типовой конфигурации - так и не решена. А жаль, так как повышение уровня-то может позволить производительность продуктовой разработки поднять сильно.
Оставьте свое сообщение