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

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;	
	
	Возврат НомерФайла;
	
КонецФункции

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

 

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

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

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

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

См. также

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

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

15.04.2024    4328    YA_418728146    13    

62

Мобильная разработка Языки и среды 1С:Элемент Программист Бесплатно (free)

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

19.03.2024    19524    ROk_dev    74    

44

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

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

16.01.2024    7669    SeiOkami    25    

62

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

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

08.08.2023    4308    acvatoris    6    

15

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

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

30.06.2023    3560    prohorp    15    

12

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

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

1 стартмани

01.06.2023    2349    0    kembrik    2    

7

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

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

7 стартмани

07.04.2023    10663    4    SerVer1C    58    

45

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

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

13.03.2023    1346    1CUnlimited    0    

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