From 9d35fc806b49a8044a655dc954dac8c31e5ee0e6 Mon Sep 17 00:00:00 2001 From: Nikita Ivanchenko Date: Thu, 23 Mar 2023 13:43:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BE=D0=BB=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D0=B9?= =?UTF-8?q?,=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=8D?= =?UTF-8?q?=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.MD | 91 +++++++++++++++ packagedef | 2 +- ...21\201\321\202\320\262\320\270\320\265.os" | 10 -- ...20\260\321\201\321\201\320\270\320\262.os" | 4 +- ...21\201\321\202\320\262\320\270\320\265.os" | 14 +++ ...20\272\321\202\321\203\321\200\320\260.os" | 4 +- ...21\207\320\265\320\275\320\270\320\271.os" | 4 +- ...20\242\320\270\320\277\320\276\320\262.os" | 104 ++++++++++++++++++ ...20\242\320\270\320\277\320\276\320\262.os" | 43 -------- tests/alltests.os | 43 +++++++- ...20\265\320\273\321\203\320\264\321\214.os" | 36 ++++++ 11 files changed, 295 insertions(+), 60 deletions(-) delete mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265.os" rename "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\234\320\260\321\201\321\201\320\270\320\262.os" => "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\234\320\260\321\201\321\201\320\270\320\262.os" (60%) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265.os" rename "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260.os" => "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260.os" (60%) rename "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\242\320\260\320\261\320\273\320\270\321\206\320\260\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.os" => "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\242\320\260\320\261\320\273\320\270\321\206\320\260\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.os" (62%) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\220\320\275\320\275\320\276\321\202\320\270\321\200\320\276\320\262\320\260\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262.os" delete mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\220\320\275\320\275\320\276\321\202\320\270\321\200\320\276\320\262\320\260\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262.os" diff --git a/README.MD b/README.MD index 05c81e6..c276d17 100644 --- a/README.MD +++ b/README.MD @@ -27,14 +27,68 @@ ## Поддерживаемые типы +### Массив + ```&Массив(Размер)``` - В поле внедряется новый массив. Параметр ```Размер``` необязательный, позволяет задать размер массива. +Допускается добавление элементов аннотацией ```Элемент(ЗначениеЭлемента)``` + +Добавление аннотации ```&Фиксированный``` превращает коллекцию в фиксированную + +```bsl +&Фиксированный +&Массив +&Элемент("Элемент массива") +Перем ФиксированныйМассив Экспорт; +``` + +### Соответствие + ```&Соответствие``` - В поле внедряется новое соответствие. +Допускается вставка элементов через аннотацию ```&КлючИЗначение("ИмяКлюча", Значение)``` + +Добавление аннотации ```&Фиксированный``` превращает коллекцию в фиксированную + +```bsl +&Соответствие +&Фиксированный +&КлючИЗначение("Ключ", 1) +Перем ФиксированноеСоответствие Экспорт; +``` + +### Структура + ```&Структура(Ключи)``` - В поле внедряется новая структура. Параметр ```Ключи``` необязательный. Строка, содержащая список ключей структуры, разделенные запятой "```,```" +Допускается вставка элементов через аннотацию ```&КлючИЗначение("ИмяКлюча", Значение)``` + +Добавление аннотации ```&Фиксированный``` превращает коллекцию в фиксированную + +```bsl +&Структура +&Фиксированный +&КлючИЗначение("Ключ", 1) +Перем ФиксированнаяСтруктура Экспорт; +``` + +### ТаблицаЗначений + ```&ТаблицаЗначений(Колонки)``` - В поле внедряется новая таблица значений. Параметр ```Колонки``` необязательный. Строка, содержащая список имен колонок, разделенных запятой "```,```" +Альтернативный способ добавления колонки, через аннотацию ```&Колонка("ИмяКолонки")```. + +Есть возможность добавить строки таблицы через аннотацию ```&СтрокаТаблицы(ИмяКолонки1 = "Значение 1", ИмяКолонки2 = "Еще значение")```. + +```bsl +&ТаблицаЗначений +&Колонка("ДеньНедели") +&Колонка("НомерДня") +&СтрокаТаблицы(ДеньНедели = "Понедельник", НомерДня = 1) +&СтрокаТаблицы(ДеньНедели = "Вторник", НомерДня = 2) +Перем ЗаполненнаяТаблица Экспорт; +``` + ## Подключение и использование В точке входа вашего приложения подключить библиотеку @@ -50,19 +104,36 @@ Пример внедрения типов в поля желудя: ```bsl + &Массив Перем ПустойМассив Экспорт; &ТаблицаЗначений("Колонка1, Колонка2") +&Колонка("Колонка2") +&Колонка("Колонка3") Перем ТЗ Экспорт; +&ТаблицаЗначений +&Колонка("ДеньНедели") +&Колонка("НомерДня") +&СтрокаТаблицы(ДеньНедели = "Понедельник", НомерДня = 1) +&СтрокаТаблицы(ДеньНедели = "Вторник", НомерДня = 2) +Перем ЗаполненнаяТаблица Экспорт; + &ТаблицаЗначений Перем ТЗБезКолонок Экспорт; &Соответствие Перем Соответствие Экспорт; +&Соответствие +&КлючИЗначение("Ключ1", 1) +&КлючИЗначение("Ключ2", "2") +Перем ЗаполненноеСоответствие Экспорт; + &Структура("Ключ1, Ключ2") +&КлючИЗначение("Ключ2", 2) +&КлючИЗначение("Ключ3", "3") Перем СтруктураСКлючами Экспорт; &Структура @@ -70,6 +141,26 @@ Перем МассивСРазмером1 Экспорт; +&Массив(1) +&Элемент("а") +&Элемент(1) +Перем ЗаполненныйМассив Экспорт; + +&Фиксированный +&Массив +&Элемент(1) +Перем ФиксированныйМассив Экспорт; + +&Структура +&Фиксированный +&КлючИЗначение("Ключ", 1) +Перем ФиксированнаяСтруктура Экспорт; + +&Соответствие +&Фиксированный +&КлючИЗначение("Ключ", 1) +Перем ФиксированноеСоответствие Экспорт; + &Желудь Процедура ПриСозданииОбъекта(&Массив(1) _Массив) МассивСРазмером1 = _Массив; diff --git a/packagedef b/packagedef index b177e80..319b1d7 100644 --- a/packagedef +++ b/packagedef @@ -5,7 +5,7 @@ Описание.Имя("autumn-annotation-types") - .Версия("1.0.0") + .Версия("1.0.1") .Автор("nikita ivanchenko") .АдресАвтора("https://github.com/Nivanchenko") .Описание("Набор аннотаций ОСени, для удобной инициализации стандартных типов") diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265.os" deleted file mode 100644 index ef26d74..0000000 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265.os" +++ /dev/null @@ -1,10 +0,0 @@ - -Процедура ПриРазворачиванииАннотации(ОпределениеАннотации, ПодчиненныеАннотации, ТипВладельцаСвойств, Свойство) Экспорт - -КонецПроцедуры - -&Аннотация("Соответствие") -&Пластилин(Значение = "Соответствие") -Процедура ПриСозданииОбъекта(Значение = "") - -КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\234\320\260\321\201\321\201\320\270\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\234\320\260\321\201\321\201\320\270\320\262.os" similarity index 60% rename from "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\234\320\260\321\201\321\201\320\270\320\262.os" rename to "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\234\320\260\321\201\321\201\320\270\320\262.os" index bd7a5e0..4d5f676 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\234\320\260\321\201\321\201\320\270\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\234\320\260\321\201\321\201\320\270\320\262.os" @@ -4,11 +4,13 @@ Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Пластилин"); Аннотация.Параметры[1].Значение = Размер; + Аннотация.Параметры[2].Значение = РаботаСАннотациями.НайтиАннотации(Свойство.Аннотации, "Элемент"); + Аннотация.Параметры[3].Значение = НЕ РаботаСАннотациями.НайтиАннотацию(Свойство.Аннотации, "Фиксированный") = Неопределено; КонецПроцедуры &Аннотация("Массив") -&Пластилин(Значение = "Массив", Блестяшка = 0) +&Пластилин(Значение = "Массив", Блестяшка = 0, Блестяшка = Неопределено, Блестяшка = Ложь) Процедура ПриСозданииОбъекта(Значение = 0) Размер = Значение; КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265.os" new file mode 100644 index 0000000..11215df --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265.os" @@ -0,0 +1,14 @@ + +Процедура ПриРазворачиванииАннотации(ОпределениеАннотации, ПодчиненныеАннотации, ТипВладельцаСвойств, Свойство) Экспорт + + Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Пластилин"); + Аннотация.Параметры[1].Значение = РаботаСАннотациями.НайтиАннотации(Свойство.Аннотации, "КлючИЗначение"); + Аннотация.Параметры[2].Значение = НЕ РаботаСАннотациями.НайтиАннотацию(Свойство.Аннотации, "Фиксированный") = Неопределено; + +КонецПроцедуры + +&Аннотация("Соответствие") +&Пластилин(Значение = "Соответствие", Блестяшка = "", Блестяшка = "",) +Процедура ПриСозданииОбъекта(Значение = "") + +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260.os" similarity index 60% rename from "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260.os" rename to "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260.os" index 69f2886..d474525 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260.os" @@ -4,11 +4,13 @@ Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Пластилин"); Аннотация.Параметры[1].Значение = Ключи; + Аннотация.Параметры[2].Значение = РаботаСАннотациями.НайтиАннотации(Свойство.Аннотации, "КлючИЗначение"); + Аннотация.Параметры[3].Значение = НЕ РаботаСАннотациями.НайтиАннотацию(Свойство.Аннотации, "Фиксированный") = Неопределено; КонецПроцедуры &Аннотация("Структура") -&Пластилин(Значение = "Структура", Блестяшка = "") +&Пластилин(Значение = "Структура", Блестяшка = "", Блестяшка = "", Блестяшка = "") Процедура ПриСозданииОбъекта(Значение = "") Ключи = Значение; КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\242\320\260\320\261\320\273\320\270\321\206\320\260\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\242\320\260\320\261\320\273\320\270\321\206\320\260\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.os" similarity index 62% rename from "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\242\320\260\320\261\320\273\320\270\321\206\320\260\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.os" rename to "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\242\320\260\320\261\320\273\320\270\321\206\320\260\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.os" index 1e2e2f9..2a16538 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\242\320\260\320\261\320\273\320\270\321\206\320\260\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\270\320\277\320\242\320\260\320\261\320\273\320\270\321\206\320\260\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271.os" @@ -4,11 +4,13 @@ Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Пластилин"); Аннотация.Параметры[1].Значение = Колонки; + Аннотация.Параметры[2].Значение = РаботаСАннотациями.НайтиАннотации(Свойство.Аннотации, "Колонка"); + Аннотация.Параметры[3].Значение = РаботаСАннотациями.НайтиАннотации(Свойство.Аннотации, "СтрокаТаблицы"); КонецПроцедуры &Аннотация("ТаблицаЗначений") -&Пластилин(Значение = "ТаблицаЗначений", Блестяшка = "") +&Пластилин(Значение = "ТаблицаЗначений", Блестяшка = "", Блестяшка = "", Блестяшка = "") Процедура ПриСозданииОбъекта(Значение = "") Колонки = Значение; КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\220\320\275\320\275\320\276\321\202\320\270\321\200\320\276\320\262\320\260\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\220\320\275\320\275\320\276\321\202\320\270\321\200\320\276\320\262\320\260\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262.os" new file mode 100644 index 0000000..ea8e588 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\220\320\242_\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\220\320\275\320\275\320\276\321\202\320\270\321\200\320\276\320\262\320\260\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262.os" @@ -0,0 +1,104 @@ + +&Дуб +Процедура ПриСозданииОбъекта() + +КонецПроцедуры + +&Завязь +&Характер("Компанейский") +Функция Массив(&Блестяшка Размер, &Блестяшка Элементы, &Блестяшка Фиксированный) Экспорт + Если Размер > 0 Тогда + Массив = Новый Массив(Размер); + Иначе + Массив = Новый Массив(); + КонецЕсли; + + Счетчик = 0; + Для Каждого ТекЭлемент из Элементы Цикл + Значение = ТекЭлемент.Параметры[0].Значение; + Если Размер > 0 и Счетчик <= Размер - 1 Тогда + Массив[Счетчик] = Значение; + Иначе + Массив.Добавить(Значение); + КонецЕсли; + Счетчик = Счетчик + 1; + КонецЦикла; + + Если Фиксированный = Истина Тогда + Массив = Новый ФиксированныйМассив(Массив); + КонецЕсли; + + Возврат Массив; +КонецФункции + +&Завязь +&Характер("Компанейский") +Функция Структура(&Блестяшка Ключи, &Блестяшка КлючиИЗначения, &Блестяшка Фиксированный) Экспорт + Структура = Новый Структура(Ключи); + + Для Каждого КлючИЗначение из КлючиИЗначения Цикл + Если КлючИЗначение.Параметры.Количество() = 1 Тогда + Структура.Вставить(КлючИЗначение.Параметры[0].Значение); + ИначеЕсли КлючИЗначение.Параметры.Количество() > 1 Тогда + Структура.Вставить(КлючИЗначение.Параметры[0].Значение, КлючИЗначение.Параметры[1].Значение); + Иначе + // Ничего + КонецЕсли; + КонецЦикла; + + Если Фиксированный = Истина Тогда + Структура = Новый ФиксированнаяСтруктура(Структура); + КонецЕсли; + + Возврат Структура; +КонецФункции + +&Завязь +&Характер("Компанейский") +Функция Соответствие(&Блестяшка КлючиИЗначения, &Блестяшка Фиксированный) Экспорт + Соответствие = Новый Соответствие(); + + Для Каждого КлючИЗначение из КлючиИЗначения Цикл + Если КлючИЗначение.Параметры.Количество() = 1 Тогда + Соответствие.Вставить(КлючИЗначение.Параметры[0].Значение); + ИначеЕсли КлючИЗначение.Параметры.Количество() > 1 Тогда + Соответствие.Вставить(КлючИЗначение.Параметры[0].Значение, КлючИЗначение.Параметры[1].Значение); + Иначе + // Ничего + КонецЕсли; + КонецЦикла; + + Если Фиксированный = Истина Тогда + Соответствие = Новый ФиксированноеСоответствие(Соответствие); + КонецЕсли; + + Возврат Соответствие; +КонецФункции + +&Завязь +&Характер("Компанейский") +Функция ТаблицаЗначений(&Блестяшка КолонкиСтрокой, &Блестяшка Колонки, &Блестяшка Строки) Экспорт + ТаблицаЗначений = Новый ТаблицаЗначений(); + + Если НЕ ПустаяСтрока(КолонкиСтрокой) Тогда + Для каждого ИмяКолонки Из СтрРазделить(КолонкиСтрокой, ",") Цикл + ТаблицаЗначений.Колонки.Добавить(СокрЛП(ИмяКолонки)); + КонецЦикла; + КонецЕсли; + + Для Каждого ТекКолонка из Колонки Цикл + ИмяКолонки = ТекКолонка.Параметры[0].Значение; + Если ТаблицаЗначений.Колонки.Найти(ИмяКолонки) = Неопределено Тогда + ТаблицаЗначений.Колонки.Добавить(СокрЛП(ИмяКолонки)); + КонецЕсли + КонецЦикла; + + Для Каждого ТекСтрока из Строки Цикл + НоваяСтрока = ТаблицаЗначений.Добавить(); + Для Каждого ТекПараметр из ТекСтрока.Параметры Цикл + НоваяСтрока[ТекПараметр.Имя] = ТекПараметр.Значение; + КонецЦикла; + КонецЦикла; + + Возврат ТаблицаЗначений; +КонецФункции \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\220\320\275\320\275\320\276\321\202\320\270\321\200\320\276\320\262\320\260\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\220\320\275\320\275\320\276\321\202\320\270\321\200\320\276\320\262\320\260\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262.os" deleted file mode 100644 index 3cfbe4e..0000000 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\220\320\275\320\275\320\276\321\202\320\270\321\200\320\276\320\262\320\260\320\275\321\213\321\205\320\242\320\270\320\277\320\276\320\262.os" +++ /dev/null @@ -1,43 +0,0 @@ - -&Дуб -Процедура ПриСозданииОбъекта() - -КонецПроцедуры - -&Завязь -&Характер("Компанейский") -Функция Массив(&Блестяшка Размер) Экспорт - Если Размер > 0 Тогда - Массив = Новый Массив(Размер); - Иначе - Массив = Новый Массив(); - КонецЕсли; - - Возврат Массив; -КонецФункции - -&Завязь -&Характер("Компанейский") -Функция Структура(&Блестяшка Ключи) Экспорт - Возврат Новый Структура(Ключи); -КонецФункции - -&Завязь -&Характер("Компанейский") -Функция Соответствие() Экспорт - Возврат Новый Соответствие(); -КонецФункции - -&Завязь -&Характер("Компанейский") -Функция ТаблицаЗначений(&Блестяшка Колонки) Экспорт - ТаблицаЗначений = Новый ТаблицаЗначений(); - - Если НЕ ПустаяСтрока(Колонки) Тогда - Для каждого ИмяКолонки Из СтрРазделить(Колонки, ",") Цикл - ТаблицаЗначений.Колонки.Добавить(СокрЛП(ИмяКолонки)); - КонецЦикла; - КонецЕсли; - - Возврат ТаблицаЗначений; -КонецФункции \ No newline at end of file diff --git a/tests/alltests.os b/tests/alltests.os index 893a038..466bf91 100644 --- a/tests/alltests.os +++ b/tests/alltests.os @@ -28,6 +28,15 @@ Ожидаем.Что(ТестовыйЖелудь.МассивСРазмером1).ИмеетТип("Массив"); Ожидаем.Что(ТестовыйЖелудь.МассивСРазмером1.Количество()).Равно(1); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненныйМассив).ИмеетТип("Массив"); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненныйМассив.Количество()).Равно(2); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненныйМассив[0]).Равно("а"); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненныйМассив[1]).Равно(1); + + Ожидаем.Что(ТестовыйЖелудь.ФиксированныйМассив).ИмеетТип("ФиксированныйМассив"); + Ожидаем.Что(ТестовыйЖелудь.ФиксированныйМассив.Количество()).Равно(1); + Ожидаем.Что(ТестовыйЖелудь.ФиксированныйМассив[0]).Равно(1); + КонецПроцедуры &Тест @@ -43,6 +52,15 @@ Ожидаем.Что(ТестовыйЖелудь.Соответствие).ИмеетТип("Соответствие"); Ожидаем.Что(ТестовыйЖелудь.Соответствие.Количество()).Равно(0); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненноеСоответствие).ИмеетТип("Соответствие"); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненноеСоответствие.Количество()).Равно(2); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненноеСоответствие["Ключ1"]).Равно(1); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненноеСоответствие["Ключ2"]).Равно("2"); + + Ожидаем.Что(ТестовыйЖелудь.ФиксированноеСоответствие).ИмеетТип("ФиксированноеСоответствие"); + Ожидаем.Что(ТестовыйЖелудь.ФиксированноеСоответствие.Количество()).Равно(1); + Ожидаем.Что(ТестовыйЖелудь.ФиксированноеСоответствие["Ключ"]).Равно(1); + КонецПроцедуры &Тест @@ -56,14 +74,20 @@ // Тогда Ожидаем.Что(ТестовыйЖелудь.СтруктураСКлючами).ИмеетТип("Структура"); - Ожидаем.Что(ТестовыйЖелудь.СтруктураСКлючами.Количество()).Равно(2); + Ожидаем.Что(ТестовыйЖелудь.СтруктураСКлючами.Количество()).Равно(3); Ожидаем.Что(ТестовыйЖелудь.СтруктураСКлючами.Свойство("Ключ1")).Равно(Истина); Ожидаем.Что(ТестовыйЖелудь.СтруктураСКлючами.Свойство("Ключ2")).Равно(Истина); + Ожидаем.Что(ТестовыйЖелудь.СтруктураСКлючами.Ключ2).Равно(2); + Ожидаем.Что(ТестовыйЖелудь.СтруктураСКлючами.Ключ3).Равно("3"); Ожидаем.Что(ТестовыйЖелудь.ПустаяСтруктура).ИмеетТип("Структура"); Ожидаем.Что(ТестовыйЖелудь.ПустаяСтруктура.Количество()).Равно(0); + Ожидаем.Что(ТестовыйЖелудь.ФиксированнаяСтруктура).ИмеетТип("ФиксированнаяСтруктура"); + Ожидаем.Что(ТестовыйЖелудь.ФиксированнаяСтруктура.Количество()).Равно(1); + Ожидаем.Что(ТестовыйЖелудь.ФиксированнаяСтруктура.Ключ).Равно(1); + КонецПроцедуры &Тест @@ -82,8 +106,21 @@ Ожидаем.Что(ТестовыйЖелудь.ТЗ).ИмеетТип("ТаблицаЗначений"); Ожидаем.Что(ТестовыйЖелудь.ТЗ.Количество()).Равно(0); - Ожидаем.Что(ТестовыйЖелудь.ТЗ.Колонки.Количество()).Равно(2); + Ожидаем.Что(ТестовыйЖелудь.ТЗ.Колонки.Количество()).Равно(3); Ожидаем.Что(ТестовыйЖелудь.ТЗ.Колонки[0].Имя).Равно("Колонка1"); Ожидаем.Что(ТестовыйЖелудь.ТЗ.Колонки[1].Имя).Равно("Колонка2"); + Ожидаем.Что(ТестовыйЖелудь.ТЗ.Колонки[2].Имя).Равно("Колонка3"); -КонецПроцедуры \ No newline at end of file + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица).ИмеетТип("ТаблицаЗначений"); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица.Количество()).Равно(2); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица.Колонки.Количество()).Равно(2); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица.Колонки[0].Имя).Равно("ДеньНедели"); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица.Колонки[1].Имя).Равно("НомерДня"); + + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица[0].ДеньНедели).Равно("Понедельник"); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица[0].НомерДня).Равно(1); + + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица[1].ДеньНедели).Равно("Вторник"); + Ожидаем.Что(ТестовыйЖелудь.ЗаполненнаяТаблица[1].НомерДня).Равно(2); + +КонецПроцедуры diff --git "a/tests/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\226\320\265\320\273\321\203\320\264\321\214.os" "b/tests/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\226\320\265\320\273\321\203\320\264\321\214.os" index 5e120e5..78fb56d 100644 --- "a/tests/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\226\320\265\320\273\321\203\320\264\321\214.os" +++ "b/tests/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271\320\226\320\265\320\273\321\203\320\264\321\214.os" @@ -3,15 +3,31 @@ Перем ПустойМассив Экспорт; &ТаблицаЗначений("Колонка1, Колонка2") +&Колонка("Колонка2") +&Колонка("Колонка3") Перем ТЗ Экспорт; +&ТаблицаЗначений +&Колонка("ДеньНедели") +&Колонка("НомерДня") +&СтрокаТаблицы(ДеньНедели = "Понедельник", НомерДня = 1) +&СтрокаТаблицы(ДеньНедели = "Вторник", НомерДня = 2) +Перем ЗаполненнаяТаблица Экспорт; + &ТаблицаЗначений Перем ТЗБезКолонок Экспорт; &Соответствие Перем Соответствие Экспорт; +&Соответствие +&КлючИЗначение("Ключ1", 1) +&КлючИЗначение("Ключ2", "2") +Перем ЗаполненноеСоответствие Экспорт; + &Структура("Ключ1, Ключ2") +&КлючИЗначение("Ключ2", 2) +&КлючИЗначение("Ключ3", "3") Перем СтруктураСКлючами Экспорт; &Структура @@ -19,6 +35,26 @@ Перем МассивСРазмером1 Экспорт; +&Массив(1) +&Элемент("а") +&Элемент(1) +Перем ЗаполненныйМассив Экспорт; + +&Фиксированный +&Массив +&Элемент(1) +Перем ФиксированныйМассив Экспорт; + +&Структура +&Фиксированный +&КлючИЗначение("Ключ", 1) +Перем ФиксированнаяСтруктура Экспорт; + +&Соответствие +&Фиксированный +&КлючИЗначение("Ключ", 1) +Перем ФиксированноеСоответствие Экспорт; + &Желудь Процедура ПриСозданииОбъекта(&Массив(1) _Массив) МассивСРазмером1 = _Массив;