Skip to content

Commit dd15fb0

Browse files
committed
Тест и реализация для #673 "В УФ и Такси нельзя получить коллекцию созданных данных на клиенте"
1 parent e9a400b commit dd15fb0

File tree

14 files changed

+346
-15
lines changed

14 files changed

+346
-15
lines changed
585 Bytes
Binary file not shown.
2.55 KB
Binary file not shown.

src/Plugins/СериализаторMXL/Form/УправляемаяФорма/Форма.bsl

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,68 @@
1515
// { Методы генерации тестовых данных
1616

1717
&НаКлиенте
18-
Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено, ВозвращатьДанные = Ложь) Экспорт
18+
Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено, ВозвращатьДанные = Истина) Экспорт
1919
Данные = СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения, ВозвращатьДанные);
2020
Возврат Данные;
2121
КонецФункции
2222

2323
&НаСервере
24-
Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения, ВозвращатьДанные = Ложь)
24+
Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения, ВозвращатьДанные)
2525
Данные = Объект().СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения);
26-
// В данных могут быть наборы записей регистров, которые нельзя передать на клиент
26+
// В данных могут быть какие-нибудь данные, например, наборы записей регистров, которые нельзя передать на клиент
2727
Если ВозвращатьДанные = Истина Тогда
28+
Для каждого Элем Из Данные Цикл
29+
Стр = Строка(Элем.Значение);
30+
Если Найти(Стр,"РегистрСведенийНаборЗаписей") > 0 Тогда
31+
ИмяРС = Сред(Стр,29);
32+
Данные[Элем.Ключ] = ПолучитьКлючиЗаписиРСПоНаборуЗаписейРС(Элем.Значение,ИмяРС);
33+
КонецЕсли;
34+
КонецЦикла;
35+
2836
Возврат Данные;
2937
Иначе
3038
Возврат Неопределено;
3139
КонецЕсли;
3240
КонецФункции
41+
42+
&НаСервереБезКонтекста
43+
Функция ПолучитьКлючиЗаписиРСПоНаборуЗаписейРС(НаборЗаписей, ИмяРС)
44+
Результат = Новый Массив;
45+
46+
Периодический = Не (Метаданные.РегистрыСведений[ИмяРС].ПериодичностьРегистраСведений = Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический);
47+
ПодчиненРегистратору = (Метаданные.РегистрыСведений[ИмяРС].РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору);
48+
49+
МассивИзмерений = Новый Массив;
50+
Для каждого Измерение Из Метаданные.РегистрыСведений[ИмяРС].Измерения Цикл
51+
МассивИзмерений.Добавить(Измерение.Имя);
52+
КонецЦикла;
53+
54+
Для каждого Запись Из НаборЗаписей Цикл
55+
ЗначениеКлюча = Новый Структура;
56+
57+
Если ПодчиненРегистратору Тогда
58+
ЗначениеКлюча.Вставить("Регистратор",Запись.Регистратор);
59+
КонецЕсли;
60+
Если Периодический Тогда
61+
ЗначениеКлюча.Вставить("Период",Запись.Период);
62+
КонецЕсли;
63+
64+
Для каждого Измерение Из МассивИзмерений Цикл
65+
ЗначениеКлюча.Вставить(Измерение,Запись[Измерение]);
66+
КонецЦикла;
67+
68+
69+
ПараметрыКонструктора = Новый Массив();
70+
ПараметрыКонструктора.Добавить(ЗначениеКлюча);
71+
КлючЗаписи = Новый("РегистрСведенийКлючЗаписи." + ИмяРС, ПараметрыКонструктора);
72+
73+
Результат.Добавить(КлючЗаписи);
74+
КонецЦикла;
75+
76+
Возврат Результат;
77+
78+
КонецФункции
79+
3380
//}
3481

3582
////////////////////////////////////////////////////////////////////////////////
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Form\УправляемаяФорма\Форма.bsl-->103ebd31-7643-4b1a-ba8b-4c789efcb71f.0 (4 787, 5 302)
1+
Form\УправляемаяФорма\Форма.bsl-->103ebd31-7643-4b1a-ba8b-4c789efcb71f.0 (4 787, 5 349)

src/Plugins/СериализаторMXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4691,21 +4691,68 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==}
46914691
// { Методы генерации тестовых данных
46924692

46934693
&НаКлиенте
4694-
Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено, ВозвращатьДанные = Ложь) Экспорт
4694+
Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено, ВозвращатьДанные = Истина) Экспорт
46954695
Данные = СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения, ВозвращатьДанные);
46964696
Возврат Данные;
46974697
КонецФункции
46984698

46994699
&НаСервере
4700-
Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения, ВозвращатьДанные = Ложь)
4700+
Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения, ВозвращатьДанные)
47014701
Данные = Объект().СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения);
4702-
// В данных могут быть наборы записей регистров, которые нельзя передать на клиент
4702+
// В данных могут быть какие-нибудь данные, например, наборы записей регистров, которые нельзя передать на клиент
47034703
Если ВозвращатьДанные = Истина Тогда
4704+
Для каждого Элем Из Данные Цикл
4705+
Стр = Строка(Элем.Значение);
4706+
Если Найти(Стр,""РегистрСведенийНаборЗаписей"") > 0 Тогда
4707+
ИмяРС = Сред(Стр,29);
4708+
Данные[Элем.Ключ] = ПолучитьКлючиЗаписиРСПоНаборуЗаписейРС(Элем.Значение,ИмяРС);
4709+
КонецЕсли;
4710+
КонецЦикла;
4711+
47044712
Возврат Данные;
47054713
Иначе
47064714
Возврат Неопределено;
47074715
КонецЕсли;
47084716
КонецФункции
4717+
4718+
&НаСервереБезКонтекста
4719+
Функция ПолучитьКлючиЗаписиРСПоНаборуЗаписейРС(НаборЗаписей, ИмяРС)
4720+
Результат = Новый Массив;
4721+
4722+
Периодический = Не (Метаданные.РегистрыСведений[ИмяРС].ПериодичностьРегистраСведений = Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический);
4723+
ПодчиненРегистратору = (Метаданные.РегистрыСведений[ИмяРС].РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору);
4724+
4725+
МассивИзмерений = Новый Массив;
4726+
Для каждого Измерение Из Метаданные.РегистрыСведений[ИмяРС].Измерения Цикл
4727+
МассивИзмерений.Добавить(Измерение.Имя);
4728+
КонецЦикла;
4729+
4730+
Для каждого Запись Из НаборЗаписей Цикл
4731+
ЗначениеКлюча = Новый Структура;
4732+
4733+
Если ПодчиненРегистратору Тогда
4734+
ЗначениеКлюча.Вставить(""Регистратор"",Запись.Регистратор);
4735+
КонецЕсли;
4736+
Если Периодический Тогда
4737+
ЗначениеКлюча.Вставить(""Период"",Запись.Период);
4738+
КонецЕсли;
4739+
4740+
Для каждого Измерение Из МассивИзмерений Цикл
4741+
ЗначениеКлюча.Вставить(Измерение,Запись[Измерение]);
4742+
КонецЦикла;
4743+
4744+
4745+
ПараметрыКонструктора = Новый Массив();
4746+
ПараметрыКонструктора.Добавить(ЗначениеКлюча);
4747+
КлючЗаписи = Новый(""РегистрСведенийКлючЗаписи."" + ИмяРС, ПараметрыКонструктора);
4748+
4749+
Результат.Добавить(КлючЗаписи);
4750+
КонецЦикла;
4751+
4752+
Возврат Результат;
4753+
4754+
КонецФункции
4755+
47094756
//}
47104757

47114758
////////////////////////////////////////////////////////////////////////////////
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{1,11,"",5b1cfe0d-252a-455a-aa11-c81d4edac366,"01b3462f-bb96-43d3-862b-e5cbcf9afd55",0f7b3227-07d6-40cb-81e2-dc26ec80e36a,"01b3462f-bb96-43d3-862b-e5cbcf9afd55.0",e7d23a41-a1f9-4e14-9685-2d5c76823634,"103ebd31-7643-4b1a-ba8b-4c789efcb71f",54654269-9db1-40df-9717-4a673e0f5057,"103ebd31-7643-4b1a-ba8b-4c789efcb71f.0",08cfdfb5-2941-47a2-be43-808bc0fefac6,"54f1dec0-8f13-4065-9f45-0e74788142d2.0",82c06b3a-c1cd-4cea-a791-b1f36b7b5a78,"copyinfo",25051f70-b673-4f2a-b972-d61f121372cb,"d0ac533a-c210-47e2-94e1-6d5329bcc033",1f4c1380-1b28-485d-8c56-a2f96a224d18,"root",f2c4e8f5-ef96-47f1-a8b4-5f402f2f1de9,"version",63d8a6c2-5873-49da-917a-4057fd60702b,"versions",feae686b-8b2c-457c-906d-e6c66d5c4416}
1+
{1,11,"",8a51ae07-1658-4e86-9d60-c4d74a712e36,"01b3462f-bb96-43d3-862b-e5cbcf9afd55",0f7b3227-07d6-40cb-81e2-dc26ec80e36a,"01b3462f-bb96-43d3-862b-e5cbcf9afd55.0",e7d23a41-a1f9-4e14-9685-2d5c76823634,"103ebd31-7643-4b1a-ba8b-4c789efcb71f",9f3b652c-5bff-4087-9ff9-9b4b55382082,"103ebd31-7643-4b1a-ba8b-4c789efcb71f.0",88ed8590-094e-479c-a692-b8a1bd13d941,"54f1dec0-8f13-4065-9f45-0e74788142d2.0",82c06b3a-c1cd-4cea-a791-b1f36b7b5a78,"copyinfo",1d27ff4e-b3e9-4fd9-b660-c1e50cf37366,"d0ac533a-c210-47e2-94e1-6d5329bcc033",1f4c1380-1b28-485d-8c56-a2f96a224d18,"root",fea0473b-1e31-4b34-ab63-54234a44cd6c,"version",75d86d10-04ad-4b2f-9941-f2f891a28257,"versions",423180e6-5356-47c4-aa2d-3f4ddd578a06}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
&НаКлиенте
2+
Перем КонтекстЯдра;
3+
&НаКлиенте
4+
Перем Ожидаем;
5+
&НаКлиенте
6+
Перем Утверждения;
7+
8+
&НаКлиенте
9+
Перем ГенераторДанных;
10+
11+
&НаКлиенте
12+
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
13+
КонтекстЯдра = КонтекстЯдраПараметр;
14+
Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD");
15+
Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
16+
ГенераторДанных = КонтекстЯдра.Плагин("СериализаторMXL");
17+
КонецПроцедуры
18+
19+
&НаКлиенте
20+
Функция ПолучитьСписокТестов() Экспорт
21+
ВсеТесты = Новый Массив;
22+
ВсеТесты.Добавить("ТестДолжен_СоздатьПростойСправочник_И_ПолучитьКоллекциюДанных");
23+
ВсеТесты.Добавить("ТестДолжен_СоздатьДваНабораЗаписейВРегистреСведенийЧерезНаборЗаписей_И_ПолучитьКоллекциюДанных");
24+
25+
Возврат ВсеТесты;
26+
КонецФункции
27+
28+
&НаКлиенте
29+
Процедура ТестДолжен_СоздатьПростойСправочник_И_ПолучитьКоллекциюДанных() Экспорт
30+
Макет = ПолучитьМакетОбработки("СозданиеПростогоСправочника");
31+
ТестовыеДанные = ГенераторДанных.СоздатьДанныеПоТабличномуДокументу(Макет);
32+
33+
ПроверитьСозданиеПростогоСправочника(ТестовыеДанные);
34+
КонецПроцедуры
35+
36+
&НаКлиенте
37+
Процедура ТестДолжен_СоздатьДваНабораЗаписейВРегистреСведенийЧерезНаборЗаписей_И_ПолучитьКоллекциюДанных() Экспорт
38+
Макет = ПолучитьМакетОбработки("СозданиеДвухНаборовЗаписейВРегистреСведений");
39+
ТестовыеДанные = ГенераторДанных.СоздатьДанныеПоТабличномуДокументу(Макет);
40+
41+
Утверждения.ПроверитьТип(ТестовыеДанные, "Структура", "ТестовыеДанные");
42+
Утверждения.ПроверитьРавенство(5, ТестовыеДанные.Количество());
43+
КонецПроцедуры
44+
45+
&НаСервере
46+
Функция ПолучитьМакетСервер(ИмяМакета)
47+
ОбъектСервер = РеквизитФормыВЗначение("Объект");
48+
Возврат ОбъектСервер.ПолучитьМакет(ИмяМакета);
49+
КонецФункции
50+
51+
&НаКлиенте
52+
Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт
53+
Возврат ПолучитьМакетСервер(ИмяМакета);
54+
КонецФункции
55+
56+
&НаКлиенте
57+
Процедура ПроверитьСозданиеПростогоСправочника(Знач ТестовыеДанные)
58+
Утверждения.ПроверитьТип(ТестовыеДанные, "Структура", "ТестовыеДанные");
59+
Утверждения.ПроверитьРавенство(1, ТестовыеДанные.Количество(), "ТестовыеДанные.Количество()");
60+
61+
Утверждения.ПроверитьИстину(ТестовыеДанные.Свойство("ПростойСправочник"), "Ожидали, что есть переменная 'ПростойСправочник'");
62+
Утверждения.ПроверитьТип(ТестовыеДанные.ПростойСправочник, "СправочникСсылка.ПростойСправочник");
63+
64+
КонецПроцедуры

src/Tests/Plugins/Тесты_СериализаторMXL/maps.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
Макеты\ИзменениеПредопределенногоСправочника.mxl-->bdaf3325-bb9b-4677-ba6e-56a642df2687.0
1+
Form\Форма\Форма.bsl-->0816d8a6-3602-4427-89fb-344b88aa39db.0 (46, 109)
2+
Макеты\ИзменениеПредопределенногоСправочника.mxl-->bdaf3325-bb9b-4677-ba6e-56a642df2687.0
23
Макеты\ИзменениеПредопределенногоСправочникаПоГуид.mxl-->e27b2c46-7b76-4b8d-a3e8-e1b0562943ca.0
34
Макеты\НайтиИПерезаполнитьПростойСправочникПоГуидСсылки.mxl-->b0adb70d-1e31-4637-8c1d-7f6f33baaa7b.0
45
Макеты\Пример.mxl-->7af53c68-a0ad-4144-85f4-d11d73853384.0

src/Tests/Plugins/Тесты_СериализаторMXL/renames.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
0afb6777-fe50-4b9c-b180-77d1ee3a3d54-->und\0afb6777-fe50-4b9c-b180-77d1ee3a3d54
1+
0816d8a6-3602-4427-89fb-344b88aa39db-->und\0816d8a6-3602-4427-89fb-344b88aa39db
2+
0816d8a6-3602-4427-89fb-344b88aa39db.0-->und\0816d8a6-3602-4427-89fb-344b88aa39db.0
3+
0afb6777-fe50-4b9c-b180-77d1ee3a3d54-->und\0afb6777-fe50-4b9c-b180-77d1ee3a3d54
24
0afb6777-fe50-4b9c-b180-77d1ee3a3d54.0-->und\0afb6777-fe50-4b9c-b180-77d1ee3a3d54.0
35
165eaf09-2e00-4e46-be94-35f3b4ede990-->und\165eaf09-2e00-4e46-be94-35f3b4ede990
46
165eaf09-2e00-4e46-be94-35f3b4ede990.0-->und\165eaf09-2e00-4e46-be94-35f3b4ede990.0
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{1,
2+
{1,
3+
{0,
4+
{12,
5+
{1,
6+
{0,0,0816d8a6-3602-4427-89fb-344b88aa39db},"Форма",
7+
{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1,
8+
{2,
9+
{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1},
10+
{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2}
11+
}
12+
},
13+
{0}
14+
}
15+
},0}

0 commit comments

Comments
 (0)