-
Notifications
You must be signed in to change notification settings - Fork 7
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
docs: fix bsl syntax highlighting (#137) #138
docs: fix bsl syntax highlighting (#137) #138
Conversation
WalkthroughВ данном пулл-реквесте обновлена документация для нескольких подсистем, включая загрузку файлов, модификацию форм, переопределение методов и подписки на события. Основные изменения касаются форматирования блоков кода, добавления новых функций и процедур, а также уточнения описаний и примеров использования. В частности, изменены идентификаторы языка для блоков кода с Changes
Possibly related issues
Possibly related PRs
Suggested labels
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
Documentation and Community
|
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 (13)
docs/СоответствиеОбъектовИнформационнойБазы.md (2)
Line range hint
16-26
: Улучшить пример использования метода ПолучитьСоответствиеОбъектовИБТекущий пример можно улучшить следующим образом:
- Использовать более реалистичные имена переменных вместо Тест1, Тест2
- Добавить объявление переменных
- Добавить комментарии, объясняющие назначение параметров
Предлагаю следующие изменения:
Процедура Тест() + // Определяем параметры поиска соответствия + Склад = Справочники.Склады.ТекущийСклад(); + Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000001"); + // Вызов метода с заданными параметрами ИдентификаторНастройки = "Тест"; - МассивСоответствий = пбп_ОбщегоНазначенияСервер.ПолучитьСоответствиеОбъектовИБ(ИдентификаторНастройки, Тест1, Тест2, , Истина); + МассивСоответствий = пбп_ОбщегоНазначенияСервер.ПолучитьСоответствиеОбъектовИБ( + ИдентификаторНастройки, + Склад, // Объект1 + Номенклатура, // Объект2 + , // Объект3 (не заполнен) + Истина); // Использовать кэш Если ЗначениеЗаполнено(МассивСоответствий) Тогда РезультатТест = МассивСоответствий[0].Объект3; КонецЕсли; КонецПроцедуры
Line range hint
30-46
: Исправить несоответствия в примере использования метода ПолучитьЗначенияОбъектаСоответствияПоКлючуВ текущем примере есть несколько несоответствий:
- Объявленные переменные (ИмяКлюча, ЗначениеКлюча) не используются в вызове метода
- Переменная Тест используется без объявления
- Параметры в вызове метода не соответствуют описанию в комментариях
Предлагаю следующие изменения:
Процедура Тест() - ИмяКлюча = "Объект1"; - ЗначениеКлюча = Склад; - ИмяОбъекта = "Объект3"; + // Определяем параметры поиска + Склад = Справочники.Склады.ТекущийСклад(); + // Вызов метода с заданными параметрами ИдентификаторНастройки = "Тест"; - Значения = пбп_ОбщегоНазначенияСервер.ПолучитьЗначенияОбъектаСоответствияПоКлючу(ИдентификаторНастройки, "Объект1", Тест, "Объект2"); + Значения = пбп_ОбщегоНазначенияСервер.ПолучитьЗначенияОбъектаСоответствияПоКлючу( + ИдентификаторНастройки, + "Объект1", // ИмяКлюча + Склад, // ЗначениеКлюча + "Объект2", // ИмяОбъекта + Истина); // ИспользоватьКэш // Пример использования полученного массива значений Если ЗначениеЗаполнено(Значения) Тогда Для Каждого Значение Из Значения Цикл - Сообщить("Значение объекта: " + Значение); + Сообщить(СтрШаблон("Найдено соответствие для склада %1: %2", Склад, Значение)); КонецЦикла; Иначе Сообщить("По заданному ключу объекты не найдены."); КонецЕсли; КонецПроцедурыdocs/ПереопределениеМетодовБСП.md (2)
Line range hint
18-29
: Рекомендуется добавить обработку транзакцийВ процедуре
ОчиститьИсториюИнтеграции
при удалении записей рекомендуется использовать управление транзакциями для обеспечения целостности данных.Предлагаемые изменения:
Процедура ОчиститьИсториюИнтеграции() Экспорт + НачатьТранзакцию(); Попытка // Попытка удаления элементов справочника + ЗафиксироватьТранзакцию(); Исключение + ОтменитьТранзакцию(); ИмяСобытия = НСтр("ru = 'Очистка истории интеграции'"); ТекстОшибки = СтрШаблон("Не удалось удалить запись истории интеграции %1", ВыборкаДетальныеЗаписи.Ссылка); пбп_ЖурналРегистрацииСлужебный.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки); КонецПопытки; КонецПроцедуры
Line range hint
39-49
: Добавьте проверку параметровВ процедуре
ВыполнитьМетодКонфигурации
рекомендуется добавить проверку входных параметров перед выполнением.Предлагаемые изменения:
// См. пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации. Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт + Если ПустаяСтрока(ИмяМетода) Тогда + ВызватьИсключение НСтр("ru = 'Не указано имя метода'"); + КонецЕсли; Модуль = ПолучитьМодуль(); Модуль.ВыполнитьМетодКонфигурации(ИмяМетода, Параметры); КонецПроцедурыdocs/ПользовательскиеФункции.md (1)
Line range hint
56-66
: Рекомендуется добавить проверку входных параметров.Функция корректно демонстрирует вызов пользовательской функции, но рекомендуется добавить проверку входных параметров.
Предлагаемые изменения:
Функция ПолучитьВалиднуюСтроку(СсылкаНаПользовательскуюФункцию, Имя) + Если СсылкаНаПользовательскуюФункцию = Неопределено Тогда + ВызватьИсключение НСтр("ru='Не указана ссылка на пользовательскую функцию'"); + КонецЕсли; + + Если Не ЗначениеЗаполнено(Имя) Тогда + ВызватьИсключение НСтр("ru='Не заполнен параметр ""Имя""'"); + КонецЕсли; ИмяБезПробелов = СтрЗаменить(Имя, " ", ""); ПараметрыФункции = Новый Структура; ПараметрыФункции.Вставить("ИсходнаяСтрока", ИмяБезПробелов); Результат = пбп_ОбщегоНазначенияСервер.ВыполнитьПользовательскуюФункциюСПараметрами(СсылкаНаПользовательскуюФункцию, ПараметрыФункции); Возврат Результат; КонецФункцииdocs/ПодпискиНаСобытия.md (3)
Line range hint
25-35
: Рекомендуется добавить проверки безопасностиДля повышения надежности кода рекомендуется:
- Добавить проверку количества элементов в массиве перед обратным присвоением
- Проверить корректность типов возвращаемых значений
Пример улучшенной реализации:
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт ПараметрыМетода = Новый Массив; ПараметрыМетода.Добавить(Источник); ПараметрыМетода.Добавить(Отказ); пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + Если ПараметрыМетода.Количество() >= 2 Тогда Источник = ПараметрыМетода[0]; Отказ = ПараметрыМетода[1]; + КонецЕсли; КонецПроцедуры
Line range hint
47-79
: Добавьте документацию к процедурамРекомендуется добавить документацию к процедурам, включая:
- Описание назначения процедуры
- Описание параметров
- Примеры использования
Пример документации для процедуры:
+// Выполняется перед записью объекта +// +// Параметры: +// Источник - ДокументОбъект - Записываемый объект +// Отказ - Булево - Признак отказа от записи +// РежимЗаписи - РежимЗаписиДокумента - Режим записи документа +// РежимПроведения - РежимПроведенияДокумента - Режим проведения документа Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт КонецПроцедуры🧰 Tools
🪛 Markdownlint
44-44: Expected: 0; Actual: 1
Unordered list indentation(MD007, ul-indent)
45-45: Expected: 0; Actual: 1
Unordered list indentation(MD007, ul-indent)
46-46: Expected: 2; Actual: 3
Unordered list indentation(MD007, ul-indent)
Line range hint
82-108
: Улучшите обработку ошибокРекомендуется улучшить механизм обработки ошибок для упрощения диагностики проблем:
- Добавить логирование перед вызовом метода
- Включить контекст выполнения в сообщение об ошибке
Пример улучшенной реализации:
Если ЗначениеЗаполнено(ИмяМетода) Тогда + пбп_ОбщегоНазначения.ЗаписьВЖурналРегистрации( + НСтр("ru='Выполнение метода конфигурации'"), + УровеньЖурналаРегистрации.Информация, + , + , + СтрШаблон("Метод: %1, Источник: %2", ИмяМетода, Источник) + ); Попытка ПараметрыМетода = Новый Массив; ПараметрыМетода.Добавить(Источник); ПараметрыМетода.Добавить(Отказ); ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Исключение - ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода); + ТекстОшибки = СтрШаблон( + "Ошибка при выполнении метода '%1' для документа '%2':%3%4", + ИмяМетода, + Источник, + Символы.ПС, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + ВызватьИсключение ТекстОшибки; КонецПопытки; КонецЕсли;docs/МодификацияФорм.md (5)
Line range hint
23-33
: Улучшить обработку ошибок в функции СуществуетОбработчикСобытияВ текущей реализации отсутствует инициализация переменной
Список
, что может привести к ошибке при выполнении. Также нет обработки случая, когдаОбработчик
не соответствует ни одному из проверяемых обработчиков.Предлагаю следующие изменения:
Функция СуществуетОбработчикСобытия(ИмяФормы, Обработчик = "") - + Список = Неопределено; Если Обработчик = <ИмяПроверяемогоОбработчика> Тогда Список = пбп_МодификацияКонфигурации<директива>ПовтИсп.СписокФорм<ИмяПроверяемогоОбработчика>(); КонецЕсли; - + + Если Список = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + Возврат Список.Получить(ИмяФормы) <> Неопределено; - КонецФункции🧰 Tools
🪛 Markdownlint
25-25: Column: 1
Hard tabs(MD010, no-hard-tabs)
Line range hint
37-50
: Оптимизировать создание списка формТекущая реализация создает новое соответствие при каждом вызове функции, что может повлиять на производительность при частых вызовах.
Рекомендую кэшировать результат:
Функция СписокФорм<ИмяОбработчика>() Экспорт - + Возврат ПолучитьСписокФорм(); +КонецФункции + +Функция ПолучитьСписокФорм() + + КлючКэша = "СписокФорм<ИмяОбработчика>"; + Список = ПараметрыПриложения[КлючКэша]; + Если Список <> Неопределено Тогда + Возврат Список; + КонецЕсли; + СписокФорм = Новый Соответствие; - + // Добавление СписокФорм.Вставить("Документ.ДемоРаботаСФормами.Форма.ФормаДокумента", Истина); СписокФорм.Вставить("ПланВидовХарактеристик.пбп_ПредопределенныеЗначения.Форма.ФормаСписка", Истина); // КонецДобавления - - Возврат Новый ФиксированноеСоответствие(СписокФорм); - + + Результат = Новый ФиксированноеСоответствие(СписокФорм); + ПараметрыПриложения.Вставить(КлючКэша, Результат); + Возврат Результат; КонецФункции🧰 Tools
🪛 Markdownlint
39-39: Column: 1
Hard tabs(MD010, no-hard-tabs)
Line range hint
54-62
: Добавить проверку параметров в обработчике ПриСозданииНаСервереОтсутствует проверка входных параметров, что может привести к ошибкам при выполнении.
Предлагаю добавить проверки:
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт + Если Форма = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ПустаяСтрока(Форма.ИмяФормы) Тогда + Возврат; + КонецЕсли; + Если пбп_МодификацияКонфигурацииПереопределяемый.СуществуетОбработчикСобытия(Форма.ИмяФормы, "ПриСозданииНаСервере") = Ложь Тогда Возврат; КонецЕсли; пбп_МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка); КонецПроцедуры
Line range hint
65-77
: Улучшить обработку ошибок в расширенииВ текущей реализации отсутствует логирование ошибок, что может затруднить отладку.
Рекомендую добавить логирование:
&После("ПриСозданииНаСервере") Процедура пбп_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Если Отказ Тогда + ЗаписьЖурналаРегистрации(НСтр("ru='Модификация форм'"), + УровеньЖурналаРегистрации.Предупреждение,,, + НСтр("ru='Отказ в обработке формы: %1'"), Форма.ИмяФормы); Возврат; КонецЕсли; //Проверяем необходимо ли модифицировать данную форму Если пбп_МодификацияКонфигурацииПереопределяемый.СуществуетОбработчикСобытия(Форма.ИмяФормы, "ПриСозданииНаСервере") Тогда пбп_МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка); КонецЕсли; КонецПроцедуры
Line range hint
83-240
: Оптимизировать демо-примерВ демо-примере есть несколько моментов, требующих внимания:
- Отсутствует обработка ошибок при создании элементов формы
- Жестко закодированные значения в запросе
- Отсутствует документация по назначению команд
Рекомендации по улучшению:
- Добавить обработку ошибок при создании элементов
- Вынести текст запроса в отдельную функцию
- Добавить документацию к командам
Пример улучшения для команд:
#Область РаботаСКомандами +// Команда вызова диалога информации об обеденном перерыве пбп_РаботаСФормами.СоздатьКоманду(Форма, "КогдаОбед", НСтр("ru='Когда обед?'; en='When is lunch?'"), "ПодсказатьКогдаОбед"); пбп_РаботаСФормами.СоздатьКнопка(Форма, "КогдаОбед", ГруппаПодвал,, "КогдаОбед", 2); +// Команды управления видимостью родительского элемента пбп_РаботаСФормами.СоздатьКоманду(Форма, "СкрытьОтца", "Скрыть отца", "СкрытьОтца"); пбп_РаботаСФормами.СоздатьКнопка(Форма, "СкрытьОтца", ГруппаПодвал,, "СкрытьОтца", 1);
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (7)
docs/ЗагрузкаФайлаЧерезТабличныйДокумент.md
(1 hunks)docs/МодификацияФорм.md
(5 hunks)docs/ПереопределениеМетодовБСП.md
(4 hunks)docs/ПодпискиНаСобытия.md
(5 hunks)docs/ПолучениеДанныхПоНастройкеОтбора.md
(1 hunks)docs/ПользовательскиеФункции.md
(2 hunks)docs/СоответствиеОбъектовИнформационнойБазы.md
(2 hunks)
✅ Files skipped from review due to trivial changes (2)
- docs/ЗагрузкаФайлаЧерезТабличныйДокумент.md
- docs/ПолучениеДанныхПоНастройкеОтбора.md
🧰 Additional context used
🪛 Markdownlint
docs/ПереопределениеМетодовБСП.md
58-58: null
Headings must start at the beginning of the line
(MD023, heading-start-left)
🔇 Additional comments (5)
docs/ПереопределениеМетодовБСП.md (1)
Line range hint 8-16
: Корректное изменение подсветки синтаксиса!
Замена идентификатора языка с '1C' на 'BSL' улучшает читаемость кода и поддержку в редакторах.
docs/ПользовательскиеФункции.md (1)
Line range hint 43-52
: Корректная реализация функции очистки строки.
Функция реализована правильно и наглядно демонстрирует работу с пользовательскими функциями. Изменение идентификатора языка с "1C" на "BSL" улучшает подсветку синтаксиса.
docs/ПодпискиНаСобытия.md (3)
Line range hint 16-21
: Корректная реализация проверок!
Пример демонстрирует правильный порядок проверок параметров ОбменДанными.Загрузка
и Отказ
для оптимизации производительности.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~14-~14: Слово пишется слитно: «вместо».
Context: ...тина**, добавьте проверку этого условия в место проверки ОбменДанными.Загрузка. ...
(Pravopisanie_slitno1)
🪛 Markdownlint
19-19: Column: 1
Hard tabs
(MD010, no-hard-tabs)
111-114
: Замените шаблонные значения
В примере используются заполнители, которые необходимо заменить реальными значениями:
<ИмяКласса>
- название класса объектов (например, "Документы")<ИмяОбщегоМодуля>
- название общего модуля (например, "пбп_ДокументыОбработкаСобытий")
Line range hint 118-131
: Корректная реализация соответствия типов и методов!
Реализация демонстрирует правильный подход к организации соответствий:
- Четкое указание типов документов
- Согласованное именование методов
- Наличие маркеров для добавления новых соответствий
🧰 Tools
🪛 Markdownlint
108-108: Expected: 0; Actual: 1
Unordered list indentation
(MD007, ul-indent)
@@ -50,15 +50,15 @@ | |||
|
|||
Если модуль-аналог новый добавить функцию в области "СлужебныеПроцедурыИФункции", где пбп_ИмяМодуля для серверных модулей "пбп_ОбщегоНазначенияПовтИсп.", для клиентских "пбп_ОбщегоНазначенияКлиент" | |||
|
|||
```1C (BSL) | |||
```BSL | |||
Функция ПолучитьМодуль() | |||
Возврат пбп_ИмяМодуля.ОбщийМодуль(ИмяМодуляБСП, ИмяМодуляАналогаБСП); | |||
КонецФункции | |||
``` | |||
### 2.2 Создание методов в модуле-аналоге |
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.
Исправьте форматирование заголовка
Согласно правилам оформления Markdown, заголовки должны начинаться с начала строки без отступов.
Предлагаемые изменения:
- ### 2.2 Создание методов в модуле-аналоге
+ ### 2.2 Создание методов в модуле-аналоге
📝 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.
### 2.2 Создание методов в модуле-аналоге | |
### 2.2 Создание методов в модуле-аналоге |
🧰 Tools
🪛 Markdownlint
58-58: null
Headings must start at the beginning of the line
(MD023, heading-start-left)
Спасибо за PR! |
Close #137
Summary by CodeRabbit