mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-08 13:06:32 +02:00
Merge pull request #180 from bia-technologies/feature/36
Cравнение табличных документов
This commit is contained in:
commit
3415de2b0c
@ -82,4 +82,36 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыборкаИзТабличногоДокумента(ТабличныйДокумент) Экспорт
|
||||
|
||||
Возврат ЗапросКТабличномуДокументу(ТабличныйДокумент).Выбрать();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТаблицаИзТабличногоДокумента(ТабличныйДокумент) Экспорт
|
||||
|
||||
Возврат ЗапросКТабличномуДокументу(ТабличныйДокумент).Выгрузить();
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ЗапросКТабличномуДокументу(ТабличныйДокумент)
|
||||
|
||||
ВсегоСтрок = ТабличныйДокумент.ВысотаТаблицы;
|
||||
ВсегоКолонок = ТабличныйДокумент.ШиринаТаблицы;
|
||||
|
||||
Область = ТабличныйДокумент.Область(1, 1, ВсегоСтрок, ВсегоКолонок);
|
||||
|
||||
ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);
|
||||
ПостроительОтчета = Новый ПостроительОтчета;
|
||||
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
|
||||
ПостроительОтчета.Выполнить();
|
||||
|
||||
Возврат ПостроительОтчета.Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -63,6 +63,10 @@
|
||||
|
||||
Результат = МассивыРавны(Данные1, Данные2);
|
||||
|
||||
ИначеЕсли ТипЗначения = Тип("ТабличныйДокумент") Тогда
|
||||
|
||||
Результат = ЮТСравнениеСервер.ТабличныеДокументыРавны(Данные1, Данные2);
|
||||
|
||||
ИначеЕсли ЭтоПримитивныйТип(ТипЗначения) ИЛИ ЮТОбщий.ОписаниеТиповЛюбаяСсылка().СодержитТип(ТипЗначения) Тогда
|
||||
// Возвращаем ложь, так как для этих типов должно сработать обычное равенство
|
||||
Результат = Ложь;
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция ТаблицыРавны(Данные1, Данные2) Экспорт
|
||||
Функция ТаблицыРавны(Знач Данные1, Знач Данные2) Экспорт
|
||||
|
||||
Если Данные1.Количество() <> Данные2.Количество() Тогда
|
||||
Возврат Ложь;
|
||||
@ -46,4 +46,74 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТабличныеДокументыРавны(Знач ТабличныйДокумент1, Знач ТабличныйДокумент2) Экспорт
|
||||
|
||||
Данные1 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент1);
|
||||
Данные2 = ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент2);
|
||||
|
||||
Возврат ТаблицыРавны(Данные1, Данные2);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// https://github.com/vanessa-opensource/add
|
||||
// портирован из Functest
|
||||
Функция ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь)
|
||||
|
||||
ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент);
|
||||
Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда
|
||||
ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента";
|
||||
КонецЕсли;
|
||||
|
||||
Если УчитыватьТолькоВидимыеКолонки И УчитыватьТолькоВидимыеСтроки Тогда
|
||||
ЮТОбщийВызовСервера.ТаблицаИзТабличногоДокумента(ТипТабличногоДокумента);
|
||||
КонецЕсли;
|
||||
|
||||
НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы;
|
||||
НомерПоследнейСтроки = ТабличныйДокумент.ВысотаТаблицы;
|
||||
|
||||
НоваяТаблицаЗначений = Новый ТаблицаЗначений;
|
||||
Колонки = НоваяТаблицаЗначений.Колонки;
|
||||
ТипСтрока = Новый ОписаниеТипов("Строка");
|
||||
|
||||
// TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимоcть колонки определяется по формату первой строки
|
||||
УчитываемыеКолонки = Новый Массив;
|
||||
Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл
|
||||
ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки);
|
||||
|
||||
УчитыватьКолонку = Не УчитыватьТолькоВидимыеКолонки Или ОбластьКолонки.Видимость;
|
||||
Если УчитыватьКолонку Тогда
|
||||
УчитываемыеКолонки.Добавить(НомерКолонки);
|
||||
ШиринаКолонки = ОбластьКолонки.ШиринаКолонки;
|
||||
Если ШиринаКолонки <= 1 Тогда
|
||||
ШиринаКолонки = 1;
|
||||
КонецЕсли;
|
||||
ИмяКолонки = "К" + Формат(Колонки.Количество() + 1, "ЧН=; ЧГ=0");
|
||||
Колонки.Добавить(ИмяКолонки, ТипСтрока, ИмяКолонки, ШиринаКолонки);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
ГраницаКолонок = УчитываемыеКолонки.ВГраница();
|
||||
Для НомерСтроки = 1 По НомерПоследнейСтроки Цикл
|
||||
|
||||
Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки, , НомерСтроки).Видимость Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
НоваяСтрока = НоваяТаблицаЗначений.Добавить();
|
||||
|
||||
Для Индекс = 0 По ГраницаКолонок Цикл
|
||||
НомерКолонки = УчитываемыеКолонки[Индекс];
|
||||
Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
|
||||
НоваяСтрока[Индекс] = Область.Текст;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат НоваяТаблицаЗначений;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -6,4 +6,5 @@
|
||||
<value>Сравнение сервер</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<serverCall>true</serverCall>
|
||||
</mdclass:CommonModule>
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
ПараметрыЗагрузки = ПараметрыЗагрузки(КолонкиМакета, ОписанияТипов, ЗаменяемыеЗначения, КэшЗначений, ПараметрыЗаполнения);
|
||||
|
||||
Выборка = ВыборкаИзТабличногоДокумента(ДанныеМакета);
|
||||
Выборка = ЮТОбщийВызовСервера.ВыборкаИзТабличногоДокумента(ДанныеМакета);
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
|
||||
@ -219,22 +219,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыборкаИзТабличногоДокумента(ТабличныйДокумент)
|
||||
|
||||
ВсегоСтрок = ТабличныйДокумент.ВысотаТаблицы;
|
||||
ВсегоКолонок = ТабличныйДокумент.ШиринаТаблицы;
|
||||
|
||||
Область = ТабличныйДокумент.Область(1, 1, ВсегоСтрок, ВсегоКолонок);
|
||||
|
||||
ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);
|
||||
ПостроительОтчета = Новый ПостроительОтчета;
|
||||
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
|
||||
ПостроительОтчета.Выполнить();
|
||||
|
||||
Возврат ПостроительОтчета.Результат.Выбрать();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеМакета(Знач Макет)
|
||||
|
||||
ТипПараметра = ТипЗнч(Макет);
|
||||
|
@ -75,6 +75,7 @@
|
||||
.СПараметрами(Новый ФиксированнаяСтруктура(Структура))
|
||||
.СПараметрами(Новый ФиксированноеСоответствие(Соответствие))
|
||||
.СПараметрами(Новый ФиксированныйМассив(Массив))
|
||||
.ДобавитьТест("ЗначенияРавны_ТабличныйДокумент")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -160,6 +161,22 @@
|
||||
|
||||
#КонецЕсли
|
||||
|
||||
Процедура ЗначенияРавны_ТабличныйДокумент() Экспорт
|
||||
|
||||
Макет1 = ЮТОбщий.Макет("ОбщийМакет.ЮТ_МакетТестовыхДанных");
|
||||
Макет2 = ЮТОбщий.Макет("ОбщийМакет.ЮТ_МакетТестовыхДанных");
|
||||
|
||||
Макет3 = ЮТОбщий.Макет("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C1:R5C10");
|
||||
Макет4 = ЮТОбщий.Макет("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C2:R5C11");
|
||||
|
||||
ЮТест.ОжидаетЧто(Макет1, "Равные макеты")
|
||||
.Равно(Макет2);
|
||||
|
||||
ЮТест.ОжидаетЧто(Макет3, "Разные макеты")
|
||||
.НеРавно(Макет4);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
Loading…
Reference in New Issue
Block a user