diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON.xml" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON.xml" new file mode 100644 index 0000000000..a09e8e2163 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON.xml" @@ -0,0 +1,114 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 29d2f52d-0ed1-4254-a6bc-bbc6bc333ab1 + + + 503de865-4645-4496-b5dd-2e4a76236095 + 4d213f80-34d7-4f82-80f0-c17b4f80d887 + + + + ЗагрузкаМакетовJSON + + + ru + ЗагрузкаМакетовJSON + + + en + DataProcessor + + + am + ጥሪ + + + az + Emal zəng etmək + + + bg + Обработка на повикване + + + et + Töötlemine kõne + + + fr + Le traitement de l'appel + + + ka + დარეკეთ + + + de + Die Verarbeitung des Anrufs + + + hu + A hívás + + + it + Trattamento di chiamata + + + lv + Apstrāde zvanu + + + lt + Apdorojimo skambinti + + + mn + Дуудлага + + + pl + Obsługa połączeń + + + ro + Prelucrarea de apel + + + sl + Klic + + + es + El tratamiento de la llamada + + + sv + Samtalet + + + tr + İşleme arama + + + vi + Bộ xử lý gọi ra + + + + ExternalDataProcessor.ЗагрузкаМакетовJSON.Form.Форма + + + +
Форма
+ + + + +
+
+
\ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 0000000000..cf2c88f877 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,102 @@ + + +
+ + Форма + + + ru + Форма + + + en + Form + + + am + ቅጽ + + + az + Forması + + + bg + Форма + + + et + Vorm + + + fr + La forme + + + ka + ფორმა + + + de + Form + + + hu + Formában + + + it + La forma + + + lv + Forma + + + lt + Forma + + + mn + Маягт + + + pl + Kształt + + + ro + Forma + + + sl + Obrazec + + + es + La forma de + + + sv + Form + + + tr + Formu + + + vi + Biểu mẫu + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 0000000000..95bdbd7e86 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,12 @@ + +
+ + + + + cfg:ExternalDataProcessorObject.ЗагрузкаМакетовJSON + + true + + + \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 0000000000..50c411f281 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,76 @@ + +/////////////////////////////////////////////////// +//Служебные функции и процедуры +/////////////////////////////////////////////////// + +&НаКлиенте +// контекст фреймворка Vanessa-Automation +Перем Ванесса; + +&НаКлиенте +// Структура, в которой хранится состояние сценария между выполнением шагов. Очищается перед выполнением каждого сценария. +Перем Контекст Экспорт; + +&НаКлиенте +// Структура, в которой можно хранить служебные данные между запусками сценариев. Существует, пока открыта форма Vanessa-Automation. +Перем КонтекстСохраняемый Экспорт; + +&НаКлиенте +// Функция экспортирует список шагов, которые реализованы в данной внешней обработке. +Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт + Ванесса = КонтекстФреймворкаBDD; + + ВсеТесты = Новый Массив; + + //описание параметров + //Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,Снипет,ИмяПроцедуры,ПредставлениеТеста,ОписаниеШага,ТипШага,Транзакция,Параметр); + + + Возврат ВсеТесты; +КонецФункции + +// Делает отключение модуля +Процедура ОтключениеМодуля() Экспорт + + Ванесса = Неопределено; + Контекст = Неопределено; + КонтекстСохраняемый = Неопределено; + +КонецПроцедуры + +&НаСервере +// Служебная функция. +Функция ПолучитьМакетСервер(ИмяМакета) + ОбъектСервер = РеквизитФормыВЗначение("Объект"); + Возврат ОбъектСервер.ПолучитьМакет(ИмяМакета); +КонецФункции + +&НаКлиенте +// Служебная функция для подключения библиотеки создания fixtures. +Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт + Возврат ПолучитьМакетСервер(ИмяМакета); +КонецФункции + + + +/////////////////////////////////////////////////// +//Работа со сценариями +/////////////////////////////////////////////////// + +&НаКлиенте +// Функция выполняется перед началом каждого сценария +Функция ПередНачаломСценария() Экспорт + +КонецФункции + +&НаКлиенте +// Функция выполняется перед окончанием каждого сценария +Функция ПередОкончаниемСценария() Экспорт + +КонецФункции + + + +/////////////////////////////////////////////////// +//Реализация шагов +/////////////////////////////////////////////////// diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213.xml" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213.xml" new file mode 100644 index 0000000000..9249ab1104 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213.xml" @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/Ext/Template.txt" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/Ext/Template.txt" new file mode 100644 index 0000000000..3b7e23fd77 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213/Ext/Template.txt" @@ -0,0 +1,403 @@ +{ + "Ромашка": { + "Тип": "Справочник", + "Вид": "Организации", + "ИмяПеременной": "Ромашка", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "414c3b72-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "Ромашка" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "Операция0000000000001От14_11_202410_26_40": { + "Тип": "Документ", + "Вид": "ОперацияБух", + "ИмяПеременной": "Операция0000000000001От14_11_202410_26_40", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "414c3b73-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Дата", + "Значение": "20241114102640" + }, + { + "Реквизит": "Организация", + "Значение": "Ромашка", + "Режим": "Перем" + }, + { + "Реквизит": "СуммаОперации", + "Значение": "500" + }, + { + "Реквизит": "Содержание", + "Значение": "коррекция остатков" + } + ], + "ТабличныеЧасти": [ + { + "ТаблицаРегистровНакопления": [ + [ + { + "Реквизит": "Имя", + "Значение": "Запасы" + } + ] + ] + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "ВентиляторSakura": { + "Тип": "Справочник", + "Вид": "Товары", + "ИмяПеременной": "ВентиляторSakura", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "6782047e-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "Вентилятор Sakura" + }, + { + "Реквизит": "Изображение", + "Значение": "ХранилищеЗначения" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "Поставщики": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Поставщики", + "Режим": "Группа", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true, + "Группа": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "5ac8459a-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "Поставщики" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "Лор": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Лор", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "5ac8458a-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Родитель", + "Значение": "Поставщики", + "Режим": "Перем" + }, + { + "Реквизит": "Наименование", + "Значение": "Лор" + }, + { + "Реквизит": "ЮрФизЛицо", + "Значение": "ЮридическоеЛицо", + "Режим": "Предопределенный" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "ВентиляторBinatone": { + "Тип": "Справочник", + "Вид": "Товары", + "ИмяПеременной": "ВентиляторBinatone", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "040717d7-a22a-11ef-be09-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "Вентилятор Binatone" + }, + { + "Реквизит": "Изображение", + "Значение": "ХранилищеЗначения" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "Роа": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Роа", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "7afbaad7-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Родитель", + "Значение": "Поставщики", + "Режим": "Перем" + }, + { + "Реквизит": "Наименование", + "Значение": "Роа" + }, + { + "Реквизит": "ЮрФизЛицо", + "Значение": "ФизическоеЛицо", + "Режим": "Предопределенный" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "Запасы": { + "Тип": "РегистрНакопления", + "Вид": "Запасы", + "ИмяПеременной": "Запасы", + "Записи": [ + [ + { + "Реквизит": "ВидДвижения", + "Значение": "Приход", + "Режим": "Предопределенный" + }, + { + "Реквизит": "Активность", + "Значение": "Истина" + }, + { + "Реквизит": "Регистратор", + "Значение": "Операция0000000000001От14_11_202410_26_40", + "Режим": "Перем" + }, + { + "Реквизит": "Период", + "Значение": "20241114102640" + }, + { + "Реквизит": "Номенклатура", + "Значение": "ВентиляторSakura", + "Режим": "Перем" + }, + { + "Реквизит": "Количество", + "Значение": "10" + }, + { + "Реквизит": "Поставщик", + "Значение": "Лор", + "Режим": "Перем" + } + ], + [ + { + "Реквизит": "ВидДвижения", + "Значение": "Приход", + "Режим": "Предопределенный" + }, + { + "Реквизит": "Активность", + "Значение": "Истина" + }, + { + "Реквизит": "Регистратор", + "Значение": "Операция0000000000001От14_11_202410_26_40", + "Режим": "Перем" + }, + { + "Реквизит": "Период", + "Значение": "20241114102640" + }, + { + "Реквизит": "Номенклатура", + "Значение": "ВентиляторBinatone", + "Режим": "Перем" + }, + { + "Реквизит": "Количество", + "Значение": "5" + }, + { + "Реквизит": "Поставщик", + "Значение": "Роа", + "Режим": "Перем" + } + ], + [ + { + "Реквизит": "ВидДвижения", + "Значение": "Расход", + "Режим": "Предопределенный" + }, + { + "Реквизит": "Активность", + "Значение": "Истина" + }, + { + "Реквизит": "Регистратор", + "Значение": "Операция0000000000001От14_11_202410_26_40", + "Режим": "Перем" + }, + { + "Реквизит": "Период", + "Значение": "20241114102640" + }, + { + "Реквизит": "Номенклатура", + "Значение": "ВентиляторSakura", + "Режим": "Перем" + }, + { + "Реквизит": "Количество", + "Значение": "4" + }, + { + "Реквизит": "Поставщик", + "Значение": "Лор", + "Режим": "Перем" + } + ], + [ + { + "Реквизит": "ВидДвижения", + "Значение": "Расход", + "Режим": "Предопределенный" + }, + { + "Реквизит": "Активность", + "Значение": "Истина" + }, + { + "Реквизит": "Регистратор", + "Значение": "Операция0000000000001От14_11_202410_26_40", + "Режим": "Перем" + }, + { + "Реквизит": "Период", + "Значение": "20241114102640" + }, + { + "Реквизит": "Номенклатура", + "Значение": "ВентиляторBinatone", + "Режим": "Перем" + }, + { + "Реквизит": "Количество", + "Значение": "1" + }, + { + "Реквизит": "Поставщик", + "Значение": "Роа", + "Режим": "Перем" + } + ] + ] + } +} \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\232\320\276\320\275\321\202\321\200\320\260\320\263\320\265\320\275\321\202\321\213.xml" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\232\320\276\320\275\321\202\321\200\320\260\320\263\320\265\320\275\321\202\321\213.xml" new file mode 100644 index 0000000000..0fa3b1f510 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\232\320\276\320\275\321\202\321\200\320\260\320\263\320\265\320\275\321\202\321\213.xml" @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\232\320\276\320\275\321\202\321\200\320\260\320\263\320\265\320\275\321\202\321\213/Ext/Template.txt" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\232\320\276\320\275\321\202\321\200\320\260\320\263\320\265\320\275\321\202\321\213/Ext/Template.txt" new file mode 100644 index 0000000000..49e73d1846 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\232\320\276\320\275\321\202\321\200\320\260\320\263\320\265\320\275\321\202\321\213/Ext/Template.txt" @@ -0,0 +1,71 @@ +{ + "Поставщики": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Поставщики", + "Режим": "Группа", + "Режимы": { + "Группа": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "5ac8459a-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "Поставщики" + } + ] + }, + "Лор": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Лор", + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "5ac8458a-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Родитель", + "Значение": "Поставщики", + "Режим": "Перем" + }, + { + "Реквизит": "Наименование", + "Значение": "Лор" + }, + { + "Реквизит": "ЮрФизЛицо", + "Значение": "ЮридическоеЛицо", + "Режим": "Предопределенный" + } + ] + }, + "Роа": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Роа", + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "7afbaad7-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Родитель", + "Значение": "Поставщики", + "Режим": "Перем" + }, + { + "Реквизит": "Наименование", + "Значение": "Роа" + }, + { + "Реквизит": "ЮрФизЛицо", + "Значение": "ФизическоеЛицо", + "Режим": "Предопределенный" + } + ] + } +} \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\321\213\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.xml" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\321\213\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.xml" new file mode 100644 index 0000000000..20f32441f2 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\321\213\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.xml" @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\321\213\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Ext/Template.txt" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\321\213\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Ext/Template.txt" new file mode 100644 index 0000000000..dde77eb7f4 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\321\213\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271/Ext/Template.txt" @@ -0,0 +1,197 @@ +{ + "РегистрСведений1": { + "Тип": "РегистрСведений", + "Вид": "РегистрСведений1", + "ИмяПеременной": "РегистрСведений1", + "Записи": [ + [ + { + "Реквизит": "Измерение1", + "Значение": "Изм" + }, + { + "Реквизит": "Ресурс1", + "Значение": "Рес" + }, + { + "Реквизит": "Реквизит1", + "Значение": "Рек" + } + ] + ] + }, + "РегистрСведений1_1": { + "Тип": "РегистрСведений", + "Вид": "РегистрСведений1", + "ИмяПеременной": "РегистрСведений1_1", + "Записи": [ + [ + { + "Реквизит": "Измерение1", + "Значение": "Изм2" + }, + { + "Реквизит": "Ресурс1", + "Значение": "Рес2" + }, + { + "Реквизит": "Реквизит1", + "Значение": "Рек2" + } + ] + ] + }, + "Поставщики": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Поставщики", + "Режим": "Группа", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true, + "Группа": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "5ac8459a-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "Поставщики" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "Лор": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Лор", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "5ac8458a-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Родитель", + "Значение": "Поставщики", + "Режим": "Перем" + }, + { + "Реквизит": "Наименование", + "Значение": "Лор" + }, + { + "Реквизит": "ЮрФизЛицо", + "Значение": "ЮридическоеЛицо", + "Режим": "Предопределенный" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "ЧерныйСписокКонтрагентов": { + "Тип": "РегистрСведений", + "Вид": "ЧерныйСписокКонтрагентов", + "ИмяПеременной": "ЧерныйСписокКонтрагентов", + "Записи": [ + [ + { + "Реквизит": "Период", + "Значение": "20241114000000" + }, + { + "Реквизит": "Контрагент", + "Значение": "Лор", + "Режим": "Перем" + }, + { + "Реквизит": "Включен", + "Значение": "Ложь" + } + ] + ] + }, + "Роа": { + "Тип": "Справочник", + "Вид": "Контрагенты", + "ИмяПеременной": "Роа", + "Режимы": { + "ТолькоСоздание": true, + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "7afbaad7-a238-11ef-be0a-00505687d921" + }, + { + "Реквизит": "Родитель", + "Значение": "Поставщики", + "Режим": "Перем" + }, + { + "Реквизит": "Наименование", + "Значение": "Роа" + }, + { + "Реквизит": "ЮрФизЛицо", + "Значение": "ФизическоеЛицо", + "Режим": "Предопределенный" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "Грузим", + "Значение": "Все" + }, + { + "Реквизит": "Разрешаем", + "Значение": "Истина" + } + ] + }, + "ЧерныйСписокКонтрагентов_1": { + "Тип": "РегистрСведений", + "Вид": "ЧерныйСписокКонтрагентов", + "ИмяПеременной": "ЧерныйСписокКонтрагентов_1", + "Записи": [ + [ + { + "Реквизит": "Период", + "Значение": "20241114000000" + }, + { + "Реквизит": "Контрагент", + "Значение": "Роа", + "Режим": "Перем" + }, + { + "Реквизит": "Включен", + "Значение": "Ложь" + } + ] + ] + } +} \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270.xml" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270.xml" new file mode 100644 index 0000000000..3df8af1979 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270.xml" @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270/Ext/Template.txt" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270/Ext/Template.txt" new file mode 100644 index 0000000000..94e06583f4 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/Templates/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270/Ext/Template.txt" @@ -0,0 +1,315 @@ +{ + "ЭлементВКорне": { + "Тип": "Справочник", + "Вид": "Справочник2", + "ИмяПеременной": "ЭлементВКорне", + "Режимы": { + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "adb330e2-a22b-11ef-be09-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "Элемент в корне" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "ТестJSON", + "Значение": "Истина" + }, + { + "Реквизит": "ТестMXL", + "Значение": "Ложь" + } + ] + }, + "ГруппаЭлементов": { + "Тип": "Справочник", + "Вид": "Справочник2", + "ИмяПеременной": "ГруппаЭлементов", + "Режим": "Группа", + "Режимы": { + "ОбменДанными": true, + "Группа": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "b6064d11-a22b-11ef-be09-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "ГруппаЭлементов" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "ТестJSON", + "Значение": "Истина" + }, + { + "Реквизит": "ТестMXL", + "Значение": "Ложь" + } + ] + }, + "ПодчиненныйЭлемент": { + "Тип": "Справочник", + "Вид": "Справочник2", + "ИмяПеременной": "ПодчиненныйЭлемент", + "Режимы": { + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "c1fb3fe7-a22b-11ef-be09-00505687d921" + }, + { + "Реквизит": "Родитель", + "Значение": "b6064d11-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "Наименование", + "Значение": "Подчиненный элемент" + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "ТестJSON", + "Значение": "Истина" + }, + { + "Реквизит": "ТестMXL", + "Значение": "Ложь" + } + ] + }, + "НаименованиеСправочника": { + "Тип": "Справочник", + "Вид": "Справочник1", + "ИмяПеременной": "НаименованиеСправочника", + "Режимы": { + "ОбменДанными": true + }, + "ПоляОбъекта": [ + { + "Реквизит": "Ссылка", + "Значение": "f7e1612c-a22b-11ef-be09-00505687d921" + }, + { + "Реквизит": "Наименование", + "Значение": "Наименование справочника" + }, + { + "Реквизит": "Реквизит1", + "Значение": "ЗначениеПеречисления1", + "Режим": "Предопределенный" + }, + { + "Реквизит": "Реквизит2", + "Значение": "adb330e2-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "РеквизитСтрока", + "Значение": "значение" + }, + { + "Реквизит": "РеквизитДата", + "Значение": "20241114000000" + }, + { + "Реквизит": "РеквизитЧисло", + "Значение": "15,12" + }, + { + "Реквизит": "РеквизитПереключатель", + "Значение": "2" + }, + { + "Реквизит": "Реквизит3", + "Значение": "c1fb3fe7-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "СоставнойРеквизит", + "Значение": "adb330e2-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "РеквизитМеню", + "Значение": "Товар" + }, + { + "Реквизит": "РеквизитСписок", + "Значение": "Значение списка" + }, + { + "Реквизит": "РеквизитБыстрыйВыбор", + "Значение": "c1fb3fe7-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + } + ], + "ТабличныеЧасти": [ + { + "ТабличнаяЧасть1": [ + [ + { + "Реквизит": "РеквизитЧисло", + "Значение": "1" + }, + { + "Реквизит": "РеквизитСтрока", + "Значение": "один" + }, + { + "Реквизит": "РеквизитДата", + "Значение": "20241114000000" + }, + { + "Реквизит": "РеквизитСправочник", + "Значение": "c1fb3fe7-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "РеквизитБулево", + "Значение": "Истина" + }, + { + "Реквизит": "РеквизитПеречисление", + "Значение": "ЗначениеПеречисления1", + "Режим": "Предопределенный" + }, + { + "Реквизит": "РеквизитСправочникВыборИзФормыСписка", + "Значение": "c1fb3fe7-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "РеквизитБыстрыйВыборТЧ", + "Значение": "c1fb3fe7-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "МногострочнаяСтрока", + "Значение": "Первая строка\nВторая строка" + }, + { + "Реквизит": "РеквизтПереносВЗаголовке", + "Значение": "Заголовок" + } + ], + [ + { + "Реквизит": "РеквизитЧисло", + "Значение": "2" + }, + { + "Реквизит": "РеквизитСтрока", + "Значение": "два" + }, + { + "Реквизит": "РеквизитДата", + "Значение": "20241114000000" + }, + { + "Реквизит": "РеквизитСправочник", + "Значение": "adb330e2-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "РеквизитБулево", + "Значение": "Ложь" + }, + { + "Реквизит": "РеквизитСправочникВыборИзФормыСписка", + "Значение": "adb330e2-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "РеквизитБыстрыйВыборТЧ", + "Значение": "adb330e2-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + } + ] + ] + }, + { + "ТабличнаяЧасть2": [ + [ + { + "Реквизит": "РеквизитЧисло", + "Значение": "1" + }, + { + "Реквизит": "РеквизитСтрока", + "Значение": "один" + }, + { + "Реквизит": "РеквизитДата", + "Значение": "20241114000000" + }, + { + "Реквизит": "РеквизитСправочник", + "Значение": "adb330e2-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "РеквизитБулево", + "Значение": "Ложь" + }, + { + "Реквизит": "РеквизитСправочникВыборИзФормыСписка", + "Значение": "adb330e2-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + } + ], + [ + { + "Реквизит": "РеквизитЧисло", + "Значение": "2" + }, + { + "Реквизит": "РеквизитСтрока", + "Значение": "два" + }, + { + "Реквизит": "РеквизитДата", + "Значение": "20241114000000" + }, + { + "Реквизит": "РеквизитСправочник", + "Значение": "c1fb3fe7-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + }, + { + "Реквизит": "РеквизитБулево", + "Значение": "Истина" + }, + { + "Реквизит": "РеквизитСправочникВыборИзФормыСписка", + "Значение": "c1fb3fe7-a22b-11ef-be09-00505687d921", + "Режим": "Гуид" + } + ] + ] + } + ], + "ДополнительныеСвойства": [ + { + "Реквизит": "ТестJSON", + "Значение": "Истина" + }, + { + "Реквизит": "ТестMXL", + "Значение": "Ложь" + } + ] + } +} \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/filename" "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/filename" new file mode 100644 index 0000000000..649d5ed635 --- /dev/null +++ "b/features/Core/FixtureJSONLoad/step_definitions/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON/filename" @@ -0,0 +1 @@ +ЗагрузкаМакетовJSON.epf \ No newline at end of file diff --git "a/features/Core/FixtureJSONLoad/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON.feature" "b/features/Core/FixtureJSONLoad/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON.feature" new file mode 100644 index 0000000000..ea03302ddd --- /dev/null +++ "b/features/Core/FixtureJSONLoad/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\234\320\260\320\272\320\265\321\202\320\276\320\262JSON.feature" @@ -0,0 +1,81 @@ +# language: ru +# encoding: utf-8 +@IgnoreOnOFBuilds + +Функционал: Загрузка макетов json + Как ответственный за закупки + Я хочу меньше денег тратить на покупку дисков + Чтобы экономить + +Контекст: + Дано я удаляю все элементы таблицы "Справочник.Справочник1" + И я удаляю все элементы таблицы "Справочник.Справочник2" + И я удаляю все элементы таблицы "Справочник.Справочник3" + И я удаляю все элементы таблицы "Справочник.Контрагенты" + И я удаляю все элементы таблицы "Документ.ОперацияБух" + +Сценарий: Загрузка справочника с табличными частями + Когда я создаю fixtures по макету "Справочники" + И Я открыл новый сеанс TestClient или подключил уже существующий + И В командном интерфейсе я выбираю "Основная" "Справочник1" + Тогда открылось окно "Справочник1" + И в таблице 'Список' я выбираю текущую строку + И элемент формы с именем 'РеквизитСтрока' стал равен "значение" + И элемент формы с именем 'РеквизитСтрокаНеДоступныйДляРедактирования' стал равен "значение" + И элемент формы с именем 'РеквизитТекстовыйДокумент' стал равен "" + И элемент формы с именем 'РеквизитЧисло' стал равен "15,12" + И элемент формы с именем 'РеквизитЧисло1' стал равен "15,12" + И у элемента формы с именем 'РеквизитЧисло1' текст редактирования стал равен "Нет" + И элемент формы с именем 'РекСтрока1' стал равен "" + И элемент формы с именем 'РекСтрока2' стал равен "" + И элемент формы с именем 'СоставнойРеквизит' стал равен "Элемент в корне" + Тогда открылось окно "Наименование справочника (Справочник1)" + И я перехожу к закладке "ТЧ" + И в таблице "ТабличнаяЧасть1" количество строк "меньше или равно" 2 + И таблица 'ТабличнаяЧасть1' стала равной: + | 'N' | 'Реквизит число' | 'Реквизит строка' | 'Реквизит перечисление' | 'Реквизит дата' | 'Реквизит справочник' | 'Реквизит булево' | 'Многострочная строка' | 'Реквизит быстрый выбор ТЧ' | 'Реквизит справочник выбор из формы списка' | 'ЧастьЗаголовка1\nЧастьЗаголовка2' | + | '1' | '1,00' | 'один' | 'ЗначениеПеречисления1' | '14.11.2024' | 'Подчиненный элемент' | 'Да' | 'Первая строка\nВторая строка' | 'Подчиненный элемент' | 'Подчиненный элемент' | 'Заголовок' | + | '2' | '2,00' | 'два' | '' | '14.11.2024' | 'Элемент в корне' | 'Нет' | '' | 'Элемент в корне' | 'Элемент в корне' | '' | + + И таблица 'ТабличнаяЧасть2' стала равной: + | 'N' | 'Реквизит число' | 'Реквизит строка' | 'Реквизит дата' | 'Реквизит справочник' | 'Реквизит булево' | 'Реквизит справочник выбор из формы списка' | + | '1' | '1,00' | 'один' | '14.11.2024' | 'Элемент в корне' | 'Нет' | 'Элемент в корне' | + | '2' | '2,00' | 'два' | '14.11.2024' | 'Подчиненный элемент' | 'Да' | 'Подчиненный элемент' | + И я закрываю сеанс текущего клиента тестирования + +Сценарий: Загрузка регистров сведений + Когда я создаю fixtures по макету "Контрагенты" + Когда я создаю fixtures по макету "РегистрыСведений" + Тогда Я открыл новый сеанс TestClient или подключил уже существующий + И В командном интерфейсе я выбираю "Основная" "РегистрСведений1" + Тогда таблица 'Список' стала равной: + | 'Измерение1' | 'Ресурс1' | 'Реквизит1' | + | 'Изм' | 'Рес' | 'Рек' | + | 'Изм2' | 'Рес2' | 'Рек2' | + И В командном интерфейсе я выбираю "Основная" "Черный список контрагентов" + Тогда таблица 'Список' стала равной: + | 'Период' | 'Контрагент' | 'Включен' | + | '14.11.2024' | 'Лор' | 'Нет' | + | '14.11.2024' | 'Роа' | 'Нет' | + И я закрываю сеанс текущего клиента тестирования + +Сценарий: Загрузка документа с табличными частями и движениями в регистре накопления + Когда я создаю fixtures по макету "Документы" + И Я открыл новый сеанс TestClient или подключил уже существующий + И В командном интерфейсе я выбираю "Основная" "Операции, введенные вручную" + Тогда открылось окно "Операции, введенные вручную" + И в таблице 'Список' я выбираю текущую строку + Тогда элемент формы с именем 'Дата' стал равен "14.11.2024 10:26:40" + И таблица 'Запасы' стала равной: + | 'N' | 'Вид движения' | 'Номенклатура' | 'Количество' | 'Поставщик' | + | '1' | 'Приход' | 'Вентилятор Sakura' | '10' | 'Лор' | + | '2' | 'Приход' | 'Вентилятор Binatone' | '5' | 'Роа' | + | '3' | 'Расход' | 'Вентилятор Sakura' | '4' | 'Лор' | + | '4' | 'Расход' | 'Вентилятор Binatone' | '1' | 'Роа' | + И элемент формы с именем 'Комментарий' стал равен "" + И элемент формы с именем 'Номер' стал равен "0000000000001" + И элемент формы с именем 'Организация' стал равен "Ромашка" + И элемент формы с именем 'Содержание' стал равен "коррекция остатков" + И элемент формы с именем 'СуммаОперации' стал равен "500,00" + И у элемента формы с именем 'СуммаОперации' текст редактирования стал равен "500,00" + И я закрываю сеанс текущего клиента тестирования diff --git "a/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Ext/ObjectModule.bsl" "b/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Ext/ObjectModule.bsl" index 9885d1c8ff..5fe7ff0987 100644 --- "a/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Ext/ObjectModule.bsl" +++ "b/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Ext/ObjectModule.bsl" @@ -123,10 +123,10 @@ Для каждого ИмяМакета Из МассивИменМакетов Цикл МассивМакетов.Добавить(ТестОбъект.ПолучитьМакет(ИмяМакета)); КонецЦикла; - Возврат СоздатьДанныеПоТабличномуДокументу(МассивМакетов); + Возврат СоздатьДанныеПоДокументуМакета(МассивМакетов); КонецФункции -Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокументИлиМассивТабличныхДокументов, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено) Экспорт +Функция СоздатьДанныеПоДокументуМакета(ТабличныйДокументИлиМассивТабличныхДокументов, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено, ВозвращатьНаборЗаписей = Ложь) Экспорт Перем РежимыЗагрузки; @@ -139,7 +139,7 @@ Если РежимыЗагрузки <> Неопределено Тогда ТипПараметра = ТипЗнч(РежимыЗагрузки); Если ТипПараметра <> Тип("Структура") Тогда - ТекстСообщения = ПолучитьТекстСообщенияПользователю("Ожидали, что вторым параметром будет передана структура параметров для метода <СоздатьДанныеПоТабличномуДокументу>, а получили другой объект с типом <%1>"); + ТекстСообщения = ПолучитьТекстСообщенияПользователю("Ожидали, что вторым параметром будет передана структура параметров для метода <СоздатьДанныеПоДокументуМакета>, а получили другой объект с типом <%1>"); ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ТипПараметра); ВызватьИсключение(ТекстСообщения); КонецЕсли; @@ -149,6 +149,8 @@ МассивТабличныхДокументов = Новый Массив(); Если ТипЗнч(ТабличныйДокументИлиМассивТабличныхДокументов) = Тип("ТабличныйДокумент") Тогда МассивТабличныхДокументов.Добавить(ТабличныйДокументИлиМассивТабличныхДокументов); + ИначеЕсли ТипЗнч(ТабличныйДокументИлиМассивТабличныхДокументов) = Тип("ТекстовыйДокумент") Тогда + МассивТабличныхДокументов.Добавить(ТабличныйДокументИлиМассивТабличныхДокументов); ИначеЕсли ТипЗнч(ТабличныйДокументИлиМассивТабличныхДокументов) = Тип("Массив") Тогда МассивТабличныхДокументов = ТабличныйДокументИлиМассивТабличныхДокументов; КонецЕсли; @@ -161,13 +163,34 @@ ЗначениеСоответствияРегистрРасчета = ВернутьЗначениеСоответствия("РегистрРасчетаНаборЗаписей"); Для каждого Элем Из Данные Цикл + // при передаче на упр. форму при загрузке фикстуры не сериализуется набор записей + // но при конвертации макетов проблем не возникает Стр = Строка(Элем.Значение); Если Найти(Стр, ЗначениеСоответствияРегистрСведений) > 0 Тогда ИмяРегистра = Сред(Стр, СтрДлина(ЗначениеСоответствияРегистрСведений) + 2); - Данные[Элем.Ключ] = ПолучитьКлючиЗаписиРСПоНаборуЗаписейРС(Элем.Значение, ИмяРегистра); + Если ВозвращатьНаборЗаписей Тогда + Результат = Новый Массив; + Результат.Добавить(Элем.Значение); + Данные[Элем.Ключ] = Результат; + Иначе + Данные[Элем.Ключ] = ПолучитьКлючиЗаписиРСПоНаборуЗаписейРС(Элем.Значение, ИмяРегистра); + КонецЕсли; ИначеЕсли Найти(Стр, ЗначениеСоответствияРегистрНакопления) > 0 Тогда ИмяРегистра = Сред(Стр, СтрДлина(ЗначениеСоответствияРегистрНакопления) + 2); - Данные[Элем.Ключ] = ПолучитьКлючиЗаписиРСПоНаборуЗаписейРН(Элем.Значение, ИмяРегистра); + Если ВозвращатьНаборЗаписей Тогда + Результат = Новый Массив; + Результат.Добавить(Элем.Значение); + Данные[Элем.Ключ] = Результат; + Иначе + Данные[Элем.Ключ] = ПолучитьКлючиЗаписиРСПоНаборуЗаписейРН(Элем.Значение, ИмяРегистра); + КонецЕсли; + ИначеЕсли Найти(Стр, ЗначениеСоответствияРегистрБухгалтерии) > 0 Тогда + ИмяРегистра = Сред(Стр, СтрДлина(ЗначениеСоответствияРегистрБухгалтерии) + 2); + Если ВозвращатьНаборЗаписей Тогда + Результат = Новый Массив; + Результат.Добавить(Элем.Значение); + Данные[Элем.Ключ] = Результат; + КонецЕсли; КонецЕсли; КонецЦикла; @@ -276,16 +299,146 @@ Возврат Результат; КонецФункции +Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузки, ИмяКолонкиЗамещения) Экспорт + // для обратной совместимости + Данные = СоздатьДанныеПоДокументуМакета(ТабличныйДокумент, РежимыЗагрузки, ИмяКолонкиЗамещения); + Возврат Данные; +КонецФункции + Функция СоздатьДанныеИзМакетов(МассивТабличныхДокументов, РежимыЗагрузки, ИмяКолонкиЗамещения) ПротоДанные = Новый Структура; Для каждого ТабличныйДокумент Из МассивТабличныхДокументов Цикл - ПрочитатьДанныеИзМакета(ПротоДанные,ТабличныйДокумент,ИмяКолонкиЗамещения); + Если ТипЗнч(ТабличныйДокумент) = Тип("ТабличныйДокумент") Тогда + ПрочитатьДанныеИзМакета(ПротоДанные,ТабличныйДокумент,ИмяКолонкиЗамещения); + ИначеЕсли ТипЗнч(ТабличныйДокумент) = Тип("ТекстовыйДокумент") Тогда + ПрочитатьДанныеИзТекстовогоДокумента(ПротоДанные,ТабличныйДокумент,ИмяКолонкиЗамещения); + КонецЕсли; КонецЦикла; ЗаменитьРежимыЗагрузки(ПротоДанные, РежимыЗагрузки); Данные = СоздатьТестовыеДанныеПоПротоДанным(ПротоДанные); Возврат Данные; КонецФункции +Функция ПрочитатьДанныеИзТекстовогоДокумента(ПротоДанные,ТекстовыйДокумент,ИмяКолонкиЗамещения) + + Текст = ТекстовыйДокумент.ПолучитьТекст(); + + ЧтениеJSON = Новый ЧтениеJSON; + ЧтениеJSON.УстановитьСтроку(Текст); + JSON = ПрочитатьJSON(ЧтениеJSON); + ЧтениеJSON.Закрыть(); + + Для Каждого ОбъектJSON ИЗ JSON Цикл + + ПротоОбъект = СоздатьСтруктуруОписанияОбъекта(); + ПротоОбъект.ПоляОбъекта = СоздатьТаблицуОписанияПолей(); + ПротоДанные.Вставить(ОбъектJSON.Ключ,ПротоОбъект); + + Для Каждого СтрокаОбъекта ИЗ ОбъектJSON.Значение Цикл + Если СтрокаОбъекта.Ключ = "ПоляОбъекта" Тогда + //Поля объекта + Для Каждого РеквизитОбъекта ИЗ СтрокаОбъекта.Значение Цикл + НовоеПолеОбъекта = ПротоОбъект.ПоляОбъекта.Добавить(); + ЗаполнитьКолонкуСтрокиПротоОбъекта(НовоеПолеОбъекта, РеквизитОбъекта); + Если РеквизитОбъекта.Свойство("Ключ") И ВРег(РеквизитОбъекта.Ключ) = "КЛЮЧ" Тогда + ПротоОбъект.Ключи.Вставить(НовоеПолеОбъекта.Имя, НовоеПолеОбъекта.Значение); + КонецЕсли; + КонецЦикла; + ИначеЕсли ВРег(СтрокаОбъекта.Ключ)="РЕЖИМЫ" Тогда + Для Каждого СтрокаТЧОбъекта из СтрокаОбъекта.Значение Цикл + ОписаниеПолейТЧ = СоздатьТаблицуОписанияПолей(); + НовоеПолеТЧ = ОписаниеПолейТЧ.Добавить(); + НовоеПолеТЧ.Имя = СтрокаТЧОбъекта.Ключ; + НовоеПолеТЧ.Значение = СтрокаТЧОбъекта.Значение; + ПротоОбъект.Режимы[СтрокаТЧОбъекта.Ключ] = Истина; + КонецЦикла; + ИначеЕсли ВРег(СтрокаОбъекта.Ключ)="ДОПОЛНИТЕЛЬНЫЕСВОЙСТВА" Тогда + Для Каждого СтрокаТЧОбъекта из СтрокаОбъекта.Значение Цикл + ОписаниеПолейТЧ = СоздатьТаблицуОписанияПолей(); + НовоеПолеТЧ = ОписаниеПолейТЧ.Добавить(); + ЗаполнитьКолонкуСтрокиПротоОбъекта(НовоеПолеТЧ, СтрокаТЧОбъекта); + КонецЦикла; + ИначеЕсли ВРег(СтрокаОбъекта.Ключ) = "ЗАПИСИ" Тогда + ИмяТабЧасти = "Запись"; + ТабЧасть = Неопределено; + Если НЕ ПротоОбъект.ТабличныеЧасти.Свойство(ИмяТабЧасти,ТабЧасть) Тогда + //Новая ТабЧасть + ОписаниеПолейТЧ = СоздатьТаблицуОписанияПолей(); + ТабЧасть = Новый Массив; + ПротоОбъект.ТабличныеЧасти.Вставить(ИмяТабЧасти,ТабЧасть); + КонецЕсли; + Для Каждого ТЧОбъекта ИЗ СтрокаОбъекта.Значение Цикл + // создаем и заполняем строку ТЧ + ОписаниеПолейТЧ = СоздатьТаблицуОписанияПолей(); + ТабЧасть.Добавить(ОписаниеПолейТЧ); + // обработаем реквизиты записей + Для Каждого ЗаписьТЧОбъекта из ТЧОбъекта Цикл + НовоеПолеТЧ = ОписаниеПолейТЧ.Добавить(); + ЗаполнитьКолонкуСтрокиПротоОбъекта(НовоеПолеТЧ, ЗаписьТЧОбъекта); + КонецЦикла; + КонецЦикла; + ИначеЕсли ВРег(СтрокаОбъекта.Ключ) = "ТАБЛИЧНЫЕЧАСТИ" Тогда + Для Каждого ТЧОбъекта ИЗ СтрокаОбъекта.Значение Цикл + // вытащим имя ТЧ и её содержимое в виде массива структур + Для Каждого СтрокаТЧ ИЗ ТЧОбъекта Цикл + ИмяТабЧасти = СтрокаТЧ.Ключ; + СодержимоеТЧ = СтрокаТЧ.Значение; + КонецЦикла; + + //Табличные части + Если НЕ ПустаяСтрока(ИмяТабЧасти) Тогда + ТабЧасть = Неопределено; + Если НЕ ПротоОбъект.ТабличныеЧасти.Свойство(ИмяТабЧасти,ТабЧасть) Тогда + //Новая ТабЧасть + ОписаниеПолейТЧ = СоздатьТаблицуОписанияПолей(); + ТабЧасть = Новый Массив; + ПротоОбъект.ТабличныеЧасти.Вставить(ИмяТабЧасти,ТабЧасть); + КонецЕсли; + КонецЕсли; + + // Обмен данными + Если ВРег(ИмяТабЧасти)="ОБМЕНДАННЫМИ" Тогда + Для Каждого СтрокаТЧОбъекта из СодержимоеТЧ Цикл + НовоеПолеТЧ = ОписаниеПолейТЧ.Добавить(); + ЗаполнитьКолонкуСтрокиПротоОбъекта(НовоеПолеТЧ, СтрокаТЧОбъекта); + КонецЦикла; + Продолжить; + КонецЕсли; + + // ТЧ + Для Каждого СтрокаТЧОбъекта из СодержимоеТЧ Цикл + // создаем и заполняем строку ТЧ + ОписаниеПолейТЧ = СоздатьТаблицуОписанияПолей(); + ТабЧасть.Добавить(ОписаниеПолейТЧ); + Для Каждого КолонкаСтрокиТЧОбъекта из СтрокаТЧОбъекта Цикл + // строки ТЧ + НовоеПолеТЧ = ОписаниеПолейТЧ.Добавить(); + ЗаполнитьКолонкуСтрокиПротоОбъекта(НовоеПолеТЧ, КолонкаСтрокиТЧОбъекта); + КонецЦикла; + КонецЦикла; + КонецЦикла; + Иначе + ПротоОбъект.Вставить(СтрокаОбъекта.Ключ,СтрокаОбъекта.Значение); + Если ВРЕГ(СтрокаОбъекта.Ключ) = "РЕЖИМ" + И ЗначениеЗаполнено(СтрокаОбъекта.Значение) Тогда + ПротоОбъект.Режимы[СтрокаОбъекта.Значение] = Истина; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЦикла; + +КонецФункции + +Процедура ЗаполнитьКолонкуСтрокиПротоОбъекта(Поле, СтруктураДляЗаполнения) + + Поле.Имя = СтруктураДляЗаполнения.Реквизит; + //Поле.Значение = СтруктураДляЗаполнения.Значение; + Поле.Значение = ?(СтруктураДляЗаполнения.Свойство("Значение"), СтруктураДляЗаполнения.Значение, ""); + Поле.Режим = ?(СтруктураДляЗаполнения.Свойство("Режим"), СтруктураДляЗаполнения.Режим, ""); + Поле.ДополнительныйТип = ?(СтруктураДляЗаполнения.Свойство("ДополнительныйТипЗначения"), СтруктураДляЗаполнения.ДополнительныйТипЗначения, ""); + +КонецПроцедуры + Функция ПрочитатьДанныеИзМакета(ПротоДанные,ТабличныйДокумент,ИмяКолонкиЗамещения) СтрокаМакета = 1; @@ -587,7 +740,7 @@ ОбъектСсылка = СоздатьОбъект_ПВХ(ПротоДанные,ПротоОбъект); ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("ПланСчетов") Тогда ОбъектСсылка = СоздатьОбъект_ПланСчетов(ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("ПланВидовРасчетов") Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("ПланВидовРасчета") Тогда ОбъектСсылка = СоздатьОбъект_ПланВидовРасчетов(ПротоДанные,ПротоОбъект); КонецЕсли; ПротоОбъект.Объект = ОбъектСсылка; @@ -1409,13 +1562,9 @@ Для каждого мдТабЧасть из Объект.Метаданные().ТабличныеЧасти Цикл ЭтоРежимГруппа = ПротоОбъект.Режимы.Группа; - Если (ЭтоРежимГруппа И мдТабЧасть.Использование<>Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляЭлемента) - Или (НЕ ЭтоРежимГруппа И мдТабЧасть.Использование<>Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляГруппы) Тогда - - Объект[мдТабЧасть.Имя].Очистить(); - КонецЕсли; - + Объект[мдТабЧасть.Имя].Очистить(); КонецЦикла; + Для каждого ТабЧасть из ПротоОбъект.ТабличныеЧасти Цикл Для каждого СтрокаТабЧасти Из ТабЧасть.Значение Цикл СтрокаТабЧастиОбъекта = Объект[ТабЧасть.Ключ].Добавить(); @@ -1553,6 +1702,19 @@ Значение = Неопределено; Режим = ВРег(стрПоле.Режим); + Попытка + Если НаборМдРеквизитов = Неопределено Тогда + Если НЕ ЗначениеЗаполнено(стрПоле.ДополнительныйТип) Тогда + ВызватьИсключение ПолучитьТекстСообщенияПользователю("Не указан дополнительный тип значения"); + КонецЕсли; + МетаданныеРеквизита = Неопределено; + Иначе + МетаданныеРеквизита = НаборМдРеквизитов[стрПоле.Имя]; + КонецЕсли; + Исключение + Возврат ""; + КонецПопытки; + Попытка Если НаборМдРеквизитов = Неопределено Тогда Если НЕ ЗначениеЗаполнено(стрПоле.ДополнительныйТип) Тогда @@ -2099,170 +2261,557 @@ // } Методы проверки таблиц метаданных //{ ОСНОВНОЙ БЛОК -Функция СоздатьМакетДляГенерацииДанных(МассивДанных) Экспорт +Функция СоздатьМакетДляГенерацииДанных(ТипЗнчМакета, МассивДанных) Экспорт + ШапкаДанных = ШапкаДанныхВМакете(); - Макет = Новый ТабличныйДокумент; - номерКолонки = 0; - Для каждого ключЗначение Из ШапкаДанных Цикл - номерКолонки = номерКолонки + 1; - имяПоля = ключЗначение.Ключ; - Макет.Область(1, номерКолонки, 1, номерКолонки).Текст = имяПоля ; + + ТЗ = Новый ТаблицаЗначений; + Для Каждого СтрокаШапки ИЗ ШапкаДанных Цикл + ТЗ.Колонки.Добавить(СтрокаШапки.Ключ, Новый ОписаниеТипов("Строка")); КонецЦикла; + ДанныеДляВыгрузки = Новый Массив; + Для каждого ОписательОбъекта Из МассивДанных Цикл ПользовательИБ = Неопределено; + СтрокаОбъектаВыгрузки = Новый Массив; Если ЭтоОписательПользователяИБ(ОписательОбъекта, ПользовательИБ) Тогда - ДобавитьПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных); + ДобавитьПользователяИБ_ВВыгрузку(СтрокаОбъектаВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных); Иначе - - ДобавитьОбъектВМакет(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных); + + // соберем объект для перевода в нужный формат + ДобавитьОбъектВВыгрузку(СтрокаОбъектаВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных); КонецЕсли; + ДанныеДляВыгрузки.Вставить(ДанныеДляВыгрузки.Количество(), СтрокаОбъектаВыгрузки); КонецЦикла; + + Если ТипЗнчМакета = Тип("ТабличныйДокумент") Тогда + + // запись в xml + Макет = ВыгрузитьДанныеВМакетXML(ДанныеДляВыгрузки, ШапкаДанных); + + ИначеЕсли ТипЗнчМакета = Тип("ТекстовыйДокумент") Тогда + + // запись в json + Макет = ВыгрузитьДанныеВМакетJSON(ДанныеДляВыгрузки); + + КонецЕсли; + Возврат Макет; + КонецФункции -//{ Пример вызова из внешнего кода: -// Путь_xUnitFor1C = "C:\Projects\GitHub\xUnitFor1C\"; -// ПутьГенератораМакета = Путь_xUnitFor1C + "ГенерацияМакетаДанных_На_БазеРеальныхДанных.epf"; -// Запрос = Новый Запрос; -// запрос.Текст = " -// |ВЫБРАТЬ -// | ""РегистрыСведений.РегистрСведений1.СоздатьНаборЗаписей().Метаданные()"" КАК __Метаданные, -// | ""ЗаписьРегистра"" КАК __Префикс, -// | РегистрСведений1.ПростойСправочник, -// | РегистрСведений1.ПростойСправочник2, -// | РегистрСведений1.РесурсЧисло, -// | РегистрСведений1.РесурсБулево -// |ИЗ -// | РегистрСведений.РегистрСведений1 КАК РегистрСведений1 -// |УПОРЯДОЧИТЬ ПО -// | ПростойСправочник2"; -// - //или Запрос.Текст = - // "ВЫБРАТЬ - // | """" КАК __Метаданные, - // | ""ПростойСправочник"" КАК __Префикс, - // | ПростойСправочник.Ссылка, - // | ПростойСправочник.Код, - // | ПростойСправочник.Наименование, - // | ПростойСправочник.РеквизитБулево, - // | ПростойСправочник.РеквизитПеречисление - // |ИЗ - // | Справочник.ПростойСправочник КАК ПростойСправочник - // |Где РеквизитБулево И ПростойСправочник.Наименование = ""Тестовое наименование"" "; -// -// РезультатЗапроса = Запрос.Выполнить(); -// -// ГенераторМакетаДанных = ВнешниеОбработки.Создать(ПутьГенератораМакета); -// Макет = ГенераторМакетаДанных.СоздатьМакетДанныхНаОснованииЗапроса(РезультатЗапроса); -// Макет.Показать(); -//} -Функция СоздатьМакетДанныхНаОснованииЗапроса(РезультатЗапроса) Экспорт - Таблица = РезультатЗапроса.Выгрузить(); +Функция ВыгрузитьДанныеВМакетXML(ДанныеДляВыгрузки, ШапкаДанных) - МассивПропускаемыхКолонок = Новый Массив; - МассивПропускаемыхКолонок.Добавить("__Метаданные"); - МассивПропускаемыхКолонок.Добавить("__Префикс"); - СтрокаПропускаемыхКолонок = ""; - Для каждого Колонка Из МассивПропускаемыхКолонок Цикл - СтрокаПропускаемыхКолонок = СтрокаПропускаемыхКолонок + Колонка+", "; + Макет = Новый ТабличныйДокумент; + + номерКолонки = 0; + Для каждого ключЗначение Из ШапкаДанных Цикл + номерКолонки = номерКолонки + 1; + имяПоля = ключЗначение.Ключ; + ОбластьМакета = Макет.Область(1, номерКолонки, 1, номерКолонки); + ОбластьМакета.Текст = имяПоля; КонецЦикла; - КоличествоСлужебныхКолонок = МассивПропускаемыхКолонок.Количество(); + НомерСтроки = 1; - СтруктураДанных = Новый Структура(); - для каждого КолонкаЗапроса из Таблица.Колонки цикл - Если МассивПропускаемыхКолонок.Найти(КолонкаЗапроса.Имя) <> Неопределено Тогда - КоличествоСлужебныхКолонок = КоличествоСлужебныхКолонок - 1; - Продолжить; - КонецЕсли; + // обходим объекты + Для Каждого Строка ИЗ ДанныеДляВыгрузки Цикл + + // обходим метаданные объекта + Для Каждого СтрокаМассива из Строка Цикл + + ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, СтрокаМассива); + + КонецЦикла; - имяКолонки = КолонкаЗапроса.имя; - СтруктураДанных.Вставить(имяКолонки); КонецЦикла; - Если КоличествоСлужебныхКолонок <> 0 Тогда - ТекстСообщения = ПолучитьТекстСообщенияПользователю("Не все служебные колонки заданы. В запросе обязательно должны быть колонки %1"); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",СтрокаПропускаемыхКолонок); - ВызватьИсключение ТекстСообщения; - КонецЕсли; + Возврат Макет; - МассивДанных = Новый Массив; - - номер = 1; - индекс = 1; - Для каждого Строка из Таблица Цикл - номер = номер + 1; +КонецФункции + +Процедура ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, ЗначениеОбъекта) + + // обработка ролей + Если ТипЗнч(ЗначениеОбъекта) = Тип("Массив") Тогда - ИмяПеременной = Строка.__Префикс + Формат(индекс, "ЧГ=; ЧН=0"); - РеквизитыЗаписи = Новый Структура(); - Для каждого ключЗначение Из СтруктураДанных Цикл - РеквизитыЗаписи.Вставить(ключЗначение.Ключ) + Для Каждого СтрокаМассива из ЗначениеОбъекта Цикл + + ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, СтрокаМассива); + КонецЦикла; - ЗаполнитьЗначенияСвойств(РеквизитыЗаписи, Строка); - описаниеЗаписиРегистраСведений1 = СоздатьОписательЭлемента(); - описаниеЗаписиРегистраСведений1.Вставить("ИмяПеременной", ИмяПеременной); - описаниеЗаписиРегистраСведений1.Вставить("Реквизиты", РеквизитыЗаписи); + Возврат; - Если ПустаяСтрока(Строка.__Метаданные) Тогда - описаниеЗаписиРегистраСведений1.Вставить(ВернутьЗначениеСоответствия("Ссылка"), Строка.Ссылка); - Иначе - Мета = Неопределено; - Выполнить("Мета = "+Строка.__Метаданные); + КонецЕсли; + + НомерСтроки = НомерСтроки + 1; - описаниеЗаписиРегистраСведений1.Вставить("Метаданное", Мета); + Для Каждого ЗначенияСтрокиОбъекта ИЗ ЗначениеОбъекта Цикл + + Если ШапкаДанных.Свойство(ЗначенияСтрокиОбъекта.Ключ) Тогда + НомерКолонки = ШапкаДанных[ЗначенияСтрокиОбъекта.Ключ]; КонецЕсли; - МассивДанных.Добавить(описаниеЗаписиРегистраСведений1); + // как ТЧ доабвляются слжуебные параметры обмен, только создание и доп. свойства + Если ЗначенияСтрокиОбъекта.Ключ = "ТЧ" Тогда + + // в ТЧ вложено значение "ДополнительныеСвойства" имеющее тип соответствия и список вложенных элементов + Для Каждого ТЧОбъекта ИЗ ЗначенияСтрокиОбъекта.Значение Цикл + + // Если xddMods или ДополнительныеСвойства то они не разбиваются на строки в отличие от обычных ТЧ + // и хранят значения в виде структуры + // если ТЧ то строки хранятся в виде массива реквизитов + + ОбработкаСтрокиТЧ(Макет, НомерСтроки, НомерКолонки, ШапкаДанных, ТЧОбъекта); + + КонецЦикла; + + ИначеЕсли ТипЗнч(ЗначенияСтрокиОбъекта) = Тип("Структура") Тогда + + ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, ЗначенияСтрокиОбъекта); + + ИначеЕсли ТипЗнч(ЗначенияСтрокиОбъекта.Значение) = Тип("Структура") Тогда + + Для Каждого Строка из ЗначенияСтрокиОбъекта.Значение Цикл + ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, Строка.Значение); + КонецЦикла; + + ИначеЕсли ЗначенияСтрокиОбъекта.Ключ = "Роли" + И ТипЗнч(ЗначенияСтрокиОбъекта.Значение) = Тип("Массив") Тогда + + НомерКолонки = ШапкаДанных["ТЧ"]; + ОбластьМакета = Макет.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); + ОбластьМакета.Текст = ЗначенияСтрокиОбъекта.Ключ; - индекс = индекс + 1; + ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, ЗначенияСтрокиОбъекта.Значение); + + Иначе + // обработка строки структуры + ОбластьМакета = Макет.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); + ОбластьМакета.Текст = ЗначенияСтрокиОбъекта.Значение; + + КонецЕсли; + КонецЦикла; - - Макет = ЭтотОбъект.СоздатьМакетДляГенерацииДанных(массивДанных); - - Возврат Макет; -КонецФункции -Функция СоздатьОписательЭлементаПоСсылке(Ссылка, МассивИмен, ДанныеОбъекта = Неопределено) Экспорт - ОписательЭлемента = СоздатьОписательЭлемента(); - ОписательЭлемента[ВернутьЗначениеСоответствия("Ссылка")] = Ссылка; - ОписательЭлемента.ИмяПеременной = УникальноеИмяПеременнойПоСсылке(Ссылка, МассивИмен); - МетаСсылка = Ссылка.Метаданные(); - ОписательЭлемента.Метаданное = МетаСсылка; - ОписательЭлемента.РежимПоиска = "Перем"; - ОписательЭлемента.ВыгружатьКод = ВыгружатьКод; - МенеджерОбъекта = ПолучитьМенеджерОбъекта_ирЛкс(МетаСсылка); - Если Метаданные.Справочники.Содержит(МетаСсылка) И Ссылка.ЭтоГруппа Тогда - ОписательЭлемента.РежимСоздания = "Группа"; - ИначеЕсли Метаданные.ПланыОбмена.Содержит(МетаСсылка) И Ссылка = МенеджерОбъекта.ЭтотУзел() Тогда - ОписательЭлемента.РежимСоздания = "ЭтотУзел"; +КонецПроцедуры + +Процедура ОбработкаСтрокиТЧ(Макет, НомерСтроки, НомерКолонки, ШапкаДанных, ТЧОбъекта) + + МассивТЧБезРазделенияНаСтроки = Новый Массив; + МассивТЧБезРазделенияНаСтроки.Добавить("xddMods"); + МассивТЧБезРазделенияНаСтроки.Добавить("ДополнительныеСвойства"); + МассивТЧБезРазделенияНаСтроки.Добавить("Роли"); + + РазбиватьНаСтроки = Ложь; + Если МассивТЧБезРазделенияНаСтроки.Найти(ТЧОбъекта.Ключ) = Неопределено Тогда + + РазбиватьНаСтроки = Истина; + Иначе - ОписательЭлемента.РежимСоздания = ""; + + ОбластьМакета = Макет.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); + ОбластьМакета.Текст = ТЧОбъекта.Ключ; + КонецЕсли; - Если ДанныеОбъекта <> Неопределено Тогда - Если ДанныеОбъекта.Свойство("Предопределенный") Тогда - ЭтоПредопределенноеЗначение = ДанныеОбъекта.Предопределенный; - Иначе - ЭтоПредопределенноеЗначение = Ложь; + + Для Каждого СтрокаТЧОбъекта ИЗ ТЧОбъекта.Значение Цикл + + Если РазбиватьНаСтроки Тогда + ОбластьМакета = Макет.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); + Текст = ?(ТЧОбъекта.Ключ = "Записи", "Запись", ТЧОбъекта.Ключ); + ОбластьМакета.Текст = Текст; КонецЕсли; - Если ЭтоПредопределенноеЗначение Тогда - Если ЭтоПлатформа8_3_3БезРежимаСовместимости() Тогда - ОписательЭлемента.РежимСоздания = "Предопределенный"; - ОписательЭлемента.Значение = ДанныеОбъекта.ИмяПредопределенныхДанных; - Иначе // т.к. в 8.2 нет свойства ИмяПредопределенныхДанных, приходится использовать ГУИД - ОписательЭлемента.РежимСоздания = "СоздатьПоГуид"; - ОписательЭлемента.ГуидСсылки = Ссылка.УникальныйИдентификатор(); - КонецЕсли; + + Если ТипЗнч(СтрокаТЧОбъекта) = Тип("Массив") Тогда + + // обработка строк ТЧ объекта + Для Каждого Строка ИЗ СтрокаТЧОбъекта Цикл + + ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, Строка); + + КонецЦикла; + + ИначеЕсли ТипЗнч(СтрокаТЧОбъекта) = Тип("Структура") Тогда + + ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, СтрокаТЧОбъекта); + + ИначеЕсли ТипЗнч(СтрокаТЧОбъекта.Значение) = Тип("Структура") Тогда + + ЗаполнитьСтрокуМакета(Макет, НомерСтроки, ШапкаДанных, СтрокаТЧОбъекта.Значение); + + КонецЕсли; + + Если РазбиватьНаСтроки Тогда + НомерСтроки = НомерСтроки + 1; КонецЕсли; + + КонецЦикла; + + // последнюю пустую строку убираем + Если РазбиватьНаСтроки Тогда + НомерСтроки = НомерСтроки - 1; КонецЕсли; - Возврат ОписательЭлемента; -КонецФункции + +КонецПроцедуры -Функция ЭтоПлатформа8_3_3БезРежимаСовместимости() +Функция ВыгрузитьДанныеВМакетJSON(ДанныеДляВыгрузки) + + МакетJSON = Новый ТекстовыйДокумент; + СтруктураJSON = ПодготовитьJSON(ДанныеДляВыгрузки); + ТекстJSON = КонвертироватьДанныеВJSON(СтруктураJSON); + МакетJSON.УстановитьТекст(ТекстJSON); + + Возврат МакетJSON; + +КонецФункции + +Функция ПодготовитьJSON(ДанныеДляВыгрузки) + + JSON = Новый Структура; + + // обходим объекты + Для Каждого Строка ИЗ ДанныеДляВыгрузки Цикл + + JSONОбъект = Новый Структура; + // первой строкой всегда идет шапка объекта + ИмяПеременной = Строка[0].ИмяПеременной; + МассивРеквизитов = Новый Массив; + МассивТЧ = Новый Массив; + МассивДопСвойств = Новый Массив; + МассивЗаписей = Новый Массив; + МассивРолей = Новый Массив; + + // обходим метаданыне объекта + Для Каждого СтрокаМассива из Строка Цикл + + Если ТипЗнч(СтрокаМассива) = Тип("Массив") Тогда + ЗаполнитьСтрокуОбъектаJSON(МассивРеквизитов, СтрокаМассива); + ИначеЕсли СтрокаМассива.Свойство("Реквизит") + И ЗначениеЗаполнено(СтрокаМассива.Реквизит) Тогда + ЗаполнитьСтрокуОбъектаJSON(МассивРеквизитов, СтрокаМассива); + ИначеЕсли СтрокаМассива.Свойство("Роли") Тогда + ЗаполнитьСтрокуОбъектаJSON(МассивРолей, СтрокаМассива.Роли, Истина); + ИначеЕсли СтрокаМассива.Свойство("ТЧ") Тогда + Если СтрокаМассива.ТЧ.Свойство("XDDMODS") + или СтрокаМассива.ТЧ.Свойство("XDDDATAGEN") Тогда + ЗаполнитьРежимыОбъектаJSON(JSONОбъект, СтрокаМассива); + ИначеЕсли СтрокаМассива.ТЧ.Свойство("ДополнительныеСвойства") Тогда + ЗаполнитьСтрокуОбъектаJSON(МассивДопСвойств, СтрокаМассива, Истина); + ИначеЕсли СтрокаМассива.ТЧ.Свойство("Записи") Тогда + ЗаполнитьСтрокуОбъектаJSON(МассивЗаписей, СтрокаМассива, Истина); + Иначе + ЗаполнитьСтрокуОбъектаJSON(МассивТЧ, СтрокаМассива); + КонецЕсли; + Иначе + ЗаполнитьСтрокуОбъектаJSON(JSONОбъект, СтрокаМассива); + КонецЕсли; + + КонецЦикла; + + Если МассивРеквизитов.Количество() > 0 Тогда + JSONОбъект.Вставить("ПоляОбъекта", МассивРеквизитов); + КонецЕсли; + Если МассивТЧ.Количество() > 0 Тогда + JSONОбъект.Вставить("ТабличныеЧасти", МассивТЧ); + КонецЕсли; + Если МассивДопСвойств.Количество() > 0 Тогда + JSONОбъект.Вставить("ДополнительныеСвойства", МассивДопСвойств); + КонецЕсли; + Если МассивЗаписей.Количество() > 0 Тогда + JSONОбъект.Вставить("Записи", МассивЗаписей); + КонецЕсли; + Если МассивРолей.Количество() > 0 Тогда + JSONОбъект.Вставить("Роли", МассивРолей); + КонецЕсли; + + JSON.Вставить(ИмяПеременной, JSONОбъект); + + КонецЦикла; + + Возврат JSON; + +КонецФункции + +Процедура ЗаполнитьСтрокуОбъектаJSON(JSONОбъект, ЗначениеОбъекта, ПоложитьВJSONОбъектМассивТЧ = Ложь) + + // обработка ролей + Если ТипЗнч(ЗначениеОбъекта) = Тип("Массив") Тогда + + Для Каждого СтрокаМассива из ЗначениеОбъекта Цикл + + ЗаполнитьСтрокуОбъектаJSON(JSONОбъект, СтрокаМассива); + + КонецЦикла; + + Возврат; + + КонецЕсли; + + ЭтоШапкаОбъекта = ЗначениеОбъекта.Свойство("ИмяПеременной"); + ЭтоТЧОбъекта = ЗначениеОбъекта.Свойство("ТЧ"); + + Если ЭтоШапкаОбъекта Тогда + + Для Каждого ЗначенияСтрокиОбъекта ИЗ ЗначениеОбъекта Цикл + + Если ЗначениеЗаполнено(ЗначенияСтрокиОбъекта.Значение) Тогда + + JSONОбъект.Вставить(ЗначенияСтрокиОбъекта.Ключ, ЗначенияСтрокиОбъекта.Значение); + + КонецЕсли; + + КонецЦикла; + + Возврат; + + КонецЕсли; + + Если ЭтоТЧОбъекта Тогда + + ТЧОбъекта = Новый Массив; + ЗначенияТЧОбъекта = ЗначениеОбъекта.ТЧ; + + Для Каждого СтрокаТЧОбъекта ИЗ ЗначенияТЧОбъекта Цикл + + СтруктураСтроки = Новый Структура; + + Для Каждого СтрокаЗначенияТЧОбъекта ИЗ СтрокаТЧОбъекта.Значение Цикл + + Если ТипЗнч(СтрокаТЧОбъекта.Значение) = Тип("Структура") Тогда + + ТЧОбъекта.Добавить(СтрокаЗначенияТЧОбъекта.Значение); + + Иначе + + ТЧОбъекта.Добавить(СтрокаЗначенияТЧОбъекта); + + КонецЕсли + + КонецЦикла; + + КонецЦикла; + + Если ПоложитьВJSONОбъектМассивТЧ Тогда + + JSONОбъект = ТЧОбъекта; + + Иначе + + СтруктураТЧ = Новый Структура; + СтруктураТЧ.Вставить(СтрокаТЧОбъекта.Ключ, ТЧОбъекта); + + // ТЧ складываем в массив + Если ТЧОбъекта.Количество() > 0 Тогда + JSONОбъект.Добавить(СтруктураТЧ); + КонецЕсли; + + КонецЕсли; + + Возврат; + + КонецЕсли; + + // реквизиты + РеквизитыОбъекта = Новый Структура; + Для Каждого ЗначенияСтрокиОбъекта ИЗ ЗначениеОбъекта Цикл + + // пустые пропускаем для снижения объема + Если ЗначениеЗаполнено(ЗначенияСтрокиОбъекта.Значение) Тогда + + РеквизитыОбъекта.Вставить(ЗначенияСтрокиОбъекта.Ключ, ЗначенияСтрокиОбъекта.Значение); + + КонецЕсли; + + КонецЦикла; + + // реквизиты складываем в массив + JSONОбъект.Добавить(РеквизитыОбъекта); + +КонецПроцедуры + +Процедура ЗаполнитьРежимыОбъектаJSON(JSONОбъект, ЗначениеОбъекта) + + СтруктураРежимы = Новый Структура; + ЗначенияТЧОбъекта = ЗначениеОбъекта.ТЧ; + + Для Каждого СтрокаТЧОбъекта ИЗ ЗначенияТЧОбъекта Цикл + + Для Каждого СтрокаЗначенияТЧОбъекта ИЗ СтрокаТЧОбъекта.Значение Цикл + + СтруктураРежимы.Вставить(СтрокаЗначенияТЧОбъекта.Значение, Истина); + + КонецЦикла; + + КонецЦикла; + + JSONОбъект.Вставить("Режимы", СтруктураРежимы); + +КонецПроцедуры + +Функция ПреобразованиеНеПоддерживаемыхТипов(Свойство, Значение, ДополнительныеПараметры, Отказ) Экспорт + + Результат = Новый Структура; + + Если ТипЗнч(Значение) = Тип("ОбъектМетаданных") Тогда + + Результат.Вставить(Свойство, Строка(Значение)); + + Иначе + + Значение = ?(ЗначениеЗаполнено(Значение), Строка(Значение), ""); + Результат.Вставить(Свойство, Значение); + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +//{ Пример вызова из внешнего кода: +// Путь_xUnitFor1C = "C:\Projects\GitHub\xUnitFor1C\"; +// ПутьГенератораМакета = Путь_xUnitFor1C + "ГенерацияМакетаДанных_На_БазеРеальныхДанных.epf"; +// Запрос = Новый Запрос; +// запрос.Текст = " +// |ВЫБРАТЬ +// | ""РегистрыСведений.РегистрСведений1.СоздатьНаборЗаписей().Метаданные()"" КАК __Метаданные, +// | ""ЗаписьРегистра"" КАК __Префикс, +// | РегистрСведений1.ПростойСправочник, +// | РегистрСведений1.ПростойСправочник2, +// | РегистрСведений1.РесурсЧисло, +// | РегистрСведений1.РесурсБулево +// |ИЗ +// | РегистрСведений.РегистрСведений1 КАК РегистрСведений1 +// |УПОРЯДОЧИТЬ ПО +// | ПростойСправочник2"; +// + //или Запрос.Текст = + // "ВЫБРАТЬ + // | """" КАК __Метаданные, + // | ""ПростойСправочник"" КАК __Префикс, + // | ПростойСправочник.Ссылка, + // | ПростойСправочник.Код, + // | ПростойСправочник.Наименование, + // | ПростойСправочник.РеквизитБулево, + // | ПростойСправочник.РеквизитПеречисление + // |ИЗ + // | Справочник.ПростойСправочник КАК ПростойСправочник + // |Где РеквизитБулево И ПростойСправочник.Наименование = ""Тестовое наименование"" "; +// +// РезультатЗапроса = Запрос.Выполнить(); +// +// ГенераторМакетаДанных = ВнешниеОбработки.Создать(ПутьГенератораМакета); +// Макет = ГенераторМакетаДанных.СоздатьМакетДанныхНаОснованииЗапроса(РезультатЗапроса); +// Макет.Показать(); +//} +Функция СоздатьМакетДанныхНаОснованииЗапроса(РезультатЗапроса) Экспорт + Таблица = РезультатЗапроса.Выгрузить(); + + МассивПропускаемыхКолонок = Новый Массив; + МассивПропускаемыхКолонок.Добавить("__Метаданные"); + МассивПропускаемыхКолонок.Добавить("__Префикс"); + СтрокаПропускаемыхКолонок = ""; + Для каждого Колонка Из МассивПропускаемыхКолонок Цикл + СтрокаПропускаемыхКолонок = СтрокаПропускаемыхКолонок + Колонка+", "; + КонецЦикла; + + КоличествоСлужебныхКолонок = МассивПропускаемыхКолонок.Количество(); + + СтруктураДанных = Новый Структура(); + для каждого КолонкаЗапроса из Таблица.Колонки цикл + Если МассивПропускаемыхКолонок.Найти(КолонкаЗапроса.Имя) <> Неопределено Тогда + КоличествоСлужебныхКолонок = КоличествоСлужебныхКолонок - 1; + Продолжить; + КонецЕсли; + + имяКолонки = КолонкаЗапроса.имя; + СтруктураДанных.Вставить(имяКолонки); + КонецЦикла; + + Если КоличествоСлужебныхКолонок <> 0 Тогда + ТекстСообщения = ПолучитьТекстСообщенияПользователю("Не все служебные колонки заданы. В запросе обязательно должны быть колонки %1"); + ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",СтрокаПропускаемыхКолонок); + ВызватьИсключение ТекстСообщения; + КонецЕсли; + + МассивДанных = Новый Массив; + + номер = 1; + индекс = 1; + Для каждого Строка из Таблица Цикл + номер = номер + 1; + + ИмяПеременной = Строка.__Префикс + Формат(индекс, "ЧГ=; ЧН=0"); + РеквизитыЗаписи = Новый Структура(); + Для каждого ключЗначение Из СтруктураДанных Цикл + РеквизитыЗаписи.Вставить(ключЗначение.Ключ) + КонецЦикла; + ЗаполнитьЗначенияСвойств(РеквизитыЗаписи, Строка); + + описаниеЗаписиРегистраСведений1 = СоздатьОписательЭлемента(); + описаниеЗаписиРегистраСведений1.Вставить("ИмяПеременной", ИмяПеременной); + описаниеЗаписиРегистраСведений1.Вставить("Реквизиты", РеквизитыЗаписи); + + Если ПустаяСтрока(Строка.__Метаданные) Тогда + описаниеЗаписиРегистраСведений1.Вставить(ВернутьЗначениеСоответствия("Ссылка"), Строка.Ссылка); + Иначе + Мета = Неопределено; + Выполнить("Мета = "+Строка.__Метаданные); + + описаниеЗаписиРегистраСведений1.Вставить("Метаданное", Мета); + КонецЕсли; + + МассивДанных.Добавить(описаниеЗаписиРегистраСведений1); + + индекс = индекс + 1; + КонецЦикла; + + Макет = ЭтотОбъект.СоздатьМакетДляГенерацииДанных(массивДанных); + + Возврат Макет; +КонецФункции + +Функция СоздатьОписательЭлементаПоСсылке(Ссылка, МассивИмен, ДанныеОбъекта = Неопределено) Экспорт + ОписательЭлемента = СоздатьОписательЭлемента(); + ОписательЭлемента[ВернутьЗначениеСоответствия("Ссылка")] = Ссылка; + ОписательЭлемента.ИмяПеременной = УникальноеИмяПеременнойПоСсылке(Ссылка, МассивИмен); + МетаСсылка = Ссылка.Метаданные(); + ОписательЭлемента.Метаданное = МетаСсылка; + ОписательЭлемента.РежимПоиска = "Перем"; + ОписательЭлемента.ВыгружатьКод = ВыгружатьКод; + МенеджерОбъекта = ПолучитьМенеджерОбъекта_ирЛкс(МетаСсылка); + Если Метаданные.Справочники.Содержит(МетаСсылка) И Ссылка.ЭтоГруппа Тогда + ОписательЭлемента.РежимСоздания = "Группа"; + ИначеЕсли Метаданные.ПланыОбмена.Содержит(МетаСсылка) И Ссылка = МенеджерОбъекта.ЭтотУзел() Тогда + ОписательЭлемента.РежимСоздания = "ЭтотУзел"; + Иначе + ОписательЭлемента.РежимСоздания = ""; + КонецЕсли; + Если ДанныеОбъекта <> Неопределено Тогда + Если ДанныеОбъекта.Свойство("Предопределенный") Тогда + ЭтоПредопределенноеЗначение = ДанныеОбъекта.Предопределенный; + Иначе + ЭтоПредопределенноеЗначение = Ложь; + КонецЕсли; + Если ЭтоПредопределенноеЗначение Тогда + Если ЭтоПлатформа8_3_3БезРежимаСовместимости() Тогда + ОписательЭлемента.РежимСоздания = "Предопределенный"; + ОписательЭлемента.Значение = ДанныеОбъекта.ИмяПредопределенныхДанных; + Иначе // т.к. в 8.2 нет свойства ИмяПредопределенныхДанных, приходится использовать ГУИД + ОписательЭлемента.РежимСоздания = "СоздатьПоГуид"; + ОписательЭлемента.ГуидСсылки = Ссылка.УникальныйИдентификатор(); + КонецЕсли; + КонецЕсли; + КонецЕсли; + Возврат ОписательЭлемента; +КонецФункции + +Функция ЭтоПлатформа8_3_3БезРежимаСовместимости() СистемнаяИнформация = Новый СистемнаяИнформация; @@ -2417,233 +2966,8 @@ Возврат рез; КонецФункции -Процедура ДобавитьПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных) - ДобавитьШапкуПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных); - - ДобавитьРеквизитыПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных); - ДобавитьРолиПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных); -КонецПроцедуры - -Процедура ДобавитьШапкуПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных) - ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, "", ОписательОбъекта.Значение); - - НомерСтрокиМакета = Макет.ВысотаТаблицы; - - НомерКолонкиМакета_Тип = ШапкаДанных.Тип; - ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Тип, НомерСтрокиМакета, НомерКолонкиМакета_Тип); - ОбластьМакета.Текст = "ПользовательИБ"; - - НомерКолонкиМакета_ИмяПеременной = ШапкаДанных.ИмяПеременной; - ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ИмяПеременной, НомерСтрокиМакета, НомерКолонкиМакета_ИмяПеременной); - ОбластьМакета.Текст = ОписательОбъекта.ИмяПеременной; -КонецПроцедуры - -Процедура ДобавитьРеквизитыПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных) - - параметрыПользователя = Новый Структура; - параметрыПользователя.Вставить("Имя", ""); - параметрыПользователя.Вставить("ПолноеИмя", ""); - параметрыПользователя.Вставить("АутентификацияСтандартная", Истина); - параметрыПользователя.Вставить("АутентификацияОС", Ложь); - параметрыПользователя.Вставить("ПользовательОС", ""); - параметрыПользователя.Вставить("ОсновнойИнтерфейс", ""); //Метаданные.Интерфейсы.Администратор); - параметрыПользователя.Вставить("ПоказыватьВСпискеВыбора", Истина); - параметрыПользователя.Вставить("РежимЗапуска", РежимЗапускаКлиентскогоПриложения.Авто); - //параметрыПользователя.Вставить("Язык", Метаданные.Языки.Русский); - - ЗаполнитьЗначенияСвойств(параметрыПользователя, ОписательОбъекта.ПользовательИБ); - - параметрыПользователя.Вставить("Пароль", ""); - - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - Для Каждого КлючЗначение Из параметрыПользователя Цикл - ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, КлючЗначение.Ключ, КлючЗначение.Значение); - - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - КонецЦикла; -КонецПроцедуры - -Процедура ДобавитьРолиПользователяИБ_ВМакет(Макет, ОписательОбъекта, ШапкаДанных) - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - НомерКолонкиМакета_ТЧ = ШапкаДанных.ТЧ; - ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ТЧ, НомерСтрокиМакета, НомерКолонкиМакета_ТЧ); - ОбластьМакета.Текст = "Роли"; - - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - - Роли = ОписательОбъекта.ПользовательИБ.Роли; - Для Каждого Роль Из Роли Цикл - ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, "Роль", Роль.Имя); - - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - КонецЦикла; -КонецПроцедуры - -Процедура ДобавитьОбъектВМакет(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных) - Ссылка = Неопределено; - Мд = Неопределено; - ЭтоСсылочныйОбъект = ЭтоОписательОбъектаСсылки(ОписательОбъекта, Ссылка); - Если ЭтоСсылочныйОбъект Тогда - ЭтоСсылочныйОбъект = Истина; - Мд = Ссылка.Метаданные(); - ИначеЕсли ОписательОбъекта.Свойство("Метаданное", Мд) Тогда - КонецЕсли; - - ДобавитьМетаданныеВМакетДляДобавляемогоОбъекта(Макет, ОписательОбъекта, ШапкаДанных, Макет.ВысотаТаблицы+1, Мд); - - менеджерОбъекта = ПолучитьМенеджерОбъекта_ирЛкс(Мд); - КорневойТипКонфигурации = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд); - Если КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Справочник") Тогда - Если ЗначениеЗаполнено(Ссылка) и Ссылка.ЭтоГруппа Тогда - Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда - лПустойОбъект = менеджерОбъекта.СоздатьГруппу(); - Иначе - лПустойОбъект = менеджерОбъекта.CreateFolder(); - КонецЕсли; - Иначе - Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда - лПустойОбъект = менеджерОбъекта.СоздатьЭлемент(); - Иначе - лПустойОбъект = менеджерОбъекта.CreateItem(); - КонецЕсли; - КонецЕсли; - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Документ") Тогда - лПустойОбъект = менеджерОбъекта.СоздатьДокумент(); - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("БизнесПроцесс") Тогда - лПустойОбъект = менеджерОбъекта.СоздатьБизнесПроцесс(); - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Задача") Тогда - лПустойОбъект = менеджерОбъекта.СоздатьЗадачу(); - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") Тогда - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрНакопления") Тогда - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланОбмена") Тогда - лПустойОбъект = менеджерОбъекта.СоздатьУзел(); - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланВидовХарактеристик") Тогда - Если ЗначениеЗаполнено(Ссылка) и Ссылка.ЭтоГруппа Тогда - Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда - лПустойОбъект = менеджерОбъекта.СоздатьГруппу(); - Иначе - лПустойОбъект = менеджерОбъекта.CreateFolder(); - КонецЕсли; - Иначе - Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда - лПустойОбъект = менеджерОбъекта.СоздатьЭлемент(); - Иначе - лПустойОбъект = менеджерОбъекта.CreateItem(); - КонецЕсли; - КонецЕсли; - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланСчетов") Тогда - лПустойОбъект = менеджерОбъекта.СоздатьСчет(); - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланВидовРасчета") Тогда - лПустойОбъект = менеджерОбъекта.СоздатьВидРасчета(); - Иначе - ТекстСообщения = ПолучитьТекстСообщенияПользователю("Неизвестный КорневойТипКонфигурации <%1>"); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",КорневойТипКонфигурации); - ВызватьИсключение ТекстСообщения; - КонецЕсли; - - ВыгружаемыеСтандартныеРеквизиты = ВыгружаемыеСтандартныеРеквизиты(ОписательОбъекта, КорневойТипКонфигурации); - - Если ЗначениеЗаполнено(Ссылка) Тогда - объект = Ссылка.ПолучитьОбъект(); - - Если НЕ ВыгружатьСсылку И ЗначениеЗаполнено(ОписательОбъекта.ГуидСсылки) Тогда - Для каждого РеквизитМд Из Мд.СтандартныеРеквизиты Цикл - Если РеквизитМд.Имя = ВернутьЗначениеСоответствия("Ссылка") Тогда - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ОписательОбъекта.ГуидСсылки, Мд, НомерСтрокиМакета, ШапкаДанных); - КонецЕсли; - КонецЦикла; - КонецЕсли; - - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, Мд.СтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты); - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, Мд.Реквизиты, Неопределено); - - ОбработатьТабличныеЧастиОбъекта(Макет, Мд.ТабличныеЧасти, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект); - ОбработатьРежимыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект); - ДобавитьДополнительныеСвойства(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект); - - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") и ТипЗнч(ОписательОбъекта.Реквизиты) = Тип("Структура") Тогда - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.СтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты); - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Измерения, Неопределено); - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Ресурсы, Неопределено); - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Реквизиты, Неопределено); - - ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") - Или КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрНакопления") - Или КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда - - ЭтоРегистрБухгалтерии = КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии"); - - НаборЗаписейРегистра = ОписательОбъекта.Реквизиты; - Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл - Макет.Область(Макет.ВысотаТаблицы+1, ШапкаДанных.ТЧ).Текст = "Запись"; - ОписательОбъекта.Реквизиты = ЗаписьРегистра; - - НаборСтандартныеРеквизиты = Мд.СтандартныеРеквизиты; - Если ЭтоРегистрБухгалтерии Тогда - ДанныеСчета = Новый Структура; - Если Мд.Корреспонденция Тогда - ДанныеСчета.Вставить("СчетДт", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "СубконтоДт")); - ДанныеСчета.Вставить("СчетКт", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "СубконтоКт")); - Иначе - ДанныеСчета.Вставить("Счет", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "Субконто")); - КонецЕсли; - - НаборСтандартныеРеквизиты = Новый Массив; - для каждого МдРеквизит из Мд.СтандартныеРеквизиты Цикл - ИмяРеквизита = МдРеквизит.Имя; - Если Лев(ИмяРеквизита, СтрДлина("ВидСубконто")) = "ВидСубконто" Тогда - Продолжить; - КонецЕсли; - Если Лев(ИмяРеквизита, СтрДлина("Субконто")) = "Субконто" Тогда - Продолжить; - КонецЕсли; - НаборСтандартныеРеквизиты.Добавить(МдРеквизит); - КонецЦикла; - КонецЕсли; - - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, НаборСтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты); - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Измерения, Неопределено, КорневойТипКонфигурации); - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Ресурсы, Неопределено, КорневойТипКонфигурации); - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Реквизиты, Неопределено); - - Если ЭтоРегистрБухгалтерии Тогда - ВыгружаемыеРеквизиты = Новый Массив; - МассивИмитаторРеквизитовМд = Новый Массив; - Для каждого КлючЗначение Из ДанныеСчета Цикл - ИмяРеквизита = КлючЗначение.Ключ; - ВыгружаемыеРеквизиты.Добавить(ИмяРеквизита); - Структура = Новый Структура("Имя,Субконто", ИмяРеквизита, КлючЗначение.Значение); - МассивИмитаторРеквизитовМд.Добавить(Структура); - КонецЦикла; - - ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, МассивИмитаторРеквизитовМд, ВыгружаемыеРеквизиты, КорневойТипКонфигурации); - КонецЕсли; - КонецЦикла; - - Иначе - ВызватьИсключение ПолучитьТекстСообщенияПользователю("Неизвестный вариант работы - метод <ДобавитьОбъектВМакет>"); - КонецЕсли; -КонецПроцедуры - -Процедура ДобавитьДополнительныеСвойства(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект) - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - - ДопСвойства = Новый Структура(); - Для Каждого СтрокаТЧ Из ЭтотОбъект.ДополнительныеСвойства Цикл - ДопСвойства.Вставить(СтрокаТЧ.Имя, СтрокаТЧ.Значение); - КонецЦикла; - Если ДопСвойства.Количество() > 0 Тогда - НомерКолонкиМакета_ТЧ = ШапкаДанных.ТЧ; - ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ТЧ, НомерСтрокиМакета, НомерКолонкиМакета_ТЧ); - ОбластьМакета.Текст = "ДополнительныеСвойства"; - КонецЕсли; - - ДобавитьДопСвойстваВМакет(Макет, ШапкаДанных, "Режим", ДопСвойства); -КонецПроцедуры - Процедура ДобавитьМетаданныеВМакетДляДобавляемогоОбъекта(Макет, ОписательОбъекта, ШапкаДанных, НомерСтрокиМакета, Мд) + НомерКолонкиМакета_Тип = ШапкаДанных.Тип; ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Тип, НомерСтрокиМакета, НомерКолонкиМакета_Тип); ОбластьМакета.Текст = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд); @@ -2664,7 +2988,8 @@ НомерКолонкиМакета_Значение = ШапкаДанных.Значение; ОбластьМакета_Значение = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Значение, НомерСтрокиМакета, НомерКолонкиМакета_Значение); - ОбластьМакета_Значение.Текст = ОписательОбъекта.Значение; + ОбластьМакета_Значение.Текст = ОписательОбъекта.Значение; + КонецПроцедуры Функция ВыгружаемыеСтандартныеРеквизиты(ОписательОбъекта, КорневойТипКонфигурации) @@ -2811,267 +3136,53 @@ Возврат ВыгружаемыеСтандартныеРеквизиты; КонецФункции -Процедура ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, МдРеквизиты, ВыгружаемыеРеквизиты, КорневойТипКонфигурации = "") - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - - ЭтоСсылочныйОбъект = ЭтоОписательОбъектаСсылки(ОписательОбъекта); - Если ЭтоСсылочныйОбъект Тогда - Мд = Объект.Метаданные(); - Иначе - Мд = Объект; - КонецЕсли; - - Для каждого РеквизитМд Из МдРеквизиты Цикл - имяРеквизита = РеквизитМд.Имя; - Если ВыгружаемыеРеквизиты <> Неопределено и ВыгружаемыеРеквизиты.Найти(имяРеквизита) = Неопределено Тогда - Продолжить; - КонецЕсли; - - БылДобавленСчетДляЗаписиРегистраБухгалтерии = Ложь; +Процедура ПолучитьПредставлениеИРежимПоискаПоЗначениюРеквизита(Объект, ЗначениеРеквизита, ТипРеквизита, МассивДанных, резПредставлениеЗначенияРеквизита, резРежимПоиска, резДополнительныйТипЗначения) + резДополнительныйТипЗначения = ""; + Если ТипРеквизита = Тип("Число") Тогда + ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "ЧГ="); + резДополнительныйТипЗначения = "Число"; + ИначеЕсли ТипРеквизита = Тип("Строка") Тогда + ПредставлениеЗначенияРеквизита = ЗначениеРеквизита; + резДополнительныйТипЗначения = "Строка"; + ИначеЕсли ТипРеквизита = Тип("Дата") Тогда + ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "ДФ=yyyyMMddЧЧммсс"); // важно ЧЧ + резДополнительныйТипЗначения = "Дата"; + ИначеЕсли ТипРеквизита = Тип("Булево") Тогда + ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "БЛ=Ложь; БИ=Истина"); + резДополнительныйТипЗначения = "Булево"; - Если ЭтоСсылочныйОбъект Тогда - ЗначениеРеквизита = объект[имяРеквизита]; - - этоЗначениеБудетСозданоПоУмолчанию = лПустойОбъект[имяРеквизита] = ЗначениеРеквизита; - Если этоЗначениеБудетСозданоПоУмолчанию Тогда - Продолжить; + ИначеЕсли ЛиСсылкаНаОбъектБД_ирЛкс(ЗначениеРеквизита) Тогда + ОписательЗначенияРеквизита = НайтиОписательОбъектаПоСсылке(МассивДанных, ЗначениеРеквизита); //МассивДанных.Найти(ЗначениеРеквизита); + Если ОписательЗначенияРеквизита <> Неопределено Тогда + ЕстьРеквизитСсылка = Истина; + Если ТипЗнч(Объект) = Тип("ОбъектМетаданных") Тогда + ЕстьРеквизитСсылка = Ложь; + Для каждого РеквизитМд Из Объект.СтандартныеРеквизиты Цикл + Если РеквизитМд.Имя = ВернутьЗначениеСоответствия("Ссылка") Тогда + ЕстьРеквизитСсылка = Истина; + КонецЕсли; + КонецЦикла; КонецЕсли; - Иначе - Если КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда - Если Лев(ИмяРеквизита, СтрДлина("Счет")) = "Счет" Тогда - БылДобавленСчетДляЗаписиРегистраБухгалтерии = Истина; - ИмяРеквизитаСчет = имяРеквизита; - ИначеЕсли НЕ РеквизитМд.Балансовый Тогда - Суффиксы = Новый Массив; - Суффиксы.Добавить("Дт"); - Суффиксы.Добавить("Кт"); - Для Каждого Суффикс Из Суффиксы Цикл - ЗначениеРеквизита = ОписательОбъекта.Реквизиты[имяРеквизита + Суффикс]; - ИмитаторРеквизитаМд = Новый Структура("Имя, Тип", имяРеквизита + Суффикс, РеквизитМд.Тип); - ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, ИмитаторРеквизитаМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных); - Если ДобавилиРеквизит Тогда - НомерСтрокиМакета = НомерСтрокиМакета + 1; + Если ЕстьРеквизитСсылка И ЗначениеРеквизита = Объект.Ссылка Тогда + ПредставлениеЗначенияРеквизита = Строка(ЗначениеРеквизита.УникальныйИдентификатор()); + РежимПоиска = ""; + Иначе + ИмяПеременнойИзОписателяОбъекта = ИмяПеременнойИзОписателяОбъекта(ЗначениеРеквизита.Метаданные(), ОписательЗначенияРеквизита); + ИскатьПоГуид = Ложь; + Если СвязьПоГуид Тогда + Для каждого Элемент Из МассивДанных Цикл + Если Элемент.ИмяПеременной = ИмяПеременнойИзОписателяОбъекта Тогда + ИскатьПоГуид = Истина; + Прервать; КонецЕсли; КонецЦикла; - Продолжить; - КонецЕсли; - КонецЕсли; - ЗначениеРеквизита = ОписательОбъекта.Реквизиты[имяРеквизита]; - КонецЕсли; - - ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных); - - Если ДобавилиРеквизит Тогда - НомерСтрокиМакета = НомерСтрокиМакета + 1; - КонецЕсли; - - Если БылДобавленСчетДляЗаписиРегистраБухгалтерии Тогда - Для Каждого ОписаниеВидаСубконто Из ОписательОбъекта.Реквизиты[ИмяРеквизитаСчет].ВидыСубконто Цикл - ВидСубконто = ОписаниеВидаСубконто.ВидСубконто; - НаименованиеРеквизитаСубконто = РеквизитМд.Субконто.НаименованиеРеквизитаСубконто; - ЗначениеРеквизита = ОписательОбъекта.Реквизиты[НаименованиеРеквизитаСубконто][ВидСубконто]; - Если ЗначениеРеквизита = Неопределено Тогда - Продолжить; - КонецЕсли; - - ИмитаторРеквизитаМд = Новый Структура("Имя, Тип", НаименованиеРеквизитаСубконто + ОписаниеВидаСубконто.НомерСтроки, ВидСубконто.ТипЗначения); - - ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, ИмитаторРеквизитаМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных); - - Если ДобавилиРеквизит Тогда - НомерСтрокиМакета = НомерСтрокиМакета + 1; - КонецЕсли; - КонецЦикла; - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -Процедура ОбработатьТабличныеЧастиОбъекта(Макет, МдТабличныеЧасти, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект) - Для каждого МдТч Из МдТабличныеЧасти Цикл - МдРеквизиты = МдТч.Реквизиты; - ИмяТЧ = МдТч.Имя; - - НомерКолонкиМакета_ТЧ = ШапкаДанных.ТЧ; - - Для каждого строкаТчОбъекта Из объект[ИмяТЧ] Цикл - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ТЧ, НомерСтрокиМакета, НомерКолонкиМакета_ТЧ); - ОбластьМакета.Текст = ИмяТЧ; - - ОбработатьРеквизитыТабличнойЧастиОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, строкаТчОбъекта, МдРеквизиты); - КонецЦикла; - КонецЦикла; -КонецПроцедуры - -Процедура ОбработатьРежимыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект) - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - Режимы = новый Массив; - Если ТолькоСоздание Тогда - Режимы.Добавить("ТолькоСоздание"); - КонецЕсли; - Если ОбменДанными Тогда - Режимы.Добавить("ОбменДанными"); - КонецЕсли; - Мета = Объект.Метаданные(); - Если Метаданные.Справочники.Содержит(Мета) И Объект.ЭтоГруппа Тогда - Режимы.Добавить("Группа"); - КонецЕсли; - - Если Режимы.Количество()>0 Тогда - НомерКолонкиМакета_ТЧ = ШапкаДанных.ТЧ; - ОбластьМакета = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ТЧ, НомерСтрокиМакета, НомерКолонкиМакета_ТЧ); - ОбластьМакета.Текст = "xddMods"; - - Для каждого Режим Из Режимы Цикл - ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, "Режим", Режим); - КонецЦикла; - КонецЕсли; -КонецПроцедуры - -Процедура ОбработатьРеквизитыТабличнойЧастиОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, строкаТчОбъекта, МдРеквизиты) - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - - Мд = Объект.Метаданные(); - - Для каждого РеквизитМд Из МдРеквизиты Цикл - имяРеквизита = РеквизитМд.Имя; - - ЗначениеРеквизита = строкаТчОбъекта[имяРеквизита]; - - ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных); - - Если ДобавилиРеквизит Тогда - НомерСтрокиМакета = НомерСтрокиМакета + 1; - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -Функция ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, НомерСтрокиМакета, ШапкаДанных) - имяРеквизита = РеквизитМд.Имя; - ЕстьТипы = Ложь; - Попытка - Тип = РеквизитМд.Тип.Типы(); - ЕстьТипы = Истина; - Исключение - КонецПопытки; - - Если ЕстьТипы И НЕ ЗначениеЗаполнено(ЗначениеРеквизита) И РеквизитМд.Тип.Типы().Количество() = 1 Тогда - Возврат Ложь; - КонецЕсли; - ТипРеквизита = ТипЗнч(ЗначениеРеквизита); - Если ТипРеквизита = ТипЗнч(Неопределено) Тогда - Возврат Ложь; - КонецЕсли; - - ПредставлениеЗначенияРеквизита = ""; - РежимПоиска = ""; - ДополнительныйТипЗначения = ""; - Попытка - ПолучитьПредставлениеИРежимПоискаПоЗначениюРеквизита(Объект, ЗначениеРеквизита, ТипРеквизита, МассивДанных, ПредставлениеЗначенияРеквизита, РежимПоиска, ДополнительныйТипЗначения); - Исключение - описаниеОшибки = ОписаниеОшибки(); - ТекстСообщения = ПолучитьТекстСообщенияПользователю("%1 Не умею обрабатывать реквизит <%2> у объекта <%3>"); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",описаниеОшибки); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",имяРеквизита); - ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3",Мд.ПолноеИмя()); - ВызватьИсключение ТекстСообщения; - КонецПопытки; - - Если ЕстьТипы И РеквизитМд.Тип.Типы().Количество() = 1 Тогда - ДополнительныйТипЗначения = ""; - КонецЕсли; - - ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, ИмяРеквизита, ПредставлениеЗначенияРеквизита); - - НомерКолонкиМакета_Режим = ШапкаДанных.Режим; - ОбластьМакета_Режим = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Режим, НомерСтрокиМакета, НомерКолонкиМакета_Режим); - Если РежимПоиска <> "" Тогда - ОбластьМакета_Режим.Текст = РежимПоиска; - КонецЕсли; - - НомерКолонкиМакета_ДополнительныйТипЗначения = ШапкаДанных.ДополнительныйТипЗначения; - ОбластьМакета_ДополнительныйТипЗначения = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_ДополнительныйТипЗначения, НомерСтрокиМакета, НомерКолонкиМакета_ДополнительныйТипЗначения); - ОбластьМакета_ДополнительныйТипЗначения.Текст = ДополнительныйТипЗначения; - - Возврат Истина; -КонецФункции - -Процедура ДобавитьПростойРеквизитВМакет(Макет, ШапкаДанных, ИмяРеквизита, ПредставлениеЗначенияРеквизита) - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - - НомерКолонкиМакета_Реквизит = ШапкаДанных.Реквизит; - НомерКолонкиМакета_Значение = ШапкаДанных.Значение; - - ОбластьМакета_Реквизит = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Реквизит, НомерСтрокиМакета, НомерКолонкиМакета_Реквизит); - ОбластьМакета_Реквизит.Текст = ИмяРеквизита; - - ОбластьМакета_Значение = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Значение, НомерСтрокиМакета, НомерКолонкиМакета_Значение); - ОбластьМакета_Значение.Текст = ПредставлениеЗначенияРеквизита; - -КонецПроцедуры - -Процедура ДобавитьДопСвойстваВМакет(Макет, ШапкаДанных, ИмяРеквизита, СтруктураДопСвойств) - Для Каждого ДопСвойство Из СтруктураДопСвойств Цикл - НомерСтрокиМакета = Макет.ВысотаТаблицы+1; - - НомерКолонкиМакета_Реквизит = ШапкаДанных.Реквизит; - НомерКолонкиМакета_Значение = ШапкаДанных.Значение; - - ОбластьМакета_Реквизит = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Реквизит, НомерСтрокиМакета, НомерКолонкиМакета_Реквизит); - ОбластьМакета_Реквизит.Текст = ДопСвойство.Ключ; - - ОбластьМакета_Значение = Макет.Область(НомерСтрокиМакета, НомерКолонкиМакета_Значение, НомерСтрокиМакета, НомерКолонкиМакета_Значение); - ОбластьМакета_Значение.Текст = ДопСвойство.Значение; - КонецЦикла; -КонецПроцедуры - -Процедура ПолучитьПредставлениеИРежимПоискаПоЗначениюРеквизита(Объект, ЗначениеРеквизита, ТипРеквизита, МассивДанных, резПредставлениеЗначенияРеквизита, резРежимПоиска, резДополнительныйТипЗначения) - резДополнительныйТипЗначения = ""; - Если ТипРеквизита = Тип("Число") Тогда - ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "ЧГ="); - резДополнительныйТипЗначения = "Число"; - ИначеЕсли ТипРеквизита = Тип("Строка") Тогда - ПредставлениеЗначенияРеквизита = ЗначениеРеквизита; - резДополнительныйТипЗначения = "Строка"; - ИначеЕсли ТипРеквизита = Тип("Дата") Тогда - ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "ДФ=yyyyMMddЧЧммсс"); // важно ЧЧ - резДополнительныйТипЗначения = "Дата"; - ИначеЕсли ТипРеквизита = Тип("Булево") Тогда - ПредставлениеЗначенияРеквизита = Формат(ЗначениеРеквизита, "БЛ=Ложь; БИ=Истина"); - резДополнительныйТипЗначения = "Булево"; - - ИначеЕсли ЛиСсылкаНаОбъектБД_ирЛкс(ЗначениеРеквизита) Тогда - ОписательЗначенияРеквизита = НайтиОписательОбъектаПоСсылке(МассивДанных, ЗначениеРеквизита); //МассивДанных.Найти(ЗначениеРеквизита); - Если ОписательЗначенияРеквизита <> Неопределено Тогда - ЕстьРеквизитСсылка = Истина; - Если ТипЗнч(Объект) = Тип("ОбъектМетаданных") Тогда - ЕстьРеквизитСсылка = Ложь; - Для каждого РеквизитМд Из Объект.СтандартныеРеквизиты Цикл - Если РеквизитМд.Имя = ВернутьЗначениеСоответствия("Ссылка") Тогда - ЕстьРеквизитСсылка = Истина; - КонецЕсли; - КонецЦикла; - КонецЕсли; - Если ЕстьРеквизитСсылка И ЗначениеРеквизита = Объект.Ссылка Тогда - ПредставлениеЗначенияРеквизита = Строка(ЗначениеРеквизита.УникальныйИдентификатор()); - РежимПоиска = ""; - Иначе - ИмяПеременнойИзОписателяОбъекта = ИмяПеременнойИзОписателяОбъекта(ЗначениеРеквизита.Метаданные(), ОписательЗначенияРеквизита); - ИскатьПоГуид = Ложь; - Если СвязьПоГуид Тогда - Для каждого Элемент Из МассивДанных Цикл - Если Элемент.ИмяПеременной = ИмяПеременнойИзОписателяОбъекта Тогда - ИскатьПоГуид = Истина; - Прервать; - КонецЕсли; - КонецЦикла; - КонецЕсли; - Если ИскатьПоГуид Тогда - ПредставлениеЗначенияРеквизита = Строка(ЗначениеРеквизита.УникальныйИдентификатор()); - РежимПоиска = "Гуид"; - Иначе - ПредставлениеЗначенияРеквизита = ИмяПеременнойИзОписателяОбъекта; - РежимПоиска = "Перем"; + КонецЕсли; + Если ИскатьПоГуид Тогда + ПредставлениеЗначенияРеквизита = Строка(ЗначениеРеквизита.УникальныйИдентификатор()); + РежимПоиска = "Гуид"; + Иначе + ПредставлениеЗначенияРеквизита = ИмяПеременнойИзОписателяОбъекта; + РежимПоиска = "Перем"; КонецЕсли; КонецЕсли; Иначе @@ -3162,7 +3273,7 @@ ВызватьИсключение ТекстСообщения; КонецЕсли; КонецЕсли; - резПредставлениеЗначенияРеквизита = ПредставлениеЗначенияРеквизита; + резПредставлениеЗначенияРеквизита = Строка(ПредставлениеЗначенияРеквизита); резРежимПоиска = РежимПоиска; КонецПроцедуры @@ -3599,9 +3710,7 @@ КонецЕсли; КонецПроцедуры -Функция СоздатьМакетДанныхПоТаблицеДанных(Макет) Экспорт - Макет.Очистить(); - +Функция СоздатьМакетДанныхПоТаблицеДанных(Макет) Экспорт массивДанных = Новый Массив; Для каждого строка Из ТаблицаДанных Цикл @@ -3609,35 +3718,26 @@ ЗаполнитьЗначенияСвойств(ОписательЭлемента, строка); массивДанных.Добавить(ОписательЭлемента); КонецЦикла; - НовыйМакет = СоздатьМакетДляГенерацииДанных(массивДанных); - Если ТипЗнч(НовыйМакет) = Тип("ТабличныйДокумент") Тогда - Макет.Вывести(НовыйМакет); - КонецЕсли; + НовыйМакет = СоздатьМакетДляГенерацииДанных(ТипЗнч(Макет), массивДанных); Возврат НовыйМакет; КонецФункции -Функция СоздатьМакетДанныхПоМетаданным(Макет) Экспорт - Макет.Очистить(); - +Функция СоздатьМакетДанныхПоМетаданным(Макет) Экспорт массивДанных = Новый Массив; МассивИмен = ТаблицаДанных.ВыгрузитьКолонку("ИмяПеременной"); СоздатьПоМетаданным(массивДанных); - НовыйМакет = СоздатьМакетДляГенерацииДанных(массивДанных); - Если ТипЗнч(НовыйМакет) = Тип("ТабличныйДокумент") Тогда - Макет.Вывести(НовыйМакет); - КонецЕсли; - + НовыйМакет = СоздатьМакетДляГенерацииДанных(ТипЗнч(Макет), массивДанных); + МассивИмен = Неопределено; Возврат НовыйМакет; КонецФункции Функция СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей) Экспорт - Макет.Очистить(); - + МассивПользователей = Новый Массив; МассивИмен = Новый Массив; @@ -3654,20 +3754,18 @@ МассивПользователей.Добавить(ОписательПользователяИБ); КонецЦикла; - НовыйМакет = СоздатьМакетДляГенерацииДанных(МассивПользователей); - Если ТипЗнч(НовыйМакет) = Тип("ТабличныйДокумент") Тогда - Макет.Вывести(НовыйМакет); - КонецЕсли; + НовыйМакет = СоздатьМакетДляГенерацииДанных(ТипЗнч(Макет), МассивПользователей); МассивИмен = Неопределено; Возврат НовыйМакет; КонецФункции -Процедура ПроверитьЗагрузкуМакета(ТабличныйДокумент) Экспорт +Процедура ПроверитьЗагрузкуМакета(Макет) Экспорт НачатьТранзакцию(); - ТестовыеДанные = СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент); + ТестовыеДанные = СоздатьДанныеПоДокументуМакета(Макет); + Если ТестовыеДанные.Количество() = 0 Тогда ВызватьИсключение ПолучитьТекстСообщенияПользователю("не заполнены тестовые данные. Возможно, макет данных пуст."); КонецЕсли; @@ -5384,7 +5482,14 @@ КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Компоновщик.ПолучитьНастройки(),,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); - Запрос = Новый Запрос(МакетКомпоновки.НаборыДанных.ОсновнойЗапрос.Запрос); + Если МакетКомпоновки.НаборыДанных.Количество() = 0 Тогда + // TODO: при попытке создать компоновщик по РБ, Задаче, БД, РН набор не переносится в макет + // версия платформы 8.3.24.1342 + // разобраться и исправить + Запрос = Новый Запрос(СКД.НаборыДанных.ОсновнойЗапрос.Запрос); + Иначе + Запрос = Новый Запрос(МакетКомпоновки.НаборыДанных.ОсновнойЗапрос.Запрос); + КонецЕсли; ПараметрыЗапроса = Запрос.НайтиПараметры(); Для Каждого Параметр Из ПараметрыЗапроса Цикл ПараметрМакетаСКД = МакетКомпоновки.ЗначенияПараметров.Найти(Параметр.Имя); @@ -6154,20 +6259,684 @@ СтрокамТЗКэшОбъектов.МетаданныеИмя = МетаданныеИмя; КонецПроцедуры //ДобавитьЗначениеВКэш(Справочники.Модели.ПустаяСсылка(),"Модели",ПараметрыПоиска) +Функция КонвертироватьМакет(Макет) Экспорт + + Если ТипЗнч(Макет) = Тип("ТабличныйДокумент") Тогда + ВозвращатьНаборЗаписей = Истина; + Данные = СоздатьДанныеПоДокументуМакета(Макет, ,, ВозвращатьНаборЗаписей); + НовыйМакет = КонвертироватьДанныеВМакетJSON(Данные); + ИначеЕсли ТипЗнч(Макет) = Тип("ТекстовыйДокумент") Тогда + ВызватьИсключение "Конвертация из JSON в XML не реализована"; + КонецЕсли; + + Возврат НовыйМакет; + +КонецФункции + #КонецОбласти //#КонецОбласти ПроцедурыИФункции -#Область ИнициализацияПеременных +//#КонецОбласти ИнициализацияПеременных +#Область СлужебныеПроцедурыИФункции -ВариантВстроенногоЯзыкаАнглийский = ( Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.English ); +Функция КонвертироватьДанныеВJSON(СтруктураJSON) + + ПараметрыЗаписи = Новый ПараметрыЗаписиJSON( , Символы.Таб); + Запись = Новый ЗаписьJSON; + Запись.ПроверятьСтруктуру = Ложь; + Запись.УстановитьСтроку(ПараметрыЗаписи); + ЗаписатьJSON(Запись, СтруктураJSON,,"ПреобразованиеНеПоддерживаемыхТипов", ЭтотОбъект); + ТекстJSON = Запись.Закрыть(); + + Возврат ТекстJSON; + +КонецФункции -мНаличиеВыгрузкиПодчиненныхОбъектов = Ложь; -мТипРезультатЗапроса = Тип("РезультатЗапроса"); -мСоответствиеКолонокДвижений = Новый Соответствие; +Функция КонвертироватьДанныеВМакетJSON(Данные) + + ТекстовыйДокумент = Новый ТекстовыйДокумент; + СтруктураJSON = КонвертироватьПротоОбъектыВСтруктуруДляJSON(Данные); + ТекстJSON = КонвертироватьДанныеВJSON(СтруктураJSON); + ТекстовыйДокумент.УстановитьТекст(ТекстJSON); + + Возврат ТекстовыйДокумент; + +КонецФункции -ЗаполнитьСоответствие(); +Функция КонвертироватьПротоОбъектыВСтруктуруДляJSON(ДанныеПротоМодель) + + ШапкаДанных = ШапкаДанныхВМакете(); + ДанныеДляВыгрузки = Новый Массив; + МассивИмен = Новый Массив; + МассивДанных = Новый Массив; + + Для каждого ОбъектМодели Из ДанныеПротоМодель Цикл + + // напрямую получить объект метаднных из менержера объекта нельзя + // переделав на менеджер ключ записи потерям заполнение ресурсво и реквизитов записи + // поэтому идем обходным путем + Если ТипЗнч(ОбъектМодели.Значение) = Тип("Массив") Тогда + ОбъектМД = ОбъектМодели.Значение[0].Метаданные(); + Иначе + ОбъектМД = ОбъектМодели.Значение.Метаданные(); + КонецЕсли; + + Если Метаданные.Константы.Содержит(ОбъектМД) Тогда + + //ЗаписьКонстанты(СтрокаДереваМетаданных.ОбъектМД, ОбъектыВыгруженныеСОшибками); + + ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМД) Или + Метаданные.РегистрыНакопления.Содержит(ОбъектМД) Или + Метаданные.РегистрыРасчета.Содержит(ОбъектМД) Тогда + + Для Каждого НаборЗаписейРегистра из ОбъектМодели.Значение Цикл + ОписательЭлемента = СоздатьОписательЭлементаПоНаборуЗаписей(НаборЗаписейРегистра, МассивИмен); + КонецЦикла; + + ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМД) Тогда + + Для Каждого НаборЗаписейРегистра из ОбъектМодели.Значение Цикл + ОписательЭлемента = СоздатьОписательЭлементаПоНаборуЗаписей(НаборЗаписейРегистра, МассивИмен); + КонецЦикла; + + //ИначеЕсли ТипЗнч(СтрокаДереваМетаданных.ЭлементОписания.Менеджер) = Тип("Строка") Тогда + // специальный случай для перерасчетов + //ЗаписьПерерасчета(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками); + + ИначеЕсли Метаданные.Последовательности.Содержит(ОбъектМД) Тогда + + //ЗаписьПоследовательности(СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками); + + Иначе + + Попытка + ДанныеОбъекта = Новый Структура; + ДанныеОбъекта.Вставить("Предопределенный", ОбъектМодели.Значение["Предопределенный"]); + ДанныеОбъекта.Вставить("ИмяПредопределенныхДанных", ОбъектМодели.Значение["ИмяПредопределенныхДанных"]); + Исключение + ДанныеОбъекта = Неопределено; + КонецПопытки; + ОписательЭлемента = СоздатьОписательЭлементаПоСсылке(ОбъектМодели.Значение.Ссылка, МассивИмен, ДанныеОбъекта); -#КонецОбласти + КонецЕсли; + + МассивДанных.Добавить(ОписательЭлемента); + КонецЦикла; + + Для каждого ОписательОбъекта Из массивДанных Цикл + ПользовательИБ = Неопределено; + СтрокаОбъектаВыгрузки = Новый Массив; + Если ЭтоОписательПользователяИБ(ОписательОбъекта, ПользовательИБ) Тогда + + ДобавитьПользователяИБ_ВВыгрузку(СтрокаОбъектаВыгрузки, ОписательОбъекта, ШапкаДанных, массивДанных); + + Иначе + + // соберем объект для перевода в нужный формат + ДобавитьОбъектВВыгрузку(СтрокаОбъектаВыгрузки, ОписательОбъекта, ШапкаДанных, массивДанных); + + КонецЕсли; + ДанныеДляВыгрузки.Добавить(СтрокаОбъектаВыгрузки); + КонецЦикла; + + СтруктураJSON = ПодготовитьJSON(ДанныеДляВыгрузки); + + Возврат СтруктураJSON; + +КонецФункции -//#КонецОбласти ИнициализацияПеременных +Процедура ДобавитьОбъектВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных) + + Ссылка = Неопределено; + Мд = Неопределено; + ЭтоСсылочныйОбъект = ЭтоОписательОбъектаСсылки(ОписательОбъекта, Ссылка); + Если ЭтоСсылочныйОбъект Тогда + ЭтоСсылочныйОбъект = Истина; + Мд = Ссылка.Метаданные(); + ИначеЕсли ОписательОбъекта.Свойство("Метаданное", Мд) Тогда + КонецЕсли; + + ДобавитьМетаданныеВВыгрузкуДляДобавляемогоОбъекта(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, Мд); + + менеджерОбъекта = ПолучитьМенеджерОбъекта_ирЛкс(Мд); + КорневойТипКонфигурации = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд); + Если КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Справочник") Тогда + Если ЗначениеЗаполнено(Ссылка) и Ссылка.ЭтоГруппа Тогда + Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда + лПустойОбъект = менеджерОбъекта.СоздатьГруппу(); + Иначе + лПустойОбъект = менеджерОбъекта.CreateFolder(); + КонецЕсли; + Иначе + Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда + лПустойОбъект = менеджерОбъекта.СоздатьЭлемент(); + Иначе + лПустойОбъект = менеджерОбъекта.CreateItem(); + КонецЕсли; + КонецЕсли; + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Документ") Тогда + лПустойОбъект = менеджерОбъекта.СоздатьДокумент(); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("БизнесПроцесс") Тогда + лПустойОбъект = менеджерОбъекта.СоздатьБизнесПроцесс(); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Задача") Тогда + лПустойОбъект = менеджерОбъекта.СоздатьЗадачу(); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрНакопления") Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланОбмена") Тогда + лПустойОбъект = менеджерОбъекта.СоздатьУзел(); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланВидовХарактеристик") Тогда + Если ЗначениеЗаполнено(Ссылка) и Ссылка.ЭтоГруппа Тогда + Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда + лПустойОбъект = менеджерОбъекта.СоздатьГруппу(); + Иначе + лПустойОбъект = менеджерОбъекта.CreateFolder(); + КонецЕсли; + Иначе + Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда + лПустойОбъект = менеджерОбъекта.СоздатьЭлемент(); + Иначе + лПустойОбъект = менеджерОбъекта.CreateItem(); + КонецЕсли; + КонецЕсли; + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланСчетов") Тогда + лПустойОбъект = менеджерОбъекта.СоздатьСчет(); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланВидовРасчета") Тогда + лПустойОбъект = менеджерОбъекта.СоздатьВидРасчета(); + Иначе + ТекстСообщения = ПолучитьТекстСообщенияПользователю("Неизвестный КорневойТипКонфигурации <%1>"); + ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",КорневойТипКонфигурации); + ВызватьИсключение ТекстСообщения; + КонецЕсли; + + ВыгружаемыеСтандартныеРеквизиты = ВыгружаемыеСтандартныеРеквизиты(ОписательОбъекта, КорневойТипКонфигурации); + + Если ЗначениеЗаполнено(Ссылка) Тогда + объект = Ссылка.ПолучитьОбъект(); + + Если НЕ ВыгружатьСсылку И ЗначениеЗаполнено(ОписательОбъекта.ГуидСсылки) Тогда + Для каждого РеквизитМд Из Мд.СтандартныеРеквизиты Цикл + Если РеквизитМд.Имя = ВернутьЗначениеСоответствия("Ссылка") Тогда + ДобавилиРеквизит = ОбработатьВыгрузкуРеквизитаОбъекта(ДанныеДляВыгрузки, МассивДанных, Объект, РеквизитМд, ОписательОбъекта.ГуидСсылки, Мд, ШапкаДанных); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + ДобавитьРеквизитыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, Мд.СтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты); + ДобавитьРеквизитыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, Мд.Реквизиты, Неопределено); + + ДобавитьТабличныеЧастиОбъектаВВыгрузку(ДанныеДляВыгрузки, Мд.ТабличныеЧасти, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект); + ДобавитьРежимыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект); + ДобавитьДопСвойстваВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект); + + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") и ТипЗнч(ОписательОбъекта.Реквизиты) = Тип("Структура") Тогда + ДобавитьРеквизитыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.СтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты); + ДобавитьРеквизитыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Измерения, Неопределено); + ДобавитьРеквизитыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Ресурсы, Неопределено); + ДобавитьРеквизитыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Реквизиты, Неопределено); + + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") + Или КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрНакопления") + Или КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда + + ЭтоРегистрБухгалтерии = КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии"); + + НаборЗаписейРегистра = ОписательОбъекта.Реквизиты; + МассивЗаписейТЧ = Новый Массив; + Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл + ОписательОбъекта.Реквизиты = ЗаписьРегистра; + МасивЗаписейРегистра = Новый Массив; + НаборСтандартныеРеквизиты = Мд.СтандартныеРеквизиты; + Если ЭтоРегистрБухгалтерии Тогда + ДанныеСчета = Новый Структура; + Если Мд.Корреспонденция Тогда + ДанныеСчета.Вставить("СчетДт", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "СубконтоДт")); + ДанныеСчета.Вставить("СчетКт", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "СубконтоКт")); + Иначе + ДанныеСчета.Вставить("Счет", Новый Структура("НомераВидовСубконто, НаименованиеРеквизитаСубконто", Новый Массив, "Субконто")); + КонецЕсли; + + НаборСтандартныеРеквизиты = Новый Массив; + для каждого МдРеквизит из Мд.СтандартныеРеквизиты Цикл + ИмяРеквизита = МдРеквизит.Имя; + Если Лев(ИмяРеквизита, СтрДлина("ВидСубконто")) = "ВидСубконто" Тогда + Продолжить; + КонецЕсли; + Если Лев(ИмяРеквизита, СтрДлина("Субконто")) = "Субконто" Тогда + Продолжить; + КонецЕсли; + НаборСтандартныеРеквизиты.Добавить(МдРеквизит); + КонецЦикла; + КонецЕсли; + + ДобавитьРеквизитыОбъектаВВыгрузку(МасивЗаписейРегистра, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, НаборСтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты); + ДобавитьРеквизитыОбъектаВВыгрузку(МасивЗаписейРегистра, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Измерения, Неопределено, КорневойТипКонфигурации); + ДобавитьРеквизитыОбъектаВВыгрузку(МасивЗаписейРегистра, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Ресурсы, Неопределено, КорневойТипКонфигурации); + ДобавитьРеквизитыОбъектаВВыгрузку(МасивЗаписейРегистра, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Реквизиты, Неопределено); + + Если ЭтоРегистрБухгалтерии Тогда + ВыгружаемыеРеквизиты = Новый Массив; + МассивИмитаторРеквизитовМд = Новый Массив; + Для каждого КлючЗначение Из ДанныеСчета Цикл + ИмяРеквизита = КлючЗначение.Ключ; + ВыгружаемыеРеквизиты.Добавить(ИмяРеквизита); + Структура = Новый Структура("Имя,Субконто", ИмяРеквизита, КлючЗначение.Значение); + МассивИмитаторРеквизитовМд.Добавить(Структура); + КонецЦикла; + + ДобавитьРеквизитыОбъектаВВыгрузку(МасивЗаписейРегистра, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, МассивИмитаторРеквизитовМд, ВыгружаемыеРеквизиты, КорневойТипКонфигурации); + КонецЕсли; + МассивЗаписейТЧ.Добавить(МасивЗаписейРегистра); + КонецЦикла; + Если МасивЗаписейРегистра.Количество() > 0 Тогда + СтрукутраИмяТЧ = Новый Структура; + СтрукутраИмяТЧ.Вставить("Записи", МассивЗаписейТЧ); + ЗаписьТЧ = Новый Структура; + ЗаписьТЧ.Вставить("ТЧ", СтрукутраИмяТЧ); + ДанныеДляВыгрузки.Добавить(ЗаписьТЧ); + КонецЕсли; + Иначе + ВызватьИсключение ПолучитьТекстСообщенияПользователю("Неизвестный вариант работы - метод <ДобавитьОбъектВВыгрузку>"); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьМетаданныеВВыгрузкуДляДобавляемогоОбъекта(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, Мд) + + ЗаписьВыгрузки = Новый Структура; + + ЗначениеСтроки = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд); + ЗаписьВыгрузки.Вставить("Тип", ЗначениеСтроки); + + ЗначениеСтроки = Мд.Имя; + ЗаписьВыгрузки.Вставить("Вид", ЗначениеСтроки); + + ЗначениеСтроки = ИмяПеременнойИзОписателяОбъекта(Мд, ОписательОбъекта); + ЗаписьВыгрузки.Вставить("ИмяПеременной", ЗначениеСтроки); + + ЗначениеСтроки = ОписательОбъекта.РежимСоздания; + ЗаписьВыгрузки.Вставить("Режим", ЗначениеСтроки); + + ЗначениеСтроки = ОписательОбъекта.Значение; + ЗаписьВыгрузки.Вставить("Значение", ЗначениеСтроки); + + ДанныеДляВыгрузки.Вставить(ДанныеДляВыгрузки.Количество(), ЗаписьВыгрузки); + +КонецПроцедуры + +Функция ОбработатьВыгрузкуРеквизитаОбъекта(ДанныеДляВыгрузки, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, ШапкаДанных) + + имяРеквизита = РеквизитМд.Имя; + ЕстьТипы = Ложь; + Попытка + Тип = РеквизитМд.Тип.Типы(); + ЕстьТипы = Истина; + Исключение + КонецПопытки; + + Если ЕстьТипы И НЕ ЗначениеЗаполнено(ЗначениеРеквизита) И РеквизитМд.Тип.Типы().Количество() = 1 Тогда + Возврат Ложь; + КонецЕсли; + ТипРеквизита = ТипЗнч(ЗначениеРеквизита); + Если ТипРеквизита = ТипЗнч(Неопределено) Тогда + Возврат Ложь; + КонецЕсли; + + ПредставлениеЗначенияРеквизита = ""; + РежимПоиска = ""; + ДополнительныйТипЗначения = ""; + Попытка + ПолучитьПредставлениеИРежимПоискаПоЗначениюРеквизита(Объект, ЗначениеРеквизита, ТипРеквизита, МассивДанных, ПредставлениеЗначенияРеквизита, РежимПоиска, ДополнительныйТипЗначения); + Исключение + описаниеОшибки = ОписаниеОшибки(); + ТекстСообщения = ПолучитьТекстСообщенияПользователю("%1 Не умею обрабатывать реквизит <%2> у объекта <%3>"); + ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",описаниеОшибки); + ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",имяРеквизита); + ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3",Мд.ПолноеИмя()); + ВызватьИсключение ТекстСообщения; + КонецПопытки; + + Если ЕстьТипы И РеквизитМд.Тип.Типы().Количество() = 1 Тогда + ДополнительныйТипЗначения = ""; + КонецЕсли; + + ЗаписьВыгрузки = Новый Структура; + + ДобавитьПростойРеквизитВВыгрузку(ЗаписьВыгрузки, ШапкаДанных, ИмяРеквизита, ПредставлениеЗначенияРеквизита); + + Если ЗначениеЗаполнено(РежимПоиска) Тогда + ЗаписьВыгрузки.Вставить("Режим", РежимПоиска); + КонецЕсли; + + Если ЗначениеЗаполнено(ДополнительныйТипЗначения) Тогда + ЗаписьВыгрузки.Вставить("ДополнительныйТипЗначения", ДополнительныйТипЗначения); + КонецЕсли; + + ДанныеДляВыгрузки.Вставить(ДанныеДляВыгрузки.Количество(), ЗаписьВыгрузки); + + Возврат Истина; + +КонецФункции + +Процедура ДобавитьПростойРеквизитВВыгрузку(ДанныеДляВыгрузки, ШапкаДанных, ИмяРеквизита, ПредставлениеЗначенияРеквизита) + + Если ТипЗнч(ДанныеДляВыгрузки) = Тип("Массив") Тогда + + Структура = Новый Структура; + Структура.Вставить("Реквизит", ИмяРеквизита); + Структура.Вставить("Значение", ПредставлениеЗначенияРеквизита); + + ДанныеДляВыгрузки.Добавить(Структура); + + Иначе + + ДанныеДляВыгрузки.Вставить("Реквизит", ИмяРеквизита); + ДанныеДляВыгрузки.Вставить("Значение", ПредставлениеЗначенияРеквизита); + + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьРеквизитыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, лПустойОбъект, МдРеквизиты, ВыгружаемыеРеквизиты, КорневойТипКонфигурации = "") + + ЭтоСсылочныйОбъект = ЭтоОписательОбъектаСсылки(ОписательОбъекта); + Если ЭтоСсылочныйОбъект Тогда + Мд = Объект.Метаданные(); + Иначе + Мд = Объект; + КонецЕсли; + + Для каждого РеквизитМд Из МдРеквизиты Цикл + имяРеквизита = РеквизитМд.Имя; + Если ВыгружаемыеРеквизиты <> Неопределено и ВыгружаемыеРеквизиты.Найти(имяРеквизита) = Неопределено Тогда + Продолжить; + КонецЕсли; + + БылДобавленСчетДляЗаписиРегистраБухгалтерии = Ложь; + + Если ЭтоСсылочныйОбъект Тогда + ЗначениеРеквизита = объект[имяРеквизита]; + + этоЗначениеБудетСозданоПоУмолчанию = лПустойОбъект[имяРеквизита] = ЗначениеРеквизита; + Если этоЗначениеБудетСозданоПоУмолчанию Тогда + Продолжить; + КонецЕсли; + Иначе + Если КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда + Если Лев(ИмяРеквизита, СтрДлина("Счет")) = "Счет" Тогда + БылДобавленСчетДляЗаписиРегистраБухгалтерии = Истина; + ИмяРеквизитаСчет = имяРеквизита; + ИначеЕсли НЕ РеквизитМд.Балансовый Тогда + Суффиксы = Новый Массив; + Суффиксы.Добавить("Дт"); + Суффиксы.Добавить("Кт"); + Для Каждого Суффикс Из Суффиксы Цикл + ЗначениеРеквизита = ОписательОбъекта.Реквизиты[имяРеквизита + Суффикс]; + ИмитаторРеквизитаМд = Новый Структура("Имя, Тип", имяРеквизита + Суффикс, РеквизитМд.Тип); + ДобавилиРеквизит = ДобавитьРеквизитОбъектаВВыгрузку(ДанныеДляВыгрузки, МассивДанных, Объект, ИмитаторРеквизитаМд, ЗначениеРеквизита, Мд, ШапкаДанных); + КонецЦикла; + Продолжить; + КонецЕсли; + КонецЕсли; + ЗначениеРеквизита = ОписательОбъекта.Реквизиты[имяРеквизита]; + КонецЕсли; + + ДобавилиРеквизит = ДобавитьРеквизитОбъектаВВыгрузку(ДанныеДляВыгрузки, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, ШапкаДанных); + + Если БылДобавленСчетДляЗаписиРегистраБухгалтерии Тогда + // при отсутствии видов субконто их не обрабатываем + Если НЕ ОписательОбъекта.Реквизиты[ИмяРеквизитаСчет].Метаданные().ВидыСубконто = Неопределено Тогда + Для Каждого ОписаниеВидаСубконто Из ОписательОбъекта.Реквизиты[ИмяРеквизитаСчет].ВидыСубконто Цикл + ВидСубконто = ОписаниеВидаСубконто.ВидСубконто; + НаименованиеРеквизитаСубконто = РеквизитМд.Субконто.НаименованиеРеквизитаСубконто; + ЗначениеРеквизита = ОписательОбъекта.Реквизиты[НаименованиеРеквизитаСубконто][ВидСубконто]; + Если ЗначениеРеквизита = Неопределено Тогда + Продолжить; + КонецЕсли; + + ИмитаторРеквизитаМд = Новый Структура("Имя, Тип", НаименованиеРеквизитаСубконто + ОписаниеВидаСубконто.НомерСтроки, ВидСубконто.ТипЗначения); + + ДобавилиРеквизит = ДобавитьРеквизитОбъектаВВыгрузку(ДанныеДляВыгрузки, МассивДанных, Объект, ИмитаторРеквизитаМд, ЗначениеРеквизита, Мд, ШапкаДанных); + КонецЦикла; + КонецЕсли; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +Функция ДобавитьРеквизитОбъектаВВыгрузку(ДанныеДляВыгрузки, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, ШапкаДанных) + + ЗаписьВыгрузки = Новый Структура; + + имяРеквизита = РеквизитМд.Имя; + ЕстьТипы = Ложь; + Попытка + Тип = РеквизитМд.Тип.Типы(); + ЕстьТипы = Истина; + Исключение + КонецПопытки; + + Если ЕстьТипы И НЕ ЗначениеЗаполнено(ЗначениеРеквизита) И РеквизитМд.Тип.Типы().Количество() = 1 Тогда + Возврат Ложь; + КонецЕсли; + ТипРеквизита = ТипЗнч(ЗначениеРеквизита); + Если ТипРеквизита = ТипЗнч(Неопределено) Тогда + Возврат Ложь; + КонецЕсли; + + ПредставлениеЗначенияРеквизита = ""; + РежимПоиска = ""; + ДополнительныйТипЗначения = ""; + Попытка + ПолучитьПредставлениеИРежимПоискаПоЗначениюРеквизита(Объект, ЗначениеРеквизита, ТипРеквизита, МассивДанных, ПредставлениеЗначенияРеквизита, РежимПоиска, ДополнительныйТипЗначения); + Исключение + описаниеОшибки = ОписаниеОшибки(); + ТекстСообщения = ПолучитьТекстСообщенияПользователю("%1 Не умею обрабатывать реквизит <%2> у объекта <%3>"); + ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",описаниеОшибки); + ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",имяРеквизита); + ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3",Мд.ПолноеИмя()); + ВызватьИсключение ТекстСообщения; + КонецПопытки; + + Если ЕстьТипы И РеквизитМд.Тип.Типы().Количество() = 1 Тогда + ДополнительныйТипЗначения = ""; + КонецЕсли; + + ДобавитьПростойРеквизитВВыгрузку(ЗаписьВыгрузки, ШапкаДанных, ИмяРеквизита, ПредставлениеЗначенияРеквизита); + + Если ЗначениеЗаполнено(РежимПоиска) Тогда + ЗаписьВыгрузки.Вставить("Режим", РежимПоиска); + КонецЕсли; + + Если ЗначениеЗаполнено(ДополнительныйТипЗначения) Тогда + ЗаписьВыгрузки.Вставить("ДополнительныйТипЗначения", ДополнительныйТипЗначения); + КонецЕсли; + + ДанныеДляВыгрузки.Добавить(ЗаписьВыгрузки); + + Возврат Истина; + +КонецФункции + +Процедура ДобавитьТабличныеЧастиОбъектаВВыгрузку(ДанныеДляВыгрузки, МдТабличныеЧасти, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект) + + Для каждого МдТч Из МдТабличныеЧасти Цикл + МдРеквизиты = МдТч.Реквизиты; + ИмяТЧ = МдТч.Имя; + + НомерКолонкиМакета_ТЧ = ШапкаДанных.ТЧ; + + МассивСтрок = Новый Массив; + Для каждого строкаТчОбъекта Из объект[ИмяТЧ] Цикл + + МассивКолонокСтрок = Новый Массив; + ДобавитьРеквизитыТабличнойЧастиОбъектаВВыгрузку(МассивКолонокСтрок, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, строкаТчОбъекта, МдРеквизиты); + МассивСтрок.Добавить(МассивКолонокСтрок); + + КонецЦикла; + + СтрокаТЧ = Новый Структура; + СтрокаТЧ.Вставить(ИмяТЧ, МассивСтрок); + + ЗаписьТЧ = Новый Структура; + ЗаписьТЧ.Вставить("ТЧ", СтрокаТЧ); + + ДанныеДляВыгрузки.Добавить(ЗаписьТЧ); + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьРеквизитыТабличнойЧастиОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект, строкаТчОбъекта, МдРеквизиты) + + Мд = Объект.Метаданные(); + + Для каждого РеквизитМд Из МдРеквизиты Цикл + имяРеквизита = РеквизитМд.Имя; + ЗначениеРеквизита = строкаТчОбъекта[имяРеквизита]; + ДобавилиРеквизит = ДобавитьРеквизитОбъектаВВыгрузку(ДанныеДляВыгрузки, МассивДанных, Объект, РеквизитМд, ЗначениеРеквизита, Мд, ШапкаДанных); + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьДопСвойстваВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект) + + ДопСвойства = Новый Структура(); + Для Каждого СтрокаТЧ Из ЭтотОбъект.ДополнительныеСвойства Цикл + ДопСвойства.Вставить(СтрокаТЧ.Имя, СтрокаТЧ.Значение); + КонецЦикла; + + Если ДопСвойства.Количество() > 0 Тогда + ЗаписьВыгрузки = Новый Структура; + МассивВыгрузкиДопСвойства = Новый Массив; + + ДобавитьДопСвойстваВВыгрузкуПоРежиму(МассивВыгрузкиДопСвойства, ШапкаДанных, "Режим", ДопСвойства); + + СоответствиеДопСвойств = Новый Структура; + СоответствиеДопСвойств.Вставить("ДополнительныеСвойства", МассивВыгрузкиДопСвойства); + ЗаписьВыгрузки.Вставить("ТЧ", СоответствиеДопСвойств); + + ДанныеДляВыгрузки.Вставить(ДанныеДляВыгрузки.Количество(), ЗаписьВыгрузки); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьДопСвойстваВВыгрузкуПоРежиму(ДанныеДляВыгрузки, ШапкаДанных, ИмяРеквизита, СтруктураДопСвойств) + + Для Каждого ДопСвойство Из СтруктураДопСвойств Цикл + Структура = Новый Структура; + Структура.Вставить("Реквизит", ДопСвойство.Ключ); + Структура.Вставить("Значение", Строка(ДопСвойство.Значение)); + ДанныеДляВыгрузки.Добавить(Структура); + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьРежимыОбъектаВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект) + + Режимы = новый Массив; + Если ТолькоСоздание Тогда + Режимы.Добавить("ТолькоСоздание"); + КонецЕсли; + Если ОбменДанными Тогда + Режимы.Добавить("ОбменДанными"); + КонецЕсли; + Мета = Объект.Метаданные(); + Если Метаданные.Справочники.Содержит(Мета) И Объект.ЭтоГруппа Тогда + Режимы.Добавить("Группа"); + КонецЕсли; + + Если Режимы.Количество()>0 Тогда + ЗаписьВыгрузки = Новый Структура; + СтрокиТЧ = Новый Структура; + МассивЗаписейВыгрузкиДопСвойства = Новый Массив; + Для каждого Режим Из Режимы Цикл + ДобавитьПростойРеквизитВВыгрузку(МассивЗаписейВыгрузкиДопСвойства, ШапкаДанных, "Режим", Режим); + КонецЦикла; + + СтрокиТЧ.Вставить("xddMods", МассивЗаписейВыгрузкиДопСвойства); + ЗаписьВыгрузки.Вставить("ТЧ", СтрокиТЧ); + + ДанныеДляВыгрузки.Вставить(ДанныеДляВыгрузки.Количество(), ЗаписьВыгрузки); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьПользователяИБ_ВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных, МассивДанных) + + ДобавитьШапкуПользователяИБ_ВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных); + + ДобавитьРеквизитыПользователяИБ_ВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных); + ДобавитьРолиПользователяИБ_ВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных); + +КонецПроцедуры + +Процедура ДобавитьШапкуПользователяИБ_ВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных) + + ЗаписьВыгрузки = Новый Структура; + + ДобавитьПростойРеквизитВВыгрузку(ЗаписьВыгрузки, ШапкаДанных, "", ОписательОбъекта.Значение); + + ЗаписьВыгрузки.Вставить("Тип", "ПользовательИБ"); + ЗаписьВыгрузки.Вставить("ИмяПеременной", ОписательОбъекта.ИмяПеременной); + + ДанныеДляВыгрузки.Добавить(ЗаписьВыгрузки); + +КонецПроцедуры + +Процедура ДобавитьРеквизитыПользователяИБ_ВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных) + + параметрыПользователя = Новый Структура; + параметрыПользователя.Вставить("Имя", ""); + параметрыПользователя.Вставить("ПолноеИмя", ""); + параметрыПользователя.Вставить("АутентификацияСтандартная", Истина); + параметрыПользователя.Вставить("АутентификацияОС", Ложь); + параметрыПользователя.Вставить("ПользовательОС", ""); + параметрыПользователя.Вставить("ОсновнойИнтерфейс", ""); //Метаданные.Интерфейсы.Администратор); + параметрыПользователя.Вставить("ПоказыватьВСпискеВыбора", Истина); + параметрыПользователя.Вставить("РежимЗапуска", РежимЗапускаКлиентскогоПриложения.Авто); + //параметрыПользователя.Вставить("Язык", Метаданные.Языки.Русский); + + ЗаполнитьЗначенияСвойств(параметрыПользователя, ОписательОбъекта.ПользовательИБ); + // преобразуем к притивному типу т.к. мутабельные типы проблемно конвертировать в JSON + параметрыПользователя.ОсновнойИнтерфейс = Строка(параметрыПользователя.ОсновнойИнтерфейс); + параметрыПользователя.РежимЗапуска = Строка(параметрыПользователя.РежимЗапуска); + + параметрыПользователя.Вставить("Пароль", ""); + + МассивЗаписей = Новый Массив; + Для Каждого КлючЗначение Из параметрыПользователя Цикл + ДобавитьПростойРеквизитВВыгрузку(МассивЗаписей, ШапкаДанных, КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; + + ДанныеДляВыгрузки.Добавить(МассивЗаписей); + +КонецПроцедуры + +Процедура ДобавитьРолиПользователяИБ_ВВыгрузку(ДанныеДляВыгрузки, ОписательОбъекта, ШапкаДанных) + + МассивРолей = Новый Массив; + Роли = ОписательОбъекта.ПользовательИБ.Роли; + Для Каждого Роль Из Роли Цикл + ДобавитьПростойРеквизитВВыгрузку(МассивРолей, ШапкаДанных, "Роль", Роль.Имя); + КонецЦикла; + + ЗаписьРоли = Новый Структура; + ЗаписьРоли.Вставить("Роли", МассивРолей); + + ДанныеДляВыгрузки.Добавить(ЗаписьРоли); + +КонецПроцедуры + +#КонецОбласти + +#Область ИнициализацияПеременных + +ВариантВстроенногоЯзыкаАнглийский = ( Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.English ); + +мНаличиеВыгрузкиПодчиненныхОбъектов = Ложь; +мТипРезультатЗапроса = Тип("РезультатЗапроса"); +мСоответствиеКолонокДвижений = Новый Соответствие; + +ЗаполнитьСоответствие(); + +#КонецОбласти diff --git "a/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" index ac230e1dc1..b0ceec0864 100644 --- "a/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ "b/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -41,6 +41,11 @@ +
@@ -69,666 +74,746 @@ Group settings - Horizontal + Vertical None false - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Группа страницы</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Group page</v8:content> - </v8:item> - - - - ru - Группа страницы - - - en - Group page - - - + + AlwaysHorizontal + None + false + - + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Метаданные</v8:content> + <v8:content>Группа страницы</v8:content> </v8:item> <v8:item> <v8:lang>en</v8:lang> - <v8:content>Metadata</v8:content> + <v8:content>Group page</v8:content> </v8:item> ru - Группа метаданные + Группа страницы en - Group metadata + Group page - true - + - + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Метаданные</v8:content> + </v8:item> + <v8:item> + <v8:lang>en</v8:lang> + <v8:content>Metadata</v8:content> + </v8:item> + + + + ru + Группа метаданные + + + en + Group metadata + + true - Horizontal - None - false - + - - Объект.ВыгружатьКод - Auto - - - - - Объект.ВыгружатьСсылку - Auto - - - - - Объект.СвязьПоГуид - Auto - - - - - Объект.ТолькоСоздание - Auto - - - - - Объект.ОбменДанными - Auto - - - - - Объект.ВариантВстроенногоЯзыкаАнглийский - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Язык программирования английский</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Script variant English</v8:content> - </v8:item> - - Auto - - - - - Объект.УровеньВыгрузки - - - ru - Если значение = 0, то ограничений нет и выгружаются элементы с признаком "При необходимости" + + true + Horizontal + None + false + + + + Объект.ВыгружатьКод + Auto + + + + + Объект.ВыгружатьСсылку + Auto + + + + + Объект.СвязьПоГуид + Auto + + + + + Объект.ТолькоСоздание + Auto + + + + + Объект.ОбменДанными + Auto + + + + + Объект.ВариантВстроенногоЯзыкаАнглийский + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Язык программирования английский</v8:content> + </v8:item> + <v8:item> + <v8:lang>en</v8:lang> + <v8:content>Script variant English</v8:content> + </v8:item> + + Auto + + + + + Объект.УровеньВыгрузки + + + ru + Если значение = 0, то ограничений нет и выгружаются элементы с признаком "При необходимости" `Значение = 1` выгружаем вообще без подчиненных, только явно заданные Если значение > 1, то выгружаем подчиненные элементы этого или меньшего уровня зависимости - - - en - If value = 0, then there are no restrictions and unloaded the items with the sign "If necessary" + + + en + If value = 0, then there are no restrictions and unloaded the items with the sign "If necessary" `Value = 1` paged even without subordinates, only explicit If value is > 1, then paged sub-elements of this level or lower according to - - - true - - - - УровеньВыгрузкиПриИзменении - - + + + true + + + + УровеньВыгрузкиПриИзменении + + + + + + true + Horizontal + None + false + + + + Tree + false + false + true + ExpandAllLevels + true + true + AsFile + Объект.ДеревоМетаданных + Объект.ДеревоМетаданных.ИндексКартинки + + RowsPicture.png + false + + None + None + None + + + false + + + + + + + + ДеревоМетаданных + SearchStringRepresentation + + + + + + + ДеревоМетаданных + ViewStatusRepresentation + + + + + + + ДеревоМетаданных + SearchControl + + + + + + ДеревоМетаданныхПриАктивизацииСтроки + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа выбора объектов</v8:content> + </v8:item> + <v8:item> + <v8:lang>en</v8:lang> + <v8:content>Group choose objects</v8:content> + </v8:item> + + + + ru + Группа выбора объектов + + + en + Group choose objects + + + InCell + + + + Объект.ДеревоМетаданных.Выгружать + EnterOnInput + false + true + + + + ДеревоМетаданныхВыгружатьПриИзменении + + + + Объект.ДеревоМетаданных.ПолноеИмяМетаданных + true + EnterOnInput + + + + + + + Объект.ДеревоМетаданных.ВыгружатьПриНеобходимости + Right + EnterOnInput + true + + + + ДеревоМетаданныхВыгружатьПриНеобходимостиПриИзменении + + + +
+ + Tree + true + ExpandAllLevels + true + true + AsFile + Объект.КомпоновщикНастроекКомпоновкиДанных.Settings.Filter + None + None + None + All + false + + + + + + + + + + КомпоновщикОтбор + SearchStringRepresentation + + + + + + + КомпоновщикОтбор + ViewStatusRepresentation + + + + + + + КомпоновщикОтбор + SearchControl + + + + + + КомпоновщикОтборПриОкончанииРедактирования + КомпоновщикОтборПослеУдаления + +
+
+
-
- - true - Horizontal - None - false - + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Таблица данных</v8:content> + </v8:item> + <v8:item> + <v8:lang>en</v8:lang> + <v8:content>Table of data</v8:content> + </v8:item> + + + + ru + Группа таблица данных + + + en + Group data table + + + - - Tree - false - false +
+ Listtrue - ExpandAllLevelstruetrueAsFile - Объект.ДеревоМетаданных - Объект.ДеревоМетаданных.ИндексКартинки - - RowsPicture.png - false - + Объект.ТаблицаДанныхNoneNoneNone - - - false + + + - - - + + - ДеревоМетаданных + ТаблицаДанных SearchStringRepresentation - - + + - + - ДеревоМетаданных + ТаблицаДанных ViewStatusRepresentation - - + + - + - ДеревоМетаданных + ТаблицаДанных SearchControl - - + + - - ДеревоМетаданныхПриАктивизацииСтроки - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Группа выбора объектов</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Group choose objects</v8:content> - </v8:item> - - - - ru - Группа выбора объектов - - - en - Group choose objects - - - InCell - - - - Объект.ДеревоМетаданных.Выгружать - EnterOnInput - false - true - - - - ДеревоМетаданныхВыгружатьПриИзменении - - - - Объект.ДеревоМетаданных.ПолноеИмяМетаданных - true - EnterOnInput - - - - - - - Объект.ДеревоМетаданных.ВыгружатьПриНеобходимости - Right + + EnterOnInput + + + + + Объект.ТаблицаДанных.Ссылка EnterOnInput - true - - + + - ДеревоМетаданныхВыгружатьПриНеобходимостиПриИзменении + ТаблицаДанныхСсылкаПриИзменении + + + Объект.ТаблицаДанных.Метаданное + EnterOnInput + + + + + Объект.ТаблицаДанных.ИмяПеременной + EnterOnInput + + + + + Объект.ТаблицаДанных.ВыгружатьКод + EnterOnInput + Auto + + + + Объект.ТаблицаДанных.РежимПоиска + EnterOnInput + + + + + Объект.ТаблицаДанных.РежимСоздания + EnterOnInput + + +
- - Tree - true - ExpandAllLevels + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Пользователи ИБ</v8:content> + </v8:item> + <v8:item> + <v8:lang>en</v8:lang> + <v8:content>Users of database</v8:content> + </v8:item> + + + + ru + Группа пользователи ИБ + + + en + Group users IB + + + + +
+ List + truetruetrueAsFile - Объект.КомпоновщикНастроекКомпоновкиДанных.Settings.Filter + Объект.ПользователиИБNoneNoneNone - All - false - - - - - - - - + + + + + - КомпоновщикОтбор + ПользователиИнфБазы SearchStringRepresentation - - + + - + - КомпоновщикОтбор + ПользователиИнфБазы ViewStatusRepresentation - - + + - + - КомпоновщикОтбор + ПользователиИнфБазы SearchControl - - + + - - КомпоновщикОтборПриОкончанииРедактирования - КомпоновщикОтборПослеУдаления - + + + Объект.ПользователиИБ.LineNumber + EnterOnInput + + + + + Объект.ПользователиИБ.Имя + EnterOnInput + + + + + Объект.ПользователиИБ.ПолноеИмя + EnterOnInput + + + + + Объект.ПользователиИБ.Роли + EnterOnInput + + + + + Объект.ПользователиИБ.АутентификацияСтандартная + EnterOnInput + + + + + Объект.ПользователиИБ.АутентификацияОС + EnterOnInput + + + + + Объект.ПользователиИБ.ПользовательОС + EnterOnInput + + + +
-
+
- - + + + Top + 4 + true + true + true + AsFile + Объект.ДополнительныеСвойства <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Таблица данных</v8:content> + <v8:content>Дополнительные свойства</v8:content> </v8:item> <v8:item> <v8:lang>en</v8:lang> - <v8:content>Table of data</v8:content> + <v8:content>Additional properties</v8:content> </v8:item> - - - ru - Группа таблица данных - - - en - Group data table - - - + None + None + None + + + + + + + ДополнительныеСвойства + SearchStringRepresentation + + + + + + + ДополнительныеСвойства + ViewStatusRepresentation + + + + + + + ДополнительныеСвойства + SearchControl + + + + -
- List - true - true - true - AsFile - Объект.ТаблицаДанных - None - None - None - - - - - - - - - - - ТаблицаДанных - SearchStringRepresentation - - - - - - - ТаблицаДанных - ViewStatusRepresentation - - - - - - - ТаблицаДанных - SearchControl - - - - - - - EnterOnInput - - - - - Объект.ТаблицаДанных.Ссылка - EnterOnInput - - - - ТаблицаДанныхСсылкаПриИзменении - - - - Объект.ТаблицаДанных.Метаданное - EnterOnInput - - - - - Объект.ТаблицаДанных.ИмяПеременной - EnterOnInput - - - - - Объект.ТаблицаДанных.ВыгружатьКод - EnterOnInput - Auto - - - - - Объект.ТаблицаДанных.РежимПоиска - EnterOnInput - - - - - Объект.ТаблицаДанных.РежимСоздания - EnterOnInput - - - - -
+ + Объект.ДополнительныеСвойства.LineNumber + + false + + EnterOnInput + 1 + + + + + Объект.ДополнительныеСвойства.Имя + EnterOnInput + 14 + + + + + Объект.ДополнительныеСвойства.Значение + EnterOnInput + 20 + + + -
- - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Пользователи ИБ</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Users of database</v8:content> - </v8:item> - - - - ru - Группа пользователи ИБ - - - en - Group users IB - - - + + + + + None + false + + + + Vertical + None + false + - - List - true - true - true - AsFile - Объект.ПользователиИБ - None - None - None - - - - - - - ПользователиИнфБазы - SearchStringRepresentation - - - - - - - ПользователиИнфБазы - ViewStatusRepresentation - - - - - - - ПользователиИнфБазы - SearchControl - - - - + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа макеты</v8:content> + </v8:item> + + + + ru + Группа макеты + + + - - Объект.ПользователиИБ.LineNumber - EnterOnInput - - - - - Объект.ПользователиИБ.Имя - EnterOnInput - - - - - Объект.ПользователиИБ.ПолноеИмя - EnterOnInput - - - - - Объект.ПользователиИБ.Роли - EnterOnInput - - - - - Объект.ПользователиИБ.АутентификацияСтандартная - EnterOnInput - - - - - Объект.ПользователиИБ.АутентификацияОС - EnterOnInput - - - - - Объект.ПользователиИБ.ПользовательОС - EnterOnInput - - - + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>XML</v8:content> + </v8:item> + + + + ru + Группа XML + + + + + + Макет + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Макет данных</v8:content> + </v8:item> + <v8:item> + <v8:lang>en</v8:lang> + <v8:content>Data layout</v8:content> + </v8:item> + + None + DontShow + true + true + true + true + WhenActive + Enable + true + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>JSON</v8:content> + </v8:item> + + + + ru + Группа макет JSON + + + + + + МакетJSON + None + + + + + -
+
-
- - - - Top - 4 - true - true - true - AsFile - Объект.ДополнительныеСвойства - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Дополнительные свойства</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Additional properties</v8:content> - </v8:item> - - None - None - None - - - - - - - ДополнительныеСвойства - SearchStringRepresentation - - - - - - - ДополнительныеСвойства - ViewStatusRepresentation - - - - - - - ДополнительныеСвойства - SearchControl - - - - - - - Объект.ДополнительныеСвойства.LineNumber - - false - - EnterOnInput - 1 - - - - - Объект.ДополнительныеСвойства.Имя - EnterOnInput - 14 - - - - - Объект.ДополнительныеСвойства.Значение - EnterOnInput - 20 - - - + -
+ - - Макет - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Макет данных</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Data layout</v8:content> - </v8:item> - - None - DontShow - true - true - true - true - WhenActive - Enable - true - - - @@ -893,6 +978,17 @@ If value is > 1, then paged sub-elements of this level or lower according to< + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Макет JSON</v8:content> + </v8:item> + + + d5p1:TextDocument + + @@ -1187,5 +1283,20 @@ If value is > 1, then paged sub-elements of this level or lower according to< ДополнительныеСвойства DontUse + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Конвертировать макет</v8:content> + </v8:item> + + + + ru + Конвертировать макет + + + КонвертироватьМакет + \ No newline at end of file diff --git "a/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 5b7a935fff..f8d8320efb 100644 --- "a/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -76,6 +76,7 @@ &НаКлиенте Процедура СоздатьМакетДанных(Команда) + ПанельИсточников = Элементы.ГруппаСтраницы; Если ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаМетаданные Тогда КоманднаяПанель1СоздатьМакетДанныхПоМетаданным(); @@ -84,6 +85,7 @@ ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаПользователиИБ Тогда КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ(); КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -116,7 +118,11 @@ &НаКлиенте Процедура ПротестироватьЗагрузкуМакета(Команда) - ПроверитьЗагрузкуМакетаСервер(Макет); + + МакетДляЗаполнения = ПолучитьМакетЗаполнения(); + + ПроверитьЗагрузкуМакетаСервер(МакетДляЗаполнения); + КонецПроцедуры &НаКлиенте @@ -137,6 +143,11 @@ Объект.ТаблицаДанных.Очистить(); КонецПроцедуры +&НаКлиенте +Процедура КонвертироватьМакет(Команда) + КонвертироватьМакетНаСервере(); +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -153,7 +164,15 @@ &НаСервере Функция СоздатьМакетДанныхПоТаблицеДанныхСервер() - Возврат Объект().СоздатьМакетДанныхПоТаблицеДанных(Макет); + + МакетДляЗаполнения = ПолучитьМакетЗаполнения(); + + НовыйМакет = Объект().СоздатьМакетДанныхПоТаблицеДанных(МакетДляЗаполнения); + + ЗаполнитьМакетНовымиДанными(НовыйМакет); + + Возврат НовыйМакет; + КонецФункции &НаСервере @@ -161,23 +180,82 @@ ОбъектНаСервере = Объект(); ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере); - НовыйМакет = ОбъектНаСервере.СоздатьМакетДанныхПоМетаданным(Макет); + + МакетДляЗаполнения = ПолучитьМакетЗаполнения(); + + НовыйМакет = ОбъектНаСервере.СоздатьМакетДанныхПоМетаданным(МакетДляЗаполнения); + + ЗаполнитьМакетНовымиДанными(НовыйМакет); + ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных"); Возврат НовыйМакет; КонецФункции +&НаСервере Функция СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей) - Возврат Объект().СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей); + + МакетДляЗаполнения = ПолучитьМакетЗаполнения(); + + НовыйМакет = Объект().СоздатьМакетДанныхПоПользователямИБ(МакетДляЗаполнения, МассивИменПользователей); + + ЗаполнитьМакетНовымиДанными(НовыйМакет); + + Возврат НовыйМакет; + +КонецФункции + +&НаСервере +Процедура ПроверитьЗагрузкуМакетаСервер(Макет) + + Объект().ПроверитьЗагрузкуМакета(Макет); + +КонецПроцедуры + +&НаСервере +Функция ОбработкаМакетаJSON() + + Возврат Элементы.ГруппаМакеты.ТекущаяСтраница.Имя = "ГруппаМакетJSON"; + КонецФункции &НаСервере -Процедура ПроверитьЗагрузкуМакетаСервер(ТабличныйДокумент) - Объект().ПроверитьЗагрузкуМакета(ТабличныйДокумент); +Функция ПолучитьМакетЗаполнения() + + Если ОбработкаМакетаJSON() Тогда + МакетДляЗаполнения = МакетJSON; + Иначе + МакетДляЗаполнения = Макет; + КонецЕсли; + + Возврат МакетДляЗаполнения; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьМакетНовымиДанными(НовыйМакет) + + Если ОбработкаМакетаJSON() Тогда + МакетJSON = НовыйМакет; + Иначе + Макет = НовыйМакет; + КонецЕсли; + КонецПроцедуры +&НаСервере +Процедура КонвертироватьМакетНаСервере() + + МакетДляЗаполнения = ПолучитьМакетЗаполнения(); + НовыйМакет = Объект().КонвертироватьМакет(МакетДляЗаполнения); + Если ОбработкаМакетаJSON() Тогда + Макет= НовыйМакет; + Иначе + МакетJSON = НовыйМакет; + КонецЕсли; +КонецПроцедуры &НаСервере @@ -301,7 +379,8 @@ УстановитьПометкиПодчиненных(ТекущиеДанные, "Выгружать"); УстановитьПометкиРодителей(ТекущиеДанные, "Выгружать"); - УровеньВыгрузкиПриИзменении(Элемент); + УровеньВыгрузкиПриИзменении(Элемент); + КонецПроцедуры &НаКлиенте @@ -553,4 +632,4 @@ Отказ = (Вопрос("Вы действительно хотите закрыть обработку?", РежимДиалогаВопрос.ДаНет,,,"Подтвердите выход") = КодВозвратаДиалога.Нет); КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git "a/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" "b/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" index 1bb3277ed2..61b991c909 100644 Binary files "a/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" and "b/plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" differ