-
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
120 / Конструктор движений #413
Conversation
WalkthroughВнесенные изменения охватывают несколько файлов, связанных с управлением данными и тестированием в контексте клиент-серверного взаимодействия. Основные изменения включают добавление новых функций для работы с объектами и таблицами, а также улучшение обработки движений в регистрах. В результате система теперь поддерживает более сложные операции с данными и тестами, а также улучшена структура модулей для повышения ясности и удобства использования. Changes
Assessment against linked issues
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 failed!
1 Bugs
0 Vulnerabilities
1 Code Smells
No data Coverage
25.85% 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: 10
Outside diff range and nitpick comments (6)
tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/Module.bsl (4)
32-36
: Напоминание: реализовать тест.Процедура
Инициализировать
в настоящее время содержит заглушку, которая вызывает исключение с сообщением "Тест не реализован". Пожалуйста, не забудьте реализовать фактическую логику теста.Хотите, чтобы я открыл задачу в GitHub для отслеживания этой работы?
38-42
: Напоминание: реализовать тест.Процедура
ДобавитьКолонку
в настоящее время содержит заглушку, которая вызывает исключение с сообщением "Тест не реализован". Пожалуйста, не забудьте реализовать фактическую логику теста.Хотите, чтобы я открыл задачу в GitHub для отслеживания этой работы?
44-48
: Напоминание: реализовать тест.Процедура
Добавить
в настоящее время содержит заглушку, которая вызывает исключение с сообщением "Тест не реализован". Пожалуйста, не забудьте реализовать фактическую логику теста.Хотите, чтобы я открыл задачу в GitHub для отслеживания этой работы?
50-54
: Напоминание: реализовать тест.Процедура
Данные
в настоящее время содержит заглушку, которая вызывает исключение с сообщением "Тест не реализован". Пожалуйста, не забудьте реализовать фактическую логику теста.Хотите, чтобы я открыл задачу в GitHub для отслеживания этой работы?
tests/src/Configuration/Configuration.mdo (2)
33-33
: Добавлен новый общий модульCommonModule.Обр_ЮТКонструкторДвижений_МО
.Пожалуйста, предоставьте более подробную информацию о назначении и использовании этого модуля. Это поможет лучше понять его роль в общей функциональности и облегчит дальнейшее сопровождение кода.
47-47
: Добавлен новый общий модульCommonModule.ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер
.Пожалуйста, предоставьте более подробную информацию о назначении и использовании этого модуля. В частности, поясните:
- Какую функциональность он предоставляет в контексте работы с коллекциями?
- Как он взаимодействует с существующим модулем
CommonModule.ОМ_ЮТКоллекции
?- Какие аспекты реализованы на клиенте, а какие на сервере?
Это поможет лучше понять архитектуру и облегчит дальнейшее сопровождение кода.
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (14)
- exts/yaxunit/src/CommonModules/ЮТКонструкторКоллекцийСлужебныйКлиентСервер/Module.bsl (1 hunks)
- exts/yaxunit/src/CommonModules/ЮТКонструкторКоллекцийСлужебныйКлиентСервер/ЮТКонструкторКоллекцийСлужебныйКлиентСервер.mdo (1 hunks)
- exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (8 hunks)
- exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1 hunks)
- exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl (1 hunks)
- exts/yaxunit/src/Configuration/Configuration.mdo (2 hunks)
- exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl (1 hunks)
- exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ЮТКонструкторДвижений.mdo (1 hunks)
- exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl (1 hunks)
- tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/Module.bsl (1 hunks)
- tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер.mdo (1 hunks)
- tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (1 hunks)
- tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Обр_ЮТКонструкторДвижений_МО.mdo (1 hunks)
- tests/src/Configuration/Configuration.mdo (2 hunks)
Additional comments not posted (29)
tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Обр_ЮТКонструкторДвижений_МО.mdo (1)
1-7
: Определение общего модуля выглядит корректным.Новый общий модуль "Обр_ЮТКонструкторДвижений_МО" определен правильно:
- XML-структура соответствует формату метаданных.
- Модуль помечен как управляемое клиентское приложение, серверное приложение и обычное клиентское приложение, что указывает на его возможности работы как на клиенте, так и на сервере.
- Включен уникальный идентификатор (UUID) для однозначной идентификации модуля.
Определение модуля соответствует стандартам и готово к использованию.
tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер.mdo (1)
1-7
: Изменения выглядят хорошо!Новый общий модуль "ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер" объявлен корректно:
- XML-структура соответствует формату метаданных и использует правильное пространство имен.
- Свойства модуля, такие как
clientManagedApplication
,server
иclientOrdinaryApplication
, установлены должным образом.Никаких проблем с конфигурацией модуля не обнаружено.
exts/yaxunit/src/CommonModules/ЮТКонструкторКоллекцийСлужебныйКлиентСервер/ЮТКонструкторКоллекцийСлужебныйКлиентСервер.mdo (1)
1-11
: Новый общий модуль выглядит хорошо!Структура XML-файла правильная и соответствует ожидаемой схеме метаданных. Общий модуль имеет уникальный идентификатор UUID, русский синоним и правильно помечен как клиентское, серверное и обычное клиентское приложение.
Никаких проблем не обнаружено. Добавление нового общего модуля одобрено.
exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ЮТКонструкторДвижений.mdo (1)
1-13
: Новый класс обработки данных соответствует ожидаемой структуре и соглашениям.Представленный XML-файл правильно определяет новый класс обработки данных "ЮТКонструкторДвижений" в рамках метаданных. Файл точно указывает структуру и свойства обработчика данных, включая его UUID, производимые типы, имя, синоним и использование стандартных команд. Введение этого нового класса обработки данных расширяет возможности системы по управлению движениями данных и коллекциями.
tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/Module.bsl (1)
21-30
: Выглядит хорошо!Процедура
ИсполняемыеСценарии
корректно добавляет набор тестовых сценариев в тестовый набор с использованием объектаЮТТесты
. Каждый добавленный тест соответствует процедуре, определенной далее в файле.tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (8)
21-33
: LGTM!Процедура
ИсполняемыеСценарии
корректно инициализирует набор тестов с использованиемЮТТесты.ВТранзакции()
. Логика и синтаксис выглядят правильно.
35-49
: LGTM!Процедура
ДобавитьСтроку
корректно тестирует метод "ДобавитьСтроку" конструктора движений. Она проверяет, что метод не выбрасывает исключение и возвращает ожидаемую структуру данных. Логика и синтаксис выглядят правильно.
51-68
: LGTM!Процедура
Установить
корректно тестирует метод "Установить" конструктора движений. Она проверяет, что метод выбрасывает исключение, если вызван до добавления строки, и что после добавления строки и установки контрагента структура данных содержит ожидаемые свойства. Логика и синтаксис выглядят правильно.
70-74
: Пропустить.Процедура
УстановитьРеквизиты
является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.
76-80
: Пропустить.Процедура
Фикция
является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.
82-86
: Пропустить.Процедура
ФикцияРеквизитов
является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.
88-92
: Пропустить.Процедура
ФикцияОбязательныхПолей
является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.
94-98
: Пропустить.Процедура
Инициализировать
является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl (1)
274-274
: Изменение выглядит корректным, но требует дополнительной проверки.Изменение в реализации функции
ДанныеСтроки
заключается в вызове методаДанныеСтрокиТабличнойЧасти
вместоДанныеСтроки
. Это указывает на изменение логики обработки данных.Чтобы убедиться, что это изменение не повлияет на работу кода, выполните следующий скрипт для поиска использований функции
ДанныеСтроки
и проанализируйте, ожидаемо ли изменение поведения и совместимо ли оно:Verification successful
Изменение локализовано и не должно повлиять на другие части кодовой базы
Анализ использования функции
ДанныеСтроки()
показал, что изменение затрагивает только файл./exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl
. Другие объявления этой функции в кодовой базе остались без изменений.Однако стоит отметить:
- Функция используется в нескольких тестовых файлах.
- Рекомендуется провести тщательное тестирование, чтобы убедиться, что изменение не повлияло на работу тестов и функциональность в целом.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Описание: Поиск использований функции `ДанныеСтроки` в коде. # Тест: Поиск вызовов функции `ДанныеСтроки`. # Ожидание: Только вызовы функции `ДанныеСтроки` без аргументов. rg --type bsl $'ДанныеСтроки\(\)'Length of output: 62
Script:
#!/bin/bash # Описание: Поиск использований функции `ДанныеСтроки` в коде .bsl файлов. # Поиск .bsl файлов и поиск в них вызовов функции `ДанныеСтроки()` echo "Поиск вызовов ДанныеСтроки() в .bsl файлах:" find . -name "*.bsl" -type f -exec grep -Hn "ДанныеСтроки()" {} + # Альтернативный метод с использованием ripgrep echo "Альтернативный поиск с использованием ripgrep:" rg --type-add 'bsl:*.bsl' -t bsl "ДанныеСтроки\(\)"Length of output: 1904
exts/yaxunit/src/Configuration/Configuration.mdo (2)
90-90
: Добавлен новый общий модульЮТКонструкторКоллекцийСлужебныйКлиентСервер
.Этот модуль расширяет функциональность конфигурации. Судя по названию, он предназначен для конструирования коллекций и может использоваться как на клиенте, так и на сервере.
163-163
: Добавлен новый обработчик данныхЮТКонструкторДвижений
.Этот обработчик расширяет функциональность конфигурации. Судя по названию, он предназначен для конструирования движений документов.
exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1)
310-320
: Выглядит хорошо!Реализация функции
ОписаниеРегистраДвиженийДокумента
корректна и хорошо структурирована:
- Функция принимает два параметра:
Документ
иИмяРегистра
, и возвращает описание метаданных регистра движения документа с указанным именем.- Логика функции проста для понимания. Она проверяет наличие регистра с указанным именем в наборе регистров движения документа, используя функцию
РегистрыДвиженийДокумента
.- Если регистр не найден, функция возвращает
Неопределено
. Это позволяет корректно обрабатывать случаи, когда запрошенный регистр отсутствует.- Если регистр найден, функция возвращает его описание метаданных, используя функцию
ОписаниеОбъектаМетаданных
.Функция будет полезна в сценариях, где требуется получить доступ к метаданным конкретного регистра движения документа.
exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl (2)
858-862
: Изменения выглядят хорошо!Новая экспортная функция
КонструкторДвижений
корректно делегирует инициализацию конструктора движений модулюЮТКонструкторТестовыхДанныхСлужебный
. Логика и синтаксис функции в порядке.
858-862
: Проверьте использование новой функции в кодовой базе.Убедитесь, что вызовы новой функции
КонструкторДвижений
корректно обрабатываются и не приводят к ошибкам.Запустите следующий скрипт для проверки использования функции:
Verification successful
Функция
КонструкторДвижений
корректно реализована и используется в кодовой базе.Проверка показала, что новая функция
КонструкторДвижений
успешно внедрена в модульЮТТестовыеДанные
и используется в тестовых модулях. Функция инициализируется с помощьюЮТКонструкторТестовыхДанныхСлужебный.ИнициализироватьКонструкторДвижений
, что соответствует ожидаемому поведению. В найденных случаях использования не обнаружено очевидных ошибок или некорректного применения функции.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Описание: Проверка использования функции `КонструкторДвижений` в кодовой базе. # Тест: Поиск вызовов функции. Ожидается: Только корректное использование. rg --type bsl -A 5 $'КонструкторДвижений'Length of output: 204
Script:
#!/bin/bash # Описание: Проверка использования функции `КонструкторДвижений` в кодовой базе. # Поиск вызовов функции с помощью ast-grep ast-grep --lang bsl --pattern 'КонструкторДвижений($_)' # Если ast-grep не найдет результатов, выполним поиск с помощью rg if [ $? -ne 0 ]; then echo "Результаты поиска с помощью ripgrep:" rg -i 'КонструкторДвижений' -A 5 fiLength of output: 10380
exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl (2)
124-128
: Проверьте корректность обработки массивов в методеФикцияРеквизитов
.Если
ИменаРеквизитов
передается как массив, убедитесь, что методЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов
правильно обрабатывает этот тип данных. Возможно, потребуется добавить проверки или преобразования типов.
57-62
: Убедитесь в корректности обработки ошибок в методеУстановить
.Метод
Установить
вызываетЮТКонструкторТестовыхДанныхСлужебный.Установить
, но неизвестно, как обрабатываются возможные исключения или ошибки в вызываемом методе. Рекомендуется добавить обработку ошибок или подтвердить, что вызываемый метод надежно обрабатывает исключительные ситуации.exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (8)
174-174
: Переименование функции для повышения ясностиПереименование функции
ДанныеСтроки
вДанныеСтрокиТабличнойЧасти
улучшает понимание ее назначения и делает код более понятным.
190-199
: Добавлена функция для работы с коллекциямиНовая функция
ДанныеСтрокиКоллекции
корректно реализует получение данных последней строки коллекции. Проверки на заполненность данных и обработка исключений реализованы правильно.
229-244
: Инициализация конструктора движенийФункция
ИнициализироватьКонструкторДвижений
корректно инициализирует конструктор движений в зависимости от типа приложения (сервер или клиент). Использование условной компиляции и методов получения формы соответствует лучшим практикам для платформы 1С.
278-289
: Создание нового контекста конструктора движенийФункция
НовыйКонтекстКонструктораДвижений
правильно инициализирует контекст для конструктора движений, устанавливая необходимые свойства. Логика функции соответствует ожиданиям.
333-333
: Использование функцииФокусНаТабличнойЧасти
В функции
Реквизиты
добавлена проверкаЕсли ФокусНаТабличнойЧасти(Контекст) Тогда
, что повышает читаемость и переиспользуемость кода.
347-347
: Улучшение сообщения об ошибкеДобавление проверки
Если ФокусНаТабличнойЧасти(Контекст) Тогда
при формировании пояснения позволяет предоставить более точное сообщение об ошибке, указывая на конкретную табличную часть.
362-365
: Корректировка логики функцииТекущаяЗапись
Добавление условия
ИначеЕсли ЭтоКонструкторКоллекции(Контекст) Тогда
обеспечивает правильное определение текущей записи в контексте конструктора коллекции, что улучшает работу функции в разных сценариях.
379-384
: Новая функцияФокусНаТабличнойЧасти
Функция
ФокусНаТабличнойЧасти
правильно определяет, находится ли текущий фокус на табличной части. Это повышает читаемость кода и способствует его повторному использованию.
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: 4
Outside diff range and nitpick comments (8)
tests/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/Module.bsl (1)
91-97
: Улучшение генерации тестовых данных для РегистрСведений.КурсыВалютИзменения улучшают процесс генерации тестовых данных для регистра сведений "КурсыВалют":
- Улучшена читаемость кода проверки наличия записей.
- Добавлено случайное значение для поля "Курс", что повышает разнообразие тестовых данных.
Эти изменения повышают качество и надежность тестов.
Для дополнительного улучшения, рассмотрите возможность вынесения генерации случайного курса в отдельную функцию:
Функция ПолучитьСлучайныйКурс() Возврат ЮТест.Данные().СлучайноеПоложительноеЧисло(99999); КонецФункции // Использование: Курс = ПолучитьСлучайныйКурс();Это повысит читаемость кода и облегчит повторное использование логики генерации случайного курса в других тестах.
tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl (1)
45-50
: Улучшение генерации тестовых данных для курсов валют.Изменения улучшают генерацию тестовых данных, используя случайное положительное число для курса валюты вместо фиксированного значения. Это повышает надежность тестов, вводя вариативность.
Для дальнейшего улучшения читаемости кода, рассмотрите возможность выделения генерации случайного курса в отдельную функцию:
+Функция СгенерироватьСлучайныйКурс() + Возврат ЮТест.Данные().СлучайноеПоложительноеЧисло(99999); +КонецФункции Процедура СодержитЗаписи() Экспорт // ... - Курс = ЮТест.Данные().СлучайноеПоложительноеЧисло(99999); + Курс = СгенерироватьСлучайныйКурс(); // ... КонецПроцедурыЭто сделает код более модульным и облегчит повторное использование логики генерации случайного курса в других тестах.
Also applies to: 56-56
documentation/docs/features/test-data/data-generation.md (5)
95-123
: Отличное дополнение документации!Новый раздел "Создание пустышек" предоставляет ценную информацию о создании минимальных записей в базе данных для тестирования. Примеры наглядно демонстрируют различные способы создания элементов, документов и групп.
Однако есть небольшая грамматическая ошибка в описании.
Предлагаю исправить следующую опечатку:
-Создание записей в базе с минимальным заполнения (наименование, код, номер, дата). +Создание записей в базе с минимальным заполнением (наименование, код, номер, дата).Tools
LanguageTool
[uncategorized] ~97-~97: Прилагательное не согласуется с существительным по падежу.
Context: ...ние пустышек Создание записей в базе с минимальным заполнения (наименование, код, номер, дата). Пол...(Unify_Adj_NN_case)
133-162
: Отличное дополнение к документации!Новый раздел "Конструктор объекта" представляет мощный инструмент
КонструкторОбъекта
для создания тестовых объектов. Четко перечислены преимущества использования конструктора, что помогает разработчикам понять его ценность.Пример использования конструктора очень информативен и демонстрирует различные возможности инструмента.
Для улучшения читаемости примера предлагаю добавить пустую строку перед циклом:
ОбщиеДанные = Новый Структура("ВидЦены, Поставщик", Закупочная, Конструктор.ДанныеОбъекта().Поставщик); + Для Инд = 1 По 3 Цикл Конструктор.ДобавитьСтроку() .Фикция("Товар") .УстановитьРеквизиты(ОбщиеДанные) .Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2)) .Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20)) .Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество) КонецЦикла;
164-205
: Отличное дополнение к документации!Новый раздел "Конструктор движения документа" представляет полезный инструмент
КонструкторДвижений
для создания движений документа. Четко перечислены преимущества использования конструктора, что помогает разработчикам понять его ценность в контексте формирования движений.Примеры использования конструктора очень информативны и демонстрируют работу с различными типами регистров.
Для улучшения согласованности во втором примере предлагаю изменить комментарий перед циклом:
-// Заполнение движений +// Формирование движений Для Инд = 1 По 10 Цикл Конструктор .ДобавитьСтроку() .Установить("Покупатель", Покупатель) .ФикцияРеквизитов("Товар, Сумма"); КонецЦикла;Это сделает терминологию более согласованной с предыдущим примером, где используется термин "формирование".
Line range hint
206-286
: Отличное расширение раздела о работе с XDTO!Дополненный раздел о создании объектов XDTO предоставляет более подробную информацию о работе с
КонструкторОбъектаXDTO
. Пример использования конструктора очень информативен и демонстрирует различные возможности инструмента.Подробное объяснение API конструктора XDTO объектов очень полезно и поможет пользователям эффективно использовать этот инструмент.
Для улучшения читаемости примера предлагаю добавить пустую строку перед созданием объекта:
Сумма = ЮТест.Данные().СлучайноеЧисло(); Реквизиты = Новый Структура("Number, Сумма", Номер, Сумма); + Объект = ЮТест.Данные().КонструкторОбъектаXDTO(Тип.ИмяТипа, Тип.URIПространстваИмен) .Установить("Date", Дата) .ФикцияОбязательныхПолей() .УстановитьРеквизиты(Реквизиты) .Фикция("Покупатель") .ДобавитьНовый("Товары") .ФикцияРеквизитов("Цена, Количество") .ДанныеОбъекта();
Tools
LanguageTool
[uncategorized] ~97-~97: Прилагательное не согласуется с существительным по падежу.
Context: ...ние пустышек Создание записей в базе с минимальным заполнения (наименование, код, номер, дата). Пол...(Unify_Adj_NN_case)
Line range hint
287-391
: Отличное дополнение практических примеров!Новые примеры "Генерация фейкового документа" и "Генерация произвольных фейковых данных" значительно улучшают документацию, демонстрируя реальные сценарии использования инструментов генерации данных. Примеры охватывают различные ситуации и показывают, как эффективно использовать инструменты для создания тестовых данных.
Код в примерах хорошо структурирован и легко читается, что поможет пользователям быстро понять и применить эти техники в своих проектах.
Для улучшения согласованности во втором примере предлагаю добавить комментарии к функциям, как это сделано в первом примере:
+// Пример генерации описания сервера Функция ОписаниеСервера(Знач Идентификатор = Неопределено) Экспорт Описание = БазовоеОписаниеОбъекта(Идентификатор, "СРВ"); // ... (остальной код функции) КонецФункции +// Пример генерации описания заявки на создание виртуальной машины Функция ОписаниеЗаявкиНаСозданиеВМ() Экспорт Описание = Новый Структура(); // ... (остальной код функции) КонецФункции +// Пример создания нового образа Docker Функция НовыйОбразDocker(Версия, ПоУмолчанию = Истина) Экспорт Данные = Новый Структура("Адрес, ВерсияПлатформы, ТипПлатформы, ИспользоватьПоУмолчанию"); // ... (остальной код функции) КонецФункцииЭто улучшит читаемость и поможет пользователям быстрее понять назначение каждой функции.
tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl (1)
636-636
: Одобрено: Установка случайного курса в конструкторе объекта.Правильно, что теперь используется случайное значение курса вместо фиктивной функции. Это улучшает качество теста.
Рекомендую добавить комментарий, объясняющий, почему используется случайное значение для курса. Например:
.Фикция("Период") +// Используем случайный курс для более реалистичного тестирования .Установить("Курс", Курс);
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (19)
- documentation/docs/features/test-data/data-generation.md (2 hunks)
- exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (17 hunks)
- exts/yaxunit/src/CommonModules/ЮТРазрешениеЗависимостейСлужебныйКлиент/Module.bsl (1 hunks)
- exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебныйСервер/Module.bsl (1 hunks)
- exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/Forms/КлиентскийКонструктор/Module.bsl (1 hunks)
- exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl (1 hunks)
- exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/Forms/КлиентскийКонструктор/Module.bsl (1 hunks)
- fixtures/demo-configuration/src/AccountingRegisters/Основной/Основной.mdo (0 hunks)
- fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl (1 hunks)
- fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/КурсыВалют.mdo (1 hunks)
- tests/src/CommonModules/ОМ_Мокито/Module.bsl (2 hunks)
- tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl (2 hunks)
- tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl (2 hunks)
- tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl (1 hunks)
- tests/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/Module.bsl (1 hunks)
- tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl (1 hunks)
- tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl (1 hunks)
- tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (1 hunks)
- tests/src/Configuration/Configuration.mdo (1 hunks)
Files not reviewed due to no reviewable changes (1)
- fixtures/demo-configuration/src/AccountingRegisters/Основной/Основной.mdo
Files skipped from review as they are similar to previous changes (5)
- exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебныйСервер/Module.bsl
- exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/Forms/КлиентскийКонструктор/Module.bsl
- exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl
- tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl
- tests/src/Configuration/Configuration.mdo
Additional context used
LanguageTool
documentation/docs/features/test-data/data-generation.md
[uncategorized] ~97-~97: Прилагательное не согласуется с существительным по падежу.
Context: ...ние пустышек Создание записей в базе с минимальным заполнения (наименование, код, номер, дата). Пол...(Unify_Adj_NN_case)
Additional comments not posted (16)
fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl (2)
1-21
: Структура файла соответствует лучшим практикамФайл имеет правильную структуру:
- Присутствует уведомление об авторских правах
- Корректно размещена директива препроцессора
- Использование областей (#Область) улучшает читаемость кода
Also applies to: 39-41
23-37
: Логика процедуры ПередЗаписью реализована корректноПроцедура правильно выполняет следующие действия:
- Проверяет, загружаются ли данные, и выходит, если это так
- Итерирует по всем строкам объекта
- Проверяет, что курс валюты положительный
Это обеспечивает корректную валидацию данных перед записью.
exts/yaxunit/src/CommonModules/ЮТРазрешениеЗависимостейСлужебныйКлиент/Module.bsl (1)
124-125
: Логичное изменение порядка операций.Перемещение присваивания
ПолноеИмяСервер
после установкиРезультат.СохраняемыйКонтекстСервер
является правильным решением. Это гарантирует, чтоРезультат.СохраняемыйКонтекстСервер.РабочийКаталог
уже инициализирован перед использованием, что предотвращает потенциальные ошибки при обращении к неинициализированным данным. Такой подход улучшает надежность кода и соответствует целям PR по улучшению обработки движений в регистрах.fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/КурсыВалют.mdo (2)
109-109
: Проанализируйте влияние изменения значения по умолчаниюИзменение значения по умолчанию с конкретного числа на неопределенное значение может повлиять на инициализацию новых записей в регистре "КурсыВалют".
Рассмотрите следующие аспекты:
- Убедитесь, что все места в коде, где создаются новые записи курсов валют, корректно обрабатывают неопределенное значение.
- Проверьте, не повлияет ли это изменение на существующие запросы или отчеты, которые могли предполагать наличие конкретного значения по умолчанию.
- Обновите документацию, если в ней упоминалось конкретное значение по умолчанию для курса валюты.
Для проверки влияния этого изменения выполните следующий скрипт:
#!/bin/bash # Поиск мест использования реквизита "Курс" регистра сведений "КурсыВалют" rg --type xml -i 'КурсыВалют.*Курс' rg --type bsl -i 'КурсыВалют.*Курс'Этот скрипт поможет найти все места в конфигурации, где используется реквизит "Курс" регистра сведений "КурсыВалют", что позволит оценить потенциальное влияние изменения.
Line range hint
1-165
: Требуется уточнение по расхождениям между сводкой изменений и фактическими изменениямиВ сводке изменений, сгенерированной ИИ, упоминаются несколько удалений элементов, таких как
<fullTextSearch>DontUse</fullTextSearch>
и<nonNegative>true</nonNegative>
, которые не отражены в предоставленном дифе файла.Прошу уточнить:
- Были ли эти изменения действительно внесены и затем отменены?
- Возможно ли, что эти изменения относятся к другим файлам в рамках данного PR?
- Если изменения были внесены, но не отражены в дифе, не могли бы вы предоставить обновленную версию файла для повторного рассмотрения?
Для проверки наличия упомянутых изменений в других файлах конфигурации выполните следующий скрипт:
Этот скрипт поможет определить, были ли упомянутые изменения внесены в другие файлы конфигурации.
exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/Forms/КлиентскийКонструктор/Module.bsl (1)
290-290
: Улучшение метода получения данных строки табличной части.Замена вызова метода
ДанныеСтроки
наДанныеСтрокиТабличнойЧасти
является положительным изменением. Новое название метода более точно отражает его назначение, что улучшает читаемость и понимание кода. Это изменение соответствует целям PR по введению конструктора для установки движений документов и конструктора для коллекций.tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl (2)
150-168
: Изменения корректны, но требуют дополнительной проверки и возможной доработки.Обновление функции
СоздатьЗаписьРегистраСведений_ОбменДанными
соответствует переходу от цен товаров к курсам валют. Логика валидации была правильно обновлена.Рекомендуется выполнить следующие действия:
- Проверить, что все связанные части кодовой базы отражают это изменение.
- Убедиться, что сообщение об ошибке соответствует языковым стандартам приложения.
#!/bin/bash # Поиск использования РегистрСведений.КурсыВалют rg --type bsl "РегистрСведений.КурсыВалют" -A 5 # Поиск похожих сообщений об ошибках для проверки согласованности rg --type bsl "не может быть отрицательным или нулем" -A 2Рассмотрите возможность вынесения сообщения об ошибке в константу или ресурс локализации для обеспечения единообразия и упрощения будущих изменений.
135-140
: Изменения корректны, но требуют дополнительной проверки.Изменения в функции
СоздатьЗаписьРегистраСведений
выглядят правильными и соответствуют переходу от обработки цен товаров к курсам валют. Использование случайного положительного числа для курса валюты является подходящим подходом.Рекомендуется выполнить следующие проверки:
- Убедиться, что все связанные тесты обновлены с учетом этих изменений.
- Проверить, что все места использования этой функции в кодовой базе обновлены соответствующим образом.
Verification successful
Изменения корректны и подтверждены.
Изменения в функции
СоздатьЗаписьРегистраСведений
применяются только в тестовых модулях и не затрагивают основной код. Все связанные тесты обновлены соответствующим образом.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Поиск использования функции СоздатьЗаписьРегистраСведений rg --type bsl "СоздатьЗаписьРегистраСведений" -A 5Length of output: 342
Script:
#!/bin/bash # Поиск использования функции СоздатьЗаписьРегистраСведений во всех файлах .bsl rg "СоздатьЗаписьРегистраСведений" --glob "*.bsl" -A5Length of output: 2265
Script:
#!/bin/bash # Глобальный поиск всех вызовов функции СоздатьЗаписьРегистраСведений во всех .bsl файлах rg "СоздатьЗаписьРегистраСведений\s*\(" --glob "*.bsl"Length of output: 172
tests/src/CommonModules/ОМ_Мокито/Module.bsl (1)
316-317
: Одобрено: Добавление и использование объекта РегистраторДобавление объекта
Регистратор
и его использование вНаборЗаписей
иНаборЗаписей2
является правильным решением для создания движений в регистре сведений, подчиненном регистратору. Эти изменения соответствуют целям PR и решают проблему, описанную в связанной задаче #120.Also applies to: 319-319, 337-337
tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl (1)
238-242
: Улучшение тестирования курса валюты.Изменения в этом сегменте кода улучшают тестирование курса валюты:
- Введение переменной
Курс
с случайным положительным значением делает тест более детерминированным.- Прямая установка
Курс
в конструкторе объекта упрощает понимание теста.- Обновление проверки на использование
Курс
вместоДанныеОбъекта.Курс
обеспечивает согласованность теста.Эти изменения повышают надежность и читаемость теста.
Also applies to: 251-251
tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl (1)
631-631
: Одобрено: Использование случайного положительного числа для курса валюты.Хорошее решение использовать случайное положительное число для курса валюты. Это делает тест более реалистичным и надежным.
exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (5)
23-24
: Добавление проверки инициализации контекстаОтлично, что вы добавили вызов
ПроверитьИнициализациюКонтекста(Контекст);
в начало процедур и функций. Это повысит надежность кода, гарантируя, что контекст всегда корректно инициализирован перед выполнением дальнейших операций.Also applies to: 34-35, 48-49, 69-70, 88-89, 110-111, 122-123, 135-136, 143-144, 157-160, 168-171, 186-189, 198-201, 210-211, 225-226, 240-242, 355-357, 465-467, 478-481
296-297
: Повторная проверка форматирования и вложенности функцийРанее было отмечено, что в строке 296 отсутствует пробел перед
Тогда
, и в строке 297 используется вложенный вызов функций при инициализации параметров методаСтрШаблон
. Убедитесь, что эти замечания устранены, чтобы улучшить читаемость и соответствие стандартам кодирования.
355-372
: Проверка корректности создания нового контекста конструктора движенийФункция
НовыйКонтекстКонструктораДвижений
добавлена корректно и обеспечивает создание нового контекста для конструктора движений. Убедитесь, что все необходимые параметры передаются и обрабатываются правильно, а также что функция используется во всех необходимых местах.
448-451
: Расширение функцииТекущаяЗапись
для поддержки коллекцийИзменения в функции
ТекущаяЗапись
учитывают возможность работы с конструкторами коллекций. Это улучшает универсальность функции и обеспечивает корректную обработку различных типов контекстов.
465-467
: Добавление вспомогательных функций для определения состояния контекстаФункции
ФокусНаТабличнойЧасти
иЭтоКонструкторКоллекции
добавлены для упрощения проверки состояния контекста. Это улучшает читаемость кода и способствует его поддерживаемости.Also applies to: 472-474
@coderabbitai Сделай переводы всех строк в коде и создай suggestions. Используя подход |
0b72452
to
6ea961c
Compare
Oops, something went wrong! Please try again later. 🐰 💔 |
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: 6
Outside diff range and nitpick comments (3)
tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (3)
92-93
: Проверка выброса исключения на корректность использования методаВ строках 92-93 выполняется проверка выброса исключения при вызове метода "Установить" без предварительного добавления строки:
ЮТест.ОжидаетЧто(Конструктор) .Метод("Установить", ЮТКоллекции.ЗначениеВМассиве("Покупатель", Покупатель)).ВыбрасываетИсключение("Сначала необходимо добавить строку");Убедитесь, что такая ситуация действительно возможна в использовании конструктора движений и что подобная проверка необходима для обеспечения корректности поведения.
193-196
: Единообразие использования кавычек в сообщениях исключенийВ сообщении исключения используются обратные кавычки для обозначения названий объектов:
.ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `НесуществующийРеквизит`");Для улучшения читаемости и единообразия рекомендуется использовать один стиль кавычек в сообщениях, например, двойные кавычки или кавычки «ёлочки».
280-295
: Улучшение читаемости проверок записей регистра сведенийВ блоке проверки записей регистра:
ЮТест.ОжидаетЧто(ЗаписиРегистра) .Заполнено() .ИмеетДлину(1) .Свойство("[0].Регистратор").Равно(Документ) .Свойство("[0].Товар").Равно(Товар) .Свойство("[0].ВидЦен").Равно(ВидыЦены) .Свойство("[0].Цена").Равно(Цена) ;Длинные цепочки методов могут снижать читаемость кода. Рекомендуется разбить проверку на несколько отдельных утверждений или добавить комментарии для повышения понятности.
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (3)
- exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (17 hunks)
- fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl (1 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
- fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl
Additional comments not posted (1)
tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (1)
109-114
: Проверка корректности установки пользовательского периодаПри установке периода в конструкторе движений:
.Установить("Период", Период);Рекомендуется убедиться, что установка пользовательского периода не конфликтует с системными настройками периода документа или регистра, и что это не приведет к некорректному поведению при записи движений.
Процедура Инициализировать() Экспорт | ||
|
||
// Создаем документ | ||
Документ = ЮТест.Данные().СоздатьДокумент("Документы.ПриходТовара"); | ||
|
||
// Инициализируем конструктор движений | ||
Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы"); | ||
|
||
// Проверяем, что конструктор инициализирован | ||
ЮТест.ОжидаетЧто(Конструктор, "Конструктор должен быть инициализирован") | ||
.НеРавно(Неопределено); | ||
|
||
// Проверяем, что данные конструктора пусты | ||
Данные = Конструктор.Данные(); | ||
ЮТест.ОжидаетЧто(Данные, "Данные конструктора должны быть пустым массивом") | ||
.ИмеетТип("Массив") | ||
.Равно(Новый Массив); | ||
|
||
ЮТест.ОжидаетЧто(ЮТест.Данные()) | ||
.Метод("КонструкторДвижений", ЮТКоллекции.ЗначениеВМассиве(Документ, "НесуществующийРегистр")) | ||
.ВыбрасываетИсключение("Документ " + Документ + " не делает движений по регистру ""НесуществующийРегистр"""); | ||
|
||
КонецПроцедуры |
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
Предложение по устранению дублирования кода при создании документов
В нескольких процедурах, таких как "Инициализировать", "ДобавитьСтроку", "Установить" и других, повторяется код по созданию документов и инициализации конструктора движений. Рекомендуется вынести этот повторяющийся код в отдельную вспомогательную процедуру или функцию для повышения модульности и уменьшения дублирования кода.
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.
Думаю что в тестах дублирование оправдано
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.
@alkoleft, понятно, спасибо за пояснение.
(っ˘̩╭╮˘̩)っ
Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:38-60
Timestamp: 2024-09-24T21:57:03.102Z
Learning: В тестах дублирование кода при создании документов и инициализации конструкторов движений оправдано.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
Learnings used
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:207-207
Timestamp: 2024-09-23T00:09:43.463Z
Learning: При написании тестов необходимо добавлять проверку записанных в регистр значений, используя методы `ЮТест.ОжидаетЧто` и `ЮТЗапросы.ДвиженияДокумента`, формируя проверки по образцу, например:
```bsl
ЮТест.ОжидаетЧто(ЮТЗапросы.ДвиженияДокумента(Документ, "Регистр"))
.Заполнено()
.ИмеетДлину(N)
.Свойство("[0].Параметр").Равно(Значение)
;
</details>
<!-- This is an auto-generated reply by CodeRabbit -->
|
||
ЮТест.ОжидаетЧто(ЮТест.Данные()) | ||
.Метод("КонструкторДвижений", ЮТКоллекции.ЗначениеВМассиве(Документ, "НесуществующийРегистр")) | ||
.ВыбрасываетИсключение("Документ " + Документ + " не делает движений по регистру ""НесуществующийРегистр"""); |
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.
Некорректное использование кавычек в сообщении исключения
В строке 58 при формировании сообщения исключения используются двойные кавычки внутри строки, что может привести к ошибкам при выводе сообщения:
"Документ " + Документ + " не делает движений по регистру ""НесуществующийРегистр"""
Рекомендуется использовать одинарные кавычки для обозначения имени регистра или экранировать двойные кавычки, чтобы сообщение отображалось корректно.
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.
Это синтаксис языка 1с (bsl), это способ экранирования двойных кавычек
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.
@alkoleft, спасибо за разъяснение. Я учту это при будущих обзорах.
(_/)
(•.•)
( 💭)
Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:58-58
Timestamp: 2024-09-24T21:56:56.855Z
Learning: В языке 1С (BSL) для экранирования двойных кавычек внутри строк используется удвоенная кавычка (`""`).
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
Learnings used
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:207-207
Timestamp: 2024-09-23T00:09:43.463Z
Learning: При написании тестов необходимо добавлять проверку записанных в регистр значений, используя методы `ЮТест.ОжидаетЧто` и `ЮТЗапросы.ДвиженияДокумента`, формируя проверки по образцу, например:
```bsl
ЮТест.ОжидаетЧто(ЮТЗапросы.ДвиженияДокумента(Документ, "Регистр"))
.Заполнено()
.ИмеетДлину(N)
.Свойство("[0].Параметр").Равно(Значение)
;
</details>
<!-- This is an auto-generated reply by CodeRabbit -->
.Свойство(0) | ||
.ИмеетТип("Структура") | ||
.НеЗаполнено(); |
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.
Потенциальная ошибка при обращении к первому элементу массива
В блоке:
ЮТест.ОжидаетЧто(Данные)
.Заполнено()
.ИмеетТип("Массив")
.ИмеетДлину(1)
.Свойство(0)
.ИмеетТип("Структура")
.НеЗаполнено();
Обращение к элементу массива по индексу 0 может привести к ошибке, если массив пустой или не содержит элементов. Рекомендуется добавить проверку наличия элементов в массиве перед обращением по индексу.
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.
Наличие элементов проверяется утверждением Заполнено()
и ИмеетДлину(1)
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.
@alkoleft, спасибо за уточнение. Вы правы, наличие элементов проверяется при помощи утверждений Заполнено()
и ИмеетДлину(1)
, поэтому дополнительная проверка не требуется. Извините за беспокойство.
(。•́︿•̀。)
Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:75-77
Timestamp: 2024-09-24T21:57:02.761Z
Learning: При проверке массивов в тестах, если используются утверждения `Заполнено()` и `ИмеетДлину(N)`, обращение к элементам массива по индексу считается безопасным, и не требуется дополнительной проверки наличия элементов.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
Learnings used
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:207-207
Timestamp: 2024-09-23T00:09:43.463Z
Learning: При написании тестов необходимо добавлять проверку записанных в регистр значений, используя методы `ЮТест.ОжидаетЧто` и `ЮТЗапросы.ДвиженияДокумента`, формируя проверки по образцу, например:
```bsl
ЮТест.ОжидаетЧто(ЮТЗапросы.ДвиженияДокумента(Документ, "Регистр"))
.Заполнено()
.ИмеетДлину(N)
.Свойство("[0].Параметр").Равно(Значение)
;
</details>
<!-- This is an auto-generated reply by CodeRabbit -->
МассивПараметров = ЮТКоллекции.ЗначениеВМассиве("Несуществующий1"); | ||
ЮТест.ОжидаетЧто(Конструктор) | ||
.Метод("ФикцияРеквизитов", МассивПараметров) | ||
.ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `Несуществующий1`"); |
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
Устранение дублирования в проверках выброса исключений
Код проверки выброса исключения при указании несуществующего реквизита повторяется:
ЮТест.ОжидаетЧто(Конструктор)
.Метод("ФикцияРеквизитов", МассивПараметров)
.ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `Несуществующий1`");
Рекомендуется вынести этот код в отдельную функцию или использовать параметризацию тестов для уменьшения дублирования и облегчения поддержки тестового кода.
ОбязательныеПоля = ЮТКоллекции.ЗначениеВМассиве("Товар", "Склад"); | ||
|
||
// Проверяем, что все обязательные поля заполнены | ||
Утверждение = ЮТест.ОжидаетЧто(Данные); | ||
Для Каждого Поле Из ОбязательныеПоля Цикл | ||
Утверждение.Свойство(Поле) | ||
.Заполнено(); | ||
КонецЦикла; |
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.
Проверка наличия реквизитов в данных строки перед проверкой заполненности
В цикле проверки обязательных полей:
Для Каждого Поле Из ОбязательныеПоля Цикл
Утверждение.Свойство(Поле)
.Заполнено();
КонецЦикла;
Если в данных строки отсутствует какой-либо из обязательных реквизитов, это приведет к ошибке выполнения. Рекомендуется добавить проверку наличия реквизита в данных перед проверкой его заполненности.
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.
Утверждение Свойство(Поле)
как раз проверяет наличие реквизита
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.
@alkoleft, спасибо за разъяснение. Действительно, метод Свойство(Поле)
проверяет наличие реквизита, что предотвращает ошибку выполнения при его отсутствии.
(_/)
( •_•)
( >💡< )
Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:250-257
Timestamp: 2024-09-24T21:57:11.772Z
Learning: Метод `Свойство(Поле)` в `ЮТест.ОжидаетЧто` проверяет наличие реквизита и предотвращает ошибку выполнения, если реквизит отсутствует.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара"); | ||
|
||
// Инициализируем конструктор движений | ||
ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы") | ||
.ДобавитьСтроку() | ||
.ФикцияРеквизитов("Товар, Склад, Количество") | ||
.Записать(); | ||
|
||
ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы") | ||
.СодержитЗаписи(ЮТест.Предикат() | ||
.Реквизит("Регистратор").Равно(Документ)); | ||
|
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.
Отсутствие проверки результата записи движений регистра накопления
После записи движений в процедуре "Записать_РегистрНакопления" отсутствует проверка того, что записи были успешно созданы и содержат ожидаемые данные. Рекомендуется добавить проверки, аналогичные тем, что используются в процедуре "Записать_РегистрСведений", чтобы убедиться в корректности записанных движений.
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.
Наличие записей проверяется утверждением ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы").СодержитЗаписи()
этого достаточно
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.
@alkoleft, спасибо за уточнение. Если проверка ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы").СодержитЗаписи()
достаточна для ваших нужд, то дополнительных замечаний нет.
Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:302-313
Timestamp: 2024-09-24T21:56:58.470Z
Learning: В процедуре "Записать_РегистрНакопления" наличие записей проверяется с помощью `ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы").СодержитЗаписи()`, что достаточно для проверки записей.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
@coderabbitai Сделай переводы всех строк в коде и создай suggestions. Используя подход НСтр("ru='Курс не может быть отрицательным или нулем';en='Exchange rate cannot be negative or zero'"); |
Oops, something went wrong! Please try again later. 🐰 💔 |
Описание изменений
Close #120
Summary by CodeRabbit