Перем ГалочкаСтоит,ГалочкаНеСтоит;
//******************************************************************************
Процедура ДляТекущейСтрокиВКолонкеМетка(ЗначениеГалочки,ТекСтр)
Если ТекСтр > 0 Тогда
СписокТиповРеквизитов.Пометка(ТекСтр,ЗначениеГалочки);
КонецЕсли;
КонецПроцедуры
Процедура ПоВсемСтрокамЗначениеМетка(НовоеЗначениеГалочки)
Для Ном=1 По СписокТиповРеквизитов.РазмерСписка() Цикл
ДляТекущейСтрокиВКолонкеМетка(НовоеЗначениеГалочки,Ном);
КонецЦикла;
КонецПроцедуры
Процедура ИнвертироватьЗначениеМетка(ТекСтр)
ТекЗначение = СписокТиповРеквизитов.Пометка(ТекСтр);
ДляТекущейСтрокиВКолонкеМетка(?(ТекЗначение=ГалочкаСтоит,ГалочкаНеСтоит,ГалочкаСтоит),ТекСтр);
КонецПроцедуры
Процедура ПоВсемСтрокамИнверсияЗначенияМетка()
Для Ном=1 По СписокТиповРеквизитов.РазмерСписка() Цикл
ИнвертироватьЗначениеМетка(Ном);
КонецЦикла;
КонецПроцедуры
//******************************************************************************
Процедура Сформировать()
Попытка
ЗагрузитьВнешнююКомпоненту("formex.dll");
Исключение
Сообщить("Не удалось загрузить FormEx: "+ОписаниеОшибки(),"!");
Возврат;
КонецПопытки;
РасшФормы = СоздатьОбъект("РасширениеФормы");
АтрФормы = СоздатьОбъект("АтрибутФормы");
Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Шапка");
//Отчеты
ТипОбъекта = "Отчет";
КолВоОтчетов = Метаданные.Отчет();
Для Ном=1 По КолВоОтчетов Цикл
Отчет = Метаданные.Отчет(Ном);
Идентификатор = Отчет.Идентификатор;
Синоним = Отчет.Синоним;
ОписательОбъекта = ТипОбъекта+"."+Идентификатор;
Если Найти(СписокИсключений,ОписательОбъекта) > 0 Тогда
Сообщить("Пропущен "+ОписательОбъекта);
Продолжить;
КонецЕсли;
КонтекстФормы = "";
ОткрытьФорму(ОписательОбъекта,КонтекстФормы);
Если ТипЗначения(КонтекстФормы) <> 100 Тогда
Сообщить("Не удалось открыть форму "+ОписательОбъекта);
Продолжить;
КонецЕсли;
Сообщить(ОписательОбъекта);
ФормаОбъекта = КонтекстФормы.Форма;
РасшФормы.УстановитьФорму(ФормаОбъекта);
Для Сч = 0 По РасшФормы.КоличествоАтрибутов()-1 Цикл
АтрибутФормы = РасшФормы.ПолучитьАтрибут(Сч);
ТипРеквизита = "";
ТипАтрибута = АтрибутФормы.Тип;
НомерЗначения = СписокТиповРеквизитов.НайтиЗначение(ТипАтрибута);
Если НомерЗначения = 0 Тогда
// это странно, тогда выводим как есть.
ТипРеквизита = ТипАтрибута;
ИначеЕсли СписокТиповРеквизитов.Пометка(НомерЗначения) = 1 Тогда
СписокТиповРеквизитов.ПолучитьЗначение(НомерЗначения,ТипРеквизита);
Иначе
Продолжить;
КонецЕсли;
АтрФормы.УстановитьАтрибут(ФормаОбъекта,Сч);
Реквизит = АтрибутФормы.Идентификатор;
ЗаголовокРеквизита = АтрибутФормы.Заголовок;
Попытка
ТипЗначенияРеквизита = "."+СокрЛП(АтрибутФормы.Значение.Вид());
Исключение
ТипЗначенияРеквизита = "";
КонецПопытки;
ТипЗначенияРеквизита = СокрЛП(АтрФормы.ТипЗначенияСтр())+ТипЗначенияРеквизита;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
ФормаОбъекта.Закрыть();
Таб.Показать();
КонецЦикла;
КонецПроцедуры // Сформировать()
Процедура ПриОткрытии()
//https://www.1cpp.ru/docum/html/FormEx.html#type
СписокТиповРеквизитов.ДобавитьЗначение(1,"STATIC (Текст)");
СписокТиповРеквизитов.ДобавитьЗначение(2,"1CEDIT (Поле ввода)");
СписокТиповРеквизитов.ДобавитьЗначение(3,"BUTTON (Кнопка)");
СписокТиповРеквизитов.ДобавитьЗначение(4,"1CGROUPBOX (Рамка группы)");
СписокТиповРеквизитов.ДобавитьЗначение(5,"1CEDIT (Колонка многострочной части редактируемая)");
СписокТиповРеквизитов.ДобавитьЗначение(8,"SysTreeView32 (Дерево групп)");
СписокТиповРеквизитов.ДобавитьЗначение(9,"STATIC (Колонка многострочной части с пикторгаммой или просто текстовая)");
СписокТиповРеквизитов.ДобавитьЗначение(10,"PICTURE (Картинка)");
СписокТиповРеквизитов.ДобавитьЗначение(11,"LISTBOX (Список)");
СписокТиповРеквизитов.ДобавитьЗначение(12,"CHECKBOX (Флажок)");
СписокТиповРеквизитов.ДобавитьЗначение(13,"RADIO (Переключатель)");
СписокТиповРеквизитов.ДобавитьЗначение(14,"COMBOBOX (Поле со списком)");
СписокТиповРеквизитов.ДобавитьЗначение(15,"TABLE (Таблица)");
ПоВсемСтрокамЗначениеМетка(ГалочкаСтоит);
КонецПроцедуры // ПриОткрытии()
ГалочкаСтоит = 1;
ГалочкаНеСтоит = 0;