Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save VladFrost/56f01cd6afe8b4e72f35805de62f06bd to your computer and use it in GitHub Desktop.
Save VladFrost/56f01cd6afe8b4e72f35805de62f06bd to your computer and use it in GitHub Desktop.
тесты_ОткрытиеФормКонфигурации
Перем КонтекстЯдра;
Перем Ожидаем;
Перем Утверждения;
Перем ТестируемаяФорма;
Перем НужноИсключениеЕслиНеНайденоДокументов;
//{ интерфейс тестирования
// директива препроцессора нужна для исключения ошибки загрузки в толстом клиенте управляемого приложения
#Если ТолстыйКлиентОбычноеПриложение Тогда
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
КонтекстЯдра = КонтекстЯдраПараметр;
Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD");
Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
КонецПроцедуры
Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдра) Экспорт
ВидыМетаданных = ВидыМетаданных();
ВидыПроверок = ВидыПроверок();
ПутьНастройки = "smoke";
ПлагинНастроек = КонтекстЯдра.Плагин("Настройки");
Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки);
НужноИсключениеЕслиНеНайденоДокументов = Ложь;
Если НЕ СоздатьФорму_ПолучениеФорм() Тогда
Возврат;
КонецЕсли;
//НаборТестов.СтрогийПорядокВыполнения();
СоздатьИменаОсновныхФорм();
ВыводитьСообщенияВЖурналРегистрации = Истина;
Для Каждого МетаОбъект Из Метаданные.Справочники Цикл
Если ПравоДоступа("Редактирование", МетаОбъект) Тогда
ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуСуществующегоЭлементаСправочника", ПолучитьСписокИсключений_Справочники_Существующие(),
мИменаОсновныхФорм_Объекты, "Существующие элементы");
КонецЕсли;
Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда
ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоЭлементаСправочника", ПолучитьСписокИсключений_Справочники_Новые(),
мИменаОсновныхФорм_Объекты, "Новые элементы");
КонецЕсли;
Если ПравоДоступа("Добавление", МетаОбъект) Тогда
ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием", ПолучитьСписокИсключений_Справочники_Новые(),
мИменаОсновныхФорм_Объекты, "Новые через копирование элементы");
КонецЕсли;
ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Справочники_Списки(), мИменаОсновныхФорм_Списки);
КонецЦикла;
Для Каждого МетаОбъект Из Метаданные.Документы Цикл
Если ПравоДоступа("Редактирование", МетаОбъект) Тогда
ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуСуществующегоДокумента", ПолучитьСписокИсключений_Документы_Существующие(),
мИменаОсновныхФорм_Объекты, "Существующие документы");
ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму", ПолучитьСписокИсключений_Документы_ПеренестиДату(),
мИменаОсновныхФорм_Объекты, "Перенос документа на текущий день");
КонецЕсли;
Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда
ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоДокумента", ПолучитьСписокИсключений_Документы_Новые(),
мИменаОсновныхФорм_Объекты, "Новые документы");
КонецЕсли;
ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Документы_Списки(), мИменаОсновныхФорм_Списки);
КонецЦикла;
//ДобавитьТестПоМенеджеруМетаданных(НаборТестов, Метаданные.Отчеты, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Отчеты(), мИменаОсновныхФорм);
ДобавитьТестПоМенеджеруМетаданных(НаборТестов, Метаданные.Обработки, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Обработки(), мИменаОсновныхФорм);
КонецПроцедуры
#КонецЕсли
//}
Процедура ПередЗапускомТеста() Экспорт
ВыводитьСообщенияВЖурналРегистрации = Истина;
НужноИсключениеЕслиНеНайденоДокументов = Ложь;
СоздатьФорму_ПолучениеФорм();
НачатьТранзакцию();
КонецПроцедуры
Процедура ПослеЗапускаТеста() Экспорт
ЗакрытьФорму();
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
КонецПроцедуры
Процедура ТестДолжен_ПропуститьТестФормы(Знач ПричинаПропускаТеста) Экспорт
КонтекстЯдра.ПропуститьТест(ПричинаПропускаТеста);
КонецПроцедуры
Процедура ЗакрытьФорму()
Если ТипЗнч(ТестируемаяФорма) <> Тип("Форма") и ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда
Возврат;
КонецЕсли;
ТестируемаяФорма.Модифицированность = Ложь;
Если ТестируемаяФорма.Открыта() Тогда
ТестируемаяФорма.Модифицированность = Ложь;
Попытка
ТестируемаяФорма.Закрыть();
Исключение
Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
НачатьТранзакцию();
ТестируемаяФорма.УстановитьДействие("ПередЗакрытием", Неопределено);
ТестируемаяФорма.УстановитьДействие("ПриЗакрытии", Неопределено);
ТестируемаяФорма.Закрыть();
ВызватьИсключение Ошибка;
КонецПопытки;
Иначе
Попытка
ТестируемаяФорма.Закрыть();
Исключение
КонецПопытки;
КонецЕсли;
ТестируемаяФорма = "";
КонецПроцедуры
//{ блок работы с обычными и управляемыми формами - портирован из "Инструменты разработчика"
Процедура ТестДолжен_ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, ЕстьТранзакция) Экспорт
//Если ЕстьТранзакция Тогда
// НачатьТранзакцию();
//КонецЕсли;
ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя);
//Если ЕстьТранзакция Тогда
// Если ТранзакцияАктивна() Тогда
// ОтменитьТранзакцию();
// КонецЕсли;
//КонецЕсли;
КонецПроцедуры
Процедура ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма_Имя = "", СсылкаОбъектаИлиСамОбъект = Неопределено, СоздаватьОбъект = Ложь) Экспорт
ВыводитьСообщения = Ложь;
ВнешнийОбъект = Неопределено;
КлючВременнойФормы = "908насмь9ыв";
ИмяОперации = МетаФорма_ПолноеИмя;
Если ВыводитьСообщения Тогда
Сообщить(ИмяОперации);
КонецЕсли;
Если ВыводитьСообщенияВЖурналРегистрации Тогда
ЗаписьЖурналаРегистрации(Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , "Операция: " + ИмяОперации);
КонецЕсли;
Форма = ПолучитьНовуюФорму(МетаФорма_ПолноеИмя, ВнешнийОбъект, КлючВременнойФормы);
Если Форма = Неопределено Тогда
Возврат;
КонецЕсли;
ЭтоФормаСсылочногоОбъекта = Ложь;
Если СсылкаОбъектаИлиСамОбъект <> Неопределено Тогда
ЭтоФормаСсылочногоОбъекта = Истина;
Иначе
Если ЭтоОбычнаяФорма(Форма) Тогда
Попытка
Пустышка = Форма.ЭтотОбъект.ЭтоНовый();
ЭтоФормаСсылочногоОбъекта = Истина;
Исключение
КонецПопытки;
Иначе
Если Форма.Параметры.Свойство("Ключ") Тогда
Попытка
Пустышка = Форма.Параметры.Ключ.Ссылка;
ЭтоФормаСсылочногоОбъекта = Истина;
Исключение
КонецПопытки;
КонецЕсли;
КонецЕсли;
Если ЭтоФормаСсылочногоОбъекта Тогда
Если ЭтоОбычнаяФорма(Форма) Тогда
СсылкаОбъектаИлиСамОбъект = Форма.Ссылка;
Иначе
СсылкаОбъектаИлиСамОбъект = Форма.Параметры.Ключ;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЭтоФормаСсылочногоОбъекта Тогда
Если ЭтоОбычнаяФорма(Форма) Тогда
Если СоздаватьОбъект Тогда
Если СсылкаОбъектаИлиСамОбъект <> Неопределено Тогда
СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект.Скопировать();
//Иначе
// СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект.Метаданные;
КонецЕсли;
Иначе
СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект;
КонецЕсли;
Форма = СсылочныйОбъект.ПолучитьФорму(МетаФорма_Имя, , КлючВременнойФормы);
Иначе
ПараметрыФормы = Новый Структура;
ЭтоОбъект = Ложь;
Попытка
Пустышка = СсылкаОбъектаИлиСамОбъект.ЭтотОбъект;
ЭтоОбъект = Истина;
Исключение
КонецПопытки;
Если СоздаватьОбъект Тогда
Если Не ЭтоОбъект Тогда
ПараметрыФормы.Вставить("ЗначениеКопирования", СсылкаОбъектаИлиСамОбъект);
КонецЕсли;
ИначеЕсли Не ЭтоОбъект Тогда
ПараметрыФормы.Вставить("Ключ", СсылкаОбъектаИлиСамОбъект);
КонецЕсли;
Форма = ПолучитьФормуЛкс(МетаФорма_ПолноеИмя, ПараметрыФормы, , КлючВременнойФормы);
КонецЕсли;
КонецЕсли;
ТестироватьФорму(Форма, ИмяОперации);
КонецПроцедуры
Процедура СоздатьИменаОсновныхФорм() Экспорт
Если Не ЗначениеЗаполнено(мИменаОсновныхФорм) Тогда
мИменаОсновныхФорм = Новый Массив();
КонецЕсли;
СоздатьИменаОсновныхФорм_Объекты();
СоздатьИменаОсновныхФормСписка();
Для каждого эл Из мИменаОсновныхФорм_Объекты Цикл
мИменаОсновныхФорм.Добавить(эл);
КонецЦикла;
Для каждого эл Из мИменаОсновныхФорм_Списки Цикл
мИменаОсновныхФорм.Добавить(эл);
КонецЦикла;
КонецПроцедуры
Процедура СоздатьИменаОсновныхФорм_Объекты()
Если Не ЗначениеЗаполнено(мИменаОсновныхФорм_Объекты) Тогда
мИменаОсновныхФорм_Объекты = Новый Массив();
КонецЕсли;
мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФорма");
мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаОбъекта");
мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаГруппы");
мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаЗаписи");
мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаНастроек");
мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаСохранения");
мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаЗагрузки");
мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФорма");
мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаОбъекта");
мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаГруппы");
мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаЗаписи");
мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаНастроек");
мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаСохранения");
мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаЗагрузки");
КонецПроцедуры
Процедура СоздатьИменаОсновныхФормСписка()
Если Не ЗначениеЗаполнено(мИменаОсновныхФорм_Списки) Тогда
мИменаОсновныхФорм_Списки = Новый Массив();
КонецЕсли;
мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаСписка");
мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаДляВыбора");
мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаДляВыбораГруппы");
мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаКонстант");
мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаСписка");
мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаДляВыбора");
мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаДляВыбораГруппы");
мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаКонстант");
КонецПроцедуры
Функция СоздатьФорму_ПолучениеФорм()
Попытка
мПолучениеФорм = ПолучитьФорму("ПолучениеФорм"); // в управляемом режиме здесь будет ошибка выполнения
Возврат Истина;
Исключение
КонецПопытки;
Возврат Ложь;
КонецФункции
Функция ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм) Экспорт
ИспользоватьУФ = Метаданные.ИспользоватьУправляемыеФормыВОбычномПриложении ИЛИ (ТекущийРежимЗапуска() <> РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение);
МетаФормы = Новый Массив();
Для Каждого ИмяОсновнойФормы Из ИменаОсновныхФорм Цикл
Попытка
МетаФорма = МетаОбъект[ИмяОсновнойФормы];
Исключение
Продолжить;
КонецПопытки;
Если МетаФорма = Неопределено Тогда
Продолжить;
КонецЕсли;
Если МетаФормы.Найти(МетаФорма) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Если НЕ ИспользоватьУФ И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая Тогда
Продолжить;
КонецЕсли;
МетаФормы.Добавить(МетаФорма);
КонецЦикла;
Возврат МетаФормы;
КонецФункции
Функция ПолучитьФормуЛкс(ИмяФормы, Параметры = Неопределено, Владелец = Неопределено, Уникальность = Неопределено, Окно = Неопределено) Экспорт
Возврат мПолучениеФорм.ПолучитьФормуЛкс(ИмяФормы, Параметры, Владелец, Уникальность, Окно);
КонецФункции
Функция ПолучитьНовуюФорму(МетаФорма, ВнешнийОбъект = Неопределено, КлючВременнойФормы = Неопределено)
Форма = ПолучитьФормуЛкс(МетаФорма, , , КлючВременнойФормы); //ирНеглобальный.
Возврат Форма;
КонецФункции
Процедура ТестироватьФорму(Форма, ИмяОперации = "") Экспорт
ТестируемаяФорма = Форма;
Форма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350
Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ИмяОперации+""" не открылась, а должна была открыться");
// Артур - мой код для доп.проверки формы
Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда
ТестируемаяФорма.Обновить();
Иначе
ТестируемаяФорма.ОбновитьОтображениеДанных();
КонецЕсли;
КонецПроцедуры
//} конец блока работы с управляемыми формами - из "Инструменты разработчика"
Функция ИмяМетодаПропускаТестов()
Возврат "ТестДолжен_ПропуститьТестФормы";
КонецФункции
Функция ЭтоОбычнаяФорма(Форма)
Возврат ТипЗнч(Форма) = Тип("Форма");
КонецФункции
Процедура ДобавитьТестПоМенеджеруМетаданных(НаборТестов, менеджерМетаданного, имяТеста, списокИсключений, ИменаОсновныхФорм)
Для Каждого МетаОбъект Из менеджерМетаданного Цикл
ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, имяТеста, списокИсключений, ИменаОсновныхФорм);
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьТестДляМетаданного_ОдинОбъект(
НаборТестов, Знач МетаОбъект, Знач имяТеста,
Знач списокИсключений, Знач ИменаОсновныхФорм)
Сообщить(СтрШаблон("ДобавитьТестДляМетаданного_ОдинОбъект %1", МетаОбъект.Имя));
ПрефиксПропускаемых = "";
ПропускатьТест = Ложь;
Если СтрНайти(МетаОбъект.Имя, "ПрисоединенныеФайлы") > 0 Тогда
ПропускатьТест = Истина;
ПрефиксПропускаемых = "присоединенные файлы не предназначены для интерактивного открытия";
КонецЕсли;
Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда
//Возврат;
ПропускатьТест = Истина;
ПрефиксПропускаемых = "объект находится в исключениях";
КонецЕсли;
Если ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда
//Возврат;
ПропускатьТест = Истина;
ПрефиксПропускаемых = "объект устарел";
КонецЕсли;
Если Не ПравоДоступа("Просмотр", МетаОбъект) Тогда
ПропускатьТест = Истина;
ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя";
КонецЕсли;
Если ПропускатьТест Тогда
имяТеста = ИмяМетодаПропускаТестов();
ПараметрыТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых);
КонецЕсли;
//Если ПравоДоступа("Просмотр", МетаОбъект) Тогда
МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм);
Для каждого МетаФорма Из МетаФормы Цикл
МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя();
Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда
МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма";
КонецЕсли;
ПредставлениеТеста = МетаФорма_ПолноеИмя;
ЕстьТранзакция = Истина;
//НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаФорма_ПолноеИмя, ЕстьТранзакция), ПредставлениеТеста);
Если ПропускатьТест Тогда
ПредставлениеТеста = ПрефиксПропускаемых + " : " + ПредставлениеТеста;
НаборТестов.Добавить(имяТеста, ПараметрыТеста, ПредставлениеТеста);
Иначе
НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаФорма_ПолноеИмя, ЕстьТранзакция), ПредставлениеТеста);
КонецЕсли;
КонецЦикла;
//КонецЕсли;
КонецПроцедуры
Процедура ДобавитьТестДляОдногоМетаданного_Объекты(
НаборТестов, Знач МетаОбъект, Знач имяТеста,
Знач списокИсключений, Знач ИменаОсновныхФорм, Знач ПрефиксПредставленияТеста)
ПрефиксПропускаемых = "";
ПропускатьТест = Ложь;
Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда
//Возврат;
ПропускатьТест = Истина;
ПрефиксПропускаемых = "объект находится в исключениях";
КонецЕсли;
Если ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда
//Возврат;
ПропускатьТест = Истина;
ПрефиксПропускаемых = "объект устарел";
КонецЕсли;
Если Не (ПравоДоступа("Просмотр", МетаОбъект) и ПравоДоступа("Добавление", МетаОбъект)) Тогда
ПропускатьТест = Истина;
ПрефиксПропускаемых = "нет прав интерактивного доступа у пользователя";
КонецЕсли;
Если ПропускатьТест Тогда
ПрефиксПредставленияТеста = ПрефиксПредставленияТеста + " : " + ПрефиксПропускаемых;
имяТеста = ИмяМетодаПропускаТестов();
ПараметрыТеста = НаборТестов.ПараметрыТеста(ПрефиксПропускаемых);
КонецЕсли;
//Если ПравоДоступа("Просмотр", МетаОбъект) и ПравоДоступа("Добавление", МетаОбъект)
//Тогда
МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм);
Для каждого МетаФорма Из МетаФормы Цикл
МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя();
ПредставлениеТеста = ПрефиксПредставленияТеста + " : " + МетаФорма_ПолноеИмя;
ЕстьТранзакция = Истина;
//НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаОбъект.Имя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция), ПредставлениеТеста);
Если ПропускатьТест Тогда
НаборТестов.Добавить(имяТеста, ПараметрыТеста, ПредставлениеТеста);
Иначе
НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаОбъект.Имя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция), ПредставлениеТеста);
КонецЕсли;
КонецЦикла;
//КонецЕсли;
КонецПроцедуры
Функция ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Экспорт
Возврат Найти(НРег(МетаОбъект.Имя), НРег("Удалить")) = 1;
КонецФункции
Процедура Тест_ОткрытьФормуСуществующегоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт
ИД = МетаИмя;
Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, "Тест_ОткрытьФормуСуществующегоДокумента");
Если Док <> Неопределено Тогда
ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка);
КонецЕсли;
КонецПроцедуры
Процедура Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт
ИД = МетаИмя;
Док = ПолучитьСуществующийДокументОбъект(ИД, Ложь, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму");
Если Док = Неопределено Тогда
Возврат;
КонецЕсли;
Док.Дата = ТекущаяДата();
Док.ОбменДанными.Загрузка = Истина;
Док.Записать();
ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка);
КонецПроцедуры
Процедура Тест_ОткрытьФормуНовогоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт
ИД = МетаИмя;
Док = Документы[ИД].СоздатьДокумент();
Док.Заполнить(Неопределено);
Мета = Док.Метаданные();
Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда
Возврат;
КонецЕсли;
Если Мета.ДлинаНомера <> 0 Тогда
Попытка
Док.УстановитьНовыйНомер();
Исключение
КонецПопытки;
КонецЕсли;
ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док, Ложь);
КонецПроцедуры
Функция ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения)
выборка = Документы[ИД].Выбрать(,,, "Дата Убыв");
уcпешно = выборка.Следующий();
Если Не уcпешно Тогда
Если НужноИсключениеЕслиНеНайденоДокументов Тогда
ВызватьИсключение ДопОписаниеДляИсключения + ": выборка.Следующий() - не найдено существующих документов! ";
Иначе
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Док = выборка.ПолучитьОбъект();
Возврат Док;
КонецФункции
Функция ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) Экспорт
Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения);
Возврат ?(Док = Неопределено, Неопределено, Док.Ссылка);
КонецФункции
Процедура Тест_ОткрытьФормуСуществующегоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт
ИД = МетаИмя;
Элем = СоздатьЭлемент(ИД, "существующий");
ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка);
КонецПроцедуры
Процедура Тест_ОткрытьФормуНовогоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт
ИД = МетаИмя;
Элем = Справочники[ИД].СоздатьЭлемент();
Мета = Элем.Метаданные();
Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда
Возврат;
КонецЕсли;
Если Мета.ДлинаНаименования <> 0 Тогда
Попытка
Элем.Наименование = "новый";
Исключение
КонецПопытки;
КонецЕсли;
ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем, Ложь);
КонецПроцедуры
Процедура Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт
ИД = МетаИмя;
Элем = СоздатьЭлемент(ИД, "копирование", "ИнтерактивноеДобавление");
Если Элем = Неопределено Тогда
Возврат;
КонецЕсли;
ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка, Истина);
КонецПроцедуры
Функция СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено)
Элем = Справочники[ИД].СоздатьЭлемент();
Элем.Заполнить(Неопределено);
Мета = Элем.Метаданные();
Если ПроверяемоеПравоДоступа <> Неопределено И НЕ ПравоДоступа(ПроверяемоеПравоДоступа, Мета) Тогда
Возврат Неопределено;
КонецЕсли;
Если Мета.ДлинаНаименования <> 0 Тогда
Попытка
Элем.Наименование = Наименование;
Исключение
КонецПопытки;
КонецЕсли;
Если Мета.ДлинаКода <> 0 Тогда
Элем.УстановитьНовыйКод();
КонецЕсли;
Элем.ОбменДанными.Загрузка = Истина;
Элем.Записать();
Возврат Элем;
КонецФункции
Функция СоздатьЭлементИВернутьСсылку(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) Экспорт
Элем = СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа);
Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка);
КонецФункции
//{ блок работы с настройками
//Функция ПолучитьНастройки(Знач ФайлТеста, Знач ПутьНастройки) Экспорт
//
// Если Настройки = Неопределено Тогда
// ПутьФайлаНастроек = СтрШаблон("%1%2", ФайлТеста.Путь, ПутьНастройки);
// ФайлНастроек = Новый Файл(ПутьФайлаНастроек);
// Если ФайлНастроек.Существует() Тогда
// ЧтениеJSON = Новый ЧтениеJSON;
// ЧтениеJSON.ОткрытьФайл(ПутьФайлаНастроек);
// Настройки = ПрочитатьJSON(ЧтениеJSON, Ложь);
// Настройки = Новый ФиксированнаяСтруктура(Настройки);
// КонецЕсли;
// КонецЕсли;
// Возврат Настройки;
//КонецФункции
Функция ПолучитьИсключения(Знач ВидМетаданного, Знач ВидПроверки)
Если Не ЗначениеЗаполнено(Настройки) Тогда
Возврат Неопределено;
КонецЕсли;
Результат = Неопределено;
Настройка = Неопределено;
ЕстьНастройка = Настройки.Свойство(ВидМетаданного, Настройка);
Если ЕстьНастройка Тогда
Если ТипЗнч(Настройка) = Тип("Массив") ИЛИ ВидПроверки = "" Тогда
МассивИсключений = Настройка;
Иначе
МассивИсключений = Неопределено;
Если Не Настройка.Свойство(ВидПроверки, МассивИсключений) Тогда
МассивИсключений = Неопределено;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(МассивИсключений) Тогда
Результат = Новый СписокЗначений; // TODO возвращать сразу массив, а не список исключений
Для Каждого ИмяМетаданного Из МассивИсключений Цикл
Результат.Добавить(ИмяМетаданного);
//Сообщить(СтрШаблон("Исключения %1.%2 - %3", ВидМетаданного, ВидПроверки, ИмяМетаданного));
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ВидыМетаданных() Экспорт
Если ВидыМетаданных = Неопределено Тогда
ВидыМетаданных = Новый Структура;
ВидыМетаданных.Вставить("Справочники", "Справочники");
ВидыМетаданных.Вставить("Документы", "Документы");
ВидыМетаданных.Вставить("Обработки", "Обработки");
ВидыМетаданных.Вставить("Отчеты", "Отчеты");
ВидыМетаданных = Новый ФиксированнаяСтруктура(ВидыМетаданных);
КонецЕсли;
Возврат ВидыМетаданных;
КонецФункции
Функция ВидыПроверок() Экспорт
Если ВидыПроверок = Неопределено Тогда
ВидыПроверок = Новый Структура;
ВидыПроверок.Вставить("Списки", "Списки");
ВидыПроверок.Вставить("Существующие", "Существующие");
ВидыПроверок.Вставить("Новые", "Новые");
ВидыПроверок.Вставить("ПеренестиДату", "ПеренестиДату");
ВидыПроверок = Новый ФиксированнаяСтруктура(ВидыПроверок);
КонецЕсли;
Возврат ВидыПроверок;
КонецФункции
//}
//{ блок переопределения исключений, чтобы не открывать формы
Функция ПолучитьСписокИсключений_Справочники_Списки() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Списки);
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
//Результат.Добавить("ирАлгоритмы");
Возврат Результат;
КонецФункции
Функция ПолучитьСписокИсключений_Справочники_Существующие() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Существующие);
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
Результат.Добавить("ИдентификаторыОбъектовМетаданных");
Результат.Добавить("ИдентификаторыОбъектовРасширений");
Результат.Добавить("ОтправкиРПН");
Результат.Добавить("ОтправкиФСРАР");
Результат.Добавить("ОтправкиФТС");
Результат.Добавить("ПапкиФайлов");
Результат.Добавить("ПравилаОбменаСПодключаемымОборудованиемOffline");
Результат.Добавить("ПрофилиНастроекЭДО");
Результат.Добавить("ЦиклыОбмена");
Результат.Добавить("ШаблоныДокументов");
Результат.Добавить("ШаблоныНаименований");
Возврат Результат;
КонецФункции
Функция ПолучитьСписокИсключений_Справочники_Новые() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Справочники, ВидыПроверок.Новые);
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
Результат.Добавить("Банки");
Результат.Добавить("ИдентификаторыОбъектовМетаданных");
Результат.Добавить("ИдентификаторыОбъектовРасширений");
Результат.Добавить("Организации");
Результат.Добавить("ПравилаОбменаСПодключаемымОборудованиемOffline");
Результат.Добавить("ПрофилиНастроекЭДО");
Результат.Добавить("СертификатыКлючейЭлектроннойПодписиИШифрования");
Результат.Добавить("СообщенияОбластейДанных");
Результат.Добавить("СообщенияСистемы");
Результат.Добавить("ТарифныеПланыДоговоровОбслуживания");
Результат.Добавить("ТорговыеТочки");
Результат.Добавить("ШаблоныДокументов");
Возврат Результат;
КонецФункции
Функция ПолучитьСписокИсключений_Документы_Списки() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Списки);
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
//Результат.Добавить("Штрафы");
Возврат Результат;
КонецФункции
Функция ПолучитьСписокИсключений_Документы_Существующие() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Существующие);
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
//Результат.Добавить("ИдентификаторыОбъектовРасширений");
Возврат Результат;
КонецФункции
Функция ПолучитьСписокИсключений_Документы_ПеренестиДату() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.ПеренестиДату);
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
//Результат.Добавить("Штрафы");
Возврат Результат;
КонецФункции
Функция ПолучитьСписокИсключений_Документы_Новые() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Документы, ВидыПроверок.Новые);
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
Результат.Добавить("РегламентированныйОтчет");
Результат.Добавить("ТранспортноеСообщение");
Результат.Добавить("УведомлениеОСпецрежимахНалогообложения");
Результат.Добавить("ЧекККМВозврат");
Возврат Результат;
КонецФункции
Функция ПолучитьСписокИсключений_Отчеты() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Отчеты, "");
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
//Результат.Добавить("Цены");
Возврат Результат;
КонецФункции
Функция ПолучитьСписокИсключений_Обработки() Экспорт
Результат = ПолучитьИсключения(ВидыМетаданных.Обработки, "");
Если ЗначениеЗаполнено(Результат) Тогда
Возврат Результат;
КонецЕсли;
Результат = Новый СписокЗначений;
Результат.Добавить("БазовыеФункцииИнтернетПоддержки");
Результат.Добавить("ВводКонтактнойИнформации");
Результат.Добавить("ДокументооборотСКонтролирующимиОрганами");
Результат.Добавить("ЗагрузкаДанныхИзВнешнегоИсточника");
Результат.Добавить("ЗагрузкаКурсовВалют");
Результат.Добавить("ЗагрузкаПравилРегистрацииОбъектов");
Результат.Добавить("ЗаменаИОбъединениеЭлементов");
Результат.Добавить("ИнтерактивноеИзменениеВыгрузки");
Результат.Добавить("ИнформацияПриЗапуске");
Результат.Добавить("КонвертацияОбъектовИнформационныхБаз");
Результат.Добавить("КонвертацияОбъектовРаспределенныхИнформационныхБаз");
Результат.Добавить("ЛегальностьПолученияОбновлений");
Результат.Добавить("МониторИнтернетПоддержки");
Результат.Добавить("МониторОнлайнЧеков");
Результат.Добавить("НастройкаРазрешенийНаИспользованиеВнешнихРесурсов");
Результат.Добавить("НастройкаРазрешенийНаИспользованиеВнешнихРесурсовВМоделиСервиса");
Результат.Добавить("ОблачныйАрхив");
Результат.Добавить("ОбменСGoogle");
Результат.Добавить("ОбновлениеРегламентированнойОтчетности");
Результат.Добавить("ОбработкиНалоговИОтчетности");
Результат.Добавить("ПанельАдминистрированияБИП");
Результат.Добавить("ПанельАдминистрированияЭДО");
Результат.Добавить("ПереносФайловВТома");
Результат.Добавить("ПечатьКонвертов");
Результат.Добавить("ПодборРеализация");
Результат.Добавить("Подключение1СТакском");
Результат.Добавить("ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса");
Результат.Добавить("ПомощникКорректировкиОстатковЕГАИС");
Результат.Добавить("ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете");
Результат.Добавить("ПомощникСозданияАвтономногоРабочегоМеста");
Результат.Добавить("ПомощникСозданияОбменаДанными");
Результат.Добавить("РасширенныйВводКонтактнойИнформации");
Результат.Добавить("РегламентированнаяОтчетностьСоотношенияПоказателей");
Результат.Добавить("РеквизитыПечати");
Результат.Добавить("РекомендацияПоПовышениюСкоростиРаботы");
Результат.Добавить("СдвигГраницыИтогов");
Результат.Добавить("СопоставлениеОбъектовИнформационныхБаз");
Результат.Добавить("СправкаСПАРКРиски");
Результат.Добавить("ТранспортСообщенийОбменаEMAIL");
Результат.Добавить("ТранспортСообщенийОбменаFILE");
Результат.Добавить("ТранспортСообщенийОбменаFTP");
Результат.Добавить("Ценообразование");
Результат.Добавить("ЭлектронныеДокументыОтправкаКаталога");
Возврат Результат;
КонецФункции
//} конец блока
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment