//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////ПЕРЕМЕННЫЕ
Перем ДеревоГрупп_Реквизиты[300];
Перем УровеньМой;
Перем ТаблицаОбработкиДанных;
Перем ТЗ_Реквизиты2[300],х;
Перем ТЗ_Реквизиты3[300],хх;
//////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////ПРОЦЕДУРЫ И ФУНКЦИИ
//************************************************************************
Процедура ЗаполнитьДанными()
СписокЭлементовУстановка=СоздатьОбъект("СписокЗначений");
ТаблицаОбработкиДанных.ВыбратьСтроки();
Пока ТаблицаОбработкиДанных.ПолучитьСтроку()=1 Цикл
СписокЭлементовУстановка.ДобавитьЗначение(ТаблицаОбработкиДанных.Элемент);
КонецЦикла;
Попытка
УстановитьОтбор("",);
Исключение
КонецПопытки;
ИспользоватьСписокЭлементов(СписокЭлементовУстановка);
КонецПроцедуры
//************************************************************************
Процедура ПриРазворачиванииУзла(СтрокаОбработкиДерева,Флаг)
Сообщить(СтрокаОбработкиДерева);
КонецПроцедуры
//************************************************************************
Функция ВернутьТретийУровень(РодительГод,РодительМесяц)
Перем ЗначениеВозврата;
СписокНалоговНаМесяц=СоздатьОбъект("СписокЗначений");
ОтчетныеПериоды=СоздатьОбъект("Справочник.ОтчетныйПериод");
ОтчетныеПериоды.ВыбратьЭлементы(0);
Пока ОтчетныеПериоды.ПолучитьЭлемент()=1 Цикл
Если (Число(ОтчетныеПериоды.Код)=Число(РодительМесяц)) И (ОтчетныеПериоды.Владелец.Родитель=РодительГод) Тогда
СписокНалоговНаМесяц.ДобавитьЗначение(ОтчетныеПериоды.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
Если СписокНалоговНаМесяц.РазмерСписка()>0 Тогда
хх=хх+1;
ТЗ_Реквизиты3[хх]=СоздатьОбъект("ТаблицаЗначений");
ТЗ_Реквизиты3[хх].НоваяКолонка("СледУровень");
ТЗ_Реквизиты3[хх].НоваяКолонка("Пиктограмма");
ТЗ_Реквизиты3[хх].НоваяКолонка("Наименование");
ТЗ_Реквизиты3[хх].НоваяКолонка("Элемент");
Для Сч=1 По СписокНалоговНаМесяц.РазмерСписка() Цикл
ТЗ_Реквизиты3[хх].НоваяСтрока();
ТЗ_Реквизиты3[хх].Наименование=СписокНалоговНаМесяц.ПолучитьЗначение(Сч).Владелец.Налог.Наименование;
ТЗ_Реквизиты3[хх].Элемент=СписокНалоговНаМесяц.ПолучитьЗначение(Сч);
ТЗ_Реквизиты3[хх].СледУровень=0;
КонецЦикла;
ЗначениеВозврата=ТЗ_Реквизиты3[хх];
Иначе
ЗначениеВозврата=0;
КонецЕсли;
Возврат ЗначениеВозврата;
КонецФункции
//************************************************************************
Функция ВернутьВторойУровень(РодительГод)
Перем ЗначениеВозврата;
НалоговыеПериодыВиртуальные=СоздатьОбъект("Справочник.НалоговыйПериод");
ОтчетныеПериоды=СоздатьОбъект("Справочник.ОтчетныйПериод");
СписокМесяцев=СоздатьОбъект("СписокЗначений");
НалоговыеПериодыВиртуальные.ИспользоватьРодителя(РодительГод);
НалоговыеПериодыВиртуальные.ВыбратьЭлементы();
Пока НалоговыеПериодыВиртуальные.ПолучитьЭлемент()=1 Цикл
ОтчетныеПериоды.ИспользоватьВладельца(НалоговыеПериодыВиртуальные.ТекущийЭлемент());
ОтчетныеПериоды.ВыбратьЭлементы();
Пока ОтчетныеПериоды.ПолучитьЭлемент()=1 Цикл
Если СписокМесяцев.НайтиЗначение(ОтчетныеПериоды.Код)=0 Тогда
СписокМесяцев.ДобавитьЗначение(ОтчетныеПериоды.Код);
КонецЕсли;
Если СписокМесяцев.РазмерСписка()=12 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если СписокМесяцев.РазмерСписка()=12 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если СписокМесяцев.РазмерСписка()>0 Тогда
х=х+1;
ТЗ_Реквизиты2[х]=СоздатьОбъект("ТаблицаЗначений");
ТЗ_Реквизиты2[х].НоваяКолонка("СледУровень");
ТЗ_Реквизиты2[х].НоваяКолонка("Пиктограмма");
ТЗ_Реквизиты2[х].НоваяКолонка("Наименование");
ТЗ_Реквизиты2[х].НоваяКолонка("Элемент");
Для Сч=1 По СписокМесяцев.РазмерСписка() Цикл
ТЗ_Реквизиты2[х].НоваяСтрока();
ТЗ_Реквизиты2[х].Наименование=ВернутьНазваниеМесяца(Число(СписокМесяцев.ПолучитьЗначение(Сч)));
ТабУстановки=ВернутьТретийУровень(РодительГод,Число(СписокМесяцев.ПолучитьЗначение(Сч)));
ТЗ_Реквизиты2[х].СледУровень=ТабУстановки;
ТЗ_Реквизиты2[х].Элемент=ТабУстановки;
КонецЦикла;
ЗначениеВозврата=ТЗ_Реквизиты2[х];
Иначе
ЗначениеВозврата=0;
КонецЕсли;
Возврат ЗначениеВозврата;
КонецФункции
//************************************************************************
Процедура ЗаполнитьДеревоБезВладельца()
СправочникНалоговыхПериодов=СоздатьОбъект("Справочник.НалоговыйПериод");
СписокМесяцев=СоздатьОбъект("СписокЗначений");
ДеревоГрупп.НоваяСтрока();
ДеревоГрупп.Наименование="Налоги предприятия";
ДеревоГрупп_Реквизиты[1]=СоздатьОбъект("ТаблицаЗначений");
ДеревоГрупп_Реквизиты[1].НоваяКолонка("СледУровень");
ДеревоГрупп_Реквизиты[1].НоваяКолонка("Пиктограмма");
ДеревоГрупп_Реквизиты[1].НоваяКолонка("Наименование");
ДеревоГрупп_Реквизиты[1].НоваяКолонка("Элемент");
х=0;
хх=0;
СправочникНалоговыхПериодов.ВыбратьЭлементы();
Пока СправочникНалоговыхПериодов.ПолучитьЭлемент()=1 Цикл
Если СправочникНалоговыхПериодов.ЭтоГруппа()=1 Тогда
ДеревоГрупп_Реквизиты[1].НоваяСтрока();
ДеревоГрупп_Реквизиты[1].Наименование=СправочникНалоговыхПериодов.Наименование;
ДеревоГрупп_Реквизиты[1].СледУровень=ВернутьВторойУровень(СправочникНалоговыхПериодов.ТекущийЭлемент());
ДеревоГрупп_Реквизиты[1].Элемент=СправочникНалоговыхПериодов.ТекущийЭлемент();
КонецЕсли;
КонецЦикла;
ДеревоГрупп.СледУровень=ДеревоГрупп_Реквизиты[1];
УровеньМой=1;
ТаблицаОбработкиДанных=ДеревоГрупп_Реквизиты[1];
КонецПроцедуры
//************************************************************************
Процедура ПриОткрытии()
Если ПустоеЗначение(Владелец)=1 Тогда
Сообщить("Без владельца");
ЗаполнитьДеревоБезВладельца();
Иначе
Сообщить("С владельцем");
КонецЕсли;
ЗаполнитьДанными();
КонецПроцедуры
//************************************************************************
Процедура ПослеОткрытия()
АтрибутФормы_ТЗ=СоздатьОбъект("АтрибутФормы");
АтрибутФормы_ТЗ.УстановитьАтрибут(Форма,"ДеревоГрупп");
АтрибутФормы_ТЗ.ПерехватитьТаблицуЗначений();
РасширениеФормы = СоздатьОбъект("РасширениеФормы");
РасширениеФормы.УстановитьФорму(Форма);
РасширениеФормы.ЦветФона=(11100000);
КонецПроцедуры
//************************************************************************
//////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////ОСНОВНОЙ МОДУЛЬ
ДеревоГрупп.НоваяКолонка("СледУровень");
ДеревоГрупп.НоваяКолонка("Пиктограмма");
ДеревоГрупп.НоваяКолонка("Наименование");
ДеревоГрупп.НоваяКолонка("Элемент");
ДеревоГрупп.ВидимостьКолонки("Элемент",0);