mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2024-12-03 08:45:31 +02:00
Merge pull request #232 from bia-technologies/feature/mockito
Пачка доработок по Мокито
This commit is contained in:
commit
65d0796c22
@ -87,15 +87,15 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный - Устанавливает проверяемый объект, вызовы методов которого будем проверять.
|
||||
//
|
||||
// Описание - Строка - Описание проверки, которое будет выведено при возникновении ошибки
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - см. МокитоПроверки
|
||||
Функция Проверить(Объект) Экспорт
|
||||
Функция Проверить(Объект, Описание = Неопределено) Экспорт
|
||||
|
||||
Режимы = МокитоСлужебный.РежимыРаботы();
|
||||
МокитоСлужебный.УстановитьРежим(Режимы.Проверка);
|
||||
|
||||
Возврат МокитоПроверки.Проверить(Объект);
|
||||
Возврат МокитоПроверки.Проверить(Объект, Описание);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
Функция Обучение(Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
УстановитьПараметрыОбучения(Объект);
|
||||
МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект, СброситьСтарыеНастройки);
|
||||
МокитоСлужебный.ДобавитьНастройкуПерехватаВызововОбъекта(Объект, СброситьСтарыеНастройки);
|
||||
|
||||
Возврат МокитоОбучение;
|
||||
|
||||
@ -164,15 +164,22 @@
|
||||
|
||||
Процедура ЗарегистрироватьПерехватВыражения(ИмяМетода, ПараметрыВызова)
|
||||
|
||||
Объект = ОбучаемыйОбъект();
|
||||
ДанныеПерехвата = МокитоСлужебный.ДанныеПерехвата(Объект);
|
||||
ПереданаСтруктураВызоваМетода = МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода);
|
||||
|
||||
Если ПереданаСтруктураВызоваМетода Тогда
|
||||
Объект = ИмяМетода.Объект;
|
||||
Иначе
|
||||
Объект = ОбучаемыйОбъект();
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеПерехвата = МокитоСлужебный.НастройкиПерехватаОбъекта(Объект);
|
||||
|
||||
Если ДанныеПерехвата = Неопределено Тогда
|
||||
Сообщение = СтрШаблон("Не найдены настройки перехвата для %1. Необходимо предварительно вызвать метод Мокито.Обучение(Объект)", Объект);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
Если МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода) Тогда
|
||||
Если ПереданаСтруктураВызоваМетода Тогда
|
||||
СтруктураВызоваМетода = ИмяМетода;
|
||||
Иначе
|
||||
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыВызова);
|
||||
@ -186,9 +193,12 @@
|
||||
|
||||
Реакция = СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода);
|
||||
|
||||
Методы[СтруктураВызоваМетода.ИмяМетода].Реакции.Добавить(Реакция);
|
||||
РеакцииМетода = Методы[СтруктураВызоваМетода.ИмяМетода].Реакции;
|
||||
РеакцииМетода.Добавить(Реакция);
|
||||
|
||||
ПараметрыОбучения().РеакцияТекущегоВыражения = Реакция;
|
||||
ПараметрыОбучения = ПараметрыОбучения();
|
||||
ПараметрыОбучения.РеакцияТекущегоВыражения = Реакция;
|
||||
ПараметрыОбучения.Реакции = РеакцииМетода;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -200,10 +210,18 @@
|
||||
|
||||
#Область Реакции
|
||||
|
||||
Функция ОписаниеУсловнойРеакции()
|
||||
|
||||
Возврат Новый Структура("УсловиеРеакции, Действие");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода)
|
||||
|
||||
Условия = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
|
||||
Возврат Новый Структура("УсловиеРеакции, Действие", Условия, Неопределено);
|
||||
ОписаниеУсловнойРеакции = ОписаниеУсловнойРеакции();
|
||||
ОписаниеУсловнойРеакции.УсловиеРеакции = Условия;
|
||||
Возврат ОписаниеУсловнойРеакции;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -213,33 +231,38 @@
|
||||
|
||||
Функция ОбучаемыйОбъект()
|
||||
|
||||
ПараметрыОбучения = ПараметрыОбучения();
|
||||
|
||||
Возврат ПараметрыОбучения.ОбучаемыйОбъект;
|
||||
Возврат ПараметрыОбучения().ОбучаемыйОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПараметрыОбучения()
|
||||
|
||||
Параметры = МокитоСлужебный.Настройки().ПараметрыОбучения;
|
||||
|
||||
Возврат Параметры;
|
||||
Возврат МокитоСлужебный.Настройки().ПараметрыОбучения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьПараметрыОбучения(Объект)
|
||||
|
||||
ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения", Объект, Неопределено);
|
||||
|
||||
ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения, Реакции", Объект, Неопределено);
|
||||
МокитоСлужебный.Настройки().ПараметрыОбучения = ПараметрыОбучения;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗарегистрироватьРеакцию(Действие)
|
||||
|
||||
Параметры = ПараметрыОбучения();
|
||||
|
||||
Действие.Вставить("Обработано", Ложь);
|
||||
|
||||
ПараметрыОбучения().РеакцияТекущегоВыражения.Действие = Действие;
|
||||
Если Параметры.РеакцияТекущегоВыражения.Действие = Неопределено Тогда
|
||||
Параметры.РеакцияТекущегоВыражения.Действие = Действие;
|
||||
Иначе
|
||||
НоваяРеакция = ОписаниеУсловнойРеакции();
|
||||
ЗаполнитьЗначенияСвойств(НоваяРеакция, Параметры.РеакцияТекущегоВыражения);
|
||||
НоваяРеакция.Действие = Действие;
|
||||
Параметры.РеакцияТекущегоВыражения = НоваяРеакция;
|
||||
Параметры.Реакции.Добавить(НоваяРеакция);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -19,9 +19,9 @@
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// см. Мокито.Проверить
|
||||
Функция Проверить(Объект) Экспорт
|
||||
Функция Проверить(Объект, Описание) Экспорт
|
||||
|
||||
УстановитьПараметрыПроверки(Объект);
|
||||
УстановитьПараметрыПроверки(Объект, Описание);
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
КонецФункции
|
||||
@ -70,11 +70,13 @@
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция Равно(Количество, Знач Описание = Неопределено) Экспорт
|
||||
|
||||
Настройки = ПараметрыПроверки();
|
||||
|
||||
Статистика = СтатистикаВызовов();
|
||||
ЮТУтверждения
|
||||
.Что(Статистика, Описание)
|
||||
.Что(Статистика, Настройки.Описание)
|
||||
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
|
||||
.ИмеетДлину(Количество);
|
||||
.ИмеетДлину(Количество, Описание);
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
@ -168,17 +170,17 @@
|
||||
// Структура:
|
||||
// * ПроверяемыйОбъект - Произвольный
|
||||
// * СтруктураВызоваМетода - см. МокитоСлужебный.СтруктураВызоваМетода
|
||||
// * Описание - Строка
|
||||
Функция ПараметрыПроверки()
|
||||
|
||||
Параметры = МокитоСлужебный.Настройки().ПараметрыПроверки;
|
||||
Возврат Параметры;
|
||||
Возврат МокитоСлужебный.Настройки().ПараметрыПроверки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьПараметрыПроверки(Объект = Неопределено, СтруктураВызоваМетода = Неопределено)
|
||||
Процедура УстановитьПараметрыПроверки(Объект, Описание)
|
||||
|
||||
ПараметрыОбучения = Новый Структура("ПроверяемыйОбъект, СтруктураВызоваМетода", Объект, СтруктураВызоваМетода);
|
||||
МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыОбучения;
|
||||
ПараметрыПроверки = Новый Структура("ПроверяемыйОбъект, Описание, СтруктураВызоваМетода", Объект, Описание);
|
||||
МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыПроверки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -20,7 +20,9 @@
|
||||
|
||||
Функция Включен() Экспорт
|
||||
|
||||
Возврат ЮТКонтекст.ДанныеКонтекста() <> Неопределено;
|
||||
ДанныеКонтекста = ЮТКонтекст.ДанныеКонтекста();
|
||||
Настройки = Неопределено;
|
||||
Возврат ДанныеКонтекста <> Неопределено И ДанныеКонтекста.Свойство(КлючНастроек(), Настройки) И Настройки <> Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -35,19 +37,10 @@
|
||||
// Настройки.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Настройки:
|
||||
// * Метод - Строка
|
||||
// * Реакция - Строка
|
||||
// * Настройки - Строка
|
||||
// * Перехват - Строка
|
||||
// * Режим - Строка - см. РежимыРаботы
|
||||
// * Статистика - Структура - Статистика вызовов:
|
||||
// * Вызовы - Соответствие из Структура
|
||||
// * ПараметрыОбучения - Структура
|
||||
// * ПараметрыПроверки - Структура
|
||||
// см. НовыеНастройки
|
||||
Функция Настройки() Экспорт
|
||||
|
||||
Настройки = ЮТКонтекст.ЗначениеКонтекста(КлючНастроек());
|
||||
Настройки = ЮТКонтекст.ЗначениеКонтекста(КлючНастроек());
|
||||
|
||||
Если Настройки = Неопределено Тогда
|
||||
ВызватьИсключение "Что-то пошло не так, настройки Мокито не инициализированы";
|
||||
@ -94,7 +87,11 @@
|
||||
|
||||
Настройки = Настройки();
|
||||
|
||||
ПараметрыПерехвата = ДанныеПерехвата(Объект);
|
||||
Если НЕ ЗначениеЗаполнено(Настройки.Перехват) Или Настройки.ТипыПерехватываемыхОбъектов[ТипЗнч(Объект)] = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехвата = ДанныеПерехвата(Объект, Настройки);
|
||||
|
||||
Если ПараметрыПерехвата = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
@ -235,16 +232,32 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НастройкиПерехватаОбъекта(Объект) Экспорт
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
Возврат ПараметрыПерехвата[Объект];
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Данные перехвата.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - Произвольный
|
||||
// Настройки - см. НовыеНастройки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. МокитоСлужебный.ОписаниеПараметровПерехватаОбъекта
|
||||
Функция ДанныеПерехвата(Объект) Экспорт
|
||||
// см. ОписаниеПараметровПерехватаОбъекта
|
||||
Функция ДанныеПерехвата(Объект, Настройки = Неопределено) Экспорт
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
Если Настройки = Неопределено Тогда
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
Иначе
|
||||
ПараметрыПерехвата = Настройки.Перехват;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ПараметрыПерехвата) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Объект) = Тип("Структура") Тогда
|
||||
Ключ = Объект.Объект;
|
||||
@ -253,17 +266,26 @@
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ];
|
||||
ТипЗначения = ТипЗнч(Ключ);
|
||||
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено И ЭтоОбъект(Ключ) Тогда
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ.Ссылка];
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено Тогда
|
||||
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено Тогда
|
||||
Если ЮТТипыДанныхСлужебный.ЭтоТипОбъектаОбработкиОтчета(ТипЗначения) Или ЮТТипыДанныхСлужебный.ЭтоТипНабораЗаписей(ТипЗначения) Тогда
|
||||
|
||||
ПолноеИмя = СтрРазделить(Ключ.Метаданные().ПолноеИмя(), ".");
|
||||
|
||||
Менеджер = Новый(СтрШаблон("%1Менеджер.%2", ПолноеИмя[0], ПолноеИмя[1]));
|
||||
Менеджер = ЮТОбщий.Менеджер(ТипЗначения);
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер];
|
||||
|
||||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипОбъекта(ТипЗначения) Тогда
|
||||
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ.Ссылка];
|
||||
|
||||
Если ПараметрыПерехватаОбъекта = Неопределено Тогда
|
||||
|
||||
Менеджер = ЮТОбщий.Менеджер(ТипЗначения);
|
||||
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер];
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
@ -272,20 +294,50 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗарегистрироватьПерехватОбъекта(Знач Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
Процедура ДобавитьНастройкуПерехватаВызововОбъекта(Знач Объект, СброситьСтарыеНастройки = Истина) Экспорт
|
||||
|
||||
Если ЭтоОбъект(Объект) Тогда
|
||||
Объект = Объект.Ссылка;
|
||||
Настройки = Настройки();
|
||||
|
||||
Если СброситьСтарыеНастройки ИЛИ Настройки.Перехват[Объект] = Неопределено Тогда
|
||||
Настройки.Перехват.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПерехвата = ПараметрыПерехвата();
|
||||
ТипОбъекта = ТипЗнч(Объект);
|
||||
|
||||
Если СброситьСтарыеНастройки ИЛИ ПараметрыПерехвата[Объект] = Неопределено Тогда
|
||||
ПараметрыПерехвата.Вставить(Объект, ОписаниеПараметровПерехватаОбъекта(Объект));
|
||||
Настройки.ТипыПерехватываемыхОбъектов.Вставить(ТипОбъекта, Истина);
|
||||
|
||||
Если ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипОбъекта) Тогда
|
||||
ТипОбъекта = ЮТТипыДанныхСлужебный.ТипОбъектаСсылки(ТипОбъекта);
|
||||
Настройки.ТипыПерехватываемыхОбъектов.Вставить(ТипОбъекта, Истина);
|
||||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипМенеджера(ТипОбъекта) Тогда
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(ТипОбъекта);
|
||||
|
||||
Если Описание <> Неопределено Тогда
|
||||
|
||||
Если Описание.ОписаниеТипа.Ссылочный Или Описание.ОписаниеТипа.ОбработкаОтчет Тогда
|
||||
ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
|
||||
ИначеЕсли Описание.ОписаниеТипа.Регистр Тогда
|
||||
ТипОбъекта = Тип(СтрШаблон("%1НаборЗаписей.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
|
||||
КонецЕсли;
|
||||
|
||||
Настройки.ТипыПерехватываемыхОбъектов.Вставить(ТипОбъекта, Истина);
|
||||
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Описание параметров перехвата объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// * Объект - Произвольный - Объект
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание параметров перехвата объекта:
|
||||
// * Объект - Произвольный
|
||||
// * Методы - Структура -
|
||||
Функция ОписаниеПараметровПерехватаОбъекта(Объект) Экспорт
|
||||
|
||||
Возврат Новый Структура("Объект, Методы", Объект, Новый Структура);
|
||||
@ -298,17 +350,23 @@
|
||||
|
||||
Функция СтатистикаВызовов(Знач Объект, ИмяМетода) Экспорт
|
||||
|
||||
Если ЭтоОбъект(Объект) Тогда
|
||||
Объект = Объект.Ссылка;
|
||||
Вызовы = Настройки().Статистика.Вызовы;
|
||||
|
||||
СтатистикаВызововМетода = Новый Массив();
|
||||
Статистика = Вызовы[Объект];
|
||||
ТипОбъекта = ТипЗнч(Объект);
|
||||
|
||||
Если Статистика <> Неопределено И Статистика.Свойство(ИмяМетода) Тогда
|
||||
СтатистикаВызововМетода = Статистика[ИмяМетода];
|
||||
ИначеЕсли Статистика = Неопределено И ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипОбъекта) Тогда
|
||||
СтатистикаВызововМетода = СтатистикаВызововПоСсылке(Вызовы, Объект, ИмяМетода);
|
||||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоТипМенеджера(ТипОбъекта) Тогда
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
СтатистикаВызововМетода = СтатистикаВызововПоМенеджеру(Вызовы, Объект, ИмяМетода);
|
||||
#КонецЕсли
|
||||
КонецЕсли;
|
||||
|
||||
Статистика = Настройки().Статистика.Вызовы[Объект];
|
||||
|
||||
Если Статистика = Неопределено ИЛИ НЕ Статистика.Свойство(ИмяМетода) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Статистика[ИмяМетода];
|
||||
Возврат СтатистикаВызововМетода;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -343,35 +401,6 @@
|
||||
|
||||
#Область ОбработкаВызовов
|
||||
|
||||
// Зарегистрировать вызов метода.
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - см. ИнициализироватьНастройки
|
||||
// ПараметрыПерехвата - см. ДанныеПерехвата
|
||||
// СтруктураВызоваМетода - см. СтруктураВызоваМетода
|
||||
Процедура ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода)
|
||||
|
||||
Объект = ПараметрыПерехвата.Объект;
|
||||
ИмяМетода = СтруктураВызоваМетода.ИмяМетода;
|
||||
Статистика = Настройки.Статистика.Вызовы[Объект];
|
||||
|
||||
Если Статистика = Неопределено Тогда
|
||||
|
||||
Статистика = Новый Структура;
|
||||
Настройки.Статистика.Вызовы.Вставить(Объект, Статистика);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Статистика.Свойство(ИмяМетода) Тогда
|
||||
|
||||
Статистика.Вставить(ИмяМетода, Новый Массив);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Статистика[ИмяМетода].Добавить(СтруктураВызоваМетода);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПерехватитьВызовМетода(ПараметрыПерехвата, СтруктураВызоваМетода, ПрерватьВыполнение)
|
||||
|
||||
Если НЕ ПараметрыПерехвата.Методы.Свойство(СтруктураВызоваМетода.ИмяМетода) Тогда
|
||||
@ -495,20 +524,39 @@
|
||||
|
||||
Процедура ИнициализироватьНастройки() Экспорт
|
||||
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), НовыеНастройки(), Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Новые настройки.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Настройки:
|
||||
// * Метод - Строка
|
||||
// * Реакция - Строка
|
||||
// * Перехват - Соответствие Из Произвольный
|
||||
// * ТипыПерехватываемыхОбъектов - Соответствие Из Тип
|
||||
// * Режим - Строка - см. РежимыРаботы
|
||||
// * Статистика - Структура - Статистика вызовов:
|
||||
// * Вызовы - Соответствие из Структура
|
||||
// * ПараметрыОбучения - Структура
|
||||
// * ПараметрыПроверки - Структура
|
||||
Функция НовыеНастройки()
|
||||
|
||||
Настройки = Новый Структура;
|
||||
Настройки.Вставить("Метод");
|
||||
Настройки.Вставить("Реакция");
|
||||
Настройки.Вставить("Настройки");
|
||||
Настройки.Вставить("Перехват", Новый Соответствие);
|
||||
Настройки.Вставить("ТипыПерехватываемыхОбъектов", Новый Соответствие);
|
||||
Настройки.Вставить("Режим", "НеУстановлен");
|
||||
Настройки.Вставить("Статистика", Новый Структура("Вызовы", Новый Соответствие));
|
||||
|
||||
Настройки.Вставить("ПараметрыОбучения", Неопределено);
|
||||
Настройки.Вставить("ПараметрыПроверки", Неопределено);
|
||||
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Настройки, Истина);
|
||||
Возврат Настройки;
|
||||
|
||||
КонецПроцедуры
|
||||
КонецФункции
|
||||
|
||||
Процедура ОчиститьНастройки() Экспорт
|
||||
|
||||
@ -539,39 +587,6 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция ЭтоСсылка(Значение) Экспорт
|
||||
|
||||
Если Значение <> Неопределено Тогда
|
||||
|
||||
ТипыСсылок = ЮТОбщий.ОписаниеТиповЛюбаяСсылка();
|
||||
Результат = ТипыСсылок.СодержитТип(ТипЗнч(Значение));
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоОбъект(Значение) Экспорт
|
||||
|
||||
Если Значение <> Неопределено И ЮТОбщий.ПеременнаяСодержитСвойство(Значение, "Ссылка") Тогда
|
||||
|
||||
Возврат ЭтоСсылка(Значение.Ссылка);
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УсловиеИзПараметров(Параметры) Экспорт
|
||||
|
||||
Если Параметры = Неопределено Тогда
|
||||
@ -608,4 +623,84 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область Статистика
|
||||
|
||||
// Зарегистрировать вызов метода.
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - см. ИнициализироватьНастройки
|
||||
// ПараметрыПерехвата - см. ДанныеПерехвата
|
||||
// СтруктураВызоваМетода - см. СтруктураВызоваМетода
|
||||
Процедура ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода)
|
||||
|
||||
Объект = СтруктураВызоваМетода.Объект;
|
||||
ИмяМетода = СтруктураВызоваМетода.ИмяМетода;
|
||||
Статистика = Настройки.Статистика.Вызовы[Объект];
|
||||
|
||||
Если Статистика = Неопределено Тогда
|
||||
|
||||
Статистика = Новый Структура;
|
||||
Настройки.Статистика.Вызовы.Вставить(Объект, Статистика);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Статистика.Свойство(ИмяМетода) Тогда
|
||||
|
||||
Статистика.Вставить(ИмяМетода, Новый Массив);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Статистика[ИмяМетода].Добавить(СтруктураВызоваМетода);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СтатистикаВызововПоСсылке(Вызовы, Ссылка, ИмяМетода)
|
||||
|
||||
СтатистикаВызововМетода = Новый Массив();
|
||||
ТипОбъекта = ЮТТипыДанныхСлужебный.ТипОбъектаСсылки(ТипЗнч(Ссылка));
|
||||
|
||||
Для Каждого Элемент Из Вызовы Цикл
|
||||
ПодходящийЭлемент = ТипЗнч(Элемент.Ключ) = ТипОбъекта
|
||||
И Элемент.Ключ.Ссылка = Ссылка
|
||||
И Элемент.Значение.Свойство(ИмяМетода);
|
||||
Если ПодходящийЭлемент Тогда
|
||||
ЮТОбщий.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтатистикаВызововМетода;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Функция СтатистикаВызововПоМенеджеру(Вызовы, Менеджер, ИмяМетода)
|
||||
|
||||
СтатистикаВызововМетода = Новый Массив();
|
||||
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);
|
||||
|
||||
Если Описание = Неопределено Тогда
|
||||
Возврат СтатистикаВызововМетода;
|
||||
КонецЕсли;
|
||||
|
||||
Если Описание.ОписаниеТипа.Ссылочный Или Описание.ОписаниеТипа.ОбработкаОтчет Тогда
|
||||
ТипОбъекта = Тип(СтрШаблон("%1Объект.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
|
||||
ИначеЕсли Описание.ОписаниеТипа.Регистр Тогда
|
||||
ТипОбъекта = Тип(СтрШаблон("%1НаборЗаписей.%2", Описание.ОписаниеТипа.Имя, Описание.Имя));
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Элемент Из Вызовы Цикл
|
||||
ПодходящийЭлемент = ТипЗнч(Элемент.Ключ) = ТипОбъекта
|
||||
И Элемент.Значение.Свойство(ИмяМетода);
|
||||
Если ПодходящийЭлемент Тогда
|
||||
ЮТОбщий.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтатистикаВызововМетода;
|
||||
|
||||
КонецФункции
|
||||
#КонецЕсли
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -128,7 +128,9 @@
|
||||
Возврат ОписаниеОбъект;
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
|
||||
Если ОписаниеТипа.СтандартныеРеквизиты Тогда
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеТипа.Измерения Тогда
|
||||
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты, Истина);
|
||||
@ -173,6 +175,9 @@
|
||||
// * Конструктор - Строка
|
||||
// * Группы - Булево
|
||||
// * Ссылочный - Булево
|
||||
// * Регистр - Булево
|
||||
// * ОбработкаОтчет - Булево
|
||||
// * СтандартныеРеквизиты - Булево
|
||||
// * Реквизиты - Булево
|
||||
// * Измерения - Булево
|
||||
// * Ресурсы - Булево
|
||||
@ -188,7 +193,12 @@
|
||||
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
|
||||
Типы = ЮТМетаданные.ТипыМетаданных();
|
||||
|
||||
Возврат Типы[ЧастиИмени[0]];
|
||||
Если Типы.Свойство(ЧастиИмени[0]) Тогда
|
||||
Возврат Типы[ЧастиИмени[0]];
|
||||
Иначе
|
||||
Сообщение = СтрШаблон("Получение описания для '%1' не поддерживается, либо не реализовано", ЧастиИмени[0]);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -212,6 +222,9 @@
|
||||
Описание.Вставить("Ресурсы", Запись.Ресурсы = "+");
|
||||
Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+");
|
||||
Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+");
|
||||
Описание.Вставить("СтандартныеРеквизиты", Запись.СтандартныеРеквизиты = "+");
|
||||
Описание.Вставить("ОбработкаОтчет", Запись.Имя = "Обработка" ИЛИ Запись.Имя = "Отчет");
|
||||
Описание.Вставить("Регистр", СтрНачинаетсяС(Запись.Имя, "Регистр"));
|
||||
|
||||
ТипыМетаданных.Вставить(Описание.Имя, Описание);
|
||||
ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание);
|
||||
|
@ -361,12 +361,15 @@
|
||||
//
|
||||
Функция СкопироватьМассив(МассивИсточник) Экспорт
|
||||
|
||||
МассивРезультат = Новый Массив;
|
||||
Если НЕ ЗначениеЗаполнено(МассивИсточник) Тогда
|
||||
Возврат Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Элемент Из МассивИсточник Цикл
|
||||
|
||||
МассивРезультат.Добавить(СкопироватьРекурсивно(Элемент));
|
||||
|
||||
Размер = МассивИсточник.Количество();
|
||||
МассивРезультат = Новый Массив(Размер);
|
||||
|
||||
Для Инд = 0 По Размер - 1 Цикл
|
||||
МассивРезультат[Инд] = СкопироватьРекурсивно(МассивИсточник[Инд]);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивРезультат;
|
||||
|
@ -328,9 +328,8 @@
|
||||
Функция КлючЗаписи(Объект)
|
||||
|
||||
ТипЗначения = ТипЗнч(Объект);
|
||||
ПредставлениеТипа = ЮТОбщий.ПредставлениеТипа(ТипЗначения);
|
||||
|
||||
Если СтрНайти(ПредставлениеТипа, "Object.") Тогда
|
||||
Если ЮТТипыДанныхСлужебный.ЭтоТипОбъекта(ТипЗначения) Тогда
|
||||
|
||||
Возврат Объект.Ссылка;
|
||||
|
||||
|
@ -23,14 +23,7 @@
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
|
||||
#Иначе
|
||||
//@skip-check Undefined variable
|
||||
ТипXML = СериализаторXDTO.XMLТип(Тип);
|
||||
|
||||
Если ТипXML = Неопределено Тогда
|
||||
Возврат Строка(Тип);
|
||||
Иначе
|
||||
Возврат ТипXML.ИмяТипа;
|
||||
КонецЕсли;
|
||||
Возврат ИдентификаторТипа(Тип);
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
@ -39,18 +32,20 @@
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
|
||||
#ИначеЕсли Сервер Тогда
|
||||
Возврат ЗначениеВСтрокуВнутр(Тип); // Не все серверные типы сериализуются через СериализаторXDTO
|
||||
#Иначе
|
||||
Попытка
|
||||
Запись = Новый ЗаписьJSON();
|
||||
Запись.УстановитьСтроку();
|
||||
СериализаторXDTO.ЗаписатьJSON(Запись, Тип);
|
||||
Возврат Запись.Закрыть();
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(СтрШаблон("Не удалось определить идентификатор типа для `%1`", Тип));
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
ЮТПроверкиСлужебный.ПроверитьТипПараметра(Тип, Тип("Тип"), "ЮТТипыДанныхСлужебный.ИдентификаторТипа", "Тип");
|
||||
|
||||
Если Тип = Тип("Дата") Тогда
|
||||
ИдентификаторТипа = "date";
|
||||
ИначеЕсли Тип = Тип("Число") Тогда
|
||||
ИдентификаторТипа = "number";
|
||||
Иначе
|
||||
//@skip-check Undefined variable
|
||||
ИмяТипаСПространствомИмен = СериализаторXDTO.ЗаписатьXDTO(Тип).ЛексическоеЗначение;
|
||||
ИдентификаторТипа = СтрРазделить(ИмяТипаСПространствомИмен, "}")[1];
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ИдентификаторТипа;
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
@ -59,30 +54,8 @@
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
|
||||
#ИначеЕсли Сервер Тогда
|
||||
Если СтрНачинаетсяС(ИдентификаторТипа, "{") Тогда
|
||||
Возврат ЗначениеИзСтрокиВнутр(ИдентификаторТипа);
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Возврат ТипПоПредставлению(ИдентификаторТипа);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипПоПредставлению(ПредставлениеТипа) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ТипПоПредставлению");
|
||||
#Иначе
|
||||
Чтение = Новый ЧтениеJSON();
|
||||
Чтение.УстановитьСтроку(ПредставлениеТипа);
|
||||
Результат = СериализаторXDTO.ПрочитатьJSON(Чтение, Тип("Тип"));
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
ВызватьИсключение СтрШаблон("Не удалось определить тип по представлению `%1`", ПредставлениеТипа);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
Возврат Тип(ИдентификаторТипа);
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
@ -93,12 +66,51 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоМенеджерЗаписи(Тип) Экспорт
|
||||
Функция ЭтоМенеджерЗаписи(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ЮТОбщий.ПредставлениеТипа(Тип);
|
||||
СтрокаПоиска = ?(ЮТЛокальСлужебный.ЭтоАнглийскаяЛокальПлатформы(), "Record manager:", "менеджер записи:");
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНайти(ПредставлениеТипа, "RecordManager.") > 0;
|
||||
|
||||
Возврат СтрНайти(ПредставлениеТипа, СтрокаПоиска);
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипОбъекта(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНайти(ПредставлениеТипа, "Object.") > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипНабораЗаписей(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНайти(ПредставлениеТипа, "RecordSet.") > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипОбъектаОбработкиОтчета(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНачинаетсяС(ПредставлениеТипа, "DataProcessorObject.") Или СтрНачинаетсяС(ПредставлениеТипа, "ReportObject.");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипМенеджера(ТипЗначения) Экспорт
|
||||
|
||||
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
|
||||
Возврат СтрНайти(ПредставлениеТипа, "Manager.") > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипОбъектаСсылки(ТипСсылки) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ТипОбъектаСсылки");
|
||||
#Иначе
|
||||
ТипXML = СериализаторXDTO.XMLТип(ТипСсылки);
|
||||
ИмяТипа = СтрЗаменить(ТипXML.ИмяТипа, "Ref.", "Object.");
|
||||
|
||||
Возврат СериализаторXDTO.ИзXMLТипа(ИмяТипа, ТипXML.URIПространстваИмен);
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -1828,13 +1828,13 @@
|
||||
#Область Предикаты
|
||||
|
||||
Процедура ПроверитьПредикат(Выражение, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения = Неопределено)
|
||||
|
||||
|
||||
Контекст = Контекст();
|
||||
Предикат = ЮТФабрика.ВыражениеПредиката(Выражение, Контекст.ОбъектПроверки.ИмяСвойства, ОжидаемоеЗначение);
|
||||
|
||||
ПолноеОписаниеПроверки = ЮТОбщий.ДобавитьСтроку(Контекст.ПрефиксОшибки, ОписаниеПроверки, " ");
|
||||
|
||||
ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки);
|
||||
ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки, , Контекст.ОбъектПроверки.Представление);
|
||||
Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Контекст.ОбъектПроверки.Значение, Предикат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
|
||||
ОбработатьРезультатПроверкиПредиката(Результат);
|
||||
|
@ -1,17 +1,19 @@
|
||||
# Описание свойств метаданных
|
||||
|
||||
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти |
|
||||
|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|
|
||||
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + |
|
||||
| Документ | Документы | СоздатьДокумент | | + | + | | | | + |
|
||||
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + |
|
||||
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + |
|
||||
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + |
|
||||
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + |
|
||||
| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | |
|
||||
| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | |
|
||||
| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | |
|
||||
| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | |
|
||||
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + |
|
||||
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + |
|
||||
| Перечисление | Перечисления | | | + | | | | | |
|
||||
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | СтандартныеРеквизиты |
|
||||
|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|----------------------|
|
||||
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | + |
|
||||
| Документ | Документы | СоздатьДокумент | | + | + | | | | + | + |
|
||||
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | + |
|
||||
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + |
|
||||
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + |
|
||||
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + |
|
||||
| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | | + |
|
||||
| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | | + |
|
||||
| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | | + |
|
||||
| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | | + |
|
||||
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | + |
|
||||
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | + |
|
||||
| Перечисление | Перечисления | | | + | | | | | | + |
|
||||
| Отчет | Отчеты | | | | + | | | | + | |
|
||||
| Обработка | Обработки | | | | + | | | | + | |
|
||||
|
@ -13,17 +13,7 @@
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ВстречаОбъект.Начало = ОбрабатываемыйЭлемент.Начало;
|
||||
ВстречаОбъект.Окончание = ОбрабатываемыйЭлемент.Конец;
|
||||
|
||||
Пользователь = ОбрабатываемыйЭлемент.Владелец;
|
||||
Если Пользователь = Неопределено Тогда
|
||||
Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
|
||||
КонецЕсли;
|
||||
|
||||
Владелец = Справочники.Пользователи.НайтиПоКоду(Пользователь);
|
||||
ВстречаОбъект.Владелец = Владелец;
|
||||
|
||||
ЗаполнитьОбъект(ВстречаОбъект, ОбрабатываемыйЭлемент);
|
||||
ВстречаОбъект.Записать();
|
||||
|
||||
КонецЦикла;
|
||||
@ -41,3 +31,23 @@
|
||||
Возврат Успешно;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьОбъект(Объект, ОбрабатываемыйЭлемент)
|
||||
|
||||
Объект.Начало = ОбрабатываемыйЭлемент.Начало;
|
||||
Объект.Окончание = ОбрабатываемыйЭлемент.Конец;
|
||||
|
||||
Пользователь = ОбрабатываемыйЭлемент.Владелец;
|
||||
Если Пользователь = Неопределено Тогда
|
||||
Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
|
||||
КонецЕсли;
|
||||
|
||||
Владелец = Справочники.Пользователи.НайтиПоКоду(Пользователь.Имя);
|
||||
|
||||
Если Владелец.Пустая() Тогда
|
||||
Владелец = Справочники.Пользователи.ПустойПользователь;
|
||||
КонецЕсли;
|
||||
|
||||
Объект.Владелец = Владелец;
|
||||
|
||||
КонецПроцедуры
|
||||
|
@ -23,7 +23,7 @@
|
||||
<name>PredefinedDataName</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>Predefined</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>Ref</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"/>
|
||||
@ -53,7 +53,7 @@
|
||||
<name>DeletionMark</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"/>
|
||||
@ -63,7 +63,7 @@
|
||||
<name>IsFolder</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"/>
|
||||
@ -75,7 +75,7 @@
|
||||
<fillFromFillingValue>true</fillFromFillingValue>
|
||||
<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"/>
|
||||
@ -86,7 +86,7 @@
|
||||
<comment></comment>
|
||||
<fillFromFillingValue>true</fillFromFillingValue>
|
||||
<fillValue xsi:type="core:UndefinedValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<mask></mask>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
@ -101,7 +101,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"/>
|
||||
@ -111,14 +111,14 @@
|
||||
<name>Code</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"/>
|
||||
</standardAttributes>
|
||||
<createOnInput>Use</createOnInput>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<fullTextSearch>DontUse</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
<levelCount>2</levelCount>
|
||||
<foldersOnTop>true</foldersOnTop>
|
||||
@ -129,6 +129,15 @@
|
||||
<checkUnique>true</checkUnique>
|
||||
<autonumbering>true</autonumbering>
|
||||
<defaultPresentation>AsDescription</defaultPresentation>
|
||||
<predefined>
|
||||
<items id="bf9313f1-f2b0-4fb4-a97a-aabef9e25a2e">
|
||||
<name>ПустойПользователь</name>
|
||||
<description>Пустой пользователь</description>
|
||||
<code xsi:type="core:StringValue">
|
||||
<value>0000000000000000000000001</value>
|
||||
</code>
|
||||
</items>
|
||||
</predefined>
|
||||
<editType>InDialog</editType>
|
||||
<choiceMode>BothWays</choiceMode>
|
||||
<defaultObjectForm>Catalog.Пользователи.Form.ФормаЭлемента</defaultObjectForm>
|
||||
|
@ -0,0 +1,9 @@
|
||||
Процедура ЗаполненоКорректно(НаборЗаписей) Экспорт
|
||||
|
||||
Для Каждого Строка Из НаборЗаписей Цикл
|
||||
Если Строка.Цена < 0 Тогда
|
||||
ВызватьИсключение "Цена товара не может быть отрицательной";
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
@ -0,0 +1,19 @@
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
Процедура ПередЗаписью(Отказ, Замещение)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РегистрыСведений.ЦеныТоваров.ЗаполненоКорректно(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
|
||||
|
||||
РегистрыСведений.ЦеныТоваров.ЗаполненоКорректно(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
@ -31,3 +31,17 @@
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&Вместо("ЗаполнитьОбъект")
|
||||
Процедура Расш1_ЗаполнитьОбъект(Объект, ОбрабатываемыйЭлемент) Экспорт
|
||||
|
||||
ПараметрыМетода = Мокито.МассивПараметров(Объект, ОбрабатываемыйЭлемент);
|
||||
|
||||
ПрерватьВыполнение = Ложь;
|
||||
Мокито.АнализВызова(Справочники.Встречи, "ЗаполнитьОбъект", ПараметрыМетода, ПрерватьВыполнение);
|
||||
|
||||
Если НЕ ПрерватьВыполнение Тогда
|
||||
ПродолжитьВызов(Объект, ОбрабатываемыйЭлемент);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
@ -31,3 +31,17 @@
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&Вместо("ПередЗаписью")
|
||||
Процедура Расш1_ПередЗаписью(Отказ)
|
||||
|
||||
ПараметрыМетода = Мокито.МассивПараметров(Отказ);
|
||||
|
||||
ПрерватьВыполнение = Ложь;
|
||||
Мокито.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение);
|
||||
|
||||
Если НЕ ПрерватьВыполнение Тогда
|
||||
ПродолжитьВызов(Отказ);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
@ -20,14 +20,20 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
ЮТТесты.ВТранзакции()
|
||||
.ДобавитьТест("Обучение")
|
||||
.ДобавитьТест("Обучение_ЦепочкаВызовов")
|
||||
.ДобавитьТест("Проверить")
|
||||
.ДобавитьТест("Прогон_НакоплениеСтатистики").СПараметрами(Истина).СПараметрами(Ложь)
|
||||
.ДобавитьСерверныйТест("МокированиеМетодовСсылочныхОбъектов").ВТранзакции()
|
||||
.ДобавитьТест("ОшибкаПодбораРеакции")
|
||||
.ДобавитьТест("ИспользованиеПредикатов")
|
||||
.ДобавитьСерверныйТест("МокированиеМетодовСсылочныхОбъектов")
|
||||
.ДобавитьСерверныйТест("МокированиеЧерезМенеджер")
|
||||
.ДобавитьСерверныйТест("МокированиеЧерезСсылку")
|
||||
.ДобавитьСерверныйТест("МокированиеЧерезОбъект")
|
||||
.ДобавитьСерверныйТест("МокированиеМетодовРегистра")
|
||||
.ДобавитьСерверныйТест("МокированиеМетодовОбработки")
|
||||
.ДобавитьТест("МокированиеЦепочкиВызовов")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -161,7 +167,7 @@
|
||||
.Когда(СправочникОбъект.ПечатнаяФормаШтрихкода(Неопределено)).Вернуть(Результат)
|
||||
.Прогон();
|
||||
|
||||
ЮТест.ОжидаетЧто(Справочник.ПолучитьОбъект().ПечатнаяФормаШтрихкода(Неопределено), Описание)
|
||||
ЮТест.ОжидаетЧто(СправочникОбъект.ПечатнаяФормаШтрихкода(Неопределено), Описание)
|
||||
.Равно(Результат);
|
||||
|
||||
Мокито.Проверить(Справочник).КоличествоВызовов("ПечатнаяФормаШтрихкода").Заполнено(Описание);
|
||||
@ -197,6 +203,171 @@
|
||||
.Равно(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура МокированиеЧерезМенеджер() Экспорт
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ОбменДаннымиЗагрузка = Истина;
|
||||
|
||||
Запись = Новый Структура("Встреча, Начало, Конец, Владелец");
|
||||
Запись.Встреча = ЮТест.Данные().СоздатьЭлемент(Справочники.Встречи, , , ПараметрыЗаписи);
|
||||
|
||||
Мокито.Обучение(Справочники.Встречи)
|
||||
.Наблюдать("СохранитьИзменения")
|
||||
.Наблюдать("ЗаполнитьОбъект")
|
||||
.Наблюдать("ПередЗаписью")
|
||||
.Прогон();
|
||||
|
||||
ЮТест.ОжидаетЧто(МокитоСлужебный.Настройки()) // Проверка сформированных настроек
|
||||
.Свойство("Перехват").ИмеетСвойство(Справочники.Встречи)
|
||||
.Свойство("ТипыПерехватываемыхОбъектов")
|
||||
.ИмеетДлину(2);
|
||||
|
||||
Справочники.Встречи.СохранитьИзменения(ЮТОбщий.ЗначениеВМассиве(Запись));
|
||||
|
||||
Мокито.Проверить(Запись.Встреча, "Проверка через ссылку")
|
||||
.КоличествоВызовов("ПередЗаписью").Равно(1)
|
||||
;
|
||||
|
||||
Мокито.Проверить(Справочники.Встречи, "Проверка через менеджер")
|
||||
.КоличествоВызовов("ЗаполнитьОбъект").Равно(1)
|
||||
.КоличествоВызовов("ПередЗаписью").Равно(1)
|
||||
;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура МокированиеЧерезСсылку() Экспорт
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ОбменДаннымиЗагрузка = Истина;
|
||||
Встреча = ЮТест.Данные().КонструкторОбъекта(Справочники.Встречи)
|
||||
.ФикцияОбязательныхПолей()
|
||||
.Записать();
|
||||
|
||||
Мокито.Обучение(Встреча)
|
||||
.Когда("УказанКорректныйПериод")
|
||||
.Вернуть(Истина)
|
||||
.Когда("УказанКорректныйПериод")
|
||||
.Вернуть(Ложь)
|
||||
.Прогон();
|
||||
|
||||
Объект = Встреча.ПолучитьОбъект();
|
||||
|
||||
ЮТест.ОжидаетЧто(Объект.ПроверитьЗаполнение(), "Первая проверка")
|
||||
.ЭтоИстина()
|
||||
.Что(Объект.ПроверитьЗаполнение(), "Вторая проверка")
|
||||
.ЭтоЛожь()
|
||||
;
|
||||
|
||||
Мокито.Проверить(Встреча)
|
||||
.КоличествоВызовов("УказанКорректныйПериод").Равно(2)
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура МокированиеЧерезОбъект() Экспорт
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ОбменДаннымиЗагрузка = Истина;
|
||||
Встреча = ЮТест.Данные().КонструкторОбъекта(Справочники.Встречи)
|
||||
.ФикцияОбязательныхПолей()
|
||||
.Записать();
|
||||
|
||||
Объект1 = Встреча.ПолучитьОбъект();
|
||||
Объект2 = Встреча.ПолучитьОбъект();
|
||||
|
||||
Мокито.Обучение(Объект1)
|
||||
.Когда("УказанКорректныйПериод")
|
||||
.Вернуть(Истина)
|
||||
.Когда("УказанКорректныйПериод")
|
||||
.Вернуть(Ложь)
|
||||
.Обучение(Объект2)
|
||||
.Когда("УказанКорректныйПериод")
|
||||
.Вернуть(Ложь)
|
||||
.Прогон();
|
||||
|
||||
ЮТест.ОжидаетЧто(Объект1.ПроверитьЗаполнение(), "Первая проверка")
|
||||
.ЭтоИстина()
|
||||
.Что(Объект1.ПроверитьЗаполнение(), "Вторая проверка")
|
||||
.ЭтоЛожь()
|
||||
.Что(Объект2.ПроверитьЗаполнение(), "Проверка второго объекта")
|
||||
.ЭтоЛожь()
|
||||
;
|
||||
|
||||
Мокито.Проверить(Объект1)
|
||||
.КоличествоВызовов("УказанКорректныйПериод").Равно(2);
|
||||
Мокито.Проверить(Объект2)
|
||||
.КоличествоВызовов("УказанКорректныйПериод").Равно(1);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура МокированиеМетодовРегистра() Экспорт
|
||||
|
||||
Мокито.Обучение(РегистрыСведений.ЦеныТоваров)
|
||||
.Наблюдать("ОбработкаПроверкиЗаполнения")
|
||||
.Когда("ЗаполненоКорректно")
|
||||
.Пропустить()
|
||||
.Когда("ЗаполненоКорректно")
|
||||
.ВыброситьИсключение("Цена товара не может быть отрицательной")
|
||||
.Прогон()
|
||||
;
|
||||
|
||||
НаборЗаписей = РегистрыСведений.ЦеныТоваров.СоздатьНаборЗаписей();
|
||||
ЮТест.ОжидаетЧто(НаборЗаписей)
|
||||
.Метод("ПроверитьЗаполнение")
|
||||
.НеВыбрасываетИсключение()
|
||||
.ВыбрасываетИсключение("Цена товара не может быть отрицательной");
|
||||
|
||||
Мокито.Проверить(РегистрыСведений.ЦеныТоваров, "Через менеджер")
|
||||
.КоличествоВызовов("ЗаполненоКорректно").Равно(2)
|
||||
.КоличествоВызовов("ОбработкаПроверкиЗаполнения").Равно(2);
|
||||
|
||||
Мокито.Проверить(НаборЗаписей, "Через набор")
|
||||
.КоличествоВызовов("ЗаполненоКорректно").Равно(0)
|
||||
.КоличествоВызовов("ОбработкаПроверкиЗаполнения").Равно(2);
|
||||
|
||||
// Через набор записей
|
||||
Мокито.Сбросить();
|
||||
НаборЗаписей2 = РегистрыСведений.ЦеныТоваров.СоздатьНаборЗаписей();
|
||||
|
||||
Мокито.Обучение(НаборЗаписей)
|
||||
.Наблюдать("ПередЗаписью")
|
||||
.Прогон();
|
||||
|
||||
НаборЗаписей.Записать();
|
||||
НаборЗаписей2.Записать();
|
||||
|
||||
Мокито.Проверить(НаборЗаписей, "Обучение через набор, проверка первого набора")
|
||||
.КоличествоВызовов("ПередЗаписью").Равно(1);
|
||||
Мокито.Проверить(НаборЗаписей2, "Обучение через набор, проверка второго набора")
|
||||
.КоличествоВызовов("ПередЗаписью").Равно(0);
|
||||
Мокито.Проверить(РегистрыСведений.ЦеныТоваров, "Обучение через набор, проверка через менеджер")
|
||||
.КоличествоВызовов("ПередЗаписью").Равно(1);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура МокированиеМетодовОбработки() Экспорт
|
||||
|
||||
Обработка = Обработки.ПроведениеДокументов.Создать();
|
||||
Обработка.ЗаполнитьСписок();
|
||||
ЮТест.ОжидаетЧто(Обработка.СписокДокументов)
|
||||
.Заполнено();
|
||||
|
||||
Мокито.Обучение(Обработки.ПроведениеДокументов)
|
||||
.Когда("ЗаполнитьСписок").Пропустить()
|
||||
.Прогон();
|
||||
|
||||
Обработка = Обработки.ПроведениеДокументов.Создать();
|
||||
|
||||
Обработка.ЗаполнитьСписок();
|
||||
|
||||
ЮТест.ОжидаетЧто(Обработка.СписокДокументов)
|
||||
.НеЗаполнено("Не сработал перехват события настроенного через менеджер");
|
||||
|
||||
Мокито.Проверить(Обработка)
|
||||
.КоличествоВызовов("ЗаполнитьСписок").Равно(1);
|
||||
Мокито.Проверить(Обработки.ПроведениеДокументов)
|
||||
.КоличествоВызовов("ЗаполнитьСписок").Равно(1);
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецЕсли
|
||||
|
||||
Процедура Прогон_НакоплениеСтатистики(НакоплениеСтатистики) Экспорт
|
||||
@ -303,6 +474,25 @@
|
||||
.КоличествоВызовов("ВыполнитьЗапрос", Мокито.МассивПараметров(ЛюбойПараметр, Новый Структура("Флаг", 2))).Равно(1)
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура МокированиеЦепочкиВызовов() Экспорт
|
||||
|
||||
Мокито.Обучение(Интеграция)
|
||||
.Когда("ВыполнитьЗапрос")
|
||||
.Вернуть(1)
|
||||
.Вернуть(2)
|
||||
.Вернуть(3)
|
||||
.Прогон();
|
||||
|
||||
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(""))
|
||||
.Равно(1);
|
||||
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(""))
|
||||
.Равно(2);
|
||||
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(""))
|
||||
.Равно(3);
|
||||
ЮТест.ОжидаетЧто(Интеграция.ВыполнитьЗапрос(""))
|
||||
.Равно(3);
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -22,6 +22,7 @@
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТест("ВыброситьИсключение")
|
||||
.ДобавитьСерверныйТест("ФормированиеТипыПерехватываемыхОбъектов")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -45,4 +46,39 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Если Сервер Тогда
|
||||
Процедура ФормированиеТипыПерехватываемыхОбъектов() Экспорт
|
||||
|
||||
Мокито.Обучение(Обработки.АдминистративныйСервис);
|
||||
|
||||
ЮТест.ОжидаетЧто(МокитоСлужебный.Настройки(), "Обработка менеджер") // Проверка сформированных настроек
|
||||
.Свойство("Перехват").ИмеетСвойство(Обработки.АдминистративныйСервис)
|
||||
.Свойство("ТипыПерехватываемыхОбъектов")
|
||||
.ИмеетДлину(2)
|
||||
.ИмеетСвойство(Тип("ОбработкаМенеджер.АдминистративныйСервис"))
|
||||
.ИмеетСвойство(Тип("ОбработкаОбъект.АдминистративныйСервис"));
|
||||
|
||||
Мокито.Сбросить();
|
||||
Мокито.Обучение(Справочники.Банки.ПустаяСсылка());
|
||||
|
||||
ЮТест.ОжидаетЧто(МокитоСлужебный.Настройки(), "Ссылка") // Проверка сформированных настроек
|
||||
.Свойство("Перехват").ИмеетСвойство(Справочники.Банки.ПустаяСсылка())
|
||||
.Свойство("ТипыПерехватываемыхОбъектов")
|
||||
.ИмеетДлину(2)
|
||||
.ИмеетСвойство(Тип("СправочникСсылка.Банки"))
|
||||
.ИмеетСвойство(Тип("СправочникОбъект.Банки"));
|
||||
|
||||
Мокито.Сбросить();
|
||||
Мокито.Обучение(РегистрыНакопления.Взаиморасчеты);
|
||||
|
||||
ЮТест.ОжидаетЧто(МокитоСлужебный.Настройки(), "Регистр") // Проверка сформированных настроек
|
||||
.Свойство("Перехват").ИмеетСвойство(РегистрыНакопления.Взаиморасчеты)
|
||||
.Свойство("ТипыПерехватываемыхОбъектов")
|
||||
.ИмеетДлину(2)
|
||||
.ИмеетСвойство(Тип("РегистрНакопленияНаборЗаписей.Взаиморасчеты"))
|
||||
.ИмеетСвойство(Тип("РегистрНакопленияМенеджер.Взаиморасчеты"));
|
||||
|
||||
КонецПроцедуры
|
||||
#КонецЕсли
|
||||
|
||||
#КонецОбласти
|
||||
|
48
tests/src/CommonModules/ОМ_МокитоСлужебный/Module.bsl
Normal file
48
tests/src/CommonModules/ОМ_МокитоСлужебный/Module.bsl
Normal file
@ -0,0 +1,48 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 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,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9c6cbdc6-eb05-47c3-9aac-0f5ec59328b5">
|
||||
<name>ОМ_МокитоСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>О м мокито служебный</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
</mdclass:CommonModule>
|
@ -23,6 +23,7 @@
|
||||
ЮТТесты.ВТранзакции().УдалениеТестовыхДанных()
|
||||
.ДобавитьТест("ЗаполнитьСправочник")
|
||||
.ДобавитьТест("ЗаполнитьДокумент")
|
||||
.ДобавитьТест("СоздатьЗаписьРегистраСведений")
|
||||
.ДобавитьТест("Фикция")
|
||||
.ДобавитьТест("Фикция_Типизированная")
|
||||
.ДобавитьТест("ФикцияОбязательныхПолей")
|
||||
@ -122,6 +123,20 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СоздатьЗаписьРегистраСведений() Экспорт
|
||||
|
||||
Результат = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
|
||||
.Фикция("Валюта")
|
||||
.Фикция("Курс")
|
||||
.Установить("Период", ТекущаяДата())
|
||||
.Записать();
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип(Тип("РегистрСведенийКлючЗаписи.КурсыВалют"))
|
||||
.Заполнено();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фикция() Экспорт
|
||||
|
||||
Поставщик = Ютест.Данные().СоздатьЭлемент("Справочники.Контрагенты");
|
||||
|
@ -39,7 +39,25 @@
|
||||
.ДобавитьТест("ЭтоКоллекцияПримитивныхТипов")
|
||||
.СПараметрами(ЮТОбщий.ЗначениеВМассиве(Тип("Строка"), Тип("Дата")), Истина)
|
||||
.СПараметрами(ЮТОбщий.ЗначениеВМассиве(Тип("Строка"), Тип("Дата"), Тип("ПеречислениеСсылка.PushУведомления")), Ложь)
|
||||
|
||||
.ДобавитьТест("ИдентификаторТипа")
|
||||
.СПараметрами("Дата")
|
||||
.СПараметрами("Строка")
|
||||
.СПараметрами("Число")
|
||||
.СПараметрами("Булево")
|
||||
.СПараметрами("Неопределено")
|
||||
.СПараметрами("Null")
|
||||
.СПараметрами("УникальныйИдентификатор")
|
||||
.СПараметрами("ВидДвиженияБухгалтерии")
|
||||
.СПараметрами("HTTPЗапрос")
|
||||
.СПараметрами("ТабличныйДокумент")
|
||||
.СПараметрами("ХранилищеЗначения")
|
||||
.СПараметрами("ПеречислениеСсылка.PushУведомления")
|
||||
.ДобавитьСерверныйТест("ИдентификаторТипа")
|
||||
.СПараметрами("СправочникМенеджер.Банки")
|
||||
.СПараметрами("СхемаКомпоновкиДанных")
|
||||
.СПараметрами("HTTPСервисЗапрос")
|
||||
.СПараметрами("ОбъектXDTO")
|
||||
.СПараметрами("ОбъектМетаданных")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -48,7 +66,6 @@
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТТипыДанныхСлужебный.ЭтоСистемноеПеречисление(Тип))
|
||||
.Равно(ОжидаемыйРезультат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТипыСистемныхПеречислений() Экспорт
|
||||
@ -82,6 +99,18 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ИдентификаторТипа(ИмяТипа) Экспорт
|
||||
|
||||
Тип = Тип(ИмяТипа);
|
||||
Результат = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Тип(ИмяТипа));
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.Заполнено();
|
||||
|
||||
ЮТест.ОжидаетЧто(Тип(Результат))
|
||||
.Равно(Тип);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -5,5 +5,7 @@
|
||||
<key>ru</key>
|
||||
<value>Типы данных служебный</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
||||
|
@ -93,7 +93,7 @@
|
||||
|
||||
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
|
||||
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
|
||||
.ИмеетДлину(23);
|
||||
.ИмеетДлину(24);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -28,6 +28,7 @@
|
||||
<commonModules>CommonModule.Обр_ЮТHTTPСервисЗапрос</commonModules>
|
||||
<commonModules>CommonModule.ОМ_Мокито</commonModules>
|
||||
<commonModules>CommonModule.ОМ_МокитоОбучение</commonModules>
|
||||
<commonModules>CommonModule.ОМ_МокитоСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ОМ_Общий</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ОшибкаЗагрузкиСценариев</commonModules>
|
||||
<commonModules>CommonModule.ОМ_ЮТест</commonModules>
|
||||
@ -54,4 +55,6 @@
|
||||
<catalogs>Catalog.Встречи</catalogs>
|
||||
<catalogs>Catalog.Товары</catalogs>
|
||||
<documents>Document.ПриходТовара</documents>
|
||||
<dataProcessors>DataProcessor.ПроведениеДокументов</dataProcessors>
|
||||
<informationRegisters>InformationRegister.ЦеныТоваров</informationRegisters>
|
||||
</mdclass:Configuration>
|
||||
|
@ -0,0 +1,14 @@
|
||||
|
||||
&Вместо("ЗаполнитьСписок")
|
||||
Процедура Расш1_ЗаполнитьСписок() Экспорт
|
||||
|
||||
ПараметрыМетода = Новый Массив();;
|
||||
|
||||
ПрерватьВыполнение = Ложь;
|
||||
Мокито.АнализВызова(ЭтотОбъект, "ЗаполнитьСписок", ПараметрыМетода, ПрерватьВыполнение);
|
||||
|
||||
Если НЕ ПрерватьВыполнение Тогда
|
||||
ПродолжитьВызов();
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:DataProcessor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="b692ca7c-050c-4877-96cd-f4d80d5b76d2">
|
||||
<producedTypes>
|
||||
<objectType typeId="b29007c7-cc82-4f54-abf4-8d0d77299bdf" valueTypeId="d4153680-ac36-4513-b2e2-e6cef9372f29"/>
|
||||
<managerType typeId="d1f7a204-67bf-48b1-b4b6-b7ce9ae2a924" valueTypeId="c67f0951-a8f6-40d5-9f98-184f3cb6fef1"/>
|
||||
</producedTypes>
|
||||
<name>ПроведениеДокументов</name>
|
||||
<objectBelonging>Adopted</objectBelonging>
|
||||
<extension xsi:type="mdclassExtension:DataProcessorExtension">
|
||||
<objectModule>Extended</objectModule>
|
||||
</extension>
|
||||
</mdclass:DataProcessor>
|
14
tests/src/InformationRegisters/ЦеныТоваров/ManagerModule.bsl
Normal file
14
tests/src/InformationRegisters/ЦеныТоваров/ManagerModule.bsl
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
&Вместо("ЗаполненоКорректно")
|
||||
Процедура Расш1_ЗаполненоКорректно(НаборЗаписей) Экспорт
|
||||
|
||||
ПараметрыМетода = Мокито.МассивПараметров(НаборЗаписей);
|
||||
|
||||
ПрерватьВыполнение = Ложь;
|
||||
Мокито.АнализВызова(РегистрыСведений.ЦеныТоваров, "ЗаполненоКорректно", ПараметрыМетода, ПрерватьВыполнение);
|
||||
|
||||
Если НЕ ПрерватьВыполнение Тогда
|
||||
ПродолжитьВызов(НаборЗаписей);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
@ -0,0 +1,29 @@
|
||||
|
||||
&Вместо("ПередЗаписью")
|
||||
Процедура Расш1_ПередЗаписью(Отказ, Замещение)
|
||||
|
||||
ПараметрыМетода = Мокито.МассивПараметров(Отказ, Замещение);
|
||||
|
||||
ПрерватьВыполнение = Ложь;
|
||||
Мокито.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение);
|
||||
|
||||
Если НЕ ПрерватьВыполнение Тогда
|
||||
ПродолжитьВызов(Отказ, Замещение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&Вместо("ОбработкаПроверкиЗаполнения")
|
||||
Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
|
||||
|
||||
ПараметрыМетода = Мокито.МассивПараметров(Отказ, ПроверяемыеРеквизиты);
|
||||
|
||||
ПрерватьВыполнение = Ложь;
|
||||
Мокито.АнализВызова(ЭтотОбъект, "ОбработкаПроверкиЗаполнения", ПараметрыМетода, ПрерватьВыполнение);
|
||||
|
||||
Если НЕ ПрерватьВыполнение Тогда
|
||||
ПродолжитьВызов(Отказ, ПроверяемыеРеквизиты);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
21
tests/src/InformationRegisters/ЦеныТоваров/ЦеныТоваров.mdo
Normal file
21
tests/src/InformationRegisters/ЦеныТоваров/ЦеныТоваров.mdo
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:InformationRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="67201e35-afd7-492c-a710-4a05305e1743">
|
||||
<producedTypes>
|
||||
<selectionType typeId="26b9331d-7726-4669-bb42-9d0f2f223c2e" valueTypeId="e9f7789b-d420-49aa-8b13-4f7aed559a6c"/>
|
||||
<listType typeId="e3a39aa2-2011-4ebe-aa2e-9523ad811687" valueTypeId="c8a1cecf-9246-40de-af96-7bc9c47ba230"/>
|
||||
<managerType typeId="7ca0d09a-e919-4883-947b-81bcd2d4f50b" valueTypeId="98f4bbbd-9e9d-4776-9be5-6caf9591d6db"/>
|
||||
<recordSetType typeId="51c45869-9e3b-4b4c-be61-3e5bb46269dd" valueTypeId="10047383-6e4d-4678-b7bb-bb884301c50a"/>
|
||||
<recordKeyType typeId="b9489145-7cee-4adc-bd2e-e821324b53ab" valueTypeId="0a1b4515-7e4e-4b5f-8485-cd2cbf541868"/>
|
||||
<recordType typeId="550e9fa6-b716-4a7c-a498-f6e00ea526bf" valueTypeId="93353485-edba-49e3-aa60-3bfdbaa0166e"/>
|
||||
<recordManagerType typeId="338906f6-10ab-4964-bef6-4dc84c49bad0" valueTypeId="6c5d6182-e8bd-4ef4-8ede-9d669253fbf9"/>
|
||||
</producedTypes>
|
||||
<name>ЦеныТоваров</name>
|
||||
<objectBelonging>Adopted</objectBelonging>
|
||||
<extension xsi:type="mdclassExtension:InformationRegisterExtension">
|
||||
<informationRegisterPeriodicity>Checked</informationRegisterPeriodicity>
|
||||
<writeMode>Checked</writeMode>
|
||||
<recordSetModule>Extended</recordSetModule>
|
||||
<managerModule>Extended</managerModule>
|
||||
</extension>
|
||||
<informationRegisterPeriodicity>Day</informationRegisterPeriodicity>
|
||||
</mdclass:InformationRegister>
|
Loading…
Reference in New Issue
Block a user