mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-02-13 19:42:02 +02:00
Merge pull request #303 from bia-technologies/feature/270
270 / Создание записей регистров через наборы записей
This commit is contained in:
commit
253e0e822a
@ -46,13 +46,13 @@
|
||||
// см. СтруктураОписанияОбъектаМетаданных
|
||||
Функция ОписаниеОбъектаМетаданных(Знач Значение) Экспорт
|
||||
|
||||
ТипЗначения = ТипЗнч(Значение);
|
||||
|
||||
Если ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипЗначения) И ЭтоОписаниеОбъектаМетаданных(Значение) Тогда
|
||||
Если ЮТМетаданныеСлужебный.ЭтоОписаниеОбъектаМетаданных(Значение) Тогда
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Значение;
|
||||
КонецЕсли;
|
||||
|
||||
ТипЗначения = ТипЗнч(Значение);
|
||||
|
||||
ТипТип = Тип("Тип");
|
||||
#Если Сервер Тогда
|
||||
Если ТипЗначения = Тип("ОбъектМетаданных") Тогда
|
||||
@ -77,6 +77,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает нормализованное имя таблицы, то которое можно использовать в запросах
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - ОбъектМетаданных
|
||||
// - Тип - Тип объекта информационной базы
|
||||
// - Строка - Полное имя объекта метаданных
|
||||
// - см. СтруктураОписанияОбъектаМетаданных
|
||||
// - Произвольный - Объект информационной базы
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Нормализованное имя таблицы
|
||||
Функция НормализованноеИмяТаблицы(Значение) Экспорт
|
||||
|
||||
Описание = ОписаниеОбъектаМетаданных(Значение);
|
||||
@ -85,26 +96,46 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоОписаниеОбъектаМетаданных(Параметры) Экспорт
|
||||
|
||||
Возврат ЮТОбщий.ЭтаСтруктураИмеетТип(Параметры, "ОписаниеОбъектаМетаданных");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипыМетаданных() Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеСлужебныйПовтИсп.ТипыМетаданных();
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверка, что переданное значение относится к перечислениям.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - ОбъектМетаданных
|
||||
// - Тип - Тип объекта информационной базы
|
||||
// - Строка - Полное имя объекта метаданных
|
||||
// - см. СтруктураОписанияОбъектаМетаданных
|
||||
// - Произвольный - Объект информационной базы
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Это перечисление
|
||||
Функция ЭтоПеречисление(Значение) Экспорт
|
||||
|
||||
Описание = ОписаниеОбъектаМетаданных(Значение);
|
||||
|
||||
Возврат Описание <> Неопределено И Описание.ОписаниеТипа.Имя = "Перечисление";
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверка, что переданное значение относится к регистрам.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - ОбъектМетаданных
|
||||
// - Тип - Тип объекта информационной базы
|
||||
// - Строка - Полное имя объекта метаданных
|
||||
// - см. СтруктураОписанияОбъектаМетаданных
|
||||
// - Произвольный - Объект информационной базы
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Это перечисление
|
||||
Функция ЭтоРегистр(Значение) Экспорт
|
||||
|
||||
Описание = ОписаниеОбъектаМетаданных(Значение);
|
||||
Возврат Описание <> Неопределено И СтрНачинаетсяС(Описание.ОписаниеТипа.Имя, "Регистр");
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Разрешены ли синхронные вызовы в параметрах конфигурации.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Разрешены синхронные вызовы
|
||||
Функция РазрешеныСинхронныеВызовы() Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеСлужебныйПовтИсп.РазрешеныСинхронныеВызовы();
|
||||
|
@ -0,0 +1,31 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция ЭтоОписаниеОбъектаМетаданных(Значение) Экспорт
|
||||
|
||||
Возврат ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипЗнч(Значение)) И ЮТОбщий.ЭтаСтруктураИмеетТип(Значение, "ОписаниеОбъектаМетаданных");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7e27abe5-a18c-4312-adbc-dad89e4fec00">
|
||||
<name>ЮТМетаданныеСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Метаданные служебный</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -178,7 +178,7 @@
|
||||
|
||||
ПолноеИмя = МетаданныеОбъекта.ПолноеИмя();
|
||||
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
|
||||
Типы = ЮТМетаданные.ТипыМетаданных();
|
||||
Типы = ЮТМетаданныеСлужебныйПовтИсп.ТипыМетаданных();
|
||||
|
||||
Если НЕ Типы.Свойство(ЧастиИмени[0]) Тогда
|
||||
Сообщение = СтрШаблон("Получение описания для '%1' не поддерживается, либо не реализовано", ЧастиИмени[0]);
|
||||
@ -303,7 +303,7 @@
|
||||
|
||||
Если ЧастиСтроки.Количество() = 2 Тогда
|
||||
|
||||
ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
|
||||
ТипыМетаданных = ЮТМетаданныеСлужебныйПовтИсп.ТипыМетаданных();
|
||||
ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]];
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
ОбъектМетаданных = Метаданные[ОписаниеТипа.ИмяКоллекции].Найти(ЧастиСтроки[1]);
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
Функция СоздатьЗапись(Знач Менеджер, Знач Данные, Знач ПараметрыЗаписи, Знач ВернутьОбъект) Экспорт
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(Менеджер);
|
||||
ПараметрыЗаписи = ПараметрыЗаписи(ПараметрыЗаписи);
|
||||
|
||||
Объект = НовыйОбъект(Менеджер, Данные, ПараметрыЗаписи.ДополнительныеСвойства);
|
||||
@ -46,11 +45,23 @@
|
||||
// Произвольный - Созданный объект
|
||||
Функция НовыйОбъект(Знач Менеджер, Знач Данные, Знач ДополнительныеСвойства = Неопределено) Экспорт
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(Менеджер);
|
||||
|
||||
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);
|
||||
Менеджер = ЮТОбщий.Менеджер(ОписаниеОбъектаМетаданных);
|
||||
|
||||
ЭтоРегистр = ЮТМетаданные.ЭтоРегистр(ОписаниеОбъектаМетаданных);
|
||||
|
||||
Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа, Данные);
|
||||
|
||||
Если ДополнительныеСвойства <> Неопределено Тогда
|
||||
ЮТКоллекции.ДополнитьСтруктуру(Объект.ДополнительныеСвойства, ДополнительныеСвойства);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоРегистр Тогда
|
||||
|
||||
ЗаполнитьНаборРегистра(Объект, Данные);
|
||||
Возврат Объект;
|
||||
|
||||
КонецЕсли;
|
||||
ЗаполнитьЗначенияСвойств(Объект, Данные);
|
||||
|
||||
Если ОписаниеОбъектаМетаданных.ОписаниеТипа.ТабличныеЧасти Тогда
|
||||
@ -73,10 +84,6 @@
|
||||
|
||||
ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных);
|
||||
|
||||
Если ОписаниеОбъектаМетаданных.ОписаниеТипа.Ссылочный И ДополнительныеСвойства <> Неопределено Тогда
|
||||
ЮТКоллекции.ДополнитьСтруктуру(Объект.ДополнительныеСвойства, ДополнительныеСвойства);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Объект;
|
||||
|
||||
КонецФункции
|
||||
@ -140,16 +147,9 @@
|
||||
КонецЕсли;
|
||||
|
||||
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(ОбъектМетаданных);
|
||||
ОписаниеТипа = ОписаниеОбъектаМетаданных.ОписаниеТипа;
|
||||
Менеджер = ЮТОбщий.Менеджер(ОбъектМетаданных);
|
||||
|
||||
Если ЮТОбщийСлужебныйВызовСервера.ЭтоАнглийскийВстроенныйЯзык() Тогда
|
||||
ИмяТипаМенеджера = СтрШаблон("%1Manager.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя);
|
||||
Иначе
|
||||
ИмяТипаМенеджера = СтрШаблон("%1Менеджер.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя);
|
||||
КонецЕсли;
|
||||
Менеджер = Новый(ИмяТипаМенеджера);
|
||||
|
||||
Объект = СоздатьОбъект(Менеджер, ОписаниеТипа, РеквизитыЗаполнения);
|
||||
Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа, РеквизитыЗаполнения);
|
||||
|
||||
Если ЗначениеЗаполнено(РеквизитыЗаполнения) Тогда
|
||||
ЗаполнитьЗначенияСвойств(Объект, РеквизитыЗаполнения);
|
||||
@ -298,10 +298,6 @@
|
||||
Объект.ОбменДанными.Загрузка = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыЗаписи.ДополнительныеСвойства) Тогда
|
||||
ЮТКоллекции.ДополнитьСтруктуру(Объект.ДополнительныеСвойства, ПараметрыЗаписи.ДополнительныеСвойства);
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
|
||||
Если ПараметрыЗаписи.РежимЗаписи <> Неопределено Тогда
|
||||
@ -378,6 +374,17 @@
|
||||
Менеджер = ЮТОбщий.Менеджер(Описание);
|
||||
Возврат Менеджер.СоздатьКлючЗаписи(КлючевыеРеквизиты);
|
||||
|
||||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипНабораЗаписей(ТипЗначения) Тогда
|
||||
|
||||
КлючевыеРеквизиты = Новый Структура();
|
||||
|
||||
Для Каждого ЭлементОтбора Из Объект.Отбор Цикл
|
||||
КлючевыеРеквизиты.Вставить(ЭлементОтбора.Имя, ЭлементОтбора.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(Объект);
|
||||
Возврат Менеджер.СоздатьКлючЗаписи(КлючевыеРеквизиты);
|
||||
|
||||
Иначе
|
||||
|
||||
Сообщение = ЮТИсключения.НеподдерживаемыйПараметрМетода("ЮТТестовыеДанныеВызовСервера.КлючЗаписи", Объект);
|
||||
@ -399,4 +406,15 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьНаборРегистра(Набор, ДанныеЗаписи)
|
||||
|
||||
Запись = Набор.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(Запись, ДанныеЗаписи);
|
||||
|
||||
Для Каждого ЭлементОтбора Из Набор.Отбор Цикл
|
||||
ЭлементОтбора.Установить(Запись[ЭлементОтбора.Имя]);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -8,7 +8,7 @@
|
||||
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + |
|
||||
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + |
|
||||
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + |
|
||||
| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | | + |
|
||||
| РегистрСведений | РегистрыСведений | СоздатьНаборЗаписей | | | + | + | + | | | + |
|
||||
| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | | + |
|
||||
| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | | + |
|
||||
| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | | + |
|
||||
@ -23,7 +23,7 @@
|
||||
| ChartOfAccounts | ChartsOfAccounts | СоздатьСчет | | + | + | | | | + | + |
|
||||
| ChartOfCalculationTypes | ChartsOfCalculationTypes | СоздатьВидРасчета | | + | + | | | | + | + |
|
||||
| ExchangePlan | ExchangePlans | СоздатьУзел | | + | + | | | | + | + |
|
||||
| InformationRegister | InformationRegisters | СоздатьМенеджерЗаписи | | | + | + | + | | | + |
|
||||
| InformationRegister | InformationRegisters | СоздатьНаборЗаписей | | | + | + | + | | | + |
|
||||
| AccumulationRegister | AccumulationRegisters | | | | + | + | + | | | + |
|
||||
| AccountingRegister | AccountingRegisters | | | | + | + | + | | | + |
|
||||
| CalculationRegister | CalculationRegisters | | | | + | + | + | | | + |
|
||||
|
@ -81,6 +81,7 @@
|
||||
<commonModules>CommonModule.ЮТЛогИсполненияТестаСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТЛокальСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТМетаданные</commonModules>
|
||||
<commonModules>CommonModule.ЮТМетаданныеСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТМетаданныеСлужебныйВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ЮТМетаданныеСлужебныйПовтИсп</commonModules>
|
||||
<commonModules>CommonModule.ЮТМетодыСлужебный</commonModules>
|
||||
|
@ -23,7 +23,7 @@
|
||||
<name>Active</name>
|
||||
<comment></comment>
|
||||
<fillValue xsi:type="core:UndefinedValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<mask></mask>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
@ -33,7 +33,7 @@
|
||||
<name>LineNumber</name>
|
||||
<comment></comment>
|
||||
<fillValue xsi:type="core:UndefinedValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<mask></mask>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
@ -43,7 +43,7 @@
|
||||
<name>Recorder</name>
|
||||
<comment></comment>
|
||||
<fillValue xsi:type="core:UndefinedValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<mask></mask>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
@ -54,7 +54,7 @@
|
||||
<comment></comment>
|
||||
<fillValue xsi:type="core:UndefinedValue"/>
|
||||
<fillChecking>ShowError</fillChecking>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<mask></mask>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
@ -96,7 +96,6 @@
|
||||
<numberQualifiers>
|
||||
<precision>10</precision>
|
||||
<scale>2</scale>
|
||||
<nonNegative>true</nonNegative>
|
||||
</numberQualifiers>
|
||||
</type>
|
||||
<toolTip>
|
||||
@ -106,13 +105,10 @@
|
||||
<mask></mask>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<quickChoice>DontUse</quickChoice>
|
||||
<createOnInput>Use</createOnInput>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
<fillValue xsi:type="core:NumberValue">
|
||||
<value>0</value>
|
||||
</fillValue>
|
||||
<fillValue xsi:type="core:UndefinedValue"/>
|
||||
</resources>
|
||||
<dimensions uuid="55a02ed2-75b4-4627-9b2d-1553d3d08eb8">
|
||||
<name>Товар</name>
|
||||
@ -133,7 +129,7 @@
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillChecking>ShowError</fillChecking>
|
||||
<denyIncompleteValues>true</denyIncompleteValues>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
<fillFromFillingValue>true</fillFromFillingValue>
|
||||
<fillValue xsi:type="core:ReferenceValue">
|
||||
@ -156,7 +152,7 @@
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillChecking>ShowError</fillChecking>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
<fillValue xsi:type="core:ReferenceValue">
|
||||
<value>Catalog.ВидыЦен.EmptyRef</value>
|
||||
|
@ -24,6 +24,7 @@
|
||||
.ДобавитьТест("ЗаполнитьСправочник")
|
||||
.ДобавитьТест("ЗаполнитьДокумент")
|
||||
.ДобавитьТест("СоздатьЗаписьРегистраСведений")
|
||||
.ДобавитьТест("СоздатьЗаписьРегистраСведений_ОбменДанными")
|
||||
.ДобавитьТест("Фикция")
|
||||
.ДобавитьТест("Фикция_Типизированная")
|
||||
.ДобавитьТест("Фикция_ОбщийРеквизит")
|
||||
@ -138,6 +139,29 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СоздатьЗаписьРегистраСведений_ОбменДанными() Экспорт
|
||||
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрСведений.ЦеныТоваров")
|
||||
.Фикция("Период")
|
||||
.Фикция("Товар")
|
||||
.Фикция("ВидЦен")
|
||||
.Установить("Цена", -1);
|
||||
|
||||
ДанныеОбъекта = Конструктор.ДанныеОбъекта();
|
||||
|
||||
ЮТест.ОжидаетЧто(Конструктор)
|
||||
.Метод("Записать").Параметр(Ложь).Параметр(Истина)
|
||||
.НеВыбрасываетИсключение();
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.ЦеныТоваров")
|
||||
.СодержитЗаписи(ЮТест.Предикат(ДанныеОбъекта));
|
||||
|
||||
ЮТест.ОжидаетЧто(Конструктор)
|
||||
.Метод("Записать")
|
||||
.ВыбрасываетИсключение("Цена товара не может быть отрицательной");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фикция() Экспорт
|
||||
|
||||
Поставщик = Ютест.Данные().СоздатьЭлемент("Справочники.Контрагенты");
|
||||
|
Loading…
x
Reference in New Issue
Block a user