diff --git a/exts/yaxunit/src/CommonModules/Мокито/Module.bsl b/exts/yaxunit/src/CommonModules/Мокито/Module.bsl
index 67235c4c..8443d6c7 100644
--- a/exts/yaxunit/src/CommonModules/Мокито/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/Мокито/Module.bsl
@@ -87,15 +87,15 @@
//
// Параметры:
// Объект - Произвольный - Устанавливает проверяемый объект, вызовы методов которого будем проверять.
-//
+// Описание - Строка - Описание проверки, которое будет выведено при возникновении ошибки
// Возвращаемое значение:
// ОбщийМодуль - см. МокитоПроверки
-Функция Проверить(Объект) Экспорт
+Функция Проверить(Объект, Описание = Неопределено) Экспорт
Режимы = МокитоСлужебный.РежимыРаботы();
МокитоСлужебный.УстановитьРежим(Режимы.Проверка);
- Возврат МокитоПроверки.Проверить(Объект);
+ Возврат МокитоПроверки.Проверить(Объект, Описание);
КонецФункции
diff --git a/exts/yaxunit/src/CommonModules/МокитоОбучение/Module.bsl b/exts/yaxunit/src/CommonModules/МокитоОбучение/Module.bsl
index 8bbd95e7..40376e58 100644
--- a/exts/yaxunit/src/CommonModules/МокитоОбучение/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/МокитоОбучение/Module.bsl
@@ -36,7 +36,7 @@
Функция Обучение(Объект, СброситьСтарыеНастройки = Истина) Экспорт
УстановитьПараметрыОбучения(Объект);
- МокитоСлужебный.ЗарегистрироватьПерехватОбъекта(Объект, СброситьСтарыеНастройки);
+ МокитоСлужебный.ДобавитьНастройкуПерехватаВызововОбъекта(Объект, СброситьСтарыеНастройки);
Возврат МокитоОбучение;
@@ -164,15 +164,22 @@
Процедура ЗарегистрироватьПерехватВыражения(ИмяМетода, ПараметрыВызова)
- Объект = ОбучаемыйОбъект();
- ДанныеПерехвата = МокитоСлужебный.ДанныеПерехвата(Объект);
+ ПереданаСтруктураВызоваМетода = МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода);
+
+ Если ПереданаСтруктураВызоваМетода Тогда
+ Объект = ИмяМетода.Объект;
+ Иначе
+ Объект = ОбучаемыйОбъект();
+ КонецЕсли;
+
+ ДанныеПерехвата = МокитоСлужебный.НастройкиПерехватаОбъекта(Объект);
Если ДанныеПерехвата = Неопределено Тогда
Сообщение = СтрШаблон("Не найдены настройки перехвата для %1. Необходимо предварительно вызвать метод Мокито.Обучение(Объект)", Объект);
ВызватьИсключение Сообщение;
КонецЕсли;
- Если МокитоСлужебный.ЭтоСтруктураВызоваМетода(ИмяМетода) Тогда
+ Если ПереданаСтруктураВызоваМетода Тогда
СтруктураВызоваМетода = ИмяМетода;
Иначе
СтруктураВызоваМетода = МокитоСлужебный.СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыВызова);
@@ -186,9 +193,12 @@
Реакция = СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода);
- Методы[СтруктураВызоваМетода.ИмяМетода].Реакции.Добавить(Реакция);
+ РеакцииМетода = Методы[СтруктураВызоваМетода.ИмяМетода].Реакции;
+ РеакцииМетода.Добавить(Реакция);
- ПараметрыОбучения().РеакцияТекущегоВыражения = Реакция;
+ ПараметрыОбучения = ПараметрыОбучения();
+ ПараметрыОбучения.РеакцияТекущегоВыражения = Реакция;
+ ПараметрыОбучения.Реакции = РеакцииМетода;
КонецПроцедуры
@@ -200,10 +210,18 @@
#Область Реакции
+Функция ОписаниеУсловнойРеакции()
+
+ Возврат Новый Структура("УсловиеРеакции, Действие");
+
+КонецФункции
+
Функция СоздатьОписаниеУсловнойРеакции(СтруктураВызоваМетода)
Условия = МокитоСлужебный.УсловиеИзПараметров(СтруктураВызоваМетода.Параметры);
- Возврат Новый Структура("УсловиеРеакции, Действие", Условия, Неопределено);
+ ОписаниеУсловнойРеакции = ОписаниеУсловнойРеакции();
+ ОписаниеУсловнойРеакции.УсловиеРеакции = Условия;
+ Возврат ОписаниеУсловнойРеакции;
КонецФункции
@@ -213,33 +231,38 @@
Функция ОбучаемыйОбъект()
- ПараметрыОбучения = ПараметрыОбучения();
-
- Возврат ПараметрыОбучения.ОбучаемыйОбъект;
+ Возврат ПараметрыОбучения().ОбучаемыйОбъект;
КонецФункции
Функция ПараметрыОбучения()
- Параметры = МокитоСлужебный.Настройки().ПараметрыОбучения;
-
- Возврат Параметры;
+ Возврат МокитоСлужебный.Настройки().ПараметрыОбучения;
КонецФункции
Процедура УстановитьПараметрыОбучения(Объект)
- ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения", Объект, Неопределено);
-
+ ПараметрыОбучения = Новый Структура("ОбучаемыйОбъект, РеакцияТекущегоВыражения, Реакции", Объект, Неопределено);
МокитоСлужебный.Настройки().ПараметрыОбучения = ПараметрыОбучения;
КонецПроцедуры
Процедура ЗарегистрироватьРеакцию(Действие)
+ Параметры = ПараметрыОбучения();
+
Действие.Вставить("Обработано", Ложь);
- ПараметрыОбучения().РеакцияТекущегоВыражения.Действие = Действие;
+ Если Параметры.РеакцияТекущегоВыражения.Действие = Неопределено Тогда
+ Параметры.РеакцияТекущегоВыражения.Действие = Действие;
+ Иначе
+ НоваяРеакция = ОписаниеУсловнойРеакции();
+ ЗаполнитьЗначенияСвойств(НоваяРеакция, Параметры.РеакцияТекущегоВыражения);
+ НоваяРеакция.Действие = Действие;
+ Параметры.РеакцияТекущегоВыражения = НоваяРеакция;
+ Параметры.Реакции.Добавить(НоваяРеакция);
+ КонецЕсли;
КонецПроцедуры
diff --git a/exts/yaxunit/src/CommonModules/МокитоПроверки/Module.bsl b/exts/yaxunit/src/CommonModules/МокитоПроверки/Module.bsl
index 87b5f502..27939c03 100644
--- a/exts/yaxunit/src/CommonModules/МокитоПроверки/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/МокитоПроверки/Module.bsl
@@ -19,9 +19,9 @@
#Область ПрограммныйИнтерфейс
// см. Мокито.Проверить
-Функция Проверить(Объект) Экспорт
+Функция Проверить(Объект, Описание) Экспорт
- УстановитьПараметрыПроверки(Объект);
+ УстановитьПараметрыПроверки(Объект, Описание);
Возврат МокитоПроверки;
КонецФункции
@@ -70,11 +70,13 @@
// ОбщийМодуль - Этот же модуль, для замыкания
Функция Равно(Количество, Знач Описание = Неопределено) Экспорт
+ Настройки = ПараметрыПроверки();
+
Статистика = СтатистикаВызовов();
ЮТУтверждения
- .Что(Статистика, Описание)
+ .Что(Статистика, Настройки.Описание)
.ИмеющееПредставление(ОписаниеПроверяемогоОбъекта())
- .ИмеетДлину(Количество);
+ .ИмеетДлину(Количество, Описание);
Возврат МокитоПроверки;
@@ -168,17 +170,17 @@
// Структура:
// * ПроверяемыйОбъект - Произвольный
// * СтруктураВызоваМетода - см. МокитоСлужебный.СтруктураВызоваМетода
+// * Описание - Строка
Функция ПараметрыПроверки()
- Параметры = МокитоСлужебный.Настройки().ПараметрыПроверки;
- Возврат Параметры;
+ Возврат МокитоСлужебный.Настройки().ПараметрыПроверки;
КонецФункции
-Процедура УстановитьПараметрыПроверки(Объект = Неопределено, СтруктураВызоваМетода = Неопределено)
+Процедура УстановитьПараметрыПроверки(Объект, Описание)
- ПараметрыОбучения = Новый Структура("ПроверяемыйОбъект, СтруктураВызоваМетода", Объект, СтруктураВызоваМетода);
- МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыОбучения;
+ ПараметрыПроверки = Новый Структура("ПроверяемыйОбъект, Описание, СтруктураВызоваМетода", Объект, Описание);
+ МокитоСлужебный.Настройки().ПараметрыПроверки = ПараметрыПроверки;
КонецПроцедуры
diff --git a/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl
index 4d2adc6a..1d642ff2 100644
--- a/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl
@@ -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", Описание.ОписаниеТипа.Имя, Описание.Имя));
+ КонецЕсли;
+
+ Для Каждого Элемент Из Вызовы Цикл
+ ПодходящийЭлемент = ТипЗнч(Элемент.Ключ) = ТипОбъекта
+ И Элемент.Значение.Свойство(ИмяМетода);
+ Если ПодходящийЭлемент Тогда
+ ЮТОбщий.ДополнитьМассив(СтатистикаВызововМетода, Элемент.Значение[ИмяМетода]);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат СтатистикаВызововМетода;
+
+КонецФункции
+#КонецЕсли
+
+#КонецОбласти
+
#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl
index 8662905b..c91b841c 100644
--- a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl
@@ -128,7 +128,9 @@
Возврат ОписаниеОбъект;
КонецЕсли;
- ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
+ Если ОписаниеТипа.СтандартныеРеквизиты Тогда
+ ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты, "Ссылка, Период");
+ КонецЕсли;
Если ОписаниеТипа.Измерения Тогда
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты, Истина);
@@ -173,6 +175,9 @@
// * Конструктор - Строка
// * Группы - Булево
// * Ссылочный - Булево
+// * Регистр - Булево
+// * ОбработкаОтчет - Булево
+// * СтандартныеРеквизиты - Булево
// * Реквизиты - Булево
// * Измерения - Булево
// * Ресурсы - Булево
@@ -188,7 +193,12 @@
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
Типы = ЮТМетаданные.ТипыМетаданных();
- Возврат Типы[ЧастиИмени[0]];
+ Если Типы.Свойство(ЧастиИмени[0]) Тогда
+ Возврат Типы[ЧастиИмени[0]];
+ Иначе
+ Сообщение = СтрШаблон("Получение описания для '%1' не поддерживается, либо не реализовано", ЧастиИмени[0]);
+ ВызватьИсключение Сообщение;
+ КонецЕсли;
КонецФункции
@@ -212,6 +222,9 @@
Описание.Вставить("Ресурсы", Запись.Ресурсы = "+");
Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+");
Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+");
+ Описание.Вставить("СтандартныеРеквизиты", Запись.СтандартныеРеквизиты = "+");
+ Описание.Вставить("ОбработкаОтчет", Запись.Имя = "Обработка" ИЛИ Запись.Имя = "Отчет");
+ Описание.Вставить("Регистр", СтрНачинаетсяС(Запись.Имя, "Регистр"));
ТипыМетаданных.Вставить(Описание.Имя, Описание);
ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание);
diff --git a/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl
index 91260e97..ebdf0fbe 100644
--- a/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl
@@ -361,12 +361,15 @@
//
Функция СкопироватьМассив(МассивИсточник) Экспорт
- МассивРезультат = Новый Массив;
+ Если НЕ ЗначениеЗаполнено(МассивИсточник) Тогда
+ Возврат Новый Массив;
+ КонецЕсли;
- Для Каждого Элемент Из МассивИсточник Цикл
-
- МассивРезультат.Добавить(СкопироватьРекурсивно(Элемент));
-
+ Размер = МассивИсточник.Количество();
+ МассивРезультат = Новый Массив(Размер);
+
+ Для Инд = 0 По Размер - 1 Цикл
+ МассивРезультат[Инд] = СкопироватьРекурсивно(МассивИсточник[Инд]);
КонецЦикла;
Возврат МассивРезультат;
diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl
index cab603e7..0c5b8ec8 100644
--- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl
@@ -328,9 +328,8 @@
Функция КлючЗаписи(Объект)
ТипЗначения = ТипЗнч(Объект);
- ПредставлениеТипа = ЮТОбщий.ПредставлениеТипа(ТипЗначения);
- Если СтрНайти(ПредставлениеТипа, "Object.") Тогда
+ Если ЮТТипыДанныхСлужебный.ЭтоТипОбъекта(ТипЗначения) Тогда
Возврат Объект.Ссылка;
diff --git a/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
index 89bbbaeb..d09116c6 100644
--- a/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
@@ -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ПространстваИмен);
+#КонецЕсли
КонецФункции
diff --git a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
index 7448ea77..030e872b 100644
--- a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
@@ -1828,13 +1828,13 @@
#Область Предикаты
Процедура ПроверитьПредикат(Выражение, ОжидаемоеЗначение, ОписаниеПроверки, ПараметрыСравнения = Неопределено)
-
+
Контекст = Контекст();
Предикат = ЮТФабрика.ВыражениеПредиката(Выражение, Контекст.ОбъектПроверки.ИмяСвойства, ОжидаемоеЗначение);
ПолноеОписаниеПроверки = ЮТОбщий.ДобавитьСтроку(Контекст.ПрефиксОшибки, ОписаниеПроверки, " ");
- ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки);
+ ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки, , Контекст.ОбъектПроверки.Представление);
Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Контекст.ОбъектПроверки.Значение, Предикат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
ОбработатьРезультатПроверкиПредиката(Результат);
diff --git a/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt b/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt
index b8c822dd..a8b33dbb 100644
--- a/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt
+++ b/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt
@@ -1,17 +1,19 @@
# Описание свойств метаданных
-| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти |
-|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|
-| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + |
-| Документ | Документы | СоздатьДокумент | | + | + | | | | + |
-| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + |
-| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + |
-| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + |
-| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + |
-| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | |
-| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | |
-| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | |
-| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | |
-| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + |
-| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + |
-| Перечисление | Перечисления | | | + | | | | | |
+| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | СтандартныеРеквизиты |
+|------------------------|-------------------------|-----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|----------------------|
+| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | + |
+| Документ | Документы | СоздатьДокумент | | + | + | | | | + | + |
+| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | + |
+| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + |
+| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + |
+| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + |
+| РегистрСведений | РегистрыСведений | СоздатьМенеджерЗаписи | | | + | + | + | | | + |
+| РегистрНакопления | РегистрыНакопления | | | | + | + | + | | | + |
+| РегистрБухгалтерии | РегистрыБухгалтерии | | | | + | + | + | | | + |
+| РегистрРасчета | РегистрыРасчета | | | | + | + | + | | | + |
+| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | + |
+| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | + |
+| Перечисление | Перечисления | | | + | | | | | | + |
+| Отчет | Отчеты | | | | + | | | | + | |
+| Обработка | Обработки | | | | + | | | | + | |
diff --git a/fixtures/demo-configuration/src/Catalogs/Встречи/ManagerModule.bsl b/fixtures/demo-configuration/src/Catalogs/Встречи/ManagerModule.bsl
index 0ca240b2..c436def2 100644
--- a/fixtures/demo-configuration/src/Catalogs/Встречи/ManagerModule.bsl
+++ b/fixtures/demo-configuration/src/Catalogs/Встречи/ManagerModule.bsl
@@ -13,17 +13,7 @@
Продолжить;
КонецЕсли;
- ВстречаОбъект.Начало = ОбрабатываемыйЭлемент.Начало;
- ВстречаОбъект.Окончание = ОбрабатываемыйЭлемент.Конец;
-
- Пользователь = ОбрабатываемыйЭлемент.Владелец;
- Если Пользователь = Неопределено Тогда
- Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
- КонецЕсли;
-
- Владелец = Справочники.Пользователи.НайтиПоКоду(Пользователь);
- ВстречаОбъект.Владелец = Владелец;
-
+ ЗаполнитьОбъект(ВстречаОбъект, ОбрабатываемыйЭлемент);
ВстречаОбъект.Записать();
КонецЦикла;
@@ -41,3 +31,23 @@
Возврат Успешно;
КонецФункции
+
+Процедура ЗаполнитьОбъект(Объект, ОбрабатываемыйЭлемент)
+
+ Объект.Начало = ОбрабатываемыйЭлемент.Начало;
+ Объект.Окончание = ОбрабатываемыйЭлемент.Конец;
+
+ Пользователь = ОбрабатываемыйЭлемент.Владелец;
+ Если Пользователь = Неопределено Тогда
+ Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
+ КонецЕсли;
+
+ Владелец = Справочники.Пользователи.НайтиПоКоду(Пользователь.Имя);
+
+ Если Владелец.Пустая() Тогда
+ Владелец = Справочники.Пользователи.ПустойПользователь;
+ КонецЕсли;
+
+ Объект.Владелец = Владелец;
+
+КонецПроцедуры
diff --git a/fixtures/demo-configuration/src/Catalogs/Пользователи/Пользователи.mdo b/fixtures/demo-configuration/src/Catalogs/Пользователи/Пользователи.mdo
index c159995d..a4ecf94c 100644
--- a/fixtures/demo-configuration/src/Catalogs/Пользователи/Пользователи.mdo
+++ b/fixtures/demo-configuration/src/Catalogs/Пользователи/Пользователи.mdo
@@ -23,7 +23,7 @@
PredefinedDataName
- Use
+ DontUse
@@ -33,7 +33,7 @@
Predefined
- Use
+ DontUse
@@ -43,7 +43,7 @@
Ref
- Use
+ DontUse
@@ -53,7 +53,7 @@
DeletionMark
- Use
+ DontUse
@@ -63,7 +63,7 @@
IsFolder
- Use
+ DontUse
@@ -75,7 +75,7 @@
true
ShowError
- Use
+ DontUse
@@ -86,7 +86,7 @@
true
- Use
+ DontUse
@@ -101,7 +101,7 @@
ShowError
- Use
+ DontUse
@@ -111,14 +111,14 @@
Code
- Use
+ DontUse
Use
Managed
- Use
+ DontUse
Use
2
true
@@ -129,6 +129,15 @@
true
true
AsDescription
+
+
+ ПустойПользователь
+ Пустой пользователь
+
+ 0000000000000000000000001
+
+
+
InDialog
BothWays
Catalog.Пользователи.Form.ФормаЭлемента
diff --git a/fixtures/demo-configuration/src/InformationRegisters/ЦеныТоваров/ManagerModule.bsl b/fixtures/demo-configuration/src/InformationRegisters/ЦеныТоваров/ManagerModule.bsl
new file mode 100644
index 00000000..8be4825f
--- /dev/null
+++ b/fixtures/demo-configuration/src/InformationRegisters/ЦеныТоваров/ManagerModule.bsl
@@ -0,0 +1,9 @@
+Процедура ЗаполненоКорректно(НаборЗаписей) Экспорт
+
+ Для Каждого Строка Из НаборЗаписей Цикл
+ Если Строка.Цена < 0 Тогда
+ ВызватьИсключение "Цена товара не может быть отрицательной";
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
diff --git a/fixtures/demo-configuration/src/InformationRegisters/ЦеныТоваров/RecordSetModule.bsl b/fixtures/demo-configuration/src/InformationRegisters/ЦеныТоваров/RecordSetModule.bsl
new file mode 100644
index 00000000..05af581f
--- /dev/null
+++ b/fixtures/demo-configuration/src/InformationRegisters/ЦеныТоваров/RecordSetModule.bsl
@@ -0,0 +1,19 @@
+#Область ОбработчикиСобытий
+
+Процедура ПередЗаписью(Отказ, Замещение)
+
+ Если ОбменДанными.Загрузка Тогда
+ Возврат;
+ КонецЕсли;
+
+ РегистрыСведений.ЦеныТоваров.ЗаполненоКорректно(ЭтотОбъект);
+
+КонецПроцедуры
+
+Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
+
+ РегистрыСведений.ЦеныТоваров.ЗаполненоКорректно(ЭтотОбъект);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/tests/src/Catalogs/Встречи/ManagerModule.bsl b/tests/src/Catalogs/Встречи/ManagerModule.bsl
index a588ac46..4643d85f 100644
--- a/tests/src/Catalogs/Встречи/ManagerModule.bsl
+++ b/tests/src/Catalogs/Встречи/ManagerModule.bsl
@@ -31,3 +31,17 @@
КонецЕсли;
КонецФункции
+
+&Вместо("ЗаполнитьОбъект")
+Процедура Расш1_ЗаполнитьОбъект(Объект, ОбрабатываемыйЭлемент) Экспорт
+
+ ПараметрыМетода = Мокито.МассивПараметров(Объект, ОбрабатываемыйЭлемент);
+
+ ПрерватьВыполнение = Ложь;
+ Мокито.АнализВызова(Справочники.Встречи, "ЗаполнитьОбъект", ПараметрыМетода, ПрерватьВыполнение);
+
+ Если НЕ ПрерватьВыполнение Тогда
+ ПродолжитьВызов(Объект, ОбрабатываемыйЭлемент);
+ КонецЕсли;
+
+КонецПроцедуры
diff --git a/tests/src/Catalogs/Встречи/ObjectModule.bsl b/tests/src/Catalogs/Встречи/ObjectModule.bsl
index a9d71463..f56f56e7 100644
--- a/tests/src/Catalogs/Встречи/ObjectModule.bsl
+++ b/tests/src/Catalogs/Встречи/ObjectModule.bsl
@@ -31,3 +31,17 @@
КонецЕсли;
КонецФункции
+
+&Вместо("ПередЗаписью")
+Процедура Расш1_ПередЗаписью(Отказ)
+
+ ПараметрыМетода = Мокито.МассивПараметров(Отказ);
+
+ ПрерватьВыполнение = Ложь;
+ Мокито.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение);
+
+ Если НЕ ПрерватьВыполнение Тогда
+ ПродолжитьВызов(Отказ);
+ КонецЕсли;
+
+КонецПроцедуры
diff --git a/tests/src/CommonModules/ОМ_Мокито/Module.bsl b/tests/src/CommonModules/ОМ_Мокито/Module.bsl
index 5cec2fe3..af5ca7c0 100644
--- a/tests/src/CommonModules/ОМ_Мокито/Module.bsl
+++ b/tests/src/CommonModules/ОМ_Мокито/Module.bsl
@@ -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);
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git a/tests/src/CommonModules/ОМ_МокитоОбучение/Module.bsl b/tests/src/CommonModules/ОМ_МокитоОбучение/Module.bsl
index b68ed09c..ec3b4477 100644
--- a/tests/src/CommonModules/ОМ_МокитоОбучение/Module.bsl
+++ b/tests/src/CommonModules/ОМ_МокитоОбучение/Module.bsl
@@ -22,6 +22,7 @@
ЮТТесты
.ДобавитьТест("ВыброситьИсключение")
+ .ДобавитьСерверныйТест("ФормированиеТипыПерехватываемыхОбъектов")
;
КонецПроцедуры
@@ -45,4 +46,39 @@
КонецПроцедуры
+#Если Сервер Тогда
+Процедура ФормированиеТипыПерехватываемыхОбъектов() Экспорт
+
+ Мокито.Обучение(Обработки.АдминистративныйСервис);
+
+ ЮТест.ОжидаетЧто(МокитоСлужебный.Настройки(), "Обработка менеджер") // Проверка сформированных настроек
+ .Свойство("Перехват").ИмеетСвойство(Обработки.АдминистративныйСервис)
+ .Свойство("ТипыПерехватываемыхОбъектов")
+ .ИмеетДлину(2)
+ .ИмеетСвойство(Тип("ОбработкаМенеджер.АдминистративныйСервис"))
+ .ИмеетСвойство(Тип("ОбработкаОбъект.АдминистративныйСервис"));
+
+ Мокито.Сбросить();
+ Мокито.Обучение(Справочники.Банки.ПустаяСсылка());
+
+ ЮТест.ОжидаетЧто(МокитоСлужебный.Настройки(), "Ссылка") // Проверка сформированных настроек
+ .Свойство("Перехват").ИмеетСвойство(Справочники.Банки.ПустаяСсылка())
+ .Свойство("ТипыПерехватываемыхОбъектов")
+ .ИмеетДлину(2)
+ .ИмеетСвойство(Тип("СправочникСсылка.Банки"))
+ .ИмеетСвойство(Тип("СправочникОбъект.Банки"));
+
+ Мокито.Сбросить();
+ Мокито.Обучение(РегистрыНакопления.Взаиморасчеты);
+
+ ЮТест.ОжидаетЧто(МокитоСлужебный.Настройки(), "Регистр") // Проверка сформированных настроек
+ .Свойство("Перехват").ИмеетСвойство(РегистрыНакопления.Взаиморасчеты)
+ .Свойство("ТипыПерехватываемыхОбъектов")
+ .ИмеетДлину(2)
+ .ИмеетСвойство(Тип("РегистрНакопленияНаборЗаписей.Взаиморасчеты"))
+ .ИмеетСвойство(Тип("РегистрНакопленияМенеджер.Взаиморасчеты"));
+
+КонецПроцедуры
+#КонецЕсли
+
#КонецОбласти
diff --git a/tests/src/CommonModules/ОМ_МокитоСлужебный/Module.bsl b/tests/src/CommonModules/ОМ_МокитоСлужебный/Module.bsl
new file mode 100644
index 00000000..3cd44a13
--- /dev/null
+++ b/tests/src/CommonModules/ОМ_МокитоСлужебный/Module.bsl
@@ -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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Процедура ИсполняемыеСценарии() Экспорт
+
+ ЮТТесты
+ .ДобавитьТест("ДанныеПерехвата")
+ ;
+
+КонецПроцедуры
+
+Процедура ДанныеПерехвата() Экспорт
+
+ Мокито.Обучение(Справочники.Встречи)
+ .Наблюдать("ПередЗаписью");
+
+ ДанныеПерехвата = МокитоСлужебный.ДанныеПерехвата(Справочники.Встречи.СоздатьЭлемент());
+
+ ЮТест.ОжидаетЧто(ДанныеПерехвата)
+ .Заполнено()
+ .Свойство("Объект").Равно(Справочники.Встречи)
+ .Свойство("Методы").ИмеетСвойство("ПередЗаписью")
+ ;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+#КонецОбласти
diff --git a/tests/src/CommonModules/ОМ_МокитоСлужебный/ОМ_МокитоСлужебный.mdo b/tests/src/CommonModules/ОМ_МокитоСлужебный/ОМ_МокитоСлужебный.mdo
new file mode 100644
index 00000000..52786c60
--- /dev/null
+++ b/tests/src/CommonModules/ОМ_МокитоСлужебный/ОМ_МокитоСлужебный.mdo
@@ -0,0 +1,9 @@
+
+
+ ОМ_МокитоСлужебный
+
+ ru
+ О м мокито служебный
+
+ true
+
diff --git a/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl b/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl
index cfd26b5e..b06a342e 100644
--- a/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl
+++ b/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl
@@ -23,6 +23,7 @@
ЮТТесты.ВТранзакции().УдалениеТестовыхДанных()
.ДобавитьТест("ЗаполнитьСправочник")
.ДобавитьТест("ЗаполнитьДокумент")
+ .ДобавитьТест("СоздатьЗаписьРегистраСведений")
.ДобавитьТест("Фикция")
.ДобавитьТест("Фикция_Типизированная")
.ДобавитьТест("ФикцияОбязательныхПолей")
@@ -122,6 +123,20 @@
КонецПроцедуры
+Процедура СоздатьЗаписьРегистраСведений() Экспорт
+
+ Результат = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
+ .Фикция("Валюта")
+ .Фикция("Курс")
+ .Установить("Период", ТекущаяДата())
+ .Записать();
+
+ ЮТест.ОжидаетЧто(Результат)
+ .ИмеетТип(Тип("РегистрСведенийКлючЗаписи.КурсыВалют"))
+ .Заполнено();
+
+КонецПроцедуры
+
Процедура Фикция() Экспорт
Поставщик = Ютест.Данные().СоздатьЭлемент("Справочники.Контрагенты");
diff --git a/tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl b/tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl
index 0fd8bf4c..33cd91d1 100644
--- a/tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl
+++ b/tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl
@@ -39,7 +39,25 @@
.ДобавитьТест("ЭтоКоллекцияПримитивныхТипов")
.СПараметрами(ЮТОбщий.ЗначениеВМассиве(Тип("Строка"), Тип("Дата")), Истина)
.СПараметрами(ЮТОбщий.ЗначениеВМассиве(Тип("Строка"), Тип("Дата"), Тип("ПеречислениеСсылка.PushУведомления")), Ложь)
-
+ .ДобавитьТест("ИдентификаторТипа")
+ .СПараметрами("Дата")
+ .СПараметрами("Строка")
+ .СПараметрами("Число")
+ .СПараметрами("Булево")
+ .СПараметрами("Неопределено")
+ .СПараметрами("Null")
+ .СПараметрами("УникальныйИдентификатор")
+ .СПараметрами("ВидДвиженияБухгалтерии")
+ .СПараметрами("HTTPЗапрос")
+ .СПараметрами("ТабличныйДокумент")
+ .СПараметрами("ХранилищеЗначения")
+ .СПараметрами("ПеречислениеСсылка.PushУведомления")
+ .ДобавитьСерверныйТест("ИдентификаторТипа")
+ .СПараметрами("СправочникМенеджер.Банки")
+ .СПараметрами("СхемаКомпоновкиДанных")
+ .СПараметрами("HTTPСервисЗапрос")
+ .СПараметрами("ОбъектXDTO")
+ .СПараметрами("ОбъектМетаданных")
;
КонецПроцедуры
@@ -48,7 +66,6 @@
ЮТест.ОжидаетЧто(ЮТТипыДанныхСлужебный.ЭтоСистемноеПеречисление(Тип))
.Равно(ОжидаемыйРезультат);
-
КонецПроцедуры
Процедура ТипыСистемныхПеречислений() Экспорт
@@ -82,6 +99,18 @@
КонецПроцедуры
+Процедура ИдентификаторТипа(ИмяТипа) Экспорт
+
+ Тип = Тип(ИмяТипа);
+ Результат = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Тип(ИмяТипа));
+ ЮТест.ОжидаетЧто(Результат)
+ .Заполнено();
+
+ ЮТест.ОжидаетЧто(Тип(Результат))
+ .Равно(Тип);
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git a/tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/ОМ_ЮТТипыДанныхСлужебный.mdo b/tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/ОМ_ЮТТипыДанныхСлужебный.mdo
index cacbdb5e..21f68dc7 100644
--- a/tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/ОМ_ЮТТипыДанныхСлужебный.mdo
+++ b/tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/ОМ_ЮТТипыДанныхСлужебный.mdo
@@ -5,5 +5,7 @@
ru
Типы данных служебный
+ true
true
+ true
diff --git a/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl b/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl
index 3062ad3c..73bc9e91 100644
--- a/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl
+++ b/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl
@@ -93,7 +93,7 @@
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
- .ИмеетДлину(23);
+ .ИмеетДлину(24);
КонецПроцедуры
diff --git a/tests/src/Configuration/Configuration.mdo b/tests/src/Configuration/Configuration.mdo
index 68aa40d1..706b8ce6 100644
--- a/tests/src/Configuration/Configuration.mdo
+++ b/tests/src/Configuration/Configuration.mdo
@@ -28,6 +28,7 @@
CommonModule.Обр_ЮТHTTPСервисЗапрос
CommonModule.ОМ_Мокито
CommonModule.ОМ_МокитоОбучение
+ CommonModule.ОМ_МокитоСлужебный
CommonModule.ОМ_Общий
CommonModule.ОМ_ОшибкаЗагрузкиСценариев
CommonModule.ОМ_ЮТест
@@ -54,4 +55,6 @@
Catalog.Встречи
Catalog.Товары
Document.ПриходТовара
+ DataProcessor.ПроведениеДокументов
+ InformationRegister.ЦеныТоваров
diff --git a/tests/src/DataProcessors/ПроведениеДокументов/ObjectModule.bsl b/tests/src/DataProcessors/ПроведениеДокументов/ObjectModule.bsl
new file mode 100644
index 00000000..3336a3f0
--- /dev/null
+++ b/tests/src/DataProcessors/ПроведениеДокументов/ObjectModule.bsl
@@ -0,0 +1,14 @@
+
+&Вместо("ЗаполнитьСписок")
+Процедура Расш1_ЗаполнитьСписок() Экспорт
+
+ ПараметрыМетода = Новый Массив();;
+
+ ПрерватьВыполнение = Ложь;
+ Мокито.АнализВызова(ЭтотОбъект, "ЗаполнитьСписок", ПараметрыМетода, ПрерватьВыполнение);
+
+ Если НЕ ПрерватьВыполнение Тогда
+ ПродолжитьВызов();
+ КонецЕсли;
+
+КонецПроцедуры
diff --git a/tests/src/DataProcessors/ПроведениеДокументов/ПроведениеДокументов.mdo b/tests/src/DataProcessors/ПроведениеДокументов/ПроведениеДокументов.mdo
new file mode 100644
index 00000000..d43c0ffe
--- /dev/null
+++ b/tests/src/DataProcessors/ПроведениеДокументов/ПроведениеДокументов.mdo
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ ПроведениеДокументов
+ Adopted
+
+ Extended
+
+
diff --git a/tests/src/InformationRegisters/ЦеныТоваров/ManagerModule.bsl b/tests/src/InformationRegisters/ЦеныТоваров/ManagerModule.bsl
new file mode 100644
index 00000000..1377c349
--- /dev/null
+++ b/tests/src/InformationRegisters/ЦеныТоваров/ManagerModule.bsl
@@ -0,0 +1,14 @@
+
+&Вместо("ЗаполненоКорректно")
+Процедура Расш1_ЗаполненоКорректно(НаборЗаписей) Экспорт
+
+ ПараметрыМетода = Мокито.МассивПараметров(НаборЗаписей);
+
+ ПрерватьВыполнение = Ложь;
+ Мокито.АнализВызова(РегистрыСведений.ЦеныТоваров, "ЗаполненоКорректно", ПараметрыМетода, ПрерватьВыполнение);
+
+ Если НЕ ПрерватьВыполнение Тогда
+ ПродолжитьВызов(НаборЗаписей);
+ КонецЕсли;
+
+КонецПроцедуры
diff --git a/tests/src/InformationRegisters/ЦеныТоваров/RecordSetModule.bsl b/tests/src/InformationRegisters/ЦеныТоваров/RecordSetModule.bsl
new file mode 100644
index 00000000..1da41808
--- /dev/null
+++ b/tests/src/InformationRegisters/ЦеныТоваров/RecordSetModule.bsl
@@ -0,0 +1,29 @@
+
+&Вместо("ПередЗаписью")
+Процедура Расш1_ПередЗаписью(Отказ, Замещение)
+
+ ПараметрыМетода = Мокито.МассивПараметров(Отказ, Замещение);
+
+ ПрерватьВыполнение = Ложь;
+ Мокито.АнализВызова(ЭтотОбъект, "ПередЗаписью", ПараметрыМетода, ПрерватьВыполнение);
+
+ Если НЕ ПрерватьВыполнение Тогда
+ ПродолжитьВызов(Отказ, Замещение);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&Вместо("ОбработкаПроверкиЗаполнения")
+Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
+
+ ПараметрыМетода = Мокито.МассивПараметров(Отказ, ПроверяемыеРеквизиты);
+
+ ПрерватьВыполнение = Ложь;
+ Мокито.АнализВызова(ЭтотОбъект, "ОбработкаПроверкиЗаполнения", ПараметрыМетода, ПрерватьВыполнение);
+
+ Если НЕ ПрерватьВыполнение Тогда
+ ПродолжитьВызов(Отказ, ПроверяемыеРеквизиты);
+ КонецЕсли;
+
+КонецПроцедуры
+
diff --git a/tests/src/InformationRegisters/ЦеныТоваров/ЦеныТоваров.mdo b/tests/src/InformationRegisters/ЦеныТоваров/ЦеныТоваров.mdo
new file mode 100644
index 00000000..140570f2
--- /dev/null
+++ b/tests/src/InformationRegisters/ЦеныТоваров/ЦеныТоваров.mdo
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+ ЦеныТоваров
+ Adopted
+
+ Checked
+ Checked
+ Extended
+ Extended
+
+ Day
+