From c2fd065fae8fcb4860962fbeb47d4adf6f786c0e Mon Sep 17 00:00:00 2001 From: Nick Gavrilov Date: Mon, 28 Oct 2024 12:03:10 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=D0=A0=D0=B0=D0=B2=D0=B5=D0=BD=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=BE=D0=A2=D0=B0=D0=B1=D0=BB=D0=B8=D1=87=D0=BD=D1=8B=D1=85?= =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=9F=D0=BE=D0=9E=D1=84=D0=BE=D1=80=D0=BC=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8E=20=D0=B1=D0=B5=D0=B7=20=D0=BA=D0=B5=D1=88=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/ObjectModule.bsl" | 143 +++++++++++++++++- 1 file changed, 141 insertions(+), 2 deletions(-) diff --git "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" index 0226324b5..2fb308a0c 100644 --- "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" +++ "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" @@ -33,10 +33,11 @@ Для Каждого КлючЗначение Из РезультатыСравненияТаблиц Цикл ИменаРезультатов.Вставить(КлючЗначение.Значение, КлючЗначение.Ключ); КонецЦикла; + СтрокаОшибок = "Различия в таблицах:" + Символы.ПС; СтрокаОшибок = СтрокаОшибок + "Ожидали статус <" + ИменаРезультатов[РезультатыСравненияТаблиц.ТаблицыСовпадают] + ">, а получили <" + ИменаРезультатов[РезультатСравнения] + ">" + Символы.ПС; Для Каждого Строка Из Различия Цикл - СтрокаОшибок = СтрокаОшибок + "Значение [" + Строка.Колонка + ":" + Строка.Строка + "]. Ожидали <" + Строка.Ожидание + ">, а получили <" + Строка.Результат + ">" + Символы.ПС; + СтрокаОшибок = СтрокаОшибок + "Значение [" + Строка.Колонка + ":" + Строка.Строка + "]. Ожидали <" + Строка.Ожидание + ">, а получили <" + Строка.Результат + ">" + Символы.ПС; КонецЦикла; ВызватьОшибкуПроверки("Таблицы должны совпадать, а они различны" + Символы.ПС + СтрокаОшибок + Символы.ПС + ДопСообщениеОшибки); @@ -76,6 +77,145 @@ КонецПроцедуры +Процедура ПроверитьРавенствоТабличныхДокументовПоОформлению(ТабДок1, ТабДок2, + УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, + Знач ДопСообщениеОшибки = "", Знач ДопПараметры = Неопределено) Экспорт + + Если ТипЗнч(ТабДок1) <> Тип("ТабличныйДокумент") Тогда + ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Первый параметр-таблица не является табличным документов"; + КонецЕсли; + Если ТипЗнч(ТабДок2) <> Тип("ТабличныйДокумент") Тогда + ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Второй параметр-таблица не является табличным документов"; + КонецЕсли; + + УчитыватьТолькоВидимыеКолонки = Ложь; + Если ТипЗнч(УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки) = Тип("Булево") Тогда + УчитыватьТолькоВидимыеКолонки = УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки; + ИначеЕсли ТипЗнч(УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки) = Тип("Строка") Тогда + ДопСообщениеОшибки = УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки; + КонецЕсли; + УчитыватьТолькоВидимыеСтроки = Ложь; + Если ТипЗнч(УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки) = Тип("Булево") Тогда + УчитыватьТолькоВидимыеСтроки = УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки; + ИначеЕсли ТипЗнч(УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки) = Тип("Строка") Тогда + ДопСообщениеОшибки = УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки; + КонецЕсли; + + ЭлементыОформления = Новый Массив; + ЭлементыОформления.Добавить("РазмещениеТекста"); + ЭлементыОформления.Добавить("ЦветФона"); + ЭлементыОформления.Добавить("ЦветТекста"); + ЭлементыОформления.Добавить("Шрифт.Имя"); + ЭлементыОформления.Добавить("Шрифт.Размер"); + ЭлементыОформления.Добавить("Шрифт.Наклонный"); + ЭлементыОформления.Добавить("Шрифт.Полужирный"); + ЭлементыОформления.Добавить("Шрифт.Полужирный"); + ЭлементыОформления.Добавить("Шрифт.Подчеркивание"); + ЭлементыОформления.Добавить("Шрифт.Зачеркивание"); + + Для Каждого ЭлементОформления Из ЭлементыОформления Цикл + + Таб1 = ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабДок1, УчитыватьТолькоВидимыеКолонки, УчитыватьТолькоВидимыеСтроки, ЭлементОформления); + Таб2 = ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабДок2, УчитыватьТолькоВидимыеКолонки, УчитыватьТолькоВидимыеСтроки, ЭлементОформления); + + ПроверитьРавенствоТаблиц(Таб1, Таб2, ДопСообщениеОшибки, ДопПараметры); + + КонецЦикла; + +КонецПроцедуры + +Функция ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь, + Знач ЭлементОформления) Экспорт + + ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент); + Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда + ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента"; + КонецЕсли; + + НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы; + НомерПоследнейСтроки = ТабличныйДокумент.ВысотаТаблицы; + + НоваяТаблицаЗначений = Неопределено; + УчитываемыеКолонки = Неопределено; + + ПодготовитьТаблицуЗначенийИзТабличногоДокумента(НоваяТаблицаЗначений, УчитываемыеКолонки, НомерПоследнейКолонки, ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки); + + ГраницаКолонок = УчитываемыеКолонки.ВГраница(); + Для НомерСтроки = 1 По НомерПоследнейСтроки Цикл + + Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки, , НомерСтроки).Видимость Тогда + Продолжить; + КонецЕсли; + + НоваяСтрока = НоваяТаблицаЗначений.Добавить(); + + Для Индекс = 0 По ГраницаКолонок Цикл + НомерКолонки = УчитываемыеКолонки[Индекс]; + Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); + + ДобавитьДанныеОбласти(НоваяСтрока, Индекс, Область, ЭлементОформления); + + КонецЦикла; + КонецЦикла; + + Возврат НоваяТаблицаЗначений; + +КонецФункции + +Процедура ПодготовитьТаблицуЗначенийИзТабличногоДокумента(НоваяТаблицаЗначений, УчитываемыеКолонки, Знач НомерПоследнейКолонки, Знач ТабличныйДокумент, Знач УчитыватьТолькоВидимыеКолонки) + + Перем ИмяКолонки, Колонки, НомерКолонки, ОбластьКолонки, ТипСтрока, УчитыватьКолонку, ШиринаКолонки; + + НоваяТаблицаЗначений = Новый ТаблицаЗначений; + Колонки = НоваяТаблицаЗначений.Колонки; + ТипСтрока = Новый ОписаниеТипов("Строка"); + + // TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимоcть колонки определяется по формату первой строки + УчитываемыеКолонки = Новый Массив; + Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл + ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки); + + УчитыватьКолонку = Не УчитыватьТолькоВидимыеКолонки Или ОбластьКолонки.Видимость; + Если УчитыватьКолонку Тогда + УчитываемыеКолонки.Добавить(НомерКолонки); + ШиринаКолонки = ОбластьКолонки.ШиринаКолонки; + Если ШиринаКолонки <= 1 Тогда + ШиринаКолонки = 1; + КонецЕсли; + ИмяКолонки = "К" + Формат(Колонки.Количество() + 1, "ЧН=; ЧГ=0"); + Колонки.Добавить(ИмяКолонки, ТипСтрока, ИмяКолонки, ШиринаКолонки); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьДанныеОбласти(НоваяСтрока, Индекс, Знач Область, Знач ЭлементОформления) + + Значение = Неопределено; + Реквизит = ""; + Элемент = ЭлементОформления; + Реквизиты = СтрРазделить(Элемент, "."); + Вложенность = Реквизиты.Количество(); + Если Вложенность = 0 Тогда + Возврат; + КонецЕсли; + Разделитель = "="; + Если Вложенность = 1 Тогда + Значение = ЭлементОформления + Разделитель + Строка(Область[Реквизиты[0]]); + ИначеЕсли Вложенность = 2 Тогда + Значение = ЭлементОформления + Разделитель + Строка(Область[Реквизиты[0]][Реквизиты[1]]); + Иначе + ВызватьОшибкуПроверки("Необрабатываемый реквизит : "+ ЭлементОформления); + КонецЕсли; + + НоваяСтрока[Индекс] = Значение; + +КонецПроцедуры + +Функция ЗначениеСРазделителем(СоставноеЗначение) + Возврат СоставноеЗначение + ?(СоставноеЗначение = "","","_"); +КонецФункции + // портирован из Functest Функция ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь) Экспорт @@ -120,7 +260,6 @@ Для Индекс = 0 По ГраницаКолонок Цикл НомерКолонки = УчитываемыеКолонки[Индекс]; Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); - НоваяСтрока[Индекс] = Область.Текст; КонецЦикла; КонецЦикла; From f5dbb7a7273516c48fb380b916957504c3b601c4 Mon Sep 17 00:00:00 2001 From: Nick Gavrilov Date: Mon, 28 Oct 2024 14:09:53 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/ObjectModule.bsl" | 294 +++++++++--------- 1 file changed, 155 insertions(+), 139 deletions(-) diff --git "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" index 2fb308a0c..026c54e73 100644 --- "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" +++ "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" @@ -77,145 +77,6 @@ КонецПроцедуры -Процедура ПроверитьРавенствоТабличныхДокументовПоОформлению(ТабДок1, ТабДок2, - УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, - Знач ДопСообщениеОшибки = "", Знач ДопПараметры = Неопределено) Экспорт - - Если ТипЗнч(ТабДок1) <> Тип("ТабличныйДокумент") Тогда - ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Первый параметр-таблица не является табличным документов"; - КонецЕсли; - Если ТипЗнч(ТабДок2) <> Тип("ТабличныйДокумент") Тогда - ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Второй параметр-таблица не является табличным документов"; - КонецЕсли; - - УчитыватьТолькоВидимыеКолонки = Ложь; - Если ТипЗнч(УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки) = Тип("Булево") Тогда - УчитыватьТолькоВидимыеКолонки = УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки; - ИначеЕсли ТипЗнч(УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки) = Тип("Строка") Тогда - ДопСообщениеОшибки = УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки; - КонецЕсли; - УчитыватьТолькоВидимыеСтроки = Ложь; - Если ТипЗнч(УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки) = Тип("Булево") Тогда - УчитыватьТолькоВидимыеСтроки = УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки; - ИначеЕсли ТипЗнч(УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки) = Тип("Строка") Тогда - ДопСообщениеОшибки = УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки; - КонецЕсли; - - ЭлементыОформления = Новый Массив; - ЭлементыОформления.Добавить("РазмещениеТекста"); - ЭлементыОформления.Добавить("ЦветФона"); - ЭлементыОформления.Добавить("ЦветТекста"); - ЭлементыОформления.Добавить("Шрифт.Имя"); - ЭлементыОформления.Добавить("Шрифт.Размер"); - ЭлементыОформления.Добавить("Шрифт.Наклонный"); - ЭлементыОформления.Добавить("Шрифт.Полужирный"); - ЭлементыОформления.Добавить("Шрифт.Полужирный"); - ЭлементыОформления.Добавить("Шрифт.Подчеркивание"); - ЭлементыОформления.Добавить("Шрифт.Зачеркивание"); - - Для Каждого ЭлементОформления Из ЭлементыОформления Цикл - - Таб1 = ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабДок1, УчитыватьТолькоВидимыеКолонки, УчитыватьТолькоВидимыеСтроки, ЭлементОформления); - Таб2 = ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабДок2, УчитыватьТолькоВидимыеКолонки, УчитыватьТолькоВидимыеСтроки, ЭлементОформления); - - ПроверитьРавенствоТаблиц(Таб1, Таб2, ДопСообщениеОшибки, ДопПараметры); - - КонецЦикла; - -КонецПроцедуры - -Функция ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь, - Знач ЭлементОформления) Экспорт - - ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент); - Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда - ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента"; - КонецЕсли; - - НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы; - НомерПоследнейСтроки = ТабличныйДокумент.ВысотаТаблицы; - - НоваяТаблицаЗначений = Неопределено; - УчитываемыеКолонки = Неопределено; - - ПодготовитьТаблицуЗначенийИзТабличногоДокумента(НоваяТаблицаЗначений, УчитываемыеКолонки, НомерПоследнейКолонки, ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки); - - ГраницаКолонок = УчитываемыеКолонки.ВГраница(); - Для НомерСтроки = 1 По НомерПоследнейСтроки Цикл - - Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки, , НомерСтроки).Видимость Тогда - Продолжить; - КонецЕсли; - - НоваяСтрока = НоваяТаблицаЗначений.Добавить(); - - Для Индекс = 0 По ГраницаКолонок Цикл - НомерКолонки = УчитываемыеКолонки[Индекс]; - Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); - - ДобавитьДанныеОбласти(НоваяСтрока, Индекс, Область, ЭлементОформления); - - КонецЦикла; - КонецЦикла; - - Возврат НоваяТаблицаЗначений; - -КонецФункции - -Процедура ПодготовитьТаблицуЗначенийИзТабличногоДокумента(НоваяТаблицаЗначений, УчитываемыеКолонки, Знач НомерПоследнейКолонки, Знач ТабличныйДокумент, Знач УчитыватьТолькоВидимыеКолонки) - - Перем ИмяКолонки, Колонки, НомерКолонки, ОбластьКолонки, ТипСтрока, УчитыватьКолонку, ШиринаКолонки; - - НоваяТаблицаЗначений = Новый ТаблицаЗначений; - Колонки = НоваяТаблицаЗначений.Колонки; - ТипСтрока = Новый ОписаниеТипов("Строка"); - - // TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимоcть колонки определяется по формату первой строки - УчитываемыеКолонки = Новый Массив; - Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл - ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки); - - УчитыватьКолонку = Не УчитыватьТолькоВидимыеКолонки Или ОбластьКолонки.Видимость; - Если УчитыватьКолонку Тогда - УчитываемыеКолонки.Добавить(НомерКолонки); - ШиринаКолонки = ОбластьКолонки.ШиринаКолонки; - Если ШиринаКолонки <= 1 Тогда - ШиринаКолонки = 1; - КонецЕсли; - ИмяКолонки = "К" + Формат(Колонки.Количество() + 1, "ЧН=; ЧГ=0"); - Колонки.Добавить(ИмяКолонки, ТипСтрока, ИмяКолонки, ШиринаКолонки); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -Процедура ДобавитьДанныеОбласти(НоваяСтрока, Индекс, Знач Область, Знач ЭлементОформления) - - Значение = Неопределено; - Реквизит = ""; - Элемент = ЭлементОформления; - Реквизиты = СтрРазделить(Элемент, "."); - Вложенность = Реквизиты.Количество(); - Если Вложенность = 0 Тогда - Возврат; - КонецЕсли; - Разделитель = "="; - Если Вложенность = 1 Тогда - Значение = ЭлементОформления + Разделитель + Строка(Область[Реквизиты[0]]); - ИначеЕсли Вложенность = 2 Тогда - Значение = ЭлементОформления + Разделитель + Строка(Область[Реквизиты[0]][Реквизиты[1]]); - Иначе - ВызватьОшибкуПроверки("Необрабатываемый реквизит : "+ ЭлементОформления); - КонецЕсли; - - НоваяСтрока[Индекс] = Значение; - -КонецПроцедуры - -Функция ЗначениеСРазделителем(СоставноеЗначение) - Возврат СоставноеЗначение + ?(СоставноеЗначение = "","","_"); -КонецФункции - // портирован из Functest Функция ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь) Экспорт @@ -260,6 +121,7 @@ Для Индекс = 0 По ГраницаКолонок Цикл НомерКолонки = УчитываемыеКолонки[Индекс]; Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); + НоваяСтрока[Индекс] = Область.Текст; КонецЦикла; КонецЦикла; @@ -579,6 +441,160 @@ Возврат Новый ФиксированнаяСтруктура(СтатусыРезультатаТестирования); КонецФункции +Процедура ПроверитьРавенствоТабличныхДокументовПоЭлементам(ТабДок1, ТабДок2, ЭлементыПроверки = Неопределено, + УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, + Знач ДопСообщениеОшибки = "", Знач ДопПараметры = Неопределено) Экспорт + + Если ТипЗнч(ТабДок1) <> Тип("ТабличныйДокумент") Тогда + ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Первый параметр-таблица не является табличным документов"; + КонецЕсли; + Если ТипЗнч(ТабДок2) <> Тип("ТабличныйДокумент") Тогда + ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Второй параметр-таблица не является табличным документов"; + КонецЕсли; + Если ЭлементыПроверки <> Неопределено И ТипЗнч(ЭлементыПроверки) <> Тип("Массив") Тогда + ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Третий параметр-массив не является табличным массивом"; + КонецЕсли; + + УчитыватьТолькоВидимыеКолонки = Ложь; + Если ТипЗнч(УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки) = Тип("Булево") Тогда + УчитыватьТолькоВидимыеКолонки = УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки; + ИначеЕсли ТипЗнч(УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки) = Тип("Строка") Тогда + ДопСообщениеОшибки = УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки; + КонецЕсли; + УчитыватьТолькоВидимыеСтроки = Ложь; + Если ТипЗнч(УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки) = Тип("Булево") Тогда + УчитыватьТолькоВидимыеСтроки = УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки; + ИначеЕсли ТипЗнч(УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки) = Тип("Строка") Тогда + ДопСообщениеОшибки = УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки; + КонецЕсли; + + Элементы = ЭлементыОформленияДляПроверки(ЭлементыПроверки); + + КешТаб1 = Новый Соответствие; + КешТаб2 = Новый Соответствие; + Для Каждого Элемент Из Элементы Цикл + + Таб1 = ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабДок1, УчитыватьТолькоВидимыеКолонки, УчитыватьТолькоВидимыеСтроки, Элемент, КешТаб1); + Таб2 = ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабДок2, УчитыватьТолькоВидимыеКолонки, УчитыватьТолькоВидимыеСтроки, Элемент, КешТаб2); + + ПроверитьРавенствоТаблиц(Таб1, Таб2, ДопСообщениеОшибки, ДопПараметры); + + КонецЦикла; + +КонецПроцедуры + +Функция ЭлементыОформленияДляПроверки(Элементы) + + Если Элементы = Неопределено Тогда + Элементы = Новый Массив; + Элементы.Добавить("Текст"); // по значению =) + КонецЕсли; + + Возврат Элементы; + +КонецФункции + +Функция ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь, + Знач ЭлементОформления, КешОбластей) Экспорт + + ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент); + Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда + ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента"; + КонецЕсли; + + НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы; + НомерПоследнейСтроки = ТабличныйДокумент.ВысотаТаблицы; + + НоваяТаблицаЗначений = Неопределено; + УчитываемыеКолонки = Неопределено; + + ПодготовитьТаблицуЗначенийИзТабличногоДокумента(НоваяТаблицаЗначений, УчитываемыеКолонки, НомерПоследнейКолонки, ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки); + + ГраницаКолонок = УчитываемыеКолонки.ВГраница(); + Для НомерСтроки = 1 По НомерПоследнейСтроки Цикл + + Если УчитыватьТолькоВидимыеСтроки И Не ТабличныйДокумент.Область(НомерСтроки, , НомерСтроки).Видимость Тогда + Продолжить; + КонецЕсли; + + НоваяСтрока = НоваяТаблицаЗначений.Добавить(); + + Для Индекс = 0 По ГраницаКолонок Цикл + НомерКолонки = УчитываемыеКолонки[Индекс]; + Ключ = КлючОбласти(НомерСтроки, НомерКолонки); + Область = КешОбластей.Получить(Ключ); + Если Область = Неопределено Тогда + Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); + КешОбластей.Вставить(Ключ, Область); + КонецЕсли; + + ДобавитьДанныеОбласти(НоваяСтрока, Индекс, Область, ЭлементОформления); + + КонецЦикла; + КонецЦикла; + + Возврат НоваяТаблицаЗначений; + +КонецФункции + +Функция КлючОбласти(НомерСтроки, НомерКолонки) + // 2.465 на 30000 + Ключ = НомерСтроки * 10000000000 + НомерКолонки * 10000; + Возврат Ключ; +КонецФункции + +// можно использовать в ПолучитьТаблицуЗначенийИзТабличногоДокумента +Процедура ПодготовитьТаблицуЗначенийИзТабличногоДокумента(НоваяТаблицаЗначений, УчитываемыеКолонки, Знач НомерПоследнейКолонки, Знач ТабличныйДокумент, Знач УчитыватьТолькоВидимыеКолонки) + + Перем ИмяКолонки, Колонки, НомерКолонки, ОбластьКолонки, ТипСтрока, УчитыватьКолонку, ШиринаКолонки; + + НоваяТаблицаЗначений = Новый ТаблицаЗначений; + Колонки = НоваяТаблицаЗначений.Колонки; + ТипСтрока = Новый ОписаниеТипов("Строка"); + + // TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимоcть колонки определяется по формату первой строки + УчитываемыеКолонки = Новый Массив; + Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл + ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки); + + УчитыватьКолонку = Не УчитыватьТолькоВидимыеКолонки Или ОбластьКолонки.Видимость; + Если УчитыватьКолонку Тогда + УчитываемыеКолонки.Добавить(НомерКолонки); + ШиринаКолонки = ОбластьКолонки.ШиринаКолонки; + Если ШиринаКолонки <= 1 Тогда + ШиринаКолонки = 1; + КонецЕсли; + ИмяКолонки = "К" + Формат(Колонки.Количество() + 1, "ЧН=; ЧГ=0"); + Колонки.Добавить(ИмяКолонки, ТипСтрока, ИмяКолонки, ШиринаКолонки); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьДанныеОбласти(НоваяСтрока, Индекс, Знач Область, Знач ЭлементОформления) + + Значение = Неопределено; + Реквизит = ""; + Элемент = ЭлементОформления; + Реквизиты = СтрРазделить(Элемент, "."); + Вложенность = Реквизиты.Количество(); + Если Вложенность = 0 Тогда + Возврат; + КонецЕсли; + Разделитель = "="; + Если Вложенность = 1 Тогда + Значение = ЭлементОформления + Разделитель + Строка(Область[Реквизиты[0]]); + ИначеЕсли Вложенность = 2 Тогда + Значение = ЭлементОформления + Разделитель + Строка(Область[Реквизиты[0]][Реквизиты[1]]); + Иначе + ВызватьОшибкуПроверки("Необрабатываемый реквизит : "+ ЭлементОформления); + КонецЕсли; + + НоваяСтрока[Индекс] = Значение; + +КонецПроцедуры + + РезультатыСравненияТаблиц = Новый Структура; РезультатыСравненияТаблиц.Вставить("ТаблицыСовпадают", 0); РезультатыСравненияТаблиц.Вставить("НеСовпадаютЗначенияВЯчейкеТаблицы", 1); From 1a3825a3d6ce91d494cc667f5e271ac240920b17 Mon Sep 17 00:00:00 2001 From: Nick Gavrilov Date: Mon, 28 Oct 2024 14:42:57 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=20=D1=81?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BD=D0=BE=D0=B9=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/ObjectModule.bsl" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" index 026c54e73..45d7646c5 100644 --- "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" +++ "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" @@ -499,7 +499,7 @@ ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент); Если ТипТабличногоДокумента <> Тип("ТабличныйДокумент") И ТипТабличногоДокумента <> Тип("ПолеТабличногоДокумента") Тогда - ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокумента: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента"; + ВызватьИсключение "ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением: Требуется тип ТабличныйДокумент или ПолеТабличногоДокумента"; КонецЕсли; НомерПоследнейКолонки = ТабличныйДокумент.ШиринаТаблицы; From 1afb8cc24f686500b2192066f3810b2a0f1c4682 Mon Sep 17 00:00:00 2001 From: Nick Gavrilov Date: Mon, 4 Nov 2024 19:06:46 +0300 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=D0=BF=D0=BE=20=D0=BC=D0=B5=D0=BB?= =?UTF-8?q?=D0=BE=D1=87=D0=B8=20+=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/ObjectModule.bsl" | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" index 45d7646c5..e004ff46f 100644 --- "a/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" +++ "b/plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" @@ -441,7 +441,22 @@ Возврат Новый ФиксированнаяСтруктура(СтатусыРезультатаТестирования); КонецФункции -Процедура ПроверитьРавенствоТабличныхДокументовПоЭлементам(ТабДок1, ТабДок2, ЭлементыПроверки = Неопределено, +// По умолчанию проверяет как и ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям - по значениям. +// +// Параметры: +// ТабДок1 - ТабличныйДокумент - Первый сравниваемый документ +// ТабДок2 - ТабличныйДокумент - Второй сравниваемый документ +// ЭлементыПроверить - Массив - Элементы для проверки. +// Пример: +// ЭлементыПроверить = Новый Массив; +// // по значению +// ЭлементыПроверить.Добавить("Текст"); +// // оформление +// ЭлементыПроверить.Добавить("РазмещениеТекста"); +// ЭлементыПроверить.Добавить("ЦветФона"); +// ЭлементыПроверить.Добавить("ЦветТекста"); +// +Процедура ПроверитьРавенствоТабличныхДокументовПоЭлементам(ТабДок1, ТабДок2, ЭлементыПроверить = Неопределено, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "", Знач ДопПараметры = Неопределено) Экспорт @@ -451,7 +466,7 @@ Если ТипЗнч(ТабДок2) <> Тип("ТабличныйДокумент") Тогда ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Второй параметр-таблица не является табличным документов"; КонецЕсли; - Если ЭлементыПроверки <> Неопределено И ТипЗнч(ЭлементыПроверки) <> Тип("Массив") Тогда + Если ЭлементыПроверить <> Неопределено И ТипЗнч(ЭлементыПроверить) <> Тип("Массив") Тогда ВызватьИсключение "ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям: Третий параметр-массив не является табличным массивом"; КонецЕсли; @@ -468,7 +483,7 @@ ДопСообщениеОшибки = УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки; КонецЕсли; - Элементы = ЭлементыОформленияДляПроверки(ЭлементыПроверки); + Элементы = ЭлементыОформленияДляПроверки(ЭлементыПроверить); КешТаб1 = Новый Соответствие; КешТаб2 = Новый Соответствие; @@ -487,13 +502,16 @@ Если Элементы = Неопределено Тогда Элементы = Новый Массив; - Элементы.Добавить("Текст"); // по значению =) КонецЕсли; + Если Элементы.Количество() = 0 Тогда + Элементы.Добавить("Текст"); // умолчание - по значению =) + КонецЕсли; Возврат Элементы; КонецФункции +// вынесен кусок кода в ПодготовитьТаблицуЗначенийИзТабличногоДокумента Функция ПолучитьТаблицуЗначенийИзТабличногоДокументаСОформлением(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь, Знач ЭлементОформления, КешОбластей) Экспорт @@ -521,7 +539,7 @@ Для Индекс = 0 По ГраницаКолонок Цикл НомерКолонки = УчитываемыеКолонки[Индекс]; - Ключ = КлючОбласти(НомерСтроки, НомерКолонки); + Ключ = КлючОбласти(НомерСтроки, НомерКолонки, ГраницаКолонок + 1); Область = КешОбластей.Получить(Ключ); Если Область = Неопределено Тогда Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); @@ -537,9 +555,10 @@ КонецФункции -Функция КлючОбласти(НомерСтроки, НомерКолонки) - // 2.465 на 30000 - Ключ = НомерСтроки * 10000000000 + НомерКолонки * 10000; +// Функция - Уникальный ключ области из расчета до 500 колонок в таблице +// +Функция КлючОбласти(НомерСтроки, НомерКолонки, МаксКолонок = 500) + Ключ = (НомерСтроки -1) * МаксКолонок + НомерКолонки; Возврат Ключ; КонецФункции @@ -594,11 +613,10 @@ КонецПроцедуры - РезультатыСравненияТаблиц = Новый Структура; РезультатыСравненияТаблиц.Вставить("ТаблицыСовпадают", 0); РезультатыСравненияТаблиц.Вставить("НеСовпадаютЗначенияВЯчейкеТаблицы", 1); РезультатыСравненияТаблиц.Вставить("РазноеКоличествоСтрок", 2); РезультатыСравненияТаблиц.Вставить("РазличаютсяКолонки", 3); РезультатыСравненияТаблиц = Новый ФиксированнаяСтруктура(РезультатыСравненияТаблиц); -ЭтоLinux = Ложь; +ЭтоLinux = Ложь; \ No newline at end of file From 1500dcd50f0d02a2a1d819cab697130306dfa821 Mon Sep 17 00:00:00 2001 From: Nick Gavrilov Date: Tue, 5 Nov 2024 14:50:38 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=A0=D0=B0=D0=B2=D0=B5?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D0=B2=D0=BE=D0=A2=D0=B0=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D1=85=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=B2=D0=9F=D0=BE=D0=AD=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/ObjectModule.bsl" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" index 8a945dda1..84a55b259 100644 --- "a/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" +++ "b/tests/xunit/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Ext/ObjectModule.bsl" @@ -22,6 +22,10 @@ НаборТестов.Добавить("ТестДолжен_ПроверитьРавенствоТаблиц_НечеткоеСравнение"); НаборТестов.Добавить("ТестДолжен_ПроверитьНеРавенствоТаблиц_НечеткоеСравнение"); + НаборТестов.Добавить("Тест_ДолженПроверитьНеРавенствоТабличныхДокументовПоЭлементам"); + НаборТестов.Добавить("Тест_ДолженПроверитьРавенствоТабличныхДокументовПоЭлементам"); + + КонецПроцедуры //} @@ -245,4 +249,47 @@ КонецПроцедуры +Процедура Тест_ДолженПроверитьНеРавенствоТабличныхДокументовПоЭлементам() Экспорт + + Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); + Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); + + ЭлементыПроверить = Новый Массив; + ЭлементыПроверить.Добавить("РазмещениеТекста"); + + Макет2.Область(1,1,1,1).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; + + БылоИсключение = Ложь; + Попытка + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовПоЭлементам(Макет1, Макет2, ЭлементыПроверить, "Таблицы 1 и 2 не должны совпадать, а они одинаковы!"); + Исключение + Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + БылоИсключение = Истина; + КонецПопытки; + Утверждения.Проверить(БылоИсключение, "Должны были получить исключение из-за неравенства таблиц, а его не было"); + + СтрокаОшибки = + "Таблицы должны совпадать, а они различны + |Различия в таблицах: + |Ожидали статус <ТаблицыСовпадают>, а получили <НеСовпадаютЗначенияВЯчейкеТаблицы> + |Значение [К1:1]. Ожидали <РазмещениеТекста=Авто>, а получили <РазмещениеТекста=Переносить> + |"; + + Утверждения.ПроверитьВхождение(Ошибка, СтрокаОшибки, "Должны были получить исключение из-за неравенства таблиц, а его не было"); + +КонецПроцедуры + +Процедура Тест_ДолженПроверитьРавенствоТабличныхДокументовПоЭлементам() Экспорт + + Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); + Макет2 = Новый ТабличныйДокумент; + Макет2.Вывести(ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ")); + + ЭлементыПроверить = Новый Массив; + ЭлементыПроверить.Добавить("РазмещениеТекста"); + + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовПоЭлементам(Макет1, Макет2, ЭлементыПроверить, "Таблицы 1 и 2 должны совпадать, а они различны!"); + +КонецПроцедуры + //} From 52458a629cdbf4bb1cd14e4c8aeed495a683e57d Mon Sep 17 00:00:00 2001 From: Nick Gavrilov Date: Tue, 5 Nov 2024 16:16:16 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Пример заполнения параметров метода --- ...74\320\265\320\275\321\202\320\276\320\262.MD" | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git "a/doc/xdd/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260-\321\202\320\260\320\261\320\273\320\270\321\206-\320\270-\321\202\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205-\320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.MD" "b/doc/xdd/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260-\321\202\320\260\320\261\320\273\320\270\321\206-\320\270-\321\202\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205-\320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.MD" index c938db844..3cc0960fb 100644 --- "a/doc/xdd/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260-\321\202\320\260\320\261\320\273\320\270\321\206-\320\270-\321\202\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205-\320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.MD" +++ "b/doc/xdd/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260-\321\202\320\260\320\261\320\273\320\270\321\206-\320\270-\321\202\320\260\320\261\320\273\320\270\321\207\320\275\321\213\321\205-\320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\276\320\262.MD" @@ -19,3 +19,18 @@ - `ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям( ТаблицаОжиданий, ТаблицаРезультатов, ФлагУчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Истина, Знач ДопСообщениеОшибки = "" )` - Параметры: - **ФлагУчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки**- если строка, то используется как строка с ожидаемым исключением. Иначе это флаг/булево для учета только видимых колонок + +- `ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям( ТаблицаОжиданий, ТаблицаРезультатов, ЭлементыПроверить = Неопределено)` + - Параметры: + - **ЭлементыПроверить**- Массив элементов для проверки. Если не заполнен, то проверка идет только по значениям как и ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям. + +```bsl +ЭлементыПроверить = Новый Массив; +// по значению +ЭлементыПроверить.Добавить("Текст"); +// оформление +ЭлементыПроверить.Добавить("РазмещениеТекста"); +ЭлементыПроверить.Добавить("ЦветФона"); +ЭлементыПроверить.Добавить("ЦветТекста"); +ЭлементыПроверить.Добавить("Шрифт"); +``` \ No newline at end of file