Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,51 @@

КонецФункции

// Возвращает значение предопределенного элемента ПВХ по идентификатору.
//
// Параметры:
// Идентификатор - Строка - Идентификатор переменной ПВХ.
// ИспользоватьКэш - Булево - Признак получения данных из кэша.
//
// Возвращаемое значение:
// - ПроизвольныйТип - Значение переменной ПВХ.
// - Массив - Массив значений переменной ПВХ.
//
Функция ПолучитьПредопределенноеЗначение(Идентификатор, ИспользоватьКэш = Ложь) Экспорт

Источник = ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения;

Элемент = пбп_ПредопределенныеЗначения.ПредопределенныйЭлемент(Источник, Идентификатор,,, ИспользоватьКэш);

Значение = пбп_ПредопределенныеЗначения.ЗначениеПредопределенногоЭлемента(Источник, Элемент,,, ИспользоватьКэш);

Возврат Значение;

КонецФункции

// Возвращает соответствие предопределенных элементов ПВХ по имени.
//
// Параметры:
// Идентификаторы - Строка - Идентификаторы переменных ПВХ, перечисленные через запятую.
// ВРазрезеКлючей - Булево - Признак получения данных в виде соответствия, где Ключ - Идентификатор переменной.
// ИспользоватьКэш - Булево - Признак получения данных из кэша.
//
// Возвращаемое значение:
// - Соответствие - Соответствие идентификаторов и значений переменных ПВХ.
// - Массив - Массив значений переменных ПВХ.
//
Функция ПолучитьПредопределенныеЗначения(Идентификаторы, ВРазрезеКлючей = Ложь, ИспользоватьКэш = Ложь) Экспорт

Источник = ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения;

Элементы = пбп_ПредопределенныеЗначения.ПредопределенныеЭлементы(Источник, Идентификаторы,, ИспользоватьКэш);

Значения = пбп_ПредопределенныеЗначения.ЗначенияПредопределенныхЭлементов(Источник, Элементы,,ВРазрезеКлючей, ИспользоватьКэш);

Возврат Значения;

КонецФункции
Comment thread
coderabbitai[bot] marked this conversation as resolved.

// Выполняет запись элемента справочника.
//
// Параметры:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -347,19 +347,22 @@
Функция ПредопределенныеЭлементы(ИсточникМетаданных,
Знач Идентификаторы,
ВыбрасыватьИсключение = Ложь,
ВРазрезеКлючей = Ложь) Экспорт
ИспользоватьКэш = Ложь) Экспорт

Если ВРазрезеКлючей Тогда
Значения = Новый Соответствие;
Иначе
Значения = Новый Массив;
КонецЕсли;
Значения = Новый Массив;

ИмяОбъектаМетаданных = ИмяОбъектаМетаданныхПоИсточнику(ИсточникМетаданных, ВыбрасыватьИсключение);
Если ИмяОбъектаМетаданных = Неопределено Тогда
Возврат Значения;
КонецЕсли;

Если ИспользоватьКэш Тогда
Возврат пбп_ПредопределенныеЗначенияПовтИсп.ПредопределенныеЭлементы(
ИмяОбъектаМетаданных,
Идентификаторы,
ВыбрасыватьИсключение);
КонецЕсли;
Comment on lines +359 to +364

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Кэш-ветка не передаёт ВРазрезеКлючей — форма результата отличается от некэш-ветки.

В некэш-ветке (Line 371-375) ПолучитьПредопределенныеПоИдентификаторам формирует Массив или Соответствие в зависимости от ВРазрезеКлючей. Здесь же флаг не пробрасывается в обёртку пбп_ПредопределенныеЗначенияПовтИсп.ПредопределенныеЭлементы, поэтому при ВРазрезеКлючей = Истина кэш-путь вернёт результат иной структуры. Обёртку (файл пбп_ПредопределенныеЗначенияПовтИсп) также нужно расширить параметром ВРазрезеКлючей.

🐛 Проброс `ВРазрезеКлючей` в кэш-обёртку
 	Если ИспользоватьКэш Тогда
 		Возврат пбп_ПредопределенныеЗначенияПовтИсп.ПредопределенныеЭлементы(
 			ИмяОбъектаМетаданных,
 			Идентификаторы,
-			ВыбрасыватьИсключение);
+			ВыбрасыватьИсключение,
+			ВРазрезеКлючей);
 	КонецЕсли;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl` around
lines 364 - 369, Кэш-ветка вызывает
пбп_ПредопределенныеЗначенияПовтИсп.ПредопределенныеЭлементы без передачи флага
ВРазрезеКлючей, из‑за чего возвращаемая структура отличается от ветки без кэша;
исправьте вызов в Module.bsl, передав параметр ВРазрезеКлючей в
пбп_ПредопределенныеЗначенияПовтИсп.ПредопределенныеЭлементы и обновите
сигнатуру этой обёртки в пбп_ПредопределенныеЗначенияПовтИсп, чтобы она
принимала и прокидывала ВРазрезеКлючей дальше к реализации
ПолучитьПредопределенныеПоИдентификаторам, сохраняя поведение (возврат Массив
или Соответствие) в зависимости от флага.


Возврат ПолучитьПредопределенныеПоИдентификаторам(
ИмяОбъектаМетаданных, Идентификаторы,
Значения,
Expand Down Expand Up @@ -431,7 +434,8 @@
Функция ЗначенияПредопределенныхЭлементов(ИсточникМетаданных,
Ссылки,
ВыбрасыватьИсключение = Ложь,
ВРазрезеКлючей = Ложь) Экспорт
ВРазрезеКлючей = Ложь,
ИспользоватьКэш = Ложь) Экспорт

ИмяОбъектаМетаданных = ИмяОбъектаМетаданныхПоИсточнику(ИсточникМетаданных, ВыбрасыватьИсключение);
Если ИмяОбъектаМетаданных = Неопределено Тогда
Expand All @@ -442,6 +446,13 @@
КонецЕсли;
КонецЕсли;

Если ИспользоватьКэш Тогда
Возврат пбп_ПредопределенныеЗначенияПовтИсп.ЗначенияПредопределенныхЭлементов(
ИмяОбъектаМетаданных,
Ссылки,
ВыбрасыватьИсключение);
КонецЕсли;
Comment on lines +449 to +454

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Кэш-ветка не передаёт ВРазрезеКлючей.

Некэш-ветка (Line 461-463) вызывает Менеджер.ПолучитьЗначения(Ссылки, ВыбрасыватьИсключение, ВРазрезеКлючей), а кэш-ветка флаг не пробрасывает в обёртку. При ВРазрезеКлючей = Истина кэш-путь вернёт Массив вместо Соответствия. Обёртку пбп_ПредопределенныеЗначенияПовтИсп.ЗначенияПредопределенныхЭлементов нужно расширить параметром ВРазрезеКлючей (см. отдельный комментарий).

🐛 Проброс `ВРазрезеКлючей` в кэш-обёртку
 	Если ИспользоватьКэш Тогда
 		Возврат пбп_ПредопределенныеЗначенияПовтИсп.ЗначенияПредопределенныхЭлементов(
 			ИмяОбъектаМетаданных,
 			Ссылки,
-			ВыбрасыватьИсключение);
+			ВыбрасыватьИсключение,
+			ВРазрезеКлючей);
 	КонецЕсли;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl` around
lines 454 - 459, Кэш-ветка вызывает
пбп_ПредопределенныеЗначенияПовтИсп.ЗначенияПредопределенныхЭлементов без флага
ВРазрезеКлючей, из-за чего при ВРазрезеКлючей = Истина возвращается Массив
вместо Соответствия; исправьте вызов, добавив параметр ВРазрезеКлючей в вызов
обёртки и расширьте сигнатуру
пбп_ПредопределенныеЗначенияПовтИсп.ЗначенияПредопределенныхЭлементов чтобы
принять этот параметр и пробросить его дальше в
Менеджер.ПолучитьЗначения(Ссылки, ВыбрасыватьИсключение, ВРазрезеКлючей),
обеспечив одинаковое поведение кэша и некэша.


Менеджер = пбп_Переадресация.МенеджерОбъектаПоПолномуИмени(ИмяОбъектаМетаданных);

Возврат Менеджер.ПолучитьЗначения(Ссылки, ВыбрасыватьИсключение, ВРазрезеКлючей);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,27 @@

КонецФункции

// Описание см. в пбп_ПредопределенныеЗначения.ПредопределенныйЭлемент.
//
Функция ПредопределенныеЭлементы(Знач ИмяОбъектаМетаданных, Знач Идентификатор, ВыбрасыватьИсключение = Ложь) Экспорт

ЗначениеПоУмолчанию = Новый Массив;

Возврат пбп_ПредопределенныеЗначения.ПолучитьПредопределенныеПоИдентификаторам(
ИмяОбъектаМетаданных, Идентификатор, ЗначениеПоУмолчанию, Истина, ВыбрасыватьИсключение);

КонецФункции

// Описание см. в пбп_ПредопределенныеЗначения.ЗначениеПредопределенногоЭлемента.
//
Функция ЗначенияПредопределенныхЭлементов(Знач ИмяОбъектаМетаданных, Ссылки, ВыбрасыватьИсключение = Ложь, ВРазрезеКлючей = Ложь) Экспорт

Менеджер = пбп_Переадресация.МенеджерОбъектаПоПолномуИмени(ИмяОбъектаМетаданных);

Возврат Менеджер.ПолучитьЗначения(Ссылки, ВыбрасыватьИсключение, ВРазрезеКлючей);

КонецФункции

#КонецОбласти

#КонецОбласти
Expand Down
Loading