Перечисления в http-сервисах OneScript

03.06.18

Разработка - OneScript

В статье описывается библиотека, реализующая механизм перечислений в http-сервиах OneScript, аналогичный механизму платформы 1С:Предприятие

Введение

Тип данных Перечисление активно используется как программировании на платформе 1С:Предприятие, так и в OneScript. Однако,  реализация данного типа несовместима, поэтому была создана библиотека, реализующая тип Перечисление в http-сервисах OneScript, аналогично платформе 1С:Предприятие.

Описание

Библиотека входит в состав набора библиотек, расширяющих возможности http-сервисов OneScript.  Перечисления организованы в виде набора текстовых файлов, находящихся в определенной папке на диске и имеющих следующую схему именования:

ИмяПеречисления.txt

Где ИмяПеречисления – это имя перечисления, которое используется для доступа из внутреннего языка.

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

 
ЗначениеПеречисления1

ЗначениеПеречисления2

ЗначениеПеречисления3

Установка

Установка осуществляется копированием файлов dll в папку Bin веб-приложения. Затем, необходимо внести нижеследующие изменения в секцию <appSettings>, файла web.config:

 
<!-- Определяем каталог, где расположены файлы перечислений -->

<add key="enumsPath" value="~/Перечисления/" />

<!-- Необходимо для построения коллекции Перечисления -->

<add key="propertiesInjector;Enums;OneScript.HTTPService.Enums" value="" />

<!-- Подключаем сборку -->

<add key="Enums" value="attachAssembly" />

Использование

Пример использования перечислений в OneScript представлен ниже:

Перечисление1.txt

 
Значение1

Значение2

Значение3

Перечисление2.txt

 
Значение1

Значение2

Пример кода:

 
Результат = Перечисления.Перечисление1.Значение1 = Перечисления.Перечисление1.Значение1;

// Результат = Истина

Результат = Перечисления.Перечисление1.Значение1 = Перечисления.Перечисление2.Значение1;

// Результат = Ложь

Как можно увидеть, код является переносимым, между OneScript и 1С:Предприятие.

Заключение

Надеюсь, что настоящая библиотека позволит вам использовать наработки из 1С:Предприятие в ваших приложениях OneScript с минимальными переделками.

web http-сервисы onescript aspnetengine

См. также

Групповая разработка (Git, хранилище) OneScript Программист Платформа 1С v8.3 Бесплатно (free)

Скрипт для работы с SonarQube и локальным репозиторием Git.<br> Цель проекта – возможность выполнить быструю проверку качества кода перед тем, как помещать доработки в рабочее хранилище. В Sonar и Git выгружается не вся конфигурация, а только объекты из заданного списка.<br> https://github.com/vkrivov/go/

02.07.2024    2435    vkrivov@yandex.ru    8    

18

DevOps и автоматизация разработки OneScript Системный администратор Программист Стажер Бесплатно (free)

Рассмотрим создание самоформирующейся документации через комментарии и соглашения: как это сделать и зачем, с описанием полного цикла от исходников конфигурации до странички в интернете

17.06.2024    3932    bayselonarrend    2    

60

OneScript Программист Стажер Бесплатно (free)

Поговорим про меню, спиннеры, прогресс-бары и прочие свистелки для CLI приложений на OneScript

20.05.2024    2445    bayselonarrend    18    

70

Групповая разработка (Git, хранилище) OneScript Системный администратор Программист Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    2053    bayselonarrend    3    

41

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    3967    kamisov    21    

62

OneScript Программист Бесплатно (free)

Думаете, на OneScript неудобно создавать сложные инфраструктурные приложения? Ошибаетесь. Благодаря фреймворку ОСень за последний год экосистема библиотек, упрощающих написание собственных приложений, существенно выросла. Расскажем о самых передовых технологиях OneScript. Спойлер: будет много рефлексии, мета-аннотаций, желудей, напильников и дубов с завязями.

21.11.2023    3751    NikitaIvanchenko    16    

48

Инструментарий разработчика Работа с интерфейсом OneScript Программист Россия Бесплатно (free)

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

31.07.2023    2352    ahyahy    8    

32

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Программист Бесплатно (free)

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    4630    ardn    3    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 04.06.18 08:14
Сообщение было скрыто модератором.
...
2. dmpas 418 05.06.18 23:24 Сейчас в теме
Как можно увидеть, код является переносимым, между OneScript и 1С:Предприятие.

Ай-да такие же перечисления, но не из текстового файла, а из xml выгрузки конфигурации
3. blackhole321 1310 05.06.18 23:47 Сейчас в теме
(2)Не понял сути вопроса. Перечисления да, берутся из выгрузки конфигуратора. В onescript значение представлено строкой вида имяперечисления.значениеперечисления
4. dmpas 418 06.06.18 07:50 Сейчас в теме
(3) Эти текстовые файлы "Перечисление1.txt" и "Перечисление2.txt" - это разве выгрузка из конфигуратора??
5. blackhole321 1310 06.06.18 08:38 Сейчас в теме
(4)ну преобразованная из xml в тхт. Эт конечно не оригинальный формат 1с
6. dmpas 418 06.06.18 08:55 Сейчас в теме
(5)
Эт конечно не оригинальный формат 1с

вот к этому я и клоню - к чему лишние преобразования?
7. blackhole321 1310 06.06.18 09:06 Сейчас в теме
(6)там много лишней инфы. К тому же проще прочитать при выполнении в ванскрипте текстовый файл как массив строк, чем морочиться с xml 1с
8. dmpas 418 06.06.18 09:12 Сейчас в теме
(7)
там много лишней инфы

зато минимум лишних промежуточных операций.


(7)
К тому же проще прочитать

xml в текст каждый раз переводить, а читалку один раз поднатужиться и сделать - я могу даже вПёРнуть попробовать, если тебе лень.
9. blackhole321 1310 06.06.18 09:18 Сейчас в теме
Да он переводится то при создании приложения конфой. В самом приложении на сайте это уже текстовый файл.

Ну можно попробовать и читалку xml
10. blackhole321 1310 06.06.18 09:19 Сейчас в теме
(9)только штатные средства c# как-то не очень дружелюбно отнеслись к xml 1с
11. ktb 622 19.06.18 09:42 Сейчас в теме
Как еще 1 вариант для onescript - модуль Перечисления.os вида:

Перем ДаНет Экспорт;

Процедура ДобавитьЗначениеПеречисления(Перечисление, Знач Имя, Знач Значение)
	
	Если НЕ ТипЗнч(Перечисление) = Тип("Структура") Тогда
		Перечисление = Новый Структура();
	КонецЕсли;

	Перечисление.Вставить(Имя, Значение);

КонецПроцедуры // ДобавитьЗначениеПеречисления()

Процедура ЗаполнитьДаНет()

	ДобавитьЗначениеПеречисления(ДаНет, "Да"	, "yes");
	ДобавитьЗначениеПеречисления(ДаНет, "Нет"	, "no");

КонецПроцедуры // ЗаполнитьДаНет()

Процедура Инициализация()

	ЗаполнитьДаНет();

КонецПроцедуры // Инициализация()

Инициализация();
Показать


Далее вызываем как в 1С:

Значение = Перечисления.ДаНет.Да;
12. blackhole321 1310 19.06.18 09:46 Сейчас в теме
(11)Это да, только этот код не будет переносимым
13. ktb 622 19.06.18 13:22 Сейчас в теме
(12) Но если пофантазировать, то можно сделать обработку-генератор кода перечислений из 1С для oscript :-)
14. blackhole321 1310 19.06.18 14:13 Сейчас в теме
Ну в принципе - да, можно.
Оставьте свое сообщение