IE 2018

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

Обмен - Интеграция с WEB

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

7
В статье описывается библиотека, реализующая механизм перечислений в 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 с минимальными переделками.

7

См. также

Комментарии
Избранное Подписка Сортировка: Древо
2. baton_pk 376 05.06.18 23:24 Сейчас в теме
Как можно увидеть, код является переносимым, между OneScript и 1С:Предприятие.

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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