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

16.08.22

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

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

Скачать исходный код

Наименование Файл Версия Размер
Тест асинхронностию.epf
.epf 5,79Kb
0
.epf 5,79Kb Скачать
Тест асинхронности.drt
.drt 5,09Kb
0
.drt 5,09Kb Скачать

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

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

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

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


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


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


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

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

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

 

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

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

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

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

См. также

Как вызвать скрипты на python в 1С по технологии NativeAPI

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

Будем писать свои скрипты на питоне и запускать их на 1С.

15.04.2024    1710    YA_418728146    11    

54

Зачем нам 1С:Элемент

Мобильная разработка Языки и среды Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    9912    ROk_dev    67    

41

(Не) Строгая типизация 1С

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

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

16.01.2024    4647    SeiOkami    21    

55

Простое приложение на Dart

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

Пример небольшого приложения, с которого можно начать изучать язык программирования Dart.

08.08.2023    3401    acvatoris    6    

14

Статический анализатор кода 1С на Си

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

Написание статического анализатора для 1С традиционным способом на Си.

30.06.2023    3074    prohorp    15    

12

Сквозная задача на Исполнителе - часть первая (IMAP)

Языки и среды Абонемент ($m)

Поставили нам задачу - вынести на отдельный сервер функционал получения заказов от клиентов по электронной почте, парсинг полученных XLS в приемлемый вид и трансформация заказов в красивый JSON, понятный нашей учетной системе на 1С. Всю эту красоту желательно запустить в отдельном докер - контейнере, по возможности не тратя лицензии, поэтому отдельно стоящую конфигурацию на БСП отвергаем сразу. Можно было бы собрать всё на Apache Airflow или Apache NiFi, но решили попробовать реализовать всю логику без Open Source, будем делать свой ETL, с Исполнителем, который в версии 3.0 научился взаимодействовать с электронной почтой по IMAP. Начнем с середины - сначала напишем скрипты, а потом соберем их в рабочую конструкцию

1 стартмани

01.06.2023    1957    0    kembrik    2    

7

1С# - Расширяем код 1С кодом на C#

Языки и среды Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Вставки кода на C# внутри кода на 1С.

7 стартмани

07.04.2023    9512    4    SerVer1C    56    

43

Независимая разработка совместимых компонент на ORM 1С – миф или истина где-то в аннотациях Java?

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

При работе с 1С ORM (object relation mapping) все время преследует ощущение постоянного создания монолитного приложения — один раз привязался к какой либо сущности (например, справочник Контрагенты), и весь код заполнен ссылками на эту конкретную реализацию. Можно ли независимо разрабатывать в ORM совместимые между собой справочник «Контрагентов» и использующий его документ «Платежное поручение», но при этом избежать жестких зависимостей? Спасут ли нас микросервисы? Пример на аннотациях Java демонстрирует, как это возможно делать.

13.03.2023    1073    1CUnlimited    0    

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