1
0
mirror of https://github.com/BlizD/Tasks.git synced 2025-01-12 03:19:41 +02:00

Добавление тестов от @pallid

This commit is contained in:
Anton Ivanov 2018-01-08 14:11:35 +03:00
parent 06db955f91
commit 738755bf8d
13 changed files with 773 additions and 0 deletions

View File

@ -0,0 +1,313 @@
//начало текста модуля
///////////////////////////////////////////////////
//Служебные функции и процедуры
///////////////////////////////////////////////////
&НаКлиенте
// контекст фреймворка Vanessa-Behavior
Перем Ванесса;
&НаКлиенте
// Структура, в которой хранится состояние сценария между выполнением шагов. Очищается перед выполнением каждого сценария.
Перем Контекст Экспорт;
&НаКлиенте
// Структура, в которой можно хранить служебные данные между запусками сценариев. Существует, пока открыта форма Vanessa-Behavior.
Перем КонтекстСохраняемый Экспорт;
&НаКлиенте
// Функция экспортирует список шагов, которые реализованы в данной внешней обработке.
Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт
Ванесса = КонтекстФреймворкаBDD;
ВсеТесты = Новый Массив;
Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,"ЯСталНаблюдателемЗаЗадачейСНомером(Парам01,Парам02)","ЯСталНаблюдателемЗаЗадачейСНомером","Тогда я стал наблюдателем за задачей ""ЭтоТестоваяЗадача"" с номером '9999999'");
Возврат ВсеТесты;
КонецФункции
&НаСервере
// Служебная функция.
Функция ПолучитьМакетСервер(ИмяМакета)
ОбъектСервер = РеквизитФормыВЗначение("Объект");
Возврат ОбъектСервер.ПолучитьМакет(ИмяМакета);
КонецФункции
&НаКлиенте
// Служебная функция для подключения библиотеки создания fixtures.
Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт
Возврат ПолучитьМакетСервер(ИмяМакета);
КонецФункции
///////////////////////////////////////////////////
//Работа со сценариями
///////////////////////////////////////////////////
&НаКлиенте
// Процедура выполняется перед началом каждого сценария
Процедура ПередНачаломСценария() Экспорт
СостояниеVanessaBehavior = Ванесса.ПолучитьСостояниеVanessaBehavior();
ИмяСценария = СостояниеVanessaBehavior.ТекущийСценарий.Имя;
ПредставлениеСправочника = "узЗадачи";
ЭлементСправочника = утвПолучитьЭлементГруппуСправочника(ПредставлениеСправочника, , "ЭтоТестоваяЗадача");
утвУдалитьЭлементСправочника(ПредставлениеСправочника, ЭлементСправочника);
СоздатьЭлементСправочникаСНаименованиеНаСервере(ПредставлениеСправочника, "ЭтоТестоваяЗадача");
Задача = утвПолучитьЭлементГруппуСправочника(ПредставлениеСправочника, , "ЭтоТестоваяЗадача",,ИСТИНА);
УстановитьЗначениеРеквизитаСправочника(Задача, "Код", 9999999);
КонтекстСохраняемый.Вставить("Задача", Задача);
КонецПроцедуры
&НаКлиенте
// Процедура выполняется перед окончанием каждого сценария
Процедура ПередОкончаниемСценария() Экспорт
КонецПроцедуры
///////////////////////////////////////////////////
//Реализация шагов
///////////////////////////////////////////////////
&НаСервере
Процедура СоздатьЭлементСправочникаСНаименованиеНаСервере(ИмяСправочника, Наименование)
ЭлементСправочника = Справочники[ИмяСправочника].СоздатьЭлемент();
ЭлементСправочника.Наименование = Наименование;
ЭлементСправочника.Записать();
КонецПроцедуры
&НаСервере
Функция утвПолучитьЭлементГруппуСправочника(ИмяСправочника, Код = "", Наименование = "", ИскатьГруппу = Ложь, ДолженБыть = ЛОЖЬ)
ПредставлениеПоиска = "";
Если Истина
И ПустаяСтрока(Код)
И ПустаяСтрока(Наименование)
Тогда
ВызватьИсключение "Не заполнено ни одно свойство поиска";
ИначеЕсли Истина
И ЗначениеЗаполнено(Код)
И ЗначениеЗаполнено(Наименование)
Тогда
ПредставлениеПоиска = "коду """ + Код + """ и наименованию """ + Наименование + """";
ИначеЕсли ЗначениеЗаполнено(Код) Тогда
ПредставлениеПоиска = "коду """ + Код + """";
ИначеЕсли ЗначениеЗаполнено(Наименование) Тогда
ПредставлениеПоиска = "наименованию """ + Наименование + """";
КонецЕсли;
ТекстИсключения = "Не нашли #ГруппуИлиЭлемент справочника #ИмяСправочника по #ПредставлениеПоиска";
ТекстИсключения = СтрЗаменить(ТекстИсключения, "#ГруппуИлиЭлемент" , ?(ИскатьГруппу, "группу", "элемент"));
ТекстИсключения = СтрЗаменить(ТекстИсключения, "#ИмяСправочника" , ИмяСправочника);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "#ПредставлениеПоиска", ПредставлениеПоиска);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Справочник.Ссылка
|ИЗ
| Справочник.Пользователи КАК Справочник
|ГДЕ
| &МоиУсловия";
ТекстМоиУсловия = "";
Если ИскатьГруппу Тогда
СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, "Справочник.ЭтоГруппа = &ИскатьГруппу");
КонецЕсли;
Если ЗначениеЗаполнено(Код) Тогда
СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, "Справочник.Код = &Код");
КонецЕсли;
Если ЗначениеЗаполнено(Наименование) Тогда
СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, "Справочник.Наименование = &Наименование");
КонецЕсли;
Если ПустаяСтрока(ТекстМоиУсловия) Тогда
ТекстМоиУсловия = "ИСТИНА";
КонецЕсли;
СтрокаЗаменыСправочника = "Справочник." + ИмяСправочника + " КАК Справочник";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&МоиУсловия", ТекстМоиУсловия);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.Пользователи КАК Справочник", СтрокаЗаменыСправочника);
Запрос.УстановитьПараметр("ИскатьГруппу", ИскатьГруппу);
Запрос.УстановитьПараметр("Код", Код);
Запрос.УстановитьПараметр("Наименование", Наименование);
РезультатЗапроса = Запрос.Выполнить();
Если ДолженБыть И РезультатЗапроса.Пустой() Тогда
ВызватьИсключение ТекстИсключения;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.Ссылка;
КонецФункции
&НаСервере
Процедура СформироватьТекстУсловияЗапроса(ТекстРезультат, ТекстУсловия)
Если НЕ ПустаяСтрока(ТекстРезультат) Тогда
ТекстРезультат = ТекстРезультат + " И "
КонецЕсли;
ТекстРезультат = ТекстРезультат + ТекстУсловия;
КонецПроцедуры
&НаСервере
Процедура утвУдалитьЭлементСправочника(ИмяСправочника, ЭлементСправочника)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Справочник.Ссылка
|ИЗ
| Справочник." + ИмяСправочника + " КАК Справочник
|ГДЕ
| Справочник.Ссылка = &ЭлементСправочника";
Запрос.УстановитьПараметр("ЭлементСправочника", ЭлементСправочника);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ЭлементОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ЭлементОбъект.Удалить();
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗначениеРеквизитаСправочника(ЭлементСправочника, ИмяРеквизита, Значение, ЗначениеВХранилище = ЛОЖЬ)
СпрОбъект = ЭлементСправочника.ПолучитьОбъект();
Если ЗначениеВХранилище Тогда
СпрОбъект[ИмяРеквизита] = Новый ХранилищеЗначения(Значение);
Иначе
СпрОбъект[ИмяРеквизита] = Значение;
КонецЕсли;
СпрОбъект.Записать();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьАктивноеОкноИзТестовоеПриложение()
Возврат КонтекстСохраняемый.ТестовоеПриложение.ПолучитьАктивноеОкно();
КонецФункции
&НаКлиенте
Функция ПолучитьАктивноеОкноИзКонтекста()
Возврат Контекст.АктивноеОкно;
КонецФункции
&НаКлиенте
Функция НайтиПолеПоИмени(ИмяПоля,НужнаяФорма = Неопределено)
Получилось = Ложь;
Если Не Получилось Тогда
Если НужнаяФорма = Неопределено Тогда
ОкноПриложения = ПолучитьАктивноеОкноИзТестовоеПриложение();
НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип("ТестируемаяФорма"));
КонецЕсли;
Если НужнаяФорма = Неопределено Тогда
//иногда 1С некорректно отдаёт текущее окно, тогда будем искать во всех окнах
//сначала поищем в недавно открытом окне
Попытка
ОкноПриложения = ПолучитьАктивноеОкноИзКонтекста();
НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип("ТестируемаяФорма"));
Исключение
КонецПопытки;
//Если НужнаяФорма = Неопределено Тогда
// //затем будем искать во всех окнах
// МассивОкон = КонтекстСохраняемый.ТестовоеПриложение.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения"));
// Для каждого ТекОкно Из МассивОкон Цикл
//
// НужнаяФорма = ТекОкно.НайтиОбъект(Тип("ТестируемаяФорма"));
// Если НужнаяФорма <> Неопределено Тогда
// Контекст.Вставить("АктивноеОкно",ОкноПриложения); //произошла неявная смена активного окна
// КонецЕсли;
//
// КонецЦикла;
//
//КонецЕсли;
КонецЕсли;
Если ИмяПоля = "" Тогда
Поле = НужнаяФорма.НайтиОбъект(Тип("ТестируемоеПолеФормы"));
Иначе
Поле = НужнаяФорма.НайтиОбъект(Тип("ТестируемоеПолеФормы"),,ИмяПоля);
КонецЕсли;
КонецЕсли;
Возврат Поле;
КонецФункции
&НаСервере
Процедура УстановитьЗначениеКонстаны(ИмяКонстанты, Результат)
Константы[ИмяКонстанты].Установить(Результат);
КонецПроцедуры
&НаКлиенте
//Тогда я стал наблюдателем за задачей "ЭтоТестоваяЗадача" с номером '9999999'
//@ЯСталНаблюдателемЗаЗадачейСНомером(Парам01,Парам02)
Процедура ЯСталНаблюдателемЗаЗадачейСНомером(НаименованиеЗадачи, НомерЗадачи) Экспорт
Результат = ПолучитьЗаписьРСПоЗадаче(КонтекстСохраняемый.Задача);
Ванесса.ПроверитьНеРавенство(Неопределено, Результат, "Ожидаемое значение результата");
Ванесса.ПроверитьРавенство(НаименованиеЗадачи, Результат.Наименование, "Ожидаемое значение наименования задачи");
Ванесса.ПроверитьРавенство(НомерЗадачи, Результат.Номер, "Ожидаемое значение номера задачи");
КонецПроцедуры
Функция ПолучитьЗаписьРСПоЗадаче(Задача)
Результат = Неопределено;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| узНаблюдателиЗаЗадачами.Задача.Наименование КАК Наименование,
| узНаблюдателиЗаЗадачами.Задача.Код КАК Номер,
| узНаблюдателиЗаЗадачами.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.узНаблюдателиЗаЗадачами КАК узНаблюдателиЗаЗадачами
|ГДЕ
| узНаблюдателиЗаЗадачами.Задача = &Задача
| И узНаблюдателиЗаЗадачами.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Задача", Задача);
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Результат = Новый Структура("Наименование, Номер", Выборка.Наименование, Формат(Выборка.Номер,"ЧГ=0"));
КонецЕсли;
Возврат Результат;
КонецФункции
//окончание текста модуля

View File

@ -0,0 +1 @@
Form\Форма\Форма.bsl-->70e297e0-e8a2-43bf-8be1-62e408f610a1.0 (46, 358)

View File

@ -0,0 +1,9 @@
70e297e0-e8a2-43bf-8be1-62e408f610a1-->und\70e297e0-e8a2-43bf-8be1-62e408f610a1
70e297e0-e8a2-43bf-8be1-62e408f610a1.0-->und\70e297e0-e8a2-43bf-8be1-62e408f610a1.0
79a499cc-1782-4a2f-abe7-61ea4d49fd5a-->und\79a499cc-1782-4a2f-abe7-61ea4d49fd5a
8aa13ab8-188a-4f59-be4f-031aa5450c90.0\info-->und\8aa13ab8-188a-4f59-be4f-031aa5450c90.0\info
8aa13ab8-188a-4f59-be4f-031aa5450c90.0\text-->ObjectModule.bsl
copyinfo-->und\copyinfo
root-->und\root
version-->und\version
versions-->und\versions

View File

@ -0,0 +1,15 @@
{1,
{1,
{0,
{12,
{1,
{0,0,70e297e0-e8a2-43bf-8be1-62e408f610a1},"Форма",
{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1,
{2,
{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1},
{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2}
}
},
{0}
}
},0}

View File

@ -0,0 +1,395 @@
{3,
{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1,
{1,0},0,0,1,1,1,0,1,0,
{0,1,0},
{0},1,
{21,
{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,9,"ФормаКоманднаяПанель",
{1,0},
{1,0},0,1,0,0,0,2,2,
{3,4,
{0}
},
{7,3,0,1,100},
{0,0,0},1,
{0,0,1},0,1,0,0,0,3,3},0,"","",1,
{21,
{0},0,0,0,7,"Navigator",
{1,0},
{1,0},0,1,0,0,0,2,2,
{3,4,
{0}
},
{7,3,0,1,100},
{0,0,0},0,0,1,0,1,
{10,
{0},0,0,0,0,"NavigatorExtendedTooltip",
{1,0},
{1,0},1,0,0,2,2,
{3,4,
{0}
},
{7,3,0,1,100},
{0,0,0},1,
{5,0,0,3,0,
{0,1,0},
{3,4,
{0}
},
{3,4,
{0}
},
{3,0,
{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e}
},0,1,2,
{1,
{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",0,0,0,0,0,0,3,3,0,0,0},"//начало текста модуля
///////////////////////////////////////////////////
//Служебные функции и процедуры
///////////////////////////////////////////////////
&НаКлиенте
// контекст фреймворка Vanessa-Behavior
Перем Ванесса;
&НаКлиенте
// Структура, в которой хранится состояние сценария между выполнением шагов. Очищается перед выполнением каждого сценария.
Перем Контекст Экспорт;
&НаКлиенте
// Структура, в которой можно хранить служебные данные между запусками сценариев. Существует, пока открыта форма Vanessa-Behavior.
Перем КонтекстСохраняемый Экспорт;
&НаКлиенте
// Функция экспортирует список шагов, которые реализованы в данной внешней обработке.
Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт
Ванесса = КонтекстФреймворкаBDD;
ВсеТесты = Новый Массив;
Ванесса.ДобавитьШагВМассивТестов(ВсеТесты,""ЯСталНаблюдателемЗаЗадачейСНомером(Парам01,Парам02)"",""ЯСталНаблюдателемЗаЗадачейСНомером"",""Тогда я стал наблюдателем за задачей """"ЭтоТестоваяЗадача"""" с номером '9999999'"");
Возврат ВсеТесты;
КонецФункции
&НаСервере
// Служебная функция.
Функция ПолучитьМакетСервер(ИмяМакета)
ОбъектСервер = РеквизитФормыВЗначение(""Объект"");
Возврат ОбъектСервер.ПолучитьМакет(ИмяМакета);
КонецФункции
&НаКлиенте
// Служебная функция для подключения библиотеки создания fixtures.
Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт
Возврат ПолучитьМакетСервер(ИмяМакета);
КонецФункции
///////////////////////////////////////////////////
//Работа со сценариями
///////////////////////////////////////////////////
&НаКлиенте
// Процедура выполняется перед началом каждого сценария
Процедура ПередНачаломСценария() Экспорт
СостояниеVanessaBehavior = Ванесса.ПолучитьСостояниеVanessaBehavior();
ИмяСценария = СостояниеVanessaBehavior.ТекущийСценарий.Имя;
ПредставлениеСправочника = ""узЗадачи"";
ЭлементСправочника = утвПолучитьЭлементГруппуСправочника(ПредставлениеСправочника, , ""ЭтоТестоваяЗадача"");
утвУдалитьЭлементСправочника(ПредставлениеСправочника, ЭлементСправочника);
СоздатьЭлементСправочникаСНаименованиеНаСервере(ПредставлениеСправочника, ""ЭтоТестоваяЗадача"");
Задача = утвПолучитьЭлементГруппуСправочника(ПредставлениеСправочника, , ""ЭтоТестоваяЗадача"",,ИСТИНА);
УстановитьЗначениеРеквизитаСправочника(Задача, ""Код"", 9999999);
КонтекстСохраняемый.Вставить(""Задача"", Задача);
КонецПроцедуры
&НаКлиенте
// Процедура выполняется перед окончанием каждого сценария
Процедура ПередОкончаниемСценария() Экспорт
КонецПроцедуры
///////////////////////////////////////////////////
//Реализация шагов
///////////////////////////////////////////////////
&НаСервере
Процедура СоздатьЭлементСправочникаСНаименованиеНаСервере(ИмяСправочника, Наименование)
ЭлементСправочника = Справочники[ИмяСправочника].СоздатьЭлемент();
ЭлементСправочника.Наименование = Наименование;
ЭлементСправочника.Записать();
КонецПроцедуры
&НаСервере
Функция утвПолучитьЭлементГруппуСправочника(ИмяСправочника, Код = """", Наименование = """", ИскатьГруппу = Ложь, ДолженБыть = ЛОЖЬ)
ПредставлениеПоиска = """";
Если Истина
И ПустаяСтрока(Код)
И ПустаяСтрока(Наименование)
Тогда
ВызватьИсключение ""Не заполнено ни одно свойство поиска"";
ИначеЕсли Истина
И ЗначениеЗаполнено(Код)
И ЗначениеЗаполнено(Наименование)
Тогда
ПредставлениеПоиска = ""коду """""" + Код + """""" и наименованию """""" + Наименование + """""""";
ИначеЕсли ЗначениеЗаполнено(Код) Тогда
ПредставлениеПоиска = ""коду """""" + Код + """""""";
ИначеЕсли ЗначениеЗаполнено(Наименование) Тогда
ПредставлениеПоиска = ""наименованию """""" + Наименование + """""""";
КонецЕсли;
ТекстИсключения = ""Не нашли #ГруппуИлиЭлемент справочника #ИмяСправочника по #ПредставлениеПоиска"";
ТекстИсключения = СтрЗаменить(ТекстИсключения, ""#ГруппуИлиЭлемент"" , ?(ИскатьГруппу, ""группу"", ""элемент""));
ТекстИсключения = СтрЗаменить(ТекстИсключения, ""#ИмяСправочника"" , ИмяСправочника);
ТекстИсключения = СтрЗаменить(ТекстИсключения, ""#ПредставлениеПоиска"", ПредставлениеПоиска);
Запрос = Новый Запрос;
Запрос.Текст =
""ВЫБРАТЬ
| Справочник.Ссылка
|ИЗ
| Справочник.Пользователи КАК Справочник
|ГДЕ
| &МоиУсловия"";
ТекстМоиУсловия = """";
Если ИскатьГруппу Тогда
СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, ""Справочник.ЭтоГруппа = &ИскатьГруппу"");
КонецЕсли;
Если ЗначениеЗаполнено(Код) Тогда
СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, ""Справочник.Код = &Код"");
КонецЕсли;
Если ЗначениеЗаполнено(Наименование) Тогда
СформироватьТекстУсловияЗапроса(ТекстМоиУсловия, ""Справочник.Наименование = &Наименование"");
КонецЕсли;
Если ПустаяСтрока(ТекстМоиУсловия) Тогда
ТекстМоиУсловия = ""ИСТИНА"";
КонецЕсли;
СтрокаЗаменыСправочника = ""Справочник."" + ИмяСправочника + "" КАК Справочник"";
Запрос.Текст = СтрЗаменить(Запрос.Текст, ""&МоиУсловия"", ТекстМоиУсловия);
Запрос.Текст = СтрЗаменить(Запрос.Текст, ""Справочник.Пользователи КАК Справочник"", СтрокаЗаменыСправочника);
Запрос.УстановитьПараметр(""ИскатьГруппу"", ИскатьГруппу);
Запрос.УстановитьПараметр(""Код"", Код);
Запрос.УстановитьПараметр(""Наименование"", Наименование);
РезультатЗапроса = Запрос.Выполнить();
Если ДолженБыть И РезультатЗапроса.Пустой() Тогда
ВызватьИсключение ТекстИсключения;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.Ссылка;
КонецФункции
&НаСервере
Процедура СформироватьТекстУсловияЗапроса(ТекстРезультат, ТекстУсловия)
Если НЕ ПустаяСтрока(ТекстРезультат) Тогда
ТекстРезультат = ТекстРезультат + "" И ""
КонецЕсли;
ТекстРезультат = ТекстРезультат + ТекстУсловия;
КонецПроцедуры
&НаСервере
Процедура утвУдалитьЭлементСправочника(ИмяСправочника, ЭлементСправочника)
Запрос = Новый Запрос;
Запрос.Текст =
""ВЫБРАТЬ
| Справочник.Ссылка
|ИЗ
| Справочник."" + ИмяСправочника + "" КАК Справочник
|ГДЕ
| Справочник.Ссылка = &ЭлементСправочника"";
Запрос.УстановитьПараметр(""ЭлементСправочника"", ЭлементСправочника);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ЭлементОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ЭлементОбъект.Удалить();
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗначениеРеквизитаСправочника(ЭлементСправочника, ИмяРеквизита, Значение, ЗначениеВХранилище = ЛОЖЬ)
СпрОбъект = ЭлементСправочника.ПолучитьОбъект();
Если ЗначениеВХранилище Тогда
СпрОбъект[ИмяРеквизита] = Новый ХранилищеЗначения(Значение);
Иначе
СпрОбъект[ИмяРеквизита] = Значение;
КонецЕсли;
СпрОбъект.Записать();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьАктивноеОкноИзТестовоеПриложение()
Возврат КонтекстСохраняемый.ТестовоеПриложение.ПолучитьАктивноеОкно();
КонецФункции
&НаКлиенте
Функция ПолучитьАктивноеОкноИзКонтекста()
Возврат Контекст.АктивноеОкно;
КонецФункции
&НаКлиенте
Функция НайтиПолеПоИмени(ИмяПоля,НужнаяФорма = Неопределено)
Получилось = Ложь;
Если Не Получилось Тогда
Если НужнаяФорма = Неопределено Тогда
ОкноПриложения = ПолучитьАктивноеОкноИзТестовоеПриложение();
НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип(""ТестируемаяФорма""));
КонецЕсли;
Если НужнаяФорма = Неопределено Тогда
//иногда 1С некорректно отдаёт текущее окно, тогда будем искать во всех окнах
//сначала поищем в недавно открытом окне
Попытка
ОкноПриложения = ПолучитьАктивноеОкноИзКонтекста();
НужнаяФорма = ОкноПриложения.НайтиОбъект(Тип(""ТестируемаяФорма""));
Исключение
КонецПопытки;
//Если НужнаяФорма = Неопределено Тогда
// //затем будем искать во всех окнах
// МассивОкон = КонтекстСохраняемый.ТестовоеПриложение.НайтиОбъекты(Тип(""ТестируемоеОкноКлиентскогоПриложения""));
// Для каждого ТекОкно Из МассивОкон Цикл
//
// НужнаяФорма = ТекОкно.НайтиОбъект(Тип(""ТестируемаяФорма""));
// Если НужнаяФорма <> Неопределено Тогда
// Контекст.Вставить(""АктивноеОкно"",ОкноПриложения); //произошла неявная смена активного окна
// КонецЕсли;
//
// КонецЦикла;
//
//КонецЕсли;
КонецЕсли;
Если ИмяПоля = """" Тогда
Поле = НужнаяФорма.НайтиОбъект(Тип(""ТестируемоеПолеФормы""));
Иначе
Поле = НужнаяФорма.НайтиОбъект(Тип(""ТестируемоеПолеФормы""),,ИмяПоля);
КонецЕсли;
КонецЕсли;
Возврат Поле;
КонецФункции
&НаСервере
Процедура УстановитьЗначениеКонстаны(ИмяКонстанты, Результат)
Константы[ИмяКонстанты].Установить(Результат);
КонецПроцедуры
&НаКлиенте
//Тогда я стал наблюдателем за задачей ""ЭтоТестоваяЗадача"" с номером '9999999'
//@ЯСталНаблюдателемЗаЗадачейСНомером(Парам01,Парам02)
Процедура ЯСталНаблюдателемЗаЗадачейСНомером(НаименованиеЗадачи, НомерЗадачи) Экспорт
Результат = ПолучитьЗаписьРСПоЗадаче(КонтекстСохраняемый.Задача);
Ванесса.ПроверитьНеРавенство(Неопределено, Результат, ""Ожидаемое значение результата"");
Ванесса.ПроверитьРавенство(НаименованиеЗадачи, Результат.Наименование, ""Ожидаемое значение наименования задачи"");
Ванесса.ПроверитьРавенство(НомерЗадачи, Результат.Номер, ""Ожидаемое значение номера задачи"");
КонецПроцедуры
Функция ПолучитьЗаписьРСПоЗадаче(Задача)
Результат = Неопределено;
Запрос = Новый Запрос;
Запрос.Текст = ""ВЫБРАТЬ
| узНаблюдателиЗаЗадачами.Задача.Наименование КАК Наименование,
| узНаблюдателиЗаЗадачами.Задача.Код КАК Номер,
| узНаблюдателиЗаЗадачами.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.узНаблюдателиЗаЗадачами КАК узНаблюдателиЗаЗадачами
|ГДЕ
| узНаблюдателиЗаЗадачами.Задача = &Задача
| И узНаблюдателиЗаЗадачами.Пользователь = &Пользователь"";
Запрос.УстановитьПараметр(""Задача"", Задача);
Запрос.УстановитьПараметр(""Пользователь"", Пользователи.ТекущийПользователь());
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Результат = Новый Структура(""Наименование, Номер"", Выборка.Наименование, Формат(Выборка.Номер,""ЧГ=0""));
КонецЕсли;
Возврат Результат;
КонецФункции
//окончание текста модуля",
{4,1,
{9,
{1},0,"Объект",
{1,0},
{"Pattern",
{"#",1fa267af-3d54-4f70-ac00-718486d7aafd}
},
{0,
{0,
{"B",1},0}
},
{0,
{0,
{"B",1},0}
},
{0,0},
{0,0},1,0,0,0,
{0,0},
{0,0}
},0,0,
{#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0
aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u
LXN5c3RlbS9zZXR0aW5ncyIgeG1sbnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUv
OC4xL2RhdGEtY29tcG9zaXRpb24tc3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJo
dHRwOi8vdjguMWMucnUvOC4xL2RhdGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0
cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9
Imh0dHA6Ly92OC4xYy5ydS84LjEvZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRw
Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj
LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4
LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
},
{0,0},
{0,0},
{0,0},
{0,0},0,0}

View File

@ -0,0 +1,17 @@
{1,
{79a499cc-1782-4a2f-abe7-61ea4d49fd5a},1,
{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,
{1,
{4,1fa267af-3d54-4f70-ac00-718486d7aafd,ed829681-4496-44fd-adeb-667f09d931c3,
{0,
{1,
{0,0,8aa13ab8-188a-4f59-be4f-031aa5450c90},"ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей",
{1,"ru","Проверка добавления автора комментария в наблюдатели за задачей"},"",0,0}
},70e297e0-e8a2-43bf-8be1-62e408f610a1,"",00000000-0000-0000-0000-000000000000},4,
{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0},
{3daea016-69b7-4ed4-9453-127911372fe6,0},
{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,70e297e0-e8a2-43bf-8be1-62e408f610a1},
{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0}
}
}
}

View File

@ -0,0 +1,16 @@
{4,
{2,
{70e297e0-e8a2-43bf-8be1-62e408f610a1,70e297e0-e8a2-43bf-8be1-62e408f610a1,1,
{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"}
},
{8aa13ab8-188a-4f59-be4f-031aa5450c90,8aa13ab8-188a-4f59-be4f-031aa5450c90,1,
{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ПроверкаДобавленияАвтораКомментарияВНаблюдателиЗаЗадачей"}
}
},
{1,
{1fa267af-3d54-4f70-ac00-718486d7aafd,8aa13ab8-188a-4f59-be4f-031aa5450c90,0}
},
{0},
{0,0},
{0}
}

View File

@ -0,0 +1 @@
{1,9,"",866c4490-4922-4015-a5b0-51a4d39d3c60,"70e297e0-e8a2-43bf-8be1-62e408f610a1",27c05e94-b56f-40c5-aef2-487ae177b3b0,"70e297e0-e8a2-43bf-8be1-62e408f610a1.0",476d9837-3cce-4887-af1d-ee503fa28c80,"79a499cc-1782-4a2f-abe7-61ea4d49fd5a",42fb4a9f-54d2-4034-85d1-3dfcdb050889,"8aa13ab8-188a-4f59-be4f-031aa5450c90.0",8f078f9d-d37e-43c8-a027-62db3be5182d,"copyinfo",b6e043a5-113e-4684-93bd-3bbd4c57396e,"root",38b1a0cb-6e17-4dac-84f0-ac47726dc9b7,"version",b1509780-834c-4127-b5b7-5f619ab2384b,"versions",063e6699-909b-41cc-8b1c-6a4d0e3d3a0b}