Skip to content
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

[Bug]: УстановитьРеквизиты() не должна выдавать ошибку если в структуре лишние свойства #480

Open
Kyrales opened this issue Jan 7, 2025 · 2 comments
Labels
bug Something isn't working

Comments

@Kyrales
Copy link

Kyrales commented Jan 7, 2025

🐞 Описание ошибки

При применении в конструкторе объекта УстановитьРеквизиты() возникает ошибка вида "не содержит реквизит "Имя реквизит" " .
Она не является корректной, т.к. может быть что в структуре будут лишние элементы. Или учесть возможность задавать список свойств которые входят или которые исключаются (аналог ЗаполнитьЗначенияСвойств())

Пример кода

ШаблонДоступа = ЮТест.Данные().КонструкторОбъекта("Справочник.ШаблоныДоступаПользователей")
		.ФикцияОбязательныхПолей()
		.УстановитьСсылкуНового(ДанныеДляНовогоШаблона.ИД_ШаблонаДоступа)
		.УстановитьРеквизиты(ДанныеДляНовогоШаблона)
		.Записать()
		;

// ИД_ШаблонаДоступа - не существует реквизита в Справочник.ШаблоныДоступаПользователей"

Текст ошибки (лог)

`Справочник.ШаблоныДоступаПользователей` не содержит реквизит `ИД_ШаблонаДоступа`
{YAXUNIT ОбщийМодуль.ЮТКонструкторТестовыхДанныхСлужебный.Модуль(439)}:ВызватьИсключение Пояснение;
{YAXUNIT ОбщийМодуль.ЮТКонструкторТестовыхДанныхСлужебный.Модуль(39)}:ОписаниеРеквизита(Контекст, ЗначениеРеквизита.Ключ);
{YAXUNIT Обработка.ЮТКонструкторТестовыхДанных.МодульОбъекта(58)}:ЮТКонструкторТестовыхДанныхСлужебный.УстановитьРеквизиты(Контекст, ЗначенияРеквизитов);
{YAXUNIT ОбщийМодуль.ОМ_УправлениеДаннымиВнешнихСистем.Модуль(118)}:ШаблонДоступа = ЮТест.Данные().КонструкторОбъекта("Справочник.ШаблоныДоступаПользователей")
{(1)}:ОМ_УправлениеДаннымиВнешнихСистем.ТестТаблицаПравПользователейДляОбновления()
{YAXUNIT ОбщийМодуль.ЮТМетодыСлужебный.Модуль(228)}:Выполнить(Выражение);
{YAXUNIT ОбщийМодуль.ЮТМетодыСлужебный.Модуль(128)}:Возврат ВыполнитьВыражениеСПерехватомОшибки(Выражение, Параметры, , Ложь);
{YAXUNIT ОбщийМодуль.ЮТИсполнительСлужебныйКлиентСервер.Модуль(231)}:Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодКонфигурацииСПерехватомОшибки(Тест.ПолноеИмяМетода, , Тест.Параметры);
{YAXUNIT ОбщийМодуль.ЮТИсполнительСлужебныйКлиентСервер.Модуль(129)}:ВыполнитьТестовыйМетод(Тест);
{YAXUNIT ОбщийМодуль.ЮТИсполнительСлужебныйКлиентСервер.Модуль(43)}:Результат = ВыполнитьНаборТестов(Набор, ТестовыйМодуль);
{YAXUNIT ОбщийМодуль.ЮТИсполнительСлужебныйВызовСервера.Модуль(41)}:Возврат ЮТИсполнительСлужебныйКлиентСервер.ВыполнитьГруппуНаборовТестов(Наборы, ТестовыйМодуль);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]

Версия YaxUnit

24.12

Версия 1С:Предприятие

No response

Режим запуска 1С:Предприятие

Тонкий клиент. Управляемое приложение

Тип информационной базы

No response

Операционная система

No response

@Kyrales Kyrales added the bug Something isn't working label Jan 7, 2025
@alkoleft
Copy link
Member

alkoleft commented Jan 7, 2025

Не считаю проблему багом - на мой взгляд поведение корректное по той причине, что хочется избежать излишней подкапотной магии, что передали то и устанавливаем.

Или учесть возможность задавать список свойств которые входят или которые исключаются (аналог ЗаполнитьЗначенияСвойств())

@Kyrales Вариант думаю вполне рабочий. Но для большей читаемости предлагаю добавить метод .УстановитьРеквизитыИсключив(Реквизиты, Исключения)

@Kyrales А можешь кратко описать пример, почему такая проблема возникла (не проблему и следствие, а первопричину). Почему в конструктор пришла "левая" структура, зачем такая, как она еще используется и тд.

@Kyrales
Copy link
Author

Kyrales commented Jan 8, 2025

Структура возникла из некой целевой функции с разным набором общих данных. Такое часто бывает. Например: ДанныеФайла в БСП, там будет и размер и прочее с реквизитами

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants