1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-01-05 12:50:36 +02:00

Merge pull request #301 from bia-technologies/feature/218

218 / Исправление ошибки работы с общими реквизитами.
This commit is contained in:
Koryakin Aleksey 2024-03-24 02:50:50 +03:00 committed by GitHub
commit 65865a75d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 113 additions and 25 deletions

View File

@ -20,12 +20,9 @@
Процедура Установить(Контекст, ИмяРеквизита, Значение) Экспорт
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
ТекущаяЗапись = ДанныеСтроки(Контекст);
Иначе
ТекущаяЗапись = Контекст.Данные;
КонецЕсли;
ОписаниеРеквизита(Контекст, ИмяРеквизита); // Проверка наличия реквизита
ТекущаяЗапись = ТекущаяЗапись(Контекст);
ТекущаяЗапись.Вставить(ИмяРеквизита, Значение);
КонецПроцедуры
@ -34,13 +31,8 @@
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ОграничениеТипа, "Тип, ОписаниеТипов, Строка", "Фикция", "ЮТКонструкторТестовыхДанных", Истина);
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
ОписаниеРеквизита = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть][ИмяРеквизита];
ТекущаяЗапись = ДанныеСтроки(Контекст);
Иначе
ОписаниеРеквизита = Контекст.Метаданные.Реквизиты[ИмяРеквизита];
ТекущаяЗапись = Контекст.Данные;
КонецЕсли;
ТекущаяЗапись = ТекущаяЗапись(Контекст);
ОписаниеРеквизита = ОписаниеРеквизита(Контекст, ИмяРеквизита);
Если ОграничениеТипа <> Неопределено Тогда
ПолноеИмяРеквизита = ЮТСтроки.ДобавитьСтроку(Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита, ".");
@ -56,13 +48,8 @@
Процедура ФикцияОбязательныхПолей(Контекст) Экспорт
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
Реквизиты = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть];
ТекущаяЗапись = ДанныеСтроки(Контекст);
Иначе
Реквизиты = Контекст.Метаданные.Реквизиты;
ТекущаяЗапись = Контекст.Данные;
КонецЕсли;
Реквизиты = Реквизиты(Контекст);
ТекущаяЗапись = ТекущаяЗапись(Контекст);
Для Каждого Элемент Из Реквизиты Цикл
Реквизит = Элемент.Значение;
@ -189,7 +176,7 @@
// Структура - Новый контекст конструктора:
// * Менеджер - Произвольный
// * Данные - Структура
// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектаМетаданных
// * Метаданные - см. ЮТМетаданные.СтруктураОписанияОбъектаМетаданных
// * ТекущаяТабличнаяЧасть - Строка
// * ДополнительныеСвойства - Структура
Функция НовыйКонтекстКонструктора(Менеджер) Экспорт
@ -247,4 +234,43 @@
КонецФункции
Функция Реквизиты(Контекст)
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
Возврат Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть];
Иначе
Возврат Контекст.Метаданные.Реквизиты;
КонецЕсли;
КонецФункции
Функция ОписаниеРеквизита(Контекст, ИмяРеквизита)
Реквизиты = Реквизиты(Контекст);
Если НЕ Реквизиты.Свойство(ИмяРеквизита) Тогда
ИмяОсновнойТаблицы = ЮТМетаданные.НормализованноеИмяТаблицы(Контекст.Метаданные);
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
Пояснение = СтрШаблон("Табличная часть `%1.%2` не содержит реквизит `%3`", ИмяОсновнойТаблицы, Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита);
Иначе
Пояснение = СтрШаблон("`%1` не содержит реквизит `%2`", ИмяОсновнойТаблицы, ИмяРеквизита);
КонецЕсли;
ВызватьИсключение Пояснение;
КонецЕсли;
Возврат Реквизиты[ИмяРеквизита];
КонецФункции
Функция ТекущаяЗапись(Контекст)
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
Возврат ДанныеСтроки(Контекст);
Иначе
Возврат Контекст.Данные;
КонецЕсли;
КонецФункции
#КонецОбласти

View File

@ -39,7 +39,7 @@
// Значение - ОбъектМетаданных
// - Тип - Тип объекта информационной базы
// - Строка - Полное имя объекта метаданных
// - см. ОписаниеОбъектаМетаданных
// - см. СтруктураОписанияОбъектаМетаданных
// - Произвольный - Объект информационной базы
//
// Возвращаемое значение:
@ -117,7 +117,7 @@
// Документ - ОбъектМетаданных
// - Тип - Тип объекта информационной базы
// - Строка - Полное имя объекта метаданных
// - см. ОписаниеОбъектаМетаданных
// - см. СтруктураОписанияОбъектаМетаданных
// - ДокументСсылка, ДокументОбъект - Объект информационной базы
// - ДокументМенеджер - Менеджер вида документа
//

View File

@ -146,6 +146,8 @@
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.РеквизитыАдресации, ОписаниеОбъект.Реквизиты, Ложь);
КонецЕсли;
ДобавитьОбщиеРеквизиты(МетаданныеОбъекта, ОписаниеОбъект.Реквизиты);
Если ОписаниеТипа.ТабличныеЧасти Тогда
Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.ТабличныеЧасти Цикл
@ -336,6 +338,23 @@
КонецПроцедуры
Процедура ДобавитьОбщиеРеквизиты(МетаданныеОбъекта, КоллекцияОписаний)
Использовать = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Использовать;
Авто = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Авто;
АвтоИспользование = Метаданные.СвойстваОбъектов.АвтоИспользованиеОбщегоРеквизита.Использовать;
Для Каждого Реквизит Из Метаданные.ОбщиеРеквизиты Цикл
ЭлементСостава = Реквизит.Состав.Найти(МетаданныеОбъекта);
Если ЭлементСостава.Использование = Использовать Или Реквизит.АвтоИспользование = АвтоИспользование И ЭлементСостава.Использование = Авто Тогда
КоллекцияОписаний.Вставить(Реквизит.Имя, НовоеОписаниеРеквизита(Реквизит, Ложь));
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция НовоеОписаниеРеквизита(Реквизит, ЭтоКлюч)
Описание = ЮТМетаданные.ОписаниеРеквизита();

View File

@ -245,7 +245,7 @@
// Параметры: ОписаниеМенеджера -
// См. ОписаниеМенеджера
// Менеджер - Произвольный - Менеджер
// ОписаниеТипа - см. ЮТМетаданные.ОписаниеОбъектаМетаданных
// ОписаниеТипа - см. ЮТМетаданные.СтруктураОписанияОбъектаМетаданных
// Данные - Структура
// Возвращаемое значение:
// Произвольный - Создать объект

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonAttribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="557ba236-e478-4467-9815-120ccecab375">
<name>Организация</name>
<synonym>
<key>ru</key>
<value>Организация</value>
</synonym>
<type>
<types>CatalogRef.Организации</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
<content>
<metadata>Catalog.Склады</metadata>
<use>Use</use>
</content>
<autoUse>DontUse</autoUse>
<dataSeparation>DontUse</dataSeparation>
<usersSeparation>DontUse</usersSeparation>
<authenticationSeparation>DontUse</authenticationSeparation>
<configurationExtensionsSeparation>DontUse</configurationExtensionsSeparation>
<fullTextSearch>DontUse</fullTextSearch>
</mdclass:CommonAttribute>

View File

@ -132,6 +132,7 @@
<commonModules>CommonModule.ИнтеграцияМагазин</commonModules>
<commonModules>CommonModule.ОбменМобильныеОбщее</commonModules>
<commonModules>CommonModule.ОбменМобильныеПереопределяемый</commonModules>
<commonModules>CommonModule.ПодпискиНаСобытия</commonModules>
<commonModules>CommonModule.Пользователи</commonModules>
<commonModules>CommonModule.Помощник</commonModules>
<commonModules>CommonModule.ПомощникКлиент</commonModules>
@ -147,14 +148,14 @@
<commonModules>CommonModule.СервисныеМеханизмы</commonModules>
<commonModules>CommonModule.УведомленияКлиент</commonModules>
<commonModules>CommonModule.УведомленияСервер</commonModules>
<commonModules>CommonModule.ПодпискиНаСобытия</commonModules>
<commonAttributes>CommonAttribute.Организация</commonAttributes>
<exchangePlans>ExchangePlan.Мобильные</exchangePlans>
<xDTOPackages>XDTOPackage.ОбменСМобильнымУстройством</xDTOPackages>
<webServices>WebService.MAExchange</webServices>
<httpServices>HTTPService.ОписанияТоваров</httpServices>
<httpServices>HTTPService.Товары</httpServices>
<eventSubscriptions>EventSubscription.ПередЗаписьюСправочника</eventSubscriptions>
<eventSubscriptions>EventSubscription.ПередЗаписьюДокумента</eventSubscriptions>
<eventSubscriptions>EventSubscription.ПередЗаписьюСправочника</eventSubscriptions>
<scheduledJobs>ScheduledJob.ОбновлениеАгрегатовПродаж</scheduledJobs>
<scheduledJobs>ScheduledJob.ОбновлениеИндексаППД</scheduledJobs>
<scheduledJobs>ScheduledJob.ОбновлениеИсторииДанных</scheduledJobs>

View File

@ -26,6 +26,7 @@
.ДобавитьТест("СоздатьЗаписьРегистраСведений")
.ДобавитьТест("Фикция")
.ДобавитьТест("Фикция_Типизированная")
.ДобавитьТест("Фикция_ОбщийРеквизит")
.ДобавитьТест("ФикцияОбязательныхПолей")
.ДобавитьТест("СоздатьГруппу")
;
@ -206,6 +207,17 @@
КонецПроцедуры
Процедура Фикция_ОбщийРеквизит() Экспорт
Склад = ЮТест.Данные().КонструкторОбъекта("Справочник.Склады")
.Фикция("Организация")
.ДанныеОбъекта();
ЮТест.ОжидаетЧто(Склад)
.Свойство("Организация").Заполнено();
КонецПроцедуры
Процедура ФикцияОбязательныхПолей() Экспорт
Данные = ЮТест.Данные().КонструкторОбъекта("Справочники.Контрагенты")

View File

@ -46,6 +46,11 @@
КонецЦикла;
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных("Справочник.Склады");
ЮТест.ОжидаетЧто(Описание, "Проверка на общий реквизит")
.Свойство("Реквизиты")
.ИмеетСвойство("Организация");
КонецПроцедуры
Процедура РегистрыДвиженийДокумента() Экспорт