-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
290 / Вывод различий при сравнении таблиц и табличных документов #452
Conversation
WalkthroughВ данном пулл-реквесте внесены значительные изменения в обработку ошибок и сравнение таблиц в нескольких модулях. Функция Changes
Assessment against linked issues
Possibly related PRs
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SonarQube Quality Gate passed!
0 Bugs
0 Vulnerabilities
0 Code Smells
No data Coverage
0.00% Duplication
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Outside diff range and nitpick comments (5)
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl (2)
Line range hint
612-614
: Опечатка в сообщении об ошибкеВ сообщении об ошибке на строке 612 слово "длинну" написано неправильно. Следует исправить на "длину".
Предлагаю исправить следующим образом:
-тип проверяемого значения `%1` не может быть проверен на длинну значения +тип проверяемого значения `%1` не может быть проверен на длину значения
Line range hint
740-747
: Ошибка использования неопределенных переменныхВ функции "ТабличныеДокументыРавны" на строках 742 и 745 используются переменные
ПроверяемоеЗначение
иОжидаемоеЗначение
, которые не определены в данной функции. Вероятно, имелись в видуПроверяемыйТабличныйДокумент
иОжидаемыйТабличныйДокумент
.Предлагаю исправить следующим образом:
- Возврат ЮТСравнениеСлужебныйСервер.ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); + Возврат ЮТСравнениеСлужебныйСервер.ТабличныеДокументыРавны(ПроверяемыйТабличныйДокумент, ОжидаемыйТабличныйДокумент, ПараметрыСравнения);и
- Возврат ЮТСравнениеСлужебныйВызовСервера.ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); + Возврат ЮТСравнениеСлужебныйВызовСервера.ТабличныеДокументыРавны(ПроверяемыйТабличныйДокумент, ОжидаемыйТабличныйДокумент, ПараметрыСравнения);exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйКлиентСервер/Module.bsl (1)
612-614
: Опечатка в сообщении об ошибкеВ слове "длинну" на строке 612 допущена опечатка. Следует исправить на "длину".
Предлагаю исправление:
-тип проверяемого значения `%1` не может быть проверен на длинну значения +тип проверяемого значения `%1` не может быть проверен на длину значенияtests/src/CommonModules/ОМ_ЮТСравнениеСлужебныйСервер/Module.bsl (1)
103-113
: Рекомендуется добавить проверку параметра!Функция
НоваяТаблица
корректно создает таблицу, но рекомендуется добавить проверку параметраКоличествоКолонок
на неотрицательное значение.Функция НоваяТаблица(КоличествоКолонок = 1) + Если КоличествоКолонок < 0 Тогда + ВызватьИсключение "Количество колонок не может быть отрицательным"; + КонецЕсли; Таблица = Новый ТаблицаЗначений();exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl (1)
265-265
: LGTM! Рекомендуется добавить документацию.Добавление параметра "Утверждение" в структуру ПараметрыСравнения расширяет функциональность сравнения. Рекомендуется добавить документацию, описывающую назначение нового параметра.
-ПараметрыСравнения = Новый Структура("ГлубокийАнализ, Утверждение", Истина, Истина); +// Параметры: +// ГлубокийАнализ - Булево - Выполнять глубокий анализ при сравнении +// Утверждение - Булево - Включить проверку утверждений при сравнении +ПараметрыСравнения = Новый Структура("ГлубокийАнализ, Утверждение", Истина, Истина);
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (12)
exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибокСлужебный/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТСообщенияСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйВызовСервера/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйКлиентСервер/Module.bsl
(10 hunks)exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
(2 hunks)exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo
(2 hunks)exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТТестовыеДанные/ЮТТестовыеДанные.mdo
(1 hunks)tests/src/CommonModules/ОМ_ЮТСравнениеСлужебныйСервер/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТСравнениеСлужебныйСервер/ОМ_ЮТСравнениеСлужебныйСервер.mdo
(1 hunks)tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl
(11 hunks)tests/src/Configuration/Configuration.mdo
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- tests/src/CommonModules/ОМ_ЮТСравнениеСлужебныйСервер/ОМ_ЮТСравнениеСлужебныйСервер.mdo
🧰 Additional context used
📓 Learnings (1)
exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТТестовыеДанные/ЮТТестовыеДанные.mdo (1)
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl:1-189
Timestamp: 2024-11-12T06:11:37.980Z
Learning: Тестовые модули находятся в расширении `tests` в общих модулях, которые именуются по следующей схеме:
| Тип тестируемого объекта | Префикс | Пример |
| ------------------------ | ------- | ------------------------------------------- |
| Общий модуль | `ОМ_` | ОМ_ОбщегоНазначения |
| Регистр бухгалтерии | `РБ_` | РБ_Хозрасчетный, РБ_Хозрасчетный_НЗ |
| Регистр накопления | `РН_` | РН_ОстаткиНаСкладах, РН_ОстаткиНаСкладах_ММ |
| Регистр расчета | `РР_` | РР_Зарплата, РР_Зарплата_НЗ |
| Регистр сведений | `РС_` | РС_АдресныйКлассификатор |
| Бизнес процесс | `БП_` | БП_Согласование |
| Справочник | `Спр_` | Спр_Пользователи, Спр_Пользователи_МО |
| План счетов | `ПС_` | ПС_Хозрасчетный |
| План видов расчета | `ПВР_` | ПВР_Зарплатный |
| План видов характеристик | `ПВХ_` | ПВХ_Субконто, ПВХ_Субконто_ММ |
| Документ | `Док_` | Док_ПКО |
| Перечисление | `Пер_` | Пер_СтатусСогласования |
| План обмена | `ПО_` | ПО_РИБ, ПО_РИБ_ММ |
| Задача | `Зад_` | Зад_Задача |
| Обработка | `Обр_` | Обр_ЗакрытиеМесяца, Обр_ЗакрытиеМесяца_МО |
| Отчет | `Отч_` | Отч_УниверсальныйОтчет |
🔇 Additional comments (23)
tests/src/Configuration/Configuration.mdo (1)
60-60
: Регистрация модуля соответствует соглашениям!
Добавление модуля ОМ_ЮТСравнениеСлужебныйСервер
корректно и соответствует:
- принятым соглашениям об именовании
- структуре конфигурации
- целям PR по реализации сравнения таблиц
Выполните следующий скрипт для проверки корректности регистрации модуля в связанных конфигурационных файлах:
✅ Verification successful
Регистрация модуля выполнена корректно и полностью!
Проверка показала, что:
- Модуль корректно зарегистрирован в основном файле конфигурации
- Файл модуля
ОМ_ЮТСравнениеСлужебныйСервер.mdo
содержит правильные настройки:- Установлен признак серверного модуля (
<server>true</server>
) - Настроен доступ из обычного приложения (
<clientOrdinaryApplication>true</clientOrdinaryApplication>
) - Корректно указан UUID модуля
- Установлен признак серверного модуля (
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Описание: Поиск связанных регистраций модуля в других конфигурационных файлах
# Поиск файлов модуля
fd "ОМ_ЮТСравнениеСлужебныйСервер" --type f
# Поиск упоминаний модуля в других конфигурационных файлах
rg -l "ОМ_ЮТСравнениеСлужебныйСервер" --type xml
Length of output: 578
Script:
#!/bin/bash
# Проверим содержимое файла модуля для анализа его регистрации
cat "tests/src/CommonModules/ОМ_ЮТСравнениеСлужебныйСервер/ОМ_ЮТСравнениеСлужебныйСервер.mdo"
# Поищем другие конфигурационные файлы в каталоге
fd ".+\.mdo$" tests/src/CommonModules/ОМ_ЮТСравнениеСлужебныйСервер/
Length of output: 1168
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl (3)
21-26
: Функция "ТаблицыРавны" реализована корректно
Реализация функции соответствует ожидаемому поведению и корректно использует функцию "РазличияТаблиц" для сравнения таблиц.
28-80
: Функция "РазличияТаблиц" эффективно выявляет различия
Логика функции правильно обрабатывает различные случаи сравнения таблиц, включая проверку количества строк и колонок, а также сравнение значений ячеек. Реализация обеспечивает подробное описание различий.
Line range hint 720-733
: Функция "ТаблицыРавны" корректно реализует сравнение таблиц
Функция правильно обрабатывает параметр "Утверждение" и вызывает соответствующие методы для определения различий в таблицах.
exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибокСлужебный/Module.bsl (3)
Line range hint 466-494
: Функция "ДеталиОшибки" реализована корректно
Функция правильно объединяет детали ошибок и сбрасывает контекст после использования.
Line range hint 496-508
: Функция "ДанныеОшибки" корректно формирует данные об ошибке
Реализация функции учитывает наличие деталей ошибки и правильно конструирует структуру данных для дальнейшей обработки.
522-526
: Функция "ДанныеОшибкиУтверждений" корректно добавляет детали ошибки
Функция успешно объединяет информацию об ошибке утверждений с деталями ошибки для более информативного сообщения.
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйКлиентСервер/Module.bsl (4)
56-76
: Обновление функции "ЗначенияРавны" с учетом параметров сравнения
Функция правильно передает параметр ПараметрыСравнения
в соответствующие функции сравнения, обеспечивая более гибкое сравнение сложных структур данных.
Line range hint 158-174
: Функция "СтруктурыРавны" корректно сравнивает структуры
Логика функции соответствует требованиям, проверяя наличие свойств и равенство соответствующих значений.
Line range hint 177-202
: Функция "СоответствияРавны" корректно сравнивает соответствия
Функция эффективно сравнивает ключи и значения соответствий, обеспечивая точное определение равенства.
204-213
: Функция "МассивыРавны" корректно сравнивает массивы
Логика функции правильно обрабатывает массивы любого размера, сравнивая их элементы по индексу.
exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТТестовыеДанные/ЮТТестовыеДанные.mdo (1)
22-22
: Добавлено новое содержимое в подсистему
Добавление <content>DataProcessor.ЮТКонструкторДвижений</content>
расширяет функциональность подсистемы "ЮТТестовыеДанные" и согласуется с общей архитектурой проекта.
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйВызовСервера/Module.bsl (2)
21-24
: Переименование функции и корректировка параметров
Функция "ТаблицыРавны" переименована в "ТабличныеДокументыРавны" и параметры изменены для лучшей ясности. Вызов серверной функции корректен.
27-30
: Добавлена функция "РазличияТабличныхДокументов"
Новая функция обеспечивает возврат различий между табличными документами и правильно вызывает соответствующую серверную функцию.
tests/src/CommonModules/ОМ_ЮТСравнениеСлужебныйСервер/Module.bsl (4)
21-30
: Корректная регистрация тестовых сценариев!
Все необходимые тестовые сценарии для проверки сравнения таблиц правильно добавлены в исполняемый набор тестов.
32-47
: Тест на проверку количества колонок реализован корректно!
Тестовый сценарий правильно проверяет формирование сообщения об ошибке при несовпадении количества колонок в таблицах.
49-63
: Тест на проверку количества строк реализован корректно!
Тестовый сценарий правильно проверяет формирование сообщения об ошибке при несовпадении количества строк в таблицах.
65-80
: Тест на проверку отсутствующей колонки реализован корректно!
Тестовый сценарий правильно проверяет формирование сообщения об ошибке при отсутствии колонки в проверяемой таблице.
exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo (1)
34-34
: Корректное добавление новых элементов подсистемы!
Все новые элементы корректно добавлены в состав подсистемы ЮТСервис с соблюдением структуры метаданных.
Also applies to: 54-54, 61-61, 62-62, 68-68, 70-70
exts/yaxunit/src/CommonModules/ЮТСообщенияСлужебный/Module.bsl (1)
98-108
: Улучшена обработка пустых значений!
Доработка функции ПредставлениеЗначения
корректно реализует отображение типа для пустых значений, что улучшает диагностику при тестировании.
exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl (1)
2074-2074
: LGTM! Исправление опечатки в сообщении об ошибке.
Исправлена опечатка в слове "длину", что улучшает читаемость сообщения об ошибке.
tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl (2)
35-36
: LGTM! Добавлены новые тестовые процедуры.
Новые тесты расширяют покрытие функциональности и корректно интегрированы в набор тестов.
Line range hint 1842-1860
: LGTM! Добавлен серверный тест для сравнения сложных объектов.
Тест охватывает важные сценарии с различными типами объектов и использует корректную подготовку и проверку данных.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (8)
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl (1)
28-85
: Рекомендуется оптимизировать производительность сравнения таблицФункция РазличияТаблиц выполняет детальное сравнение таблиц, но есть возможности для оптимизации:
- Проверка количества строк и колонок вынесена в начало - это правильно
- Однако, при сравнении значений используется вложенный цикл, что может быть неэффективно на больших таблицах
Предлагаю оптимизировать сравнение значений:
- Индекс = ПроверяемоеЗначение.Количество() - 1; - - Пока Индекс >= 0 Цикл - - ЗначенияРавны = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(ПроверяемоеЗначение[Индекс][Колонка.Имя], - ОжидаемоеЗначение[Индекс][Колонка.Имя], - ПараметрыСравнения); + Для Индекс = 0 По ПроверяемоеЗначение.Количество() - 1 Цикл + ЗначенияРавны = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны( + ПроверяемоеЗначение[Индекс][Колонка.Имя], + ОжидаемоеЗначение[Индекс][Колонка.Имя], + ПараметрыСравнения);exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйКлиентСервер/Module.bsl (4)
56-83
: Рекомендуется улучшить обработку ошибок в функции ЗначенияРавныФункция корректно обрабатывает различные типы данных, но можно улучшить обработку ошибок:
- Отсутствует проверка на Неопределено для ПараметрыСравнения перед доступом к свойствам
- Нет явной обработки исключений при вызове ЗначенияРавны для вложенных объектов
Предлагаю добавить дополнительные проверки:
+ Если ПараметрыСравнения <> Неопределено И НЕ ТипЗнч(ПараметрыСравнения) = Тип("Структура") Тогда + ВызватьИсключение "Параметр ПараметрыСравнения должен быть структурой"; + КонецЕсли;
Line range hint
158-175
: Функция СтруктурыРавны требует оптимизации производительностиФункция корректно сравнивает структуры, но есть возможности для оптимизации:
- Используется повторный поиск свойств через Свойство()
- Отсутствует кэширование результатов сравнения
Предлагаю оптимизировать:
- Если НЕ Данные2.Свойство(КлючИЗначение.Ключ, СтароеЗначение) - ИЛИ НЕ ЗначенияРавны(КлючИЗначение.Значение, СтароеЗначение, ПараметрыСравнения) Тогда + СтароеЗначение = Данные2[КлючИЗначение.Ключ]; + Если СтароеЗначение = Неопределено ИЛИ НЕ ЗначенияРавны(КлючИЗначение.Значение, СтароеЗначение, ПараметрыСравнения) Тогда
612-614
: Рекомендуется унифицировать сообщения об ошибкахВ функциях используются разные форматы сообщений об ошибках для однотипных ситуаций. Рекомендуется унифицировать формат.
Предлагаю использовать единый формат:
- ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не может быть проверен на длину значения", ТипЗнч(ПроверяемоеЗначение)); - ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не может быть проверен на содержание ожидаемого значения", ТипЗнч(ПроверяемоеЗначение)); - ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не может быть проверен на соответствие шаблону", ТипЗнч(ПроверяемоеЗначение)); + ТекстОшибки = СтрШаблон("Значение типа `%1` не поддерживает операцию %2", ТипЗнч(ПроверяемоеЗначение), ТипОперации);Also applies to: 632-634, 652-654
736-759
: Функция ТабличныеДокументыРавны требует рефакторинга условной компиляцииКод содержит множество директив условной компиляции, что усложняет чтение. Рекомендуется выделить серверную и клиентскую логику в отдельные методы.
Предлагаю реорганизовать код:
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда +Функция ВыполнитьСравнениеТабличныхДокументовНаСервере(ПроверяемыйТабличныйДокумент, ОжидаемыйТабличныйДокумент, ПараметрыСравнения) + Возврат РазличияТабличныхДокументов(ПроверяемыйТабличныйДокумент, ОжидаемыйТабличныйДокумент, ПараметрыСравнения); +КонецФункции +#КонецЕслиtests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl (3)
Line range hint
1513-1549
: Тесты для ИмеетДлину_ТекстОшибки требуют дополнительных проверокТесты проверяют базовые сценарии, но отсутствуют проверки граничных значений.
Рекомендуется добавить тесты:
- Для очень больших значений длины
- Для отрицательных значений длины
- Для значений на границе типа Число
Line range hint
1584-1620
: Тесты для НеИмеетДлину_ТекстОшибки содержат опечаткуВ строке 1614 присутствует лишний символ '>' в тексте ошибки.
- ПроверитьОшибкуИсполнения(Ошибка, СтрШаблон("Дата: Тип проверяемого значения `%1` не может быть проверен на длину значения>", Тип("Дата"))); + ПроверитьОшибкуИсполнения(Ошибка, СтрШаблон("Дата: Тип проверяемого значения `%1` не может быть проверен на длину значения", Тип("Дата")));
Line range hint
1842-1860
: Тест Равно_СравнениеСложныхОбъектов требует улучшения покрытияТест проверяет базовые сценарии сравнения сложных объектов, но можно расширить покрытие.
Рекомендуется добавить проверки:
- Для вложенных структур с циклическими ссылками
- Для коллекций с объектами разных типов
- Для граничных случаев (пустые коллекции, null значения)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (5)
exts/yaxunit/src/CommonModules/ЮТЗапросыСлужебныйВызовСервера/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйКлиентСервер/Module.bsl
(10 hunks)exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
(2 hunks)tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl
(11 hunks)
✅ Files skipped from review due to trivial changes (1)
- exts/yaxunit/src/CommonModules/ЮТЗапросыСлужебныйВызовСервера/Module.bsl
🚧 Files skipped from review as they are similar to previous changes (1)
- exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
🔇 Additional comments (6)
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl (3)
21-26
: Функция корректно реализует проверку равенства таблиц
Функция лаконично реализует проверку равенства таблиц через делегирование к РазличияТаблиц. Логика инвертирования результата через НЕ ЗначениеЗаполнено понятна и оправдана.
87-94
: Функция корректно преобразует и сравнивает табличные документы
Функция правильно делегирует сравнение к РазличияТаблиц после преобразования табличных документов в таблицы значений.
96-101
: Функция корректно реализует проверку равенства табличных документов
Функция лаконично реализует проверку равенства табличных документов через делегирование к РазличияТабличныхДокументов.
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйКлиентСервер/Module.bsl (2)
720-734
: Функция ТаблицыРавны корректно реализует серверное сравнение
Функция правильно обрабатывает параметр Утверждение и делегирует сравнение соответствующим методам.
761-767
: Функция ЗафиксироватьРазличия корректно регистрирует ошибки
Функция правильно регистрирует различия через механизм пояснений к ошибкам.
tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl (1)
Line range hint 497-533
: Тесты корректно проверяют сообщения об ошибках равенства
Тесты охватывают различные сценарии сравнения и проверяют корректность сообщений об ошибках.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Outside diff range and nitpick comments (2)
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl (1)
28-83
: Рекомендуется оптимизировать сравнение таблиц.Текущая реализация выполняет построчное сравнение в обратном порядке (от конца к началу). Хотя это работает, есть возможности для оптимизации:
- Сравнение можно выполнять в прямом порядке для лучшей читаемости
- Можно добавить ранний выход из цикла при достижении максимального количества различий
Предлагаю следующие изменения:
-Индекс = ПроверяемоеЗначение.Количество() - 1; -Пока Индекс >= 0 Цикл +Для Индекс = 0 По ПроверяемоеЗначение.Количество() - 1 Цикл ЗначенияРавны = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны( ПроверяемоеЗначение[Индекс][Колонка.Имя], ОжидаемоеЗначение[Индекс][Колонка.Имя], ПараметрыСравнения); Если НЕ ЗначенияРавны Тогда Сообщение = СтрШаблон("Строка № %1; колонка '%2'; ожидали %3, а получили %4", Индекс + 1, Колонка.Имя, ЮТСообщенияСлужебный.ПредставлениеЗначения(ОжидаемоеЗначение[Индекс][Колонка.Имя]), ЮТСообщенияСлужебный.ПредставлениеЗначения(ПроверяемоеЗначение[Индекс][Колонка.Имя])); Различия.Добавить(Сообщение); + // Опционально: ранний выход при достижении лимита различий + Если Различия.Количество() >= 10 Тогда + Прервать; + КонецЕсли; КонецЕсли; - Индекс = Индекс - 1; КонецЦикла;tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl (1)
Line range hint
1842-1860
: Рекомендуется расширить тестовые случаи.Текущие тесты охватывают базовые сценарии, но можно добавить больше краевых случаев.
Предлагаю добавить следующие тестовые случаи:
Варианты = Новый Массив(); МассивЗначений = ЮТКоллекции.ЗначениеВМассиве(1, "2"); Варианты.Добавить(Новый Структура("Значение, Описание", Новый Структура("Поле1, Поле2, Коллекция", 1, "2", МассивЗначений), "Структура с массивом")); Варианты.Добавить(Новый Структура("Значение, Описание", Новый Структура("Поле1, Поле2", 1, "2"), "Структура примитивов")); Варианты.Добавить(Новый Структура("Значение, Описание", МассивЗначений, "Массив примитивов")); Варианты.Добавить(Новый Структура("Значение, Описание", ВидДвиженияБухгалтерии.Дебет, "Системное перечисление")); +// Добавляем краевые случаи +Варианты.Добавить(Новый Структура("Значение, Описание", Новый Структура, "Пустая структура")); +Варианты.Добавить(Новый Структура("Значение, Описание", Новый Массив, "Пустой массив")); +Варианты.Добавить(Новый Структура("Значение, Описание", Новый Структура("Поле", Неопределено), "Структура с неопределено"));
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (6)
exts/yaxunit/src/CommonModules/ЮТЗапросыСлужебныйВызовСервера/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйКлиентСервер/Module.bsl
(10 hunks)exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
(2 hunks)tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl
(11 hunks)tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТЗапросыСлужебныйВызовСервера/Module.bsl
🔇 Additional comments (9)
tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl (1)
93-93
: Проверить увеличение количества тестовых наборов
Увеличение ожидаемого количества тестовых наборов с 38 до 39 должно соответствовать добавлению новых тестов для функционала сравнения таблиц. Убедитесь, что все новые тесты были успешно добавлены и учтены в этом изменении.
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйСервер/Module.bsl (3)
21-26
: LGTM! Функция корректно делегирует сравнение таблиц.
Функция правильно использует РазличияТаблиц
и возвращает результат на основе наличия различий.
87-94
: LGTM! Функция корректно делегирует сравнение табличных документов.
Функция правильно преобразует табличные документы в таблицы значений и использует РазличияТаблиц
для сравнения.
96-100
: LGTM! Функция корректно обрабатывает результат сравнения.
Функция правильно использует РазличияТабличныхДокументов
и возвращает результат на основе наличия различий.
exts/yaxunit/src/CommonModules/ЮТСравнениеСлужебныйКлиентСервер/Module.bsl (3)
612-614
: LGTM! Улучшены сообщения об ошибках.
Сообщения об ошибках стали более информативными и включают тип проверяемого значения.
Also applies to: 632-634, 652-654
720-734
: LGTM! Корректная обработка серверного сравнения таблиц.
Функция правильно проверяет параметры и делегирует сравнение серверному модулю.
761-767
: LGTM! Корректная регистрация различий.
Процедура правильно регистрирует каждое различие через механизм регистрации ошибок.
tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl (2)
35-36
: LGTM! Добавлены новые тестовые методы.
Корректно добавлены новые тестовые методы для проверки текстов ошибок.
Also applies to: 57-59
Line range hint 497-543
: LGTM! Тесты корректно проверяют тексты ошибок.
Тесты охватывают различные сценарии форматирования сообщений об ошибках.
Функция ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения) | ||
|
||
Утверждение = ПараметрыСравнения = Неопределено ИЛИ НЕ ЮТКоллекции.ЗначениеСтруктуры(ПараметрыСравнения, "Утверждение", Ложь); | ||
|
||
Если НЕ Утверждение Тогда | ||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда | ||
Возврат ЮТСравнениеСлужебныйСервер.ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | ||
#Иначе | ||
//@skip-check bsl-legacy-check-expression-type | ||
Возврат ЮТСравнениеСлужебныйВызовСервера.ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | ||
#КонецЕсли | ||
КонецЕсли; | ||
|
||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда | ||
Различия = ЮТСравнениеСлужебныйСервер.РазличияТабличныхДокументов(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | ||
#Иначе | ||
//@skip-check bsl-legacy-check-expression-type | ||
Различия = ЮТСравнениеСлужебныйВызовСервера.РазличияТабличныхДокументов(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | ||
#КонецЕсли | ||
|
||
ЗафиксироватьРазличия(Различия); | ||
Возврат НЕ ЗначениеЗаполнено(Различия); | ||
|
||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Рекомендуется добавить проверку типов.
Отсутствует проверка, что входные параметры являются табличными документами.
Предлагаю добавить проверку типов:
Функция ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения)
+ // Проверка типов параметров
+ Если ТипЗнч(ПроверяемоеЗначение) <> Тип("ТабличныйДокумент")
+ ИЛИ ТипЗнч(ОжидаемоеЗначение) <> Тип("ТабличныйДокумент") Тогда
+ ВызватьИсключение "Параметры должны быть табличными документами";
+ КонецЕсли;
+
Утверждение = ПараметрыСравнения = Неопределено ИЛИ НЕ ЮТКоллекции.ЗначениеСтруктуры(ПараметрыСравнения, "Утверждение", Ложь);
// ... остальной код ...
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
Функция ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения) | |
Утверждение = ПараметрыСравнения = Неопределено ИЛИ НЕ ЮТКоллекции.ЗначениеСтруктуры(ПараметрыСравнения, "Утверждение", Ложь); | |
Если НЕ Утверждение Тогда | |
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда | |
Возврат ЮТСравнениеСлужебныйСервер.ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | |
#Иначе | |
//@skip-check bsl-legacy-check-expression-type | |
Возврат ЮТСравнениеСлужебныйВызовСервера.ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | |
#КонецЕсли | |
КонецЕсли; | |
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда | |
Различия = ЮТСравнениеСлужебныйСервер.РазличияТабличныхДокументов(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | |
#Иначе | |
//@skip-check bsl-legacy-check-expression-type | |
Различия = ЮТСравнениеСлужебныйВызовСервера.РазличияТабличныхДокументов(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | |
#КонецЕсли | |
ЗафиксироватьРазличия(Различия); | |
Возврат НЕ ЗначениеЗаполнено(Различия); | |
КонецФункции | |
Функция ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения) | |
// Проверка типов параметров | |
Если ТипЗнч(ПроверяемоеЗначение) <> Тип("ТабличныйДокумент") | |
ИЛИ ТипЗнч(ОжидаемоеЗначение) <> Тип("ТабличныйДокумент") Тогда | |
ВызватьИсключение "Параметры должны быть табличными документами"; | |
КонецЕсли; | |
Утверждение = ПараметрыСравнения = Неопределено ИЛИ НЕ ЮТКоллекции.ЗначениеСтруктуры(ПараметрыСравнения, "Утверждение", Ложь); | |
Если НЕ Утверждение Тогда | |
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда | |
Возврат ЮТСравнениеСлужебныйСервер.ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | |
#Иначе | |
//@skip-check bsl-legacy-check-expression-type | |
Возврат ЮТСравнениеСлужебныйВызовСервера.ТабличныеДокументыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | |
#КонецЕсли | |
КонецЕсли; | |
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда | |
Различия = ЮТСравнениеСлужебныйСервер.РазличияТабличныхДокументов(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | |
#Иначе | |
//@skip-check bsl-legacy-check-expression-type | |
Различия = ЮТСравнениеСлужебныйВызовСервера.РазличияТабличныхДокументов(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения); | |
#КонецЕсли | |
ЗафиксироватьРазличия(Различия); | |
Возврат НЕ ЗначениеЗаполнено(Различия); | |
КонецФункции |
Описание изменений
Вывод различий при сравнении таблиц и табличных документов
Close #290
Summary by CodeRabbit
Новые функции
Исправления ошибок
Документация