Построение отчета в 7.7, добавление фильтра по перечислению

1. albert po (akmelek) 14.11.17 14:39 Сейчас в теме
Доброго дня! В 7.7 новичок совсем. Есть самописная конфигурация на 7.7. Есть отчет, который формируется по контрагенту, по виду работ, и по объекту строительства. У всех тип справочник. Отчет работает. Поставили задачу добавить фильтр, Данные для фильтра - тип перечисление. Подскажите как это реализовать? В 8 проще все и понятнее все...
Ответы
9. I Am (user856012) 3 14.11.17 19:26 Сейчас в теме
(1)
Поставили задачу добавить фильтр, Данные для фильтра - тип перечисление. Подскажите как это реализовать?
Всего-то:

1. Ввести новое субконто с типом нужного перечисления.
2. Добавить к нужному счету (видимо, "1") аналитический учет по этому новому субконто.
3. Дописать в проводки документов аналитику по этому субконто. Скорее всего, что и в диалоги - тоже.
4. Добавить в код из (5) (выше последней строки) что-то вроде
Ит.ИспользоватьСубконто(ВидыСубконто.СубконтоПеречисление,ВыбрПеречисление, 2);

Наслаждаться результатом!

P.S. Это описание решения задачи "с нуля". Возможно, что какие-то (или все) из пунктов 1-3 уже реализованы.
2. Андрей Шевченко (Shevon) 14.11.17 14:49 Сейчас в теме
Перед запросом:
Критерий = Перечисление.ВидПеречисления.ЗначениеПеречисления;


В запросе:
Условие (КритерийОтбора = Критерий);


Где-то так, если я не ошибаюсь.
4. albert po (akmelek) 14.11.17 16:05 Сейчас в теме
код отчета довольно таки большой запросов нет. Есть выполнитьзапрос и перед ним значение субконто
3. Виталий Сергеевич (Slypower) 14.11.17 15:18 Сейчас в теме
В запросе тоже не забудьте вывести этот критерий для условия
5. albert po (akmelek) 14.11.17 16:10 Сейчас в теме
ВыполнитьЗапрос в данном случае и есть запрос? Запросов нет в классическом виде

	Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,видр, 1,1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контр, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Объекты,Об, 1);
	Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"1",,, 1,, "СК");
6. Андрей Шевченко (Shevon) 14.11.17 18:41 Сейчас в теме
Синтаксис:
ИспользоватьСубконто(<ВидСубконто>,<Субконто>,<ТипФильтра>,<ПоГруппам>)

<ТипФильтра> - число - тип фильтра по субконто. Может принимать следующие значения: 1 - разворачивать по данному субконто, 2 - отбирать по данному субконто, 3 - не учитывать это субконто вообще. По умолчанию 1.

У Вас "тип фильтра" по субконто "Объекты" стоит "1". Если нужно отобрать, то "2".
7. Apelsinka (Apelsinka) 7 14.11.17 18:56 Сейчас в теме
ИспользоватьСубконто....это если Бухгалтерия 77 стоит. А если торговля? Автор не сообщил какая именно конфа стоит - (Бухгалтерский учет,Оперативный учет, Расчет)
8. Андрей Шевченко (Shevon) 14.11.17 19:06 Сейчас в теме
Синтаксис:
это если Бухгалтерия 77 стоит.


Судя по приведенному коду, стоит (строится запрос по бухгалтерским итогам)
10. Дмитрий Коваленко (dvk09) 15.11.17 11:22 Сейчас в теме
Может повытягиваем информацию?
А реквизитом какого объекта отчета является значение перечисления?
11. albert po (akmelek) 15.11.17 11:55 Сейчас в теме
(10) Прилагаю исходный текст кода отчета, который работает Суть: добавить еще один фильтр "ТипРабот", это перечисление. Я его добавил в субконто и план счетов рабочий. Прописал Ит.ИспользоватьСубконто(ВидыСубконто.ТипыРабот,Типр, 2); не хватает чего то, отладчиком непонятно как в 7-ке пользоваться

перем ОбъектГЖФ;

Функция ПЛ(об) 
 СпрО=СоздатьОбъект("Справочник.Объекты");
 Если Об.ЭтоГруппа()=1 тогда	
	     СпрО.НайтиПоКоду(Об.Код,0); 
         Род=СпрО.ТекущийЭлемент();
		 СпрО.ИспользоватьРодителя(Род);
		 СпрО.ВыбратьЭлементы();
		 ОбГЖФ=0; 
		 Пока СпрО.ПолучитьЭлемент()=1 цикл
		  ТекЭ=СпрО.ТекущийЭлемент();
          ОбГЖФ=ТекЭ.ОбъектГЖФ;
		 конеццикла;
		ОбъектГЖФ=ОбГЖФ; 
 Иначе 
		ОбъектГЖФ=Об.ОбъектГЖФ;
 КонецЕсли;
Конецфункции	

Процедура Сформировать() 
	СпрМ=СоздатьОбъект("Справочник.Материалы");                         
    СпрМ.НайтиПоКоду("100"); //Т/з осн.раб.
    СпрТЗ=СпрМ.ТекущийЭлемент();
    СпрМ.НайтиПоКоду("101"); //Т/з мех.
    СпрТЗмех=СпрМ.ТекущийЭлемент();
    СпрМ.НайтиПоКоду("102");//Эксплуатация машин и механизмов
    СпрЭкспл=СпрМ.ТекущийЭлемент();
    СпрМ.НайтиПоКоду("31");//тзр
	СпрТЗР=СпрМ.ТекущийЭлемент();
	СпрМ.НайтиПоКоду("30");//материалы
	Спрматериалы=СпрМ.ТекущийЭлемент();
    
	СпрВР=СоздатьОбъект("Справочник.ВидыРабот");
	СпрВР.НайтиПоКоду("5");//компенсации	
    СпрВР5=СпрВр.ТекущийЭлемент();

	
	Таб = СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("Сформировать");
	Ит = СоздатьОбъект("БухгалтерскиеИтоги");
	Ит.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);

	Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,видр, 1,1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контр, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Объекты,Об, 1);
	Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"1",,, 1,, "СК");
	Таб.ВывестиСекцию("Шапка|Основа");
	Таб.ПрисоединитьСекцию("Шапка|Остаток"); 
	Таб.ПрисоединитьСекцию("Шапка|Факт");
	Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); 
	ТЗоснВСЕГОКомпл=0;
	ТЗмехВСЕГОКомпл=0;
	ЭксплВСЕГОКомпл=0; 
	ТЗоснВСЕГОУлож=0;
	ТЗмехВСЕГОУлож=0;
	ЭксплВСЕГОУлож=0; 
	ТЗоснВСЕГООстаток=0;
	ТЗмехВСЕГООстаток=0;
	ЭксплВСЕГООстаток=0; 
	
	СуммаИтоговая=0; 
	СуммаНаклИтоговая=0;
	СуммаПланИтоговая=0;
	пл(об);
	Ит.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,,,,"Код");
	Пока Ит.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
	    СуммаПоВидуРабот=0;
	    СуммаНаклПоВидуРабот=0;
        СуммаПланПоВидуРабот=0;	
		ТзоснКомпл=0;
		ТЗмехкомпл=0;
		ЭксплКомпл=0; 
		ТзОснУлож=0;ТзОснОстатокТек=0;
		ТзМехУлож=0;ТзМехОстатокТек=0;
		ЭксплУлож=0;ЭксплОстатокТек=0;
		Ит.ВыбратьСубконто(ВидыСубконто.Материалы,,,,,"Код");
			Пока Ит.ПолучитьСубконто(ВидыСубконто.Материалы) = 1 Цикл
			    ЦенаТек=0;
				СуммаТек=0;
				Мат=Ит.ПредставлениеСубконто(2);
				Если Ит.Субконто(1).ЭтоГруппа()=0 тогда
					Если ((Ит.Субконто(2)=СпрТЗ) или (Ит.Субконто(2)=СпрТЗмех) или (Ит.Субконто(2)=СпрЭкспл)) тогда
						Если Ит.Субконто(2)=СпрТЗ тогда
							ТзоснКомпл=Ит.ДО(3);
							ТзоснВСЕГОКомпл=ТЗоснВСЕГОКомпл+ТЗоснКомпл;
                            ТзоснУлож=Ит.КО(3);
							ТзоснВСЕГОУлож=ТЗоснВСЕГОУлож+ТЗоснУлож;        
							ТзоснОстатокТек=Ит.ДО(3)-Ит.КО(3);
							Если ТЗОснОстатокТек<0 тогда
							     ТЗОснОстатоктек=0;
							конецесли;	
						    ТЗОснВсегоОстаток=ТЗОснВсегоОстаток+ТзоснОстатокТек;
						КонецЕсли;
						Если Ит.Субконто(2)=СпрТЗмех тогда 
						    ТзмехКомпл=Ит.ДО(3);                       
							ТзмехВСЕГОКомпл=ТЗмехВСЕГОКомпл+ТЗмехКомпл;
							ТзмехУлож=Ит.КО(3); 
							ТЗмехВсегоУлож=ТЗмехВСЕГОУлож+ТЗмехУлож; 
			                ТзмехОстатокТек=Ит.ДО(3)-Ит.КО(3);
							Если ТЗмехОстатокТек<0 тогда
							     ТЗмехОстатоктек=0;
							конецесли;	
						    ТЗмехВсегоОстаток=ТЗмехВсегоОстаток+ТзмехОстатокТек;
				        КонецЕсли;
						Если Ит.Субконто(2)=СпрЭкспл тогда
							ЭксплКомпл=Ит.ДО(3);
							ЭксплВСЕГОКомпл=ЭксплВСЕГОКомпл+ЭксплКомпл;
							ЭксплУлож=Ит.КО(3);             
							ЭксплВсегоУлож=ЭксплВсегоУлож+ЭксплУлож;
				            ЭксплОстатокТек=Ит.ДО(3)-Ит.КО(3);
							Если ЭксплОстатокТек<0 тогда
							     ЭксплОстатоктек=0;
							конецесли;	
						    ЭксплВсегоОстаток=ЭксплВсегоОстаток+ЭксплОстатокТек;
                        КонецЕсли;	
					Иначе
						Если  Ит.КО(3)>Ит.ДО(3) тогда
						Таб.ВывестиСекцию("Субконто2красн|Основа"); 
						иначе
						Таб.ВывестиСекцию("Субконто2|Основа");	
					    КонецЕсли;  
					
					    Если ((объектгжф=1) или (объектгжф=3)) тогда
						    ЦенаТек=Ит.Субконто(2).ЦенаГЖФ.Получить(ДатаРасчета); 
					    иначеЕсли объектгжф=4 тогда
						    ЦенаТек=Ит.Субконто(2).ЦенаГЖФ2014.Получить(ДатаРасчета); 
					    иначе
						    ЦенаТек=Ит.Субконто(2).Цена.Получить(ДатаРасчета); 
						конецесли;
						
						Если Ит.Субконто(2)=СпрТзр тогда
							 СуммаТек=Ит.ДО()-Ит.КО();
							 Если СуммаТек<0 тогда
							      СуммаТек=0;
							 иначе	
							 конецесли;	
						Иначе СуммаТек=Ит.СКД(3)*ЦенаТек;
						КонецЕсли;	
					    суммаматериалы=0;
						Если Ит.субконто(2)=СпрМатериалы тогда
					        СуммаМатериалы=Ит.КО(); 
							 // 
							 СуммаТек=Ит.ДО()-Ит.КО();
							 Если СуммаТек<0 тогда
							      СуммаТек=0;
							 конецесли;	
							 //
							 сообщить("материалы общей суммой");
						конецесли;
						
						СуммаПоВидуРабот=СуммаПоВидуРабот+СуммаТек-СуммаМатериалы;	
						
					  Таб.ПрисоединитьСекцию("Субконто2|Остаток");
					  Таб.ПрисоединитьСекцию("Субконто2|Факт");
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;  //по материалам
    Если Ит.Субконто(1).ЭтоГруппа()=0 тогда 
	Таб.ВывестиСекцию("Субконто2СиниеТзОсн|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзОсн|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзОсн|Факт"); 
	Таб.ВывестиСекцию("Субконто2СиниеТзМех|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзМех|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзМех|Факт");
    Таб.ВывестиСекцию("Субконто2СиниеЭкспл|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеЭкспл|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеЭкспл|Факт");
	конецесли;			
    Если СуммаПоВидуРабот<0 тогда
		СуммаПоВидуРабот=0;
	иначе	
	конецесли;
							 
	СуммаИтоговая=СуммаИтоговая+Суммаповидуработ;		
			
    ВР=Ит.ПредставлениеСубконто(1);
	Если СтрЧислоВхождений(Ит.Субконто(1).Код,".")<>2 тогда			
	Таб.ВывестиСекцию("СубконтоИтог|Основа");
	Таб.ПрисоединитьСекцию("СубконтоИтог|Остаток");
	Таб.ПрисоединитьСекцию("СубконтоИтог|Факт");  
    КонецЕсли;	

    Если СтрЧислоВхождений(Ит.Субконто(1).Код,".")=2 тогда			
	Таб.ВывестиСекцию("Субконто1|Основа");
	Таб.ПрисоединитьСекцию("Субконто1|Остаток");
	Таб.ПрисоединитьСекцию("Субконто1|Факт");  
    КонецЕсли;			
   
	Если объектгжф=1 тогда
	СуммаНаклПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНаклГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2ФактГЖФ.Получить(ДатаРасчета)*(ТЗОснОстатокТек+ТЗМехОстатокТек));
    СуммаПланПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(Датарасчета)/100*Константа.ФОТПланГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*(ТЗОснОстатокТек+ТЗМехОстатокТек));
	иначеЕсли ((объектгжф=3) или (объектГЖФ=4)) тогда
	СуммаНаклПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНаклГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2ФактГЖФ_2014.Получить(ДатаРасчета)*(ТЗОснОстатокТек+ТЗМехОстатокТек));
    СуммаПланПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(Датарасчета)/100*Константа.ФОТПланГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*(ТЗОснОстатокТек+ТЗМехОстатокТек));
    иначе
	СуммаНаклПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНакл.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2Факт.Получить(ДатаРасчета)*(ТЗОснОстатокТек+ТЗМехОстатокТек));
    СуммаПланПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(Датарасчета)/100*Константа.ФОТПлан.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*(ТЗОснОстатокТек+ТЗМехОстатокТек));
    конецесли;
		
	СуммаНаклИтоговая=СуммаНаклИтоговая+СуммаНаклПоВидуРабот;
	СуммаПланИтоговая=СуммаПланИтоговая+СуммаПланПоВидуРабот;
	
	КонецЦикла; //по видам работ
	Таб.ВывестиСекцию("Подвал|Основа");
	Таб.ПрисоединитьСекцию("Подвал|Остаток"); 
	Таб.ПрисоединитьСекцию("Подвал|Факт");
	//расчет затрат по СМР компл 
	ФотОснУложИт=0;	ФотМехУложИт=0;	МашМехУложИт=0;	ПланнакУложИт=0; НаклРасхУложИт=0;	ВремУложИт=0;	ЗимнУложИт=0;
	НДСУложИт=0;	ИтогоУложИт=0;	ИтогоСНдсУложИт=0;
	ФотОснИт=0;	ФотМехИт=0;	МашМехИт=0;	ПланнакИт=0; НаклРасхИт=0;	ВремИт=0; ЗимнИт=0;	НДСИт=0; ИтогоИт=0;	ИтогоСНдсИт=0;
	сумкомп=0;	комп=0; 
	ФотОснсумКомп=0;	ФотОснкомп=0;	ФотМехкомп=0;	ФотМехсумКомп=0;	Машкомп=0;	МашсумКомп=0;
	Планкомп=0;	ПланСумКомп=0; 	Наклкомп=0;	НаклСумКомп=0;	Времкомп=0;	ВремСумКомп=0;	Зимнкомп=0;
	ЗимнСумКомп=0;	ндскомп=0;	НдсСумКомп=0;	Итогокомп=0;	ИтогоСумКомп=0;
	Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
	Ит1.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Итоги,, 1);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контр, 1);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Объекты,Об, 1);
    Ит1.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,видр, 1);
  //  Ит1.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,видр, 1,1);

	Ит1.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"3",,, 1,, "СК");
	Ит1.ВыбратьСубконто(ВидыСубконто.Итоги,,0);	
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ФотОсн) = 1 тогда
	    ФотОснУложИт=Ит1.КО();
		ФотОснИт=Ит1.ДО();
		    Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	ФотОснкомп=Ит1.ДО()-Ит1.КО(); 
			   	Если ФотОснКомп<0 тогда
	                   ФотОснКомп=0;
	            КонецЕсли;	 

			   	ФотОснсумКомп=ФотОснСумКомп+ФотОснкомп;
			
			иначе
	            ФотОснкомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ФотМех) = 1 тогда
	     ФотМехУложИт=Ит1.КО();
		 ФотМехИт=Ит1.ДО();
		  Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	ФотМехкомп=Ит1.ДО()-Ит1.КО(); 
			     	Если ФотмехКомп<0 тогда
	                   ФотмехКомп=0;
	            КонецЕсли;	 

			   	ФотМехсумКомп=ФОТМехСумКомп+ФОТМехкомп;
			иначе
	            ФотМехкомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.МашМех) = 1 тогда
	     МашМехУложИт=Ит1.КО();
		 МашМехИт=Ит1.ДО();
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	Машкомп=Ит1.ДО()-Ит1.КО(); 
			   	Если машКомп<0 тогда
	                   машКомп=0;
	            КонецЕсли;	 

			   	МашсумКомп=МашСумКомп+Машкомп;
			иначе
	            Машкомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ПланНак) = 1 тогда
	     ПланНакУложИт=Ит1.КО();
		 ПланНакИт=Ит1.ДО();
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	Планкомп=Ит1.ДО()-Ит1.КО(); 
			   	Если ПланКомп<0 тогда
	                   ПланКомп=0;
	            КонецЕсли;	 

			   	ПлансумКомп=ПланСумКомп+Планкомп;
			иначе
	            Планкомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.НаклРасх) = 1 тогда
	     НаклРасхУложИт=Ит1.КО();
		 НаклРасхИт=Ит1.ДО();  
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	Наклкомп=Ит1.ДО()-Ит1.КО(); 
			   	Если НаклКомп<0 тогда
	                   НаклКомп=0;
	            КонецЕсли;	 

			   	НаклсумКомп=НаклСумКомп+Наклкомп;
			иначе
	            Наклкомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Врем) = 1 тогда
	      ВремУложИт=Ит1.КО();
		  ВремИт=Ит1.ДО();
		   Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	Времкомп=Ит1.ДО()-Ит1.КО(); 
			   	Если ВремКомп<0 тогда
	                   ВремКомп=0;
	            КонецЕсли;	 

			   	ВремсумКомп=ВремСумКомп+Времкомп;
			иначе
	            Времкомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Зимн) = 1 тогда
	      ЗимнУложИт=Ит1.КО();
		  ЗимнИт=Ит1.ДО(); 
		  Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	Зимнкомп=Ит1.ДО()-Ит1.КО(); 
			   	Если ЗимнКомп<0 тогда
	                   ЗимнКомп=0;
	            КонецЕсли;	 

			   	ЗимнсумКомп=ЗимнСумКомп+Зимнкомп;
			иначе
	            Зимнкомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.НДС) = 1 тогда
	      НДСУложИт=Ит1.КО();
		  НДСИт=Ит1.ДО(); 
		   Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	НдсКомп=Ит1.ДО()-Ит1.КО(); 
			   	 	Если НДСКомп<0 тогда
	                   НДСКомп=0;
	            КонецЕсли;	 

			   	НдсСумКомп=НдсСумКомп+НдсКомп;
			иначе
	            ндскомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли; 
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Итого) = 1 тогда
	       ИтогоУложИт=Ит1.КО();
		   ИтогоИт=Ит1.ДО(); 
		    Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	Итогокомп=Ит1.ДО()-Ит1.КО(); 
			   	 	Если итогоКомп<0 тогда
	                   итогоКомп=0;
	            КонецЕсли;	 

			   	ИтогосумКомп=ИтогоСумКомп+Итогокомп;
			иначе
	            Итогокомп=0;
	        конецесли;
            конеццикла;

	КонецЕсли; 
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ИтогоСндс) = 1 тогда
	        ИтогоСНДСУложИт=Ит1.КО(); 
			ИтогоСНДСИт=Ит1.ДО();  
			 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если (Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) тогда
	           	комп=Ит1.ДО()-Ит1.КО(); 
			   	 	Если Комп<0 тогда
	                   Комп=0;
	            КонецЕсли;	 

			   	сумКомп=СумКомп+комп;
			иначе
	            комп=0;
	        конецесли;
            конеццикла;

	КонецЕсли;
    //считаем остатки на дату

	Если ОбъектГЖФ=1 тогда 
	ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФактГЖФ.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
    ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФактГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
    МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМехГЖФ.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
	иначеЕсли ((ОбъектГЖФ=3) или (объектГЖФ=4)) тогда 
	ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФактГЖФ_2014.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
    ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФактГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
    МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМехГЖФ_2014.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
    иначе
    ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФакт.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
    ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФакт.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
    МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМех.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
    конецесли;
	Если ФОТОснОстаток<0 тогда
	     ФотОснОстаток=0;
	КонецЕсли;	 
	Если ФОТМехОстаток<0 тогда
	     ФотМехОстаток=0;
	КонецЕсли;	 
    Если МашМехОстаток<0 тогда
	     МашМехОстаток=0;
	КонецЕсли;	 

	Если СуммаНаклИтоговая<0 тогда
			  СуммаНаклИтоговая=0;
	конецесли;
	НаклРасхОстаток=НаклСумКомп+СуммаНаклИтоговая;

    Если НаклРасхОстаток<0 тогда
	     НаклРасхОстаток=0;
	КонецЕсли;	 

	Если СуммаПланИтоговая<0 тогда
			  СуммаПланИтоговая=0;
	конецесли;
    ПланНакОстаток=ПланСумКомп+СуммаПланИтоговая; 
   	Если ПланНакОстаток<0 тогда
	     ПланНакОстаток=0;
	КонецЕсли;	 

	Если ОбъектГЖФ=1 тогда 
	    ВрОстаток=Окр(Константа.ПроцВремГЖФ.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
        Если ВРОстаток<0 тогда
	     ВРОстаток=0;
	    КонецЕсли;	 
        ЗимнОстаток=Окр(Константа.ПроцЗимнГЖФ.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
        Если ЗимнОстаток<0 тогда
	     ЗимнОстаток=0;
	    КонецЕсли;	 
    иначеЕсли ОбъектГЖФ=3 тогда 
	    ВрОстаток=Окр(Константа.ПроцВремГЖФ_2014.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
        Если ВРОстаток<0 тогда
	     ВРОстаток=0;
	    КонецЕсли;	 
        ЗимнОстаток=Окр(Константа.ПроцЗимнГЖФ_2014.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
        Если ЗимнОстаток<0 тогда
	     ЗимнОстаток=0;
	    КонецЕсли;	 
    иначе
		ВрОстаток=Окр(Константа.ПроцВрем.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
        Если ВРОстаток<0 тогда
	     ВРОстаток=0;
	    КонецЕсли;	 
       	ЗимнОстаток=Окр(Константа.ПроцЗимн.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
        Если ЗимнОстаток<0 тогда
	     ЗимнОстаток=0;
	    КонецЕсли;	 
    конецесли;


	ИтогоОстаток=Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток+ЗимнОстаток;
    НДСОстаток=Окр(Константа.НДС/100*(ИтогоОстаток),2);
    ИтогоСНДСОстаток=Окр(ИтогоОстаток+НДСОстаток,2);
    
	если Видр.принадлежитгруппе(спрВР5)=1 тогда
	     ФотОснОстаток=ФотОснСумКомп;
		 ФотМехОстаток=ФотМехСумКомп;
		 МашМехОстаток=МашСумКомп;
		 НаклРасхОстаток=НаклСумКомп;
		 ПланНакОстаток=ПланСумКомп;
		 ВрОстаток=0;
		 ЗимнОстаток=0;
		 ИтогоОстаток=ИтогоСумКомп;
		 НДСОстаток=НДССумКомп;
		 ИтогоСНДСОстаток=СумКомп;
	конецесли;	 
   	//
	Таб.ВывестиСекцию("Итоги");	
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Отчет "+Контр+" "+Об+" "+Видр+" "+ПериодСтр(ВыбНачПериода,ВыбКонПериода),"");
КонецПроцедуры

Процедура СформироватьСводный() 
	СпрМ=СоздатьОбъект("Справочник.Материалы");                         
    СпрМ.НайтиПоКоду("100"); //Т/з осн.раб.
    СпрТЗ=СпрМ.ТекущийЭлемент();
    СпрМ.НайтиПоКоду("101"); //Т/з мех.
    СпрТЗмех=СпрМ.ТекущийЭлемент();
    СпрМ.НайтиПоКоду("102");//Эксплуатация машин и механизмов
    СпрЭкспл=СпрМ.ТекущийЭлемент();
    СпрМ.НайтиПоКоду("31");//тзр
	СпрТЗР=СпрМ.ТекущийЭлемент();
    СпрМ.НайтиПоКоду("30");//материалы
	Спрматериалы=СпрМ.ТекущийЭлемент();
	СпрВР=СоздатьОбъект("Справочник.ВидыРабот");
	СпрВР.НайтиПоКоду("5");//компенсации	
    СпрВР5=СпрВр.ТекущийЭлемент();

	Таб = СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("Сформировать");
	Ит = СоздатьОбъект("БухгалтерскиеИтоги");
	Ит.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);
	//
	Если ((ПустоеЗначение(Флаг4)=0) и (ПустоеЗначение(Видр)=1)) тогда //сводный по всем видам работ
	//
	Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,, 1,1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Объекты,Об, 1);
	Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"1",,, 1,, "СК");
	пл(об);
	Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); 
	Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты,,0,,,);
	Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 1 Цикл  
     Контр=Ит.Субконто(3); 
	
	
	Таб.ВывестиСекцию("Шапка|Основа");
	Таб.ПрисоединитьСекцию("Шапка|Остаток"); 
	Таб.ПрисоединитьСекцию("Шапка|Факт");

	ТЗоснВСЕГОКомпл=0;
	ТЗмехВСЕГОКомпл=0;
	ЭксплВСЕГОКомпл=0; 
	ТЗоснВСЕГОУлож=0;
	ТЗмехВСЕГОУлож=0;
	ЭксплВСЕГОУлож=0; 
	ТЗоснВСЕГООстаток=0;
	ТЗмехВСЕГООстаток=0;
	ЭксплВСЕГООстаток=0; 
	
	СуммаИтоговая=0;
	СуммаНакл=0;
	СуммаПлан=0;
	
	Ит.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,,,,"Код");
	Пока Ит.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
	    СуммаПоВидуРабот=0;
        СуммаНаклПоВидуРабот=0;
		СуммаПланПоВидуРабот=0;
		ТзоснКомпл=0;
		ТЗмехкомпл=0;
		ЭксплКомпл=0; 
		ТзОснУлож=0;
		ТзМехУлож=0;
		ЭксплУлож=0;
		Ит.ВыбратьСубконто(ВидыСубконто.Материалы,,,,,"Код");
			Пока Ит.ПолучитьСубконто(ВидыСубконто.Материалы) = 1 Цикл
			    ЦенаТек=0;
				СуммаТек=0;
				Мат=Ит.ПредставлениеСубконто(2);
				Если Ит.Субконто(1).ЭтоГруппа()=0 тогда
					Если ((Ит.Субконто(2)=СпрТЗ) или (Ит.Субконто(2)=СпрТЗмех) или (Ит.Субконто(2)=СпрЭкспл)) тогда
						Если Ит.Субконто(2)=СпрТЗ тогда
							ТзоснКомпл=Ит.ДО(3);
							ТзоснВСЕГОКомпл=ТЗоснВСЕГОКомпл+ТЗоснКомпл;
                             							
							ТзоснУлож=Ит.КО(3);
							ТзоснВСЕГОУлож=ТЗоснВСЕГОУлож+ТЗоснУлож;        
							
							ТзоснВСЕГООстаток=ТзоснВСЕГОКомпл-ТзоснВСЕГОУлож;
							 Если ТЗОснВсегоОстаток<0 тогда
							      ТЗОснВсегоОстаток=0;
							 иначе	
							 конецесли;	
						КонецЕсли;
						Если Ит.Субконто(2)=СпрТЗмех тогда 
						    ТзмехКомпл=Ит.ДО(3);
							ТзмехВСЕГОКомпл=ТЗмехВСЕГОКомпл+ТЗмехКомпл;
														
							ТзмехУлож=Ит.КО(3); 
							ТЗмехВсегоУлож=ТЗмехВСЕГОУлож+ТЗмехУлож; 
							
							ТзмехВСЕГООстаток=ТзмехВСЕГОКомпл-ТзмехВСЕГОУлож;
							Если ТЗМехВсегоОстаток<0 тогда
							      ТЗМехВсегоОстаток=0;
							иначе	
							конецесли;	
						КонецЕсли;
						Если Ит.Субконто(2)=СпрЭкспл тогда
							ЭксплКомпл=Ит.ДО(3);
							ЭксплВСЕГОКомпл=ЭксплВСЕГОКомпл+ЭксплКомпл;
							
							ЭксплУлож=Ит.КО(3);             
							ЭксплВсегоУлож=ЭксплВсегоУлож+ЭксплУлож;
							
							ЭксплВСЕГООстаток=ЭксплВСЕГОКомпл-ЭксплВСЕГОУлож; 
							 Если ЭксплВсегоОстаток<0 тогда
							      ЭксплВсегоОстаток=0;
							 иначе	
							 конецесли;	
						КонецЕсли;	
					Иначе
						Таб.ВывестиСекцию("Субконто2|Основа");
						
						Если ((объектгжф=1) или (объектгжф=3)) тогда
					        ЦенаТек=Ит.Субконто(2).ЦенаГЖФ.Получить(ДатаРасчета); 
					    иначеЕсли объектгжф=4 тогда
					        ЦенаТек=Ит.Субконто(2).ЦенаГЖФ2014.Получить(ДатаРасчета); 
                        иначе
						    ЦенаТек=Ит.Субконто(2).Цена.Получить(ДатаРасчета); 
						конецесли;
						
						Если Ит.Субконто(2)=СпрТзр тогда
							 СуммаТек=Ит.ДО()-Ит.КО();
							 Если СуммаТек<0 тогда
							      СуммаТек=0;
							 иначе	
							 конецесли;	
						Иначе СуммаТек=Ит.СКД(3)*ЦенаТек;
						КонецЕсли;	
					    суммаматериалы=0;
						Если Ит.субконто(2)=СпрМатериалы тогда
					        СуммаМатериалы=Ит.КО();
							 // 
							 СуммаТек=Ит.ДО()-Ит.КО();
							 Если СуммаТек<0 тогда
							      СуммаТек=0;
							 иначе	
							 конецесли;	
							 //
						конецесли;
						
					  СуммаПоВидуРабот=СуммаПоВидуРабот+СуммаТек-СуммаМатериалы;	
						
					  Таб.ПрисоединитьСекцию("Субконто2|Остаток");
					  Таб.ПрисоединитьСекцию("Субконто2|Факт");
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;//по материалам 
	Если Ит.Субконто(1).ЭтоГруппа()=0 тогда
    Таб.ВывестиСекцию("Субконто2СиниеТзОсн|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзОсн|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзОсн|Факт"); 
	Таб.ВывестиСекцию("Субконто2СиниеТзМех|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзМех|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзМех|Факт");
    Таб.ВывестиСекцию("Субконто2СиниеЭкспл|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеЭкспл|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеЭкспл|Факт");
	конецесли;			

	Если СуммаПоВидуРабот<0 тогда
		СуммаПоВидуРабот=0;
	иначе	
	конецесли;
	СуммаИтоговая=СуммаИтоговая+Суммаповидуработ;		
				
    ВР=Ит.ПредставлениеСубконто(1);
	Если СтрЧислоВхождений(Ит.Субконто(1).Код,".")<>2 тогда			
	Таб.ВывестиСекцию("СубконтоИтог|Основа");
	Таб.ПрисоединитьСекцию("СубконтоИтог|Остаток");
	Таб.ПрисоединитьСекцию("СубконтоИтог|Факт");  
    КонецЕсли;	

    Если СтрЧислоВхождений(Ит.Субконто(1).Код,".")=2 тогда			
	Таб.ВывестиСекцию("Субконто1|Основа");
	Таб.ПрисоединитьСекцию("Субконто1|Остаток");
	Таб.ПрисоединитьСекцию("Субконто1|Факт");  
    КонецЕсли;			
	
	Если ОбъектГЖФ=1 тогда
	СуммаНаклРасхПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНаклГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2ФактГЖФ.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
    СуммаПланНакПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(ДатаРасчета)/100*Константа.ФОТПланГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
	иначеЕсли ((ОбъектГЖФ=3) или (объектГЖФ=4)) тогда
	СуммаНаклРасхПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНаклГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2ФактГЖФ_2014.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
    СуммаПланНакПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(ДатаРасчета)/100*Константа.ФОТПланГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
    иначе
	СуммаНаклРасхПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНакл.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2Факт.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
    СуммаПланНакПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(ДатаРасчета)/100*Константа.ФОТПлан.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
    конецесли;
	
	
	СуммаНакл=СуммаНакл+СуммаНаклРасхПоВидуРабот;
 	СуммаПлан=СуммаПлан+СуммаПланНакПоВидуРабот;
	КонецЦикла;//по видам работ 
	Таб.ВывестиСекцию("Подвал|Основа");
	Таб.ПрисоединитьСекцию("Подвал|Остаток"); 
	Таб.ПрисоединитьСекцию("Подвал|Факт");
	//расчет затрат по СМР компл 
	ФотОснУложИт=0;
	ФотМехУложИт=0;
	МашМехУложИт=0;
	ПланнакУложИт=0;
	НаклРасхУложИт=0;
	ВремУложИт=0;
	ЗимнУложИт=0;
	НДСУложИт=0;
	ИтогоУложИт=0;
	ИтогоСНдсУложИт=0;
	ФотОснИт=0;
	ФотМехИт=0;
	МашМехИт=0;
	ПланнакИт=0;
	НаклРасхИт=0;
	ВремИт=0;
	ЗимнИт=0;
	НДСИт=0;
	ИтогоИт=0;
	ИтогоСНдсИт=0; 
	сумкомп=0;	комп=0; 
	ФотОснсумКомп=0;	ФотОснкомп=0;	ФотМехкомп=0;	ФотМехсумКомп=0;	Машкомп=0;	МашсумКомп=0;
	Планкомп=0;	ПланСумКомп=0; 	Наклкомп=0;	НаклСумКомп=0;	Времкомп=0;	ВремСумКомп=0;	Зимнкомп=0;
	ЗимнСумКомп=0;	ндскомп=0;	НдсСумКомп=0;	Итогокомп=0;	ИтогоСумКомп=0;

	Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
	Ит1.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Итоги,, 1);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контр, 1);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Объекты,Об, 1);
    Ит1.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,, 1,1);
	Ит1.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"3",,, 1,, "СК");
	Ит1.ВыбратьСубконто(ВидыСубконто.Итоги,,0);	
     	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ФотОсн) = 1 тогда
	    ФотОснУложИт=Ит1.КО();
		ФотОснИт=Ит1.ДО();
		    Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	ФотОснкомп=Ит1.ДО()-Ит1.КО(); 
			   	ФотОснсумКомп=ФотОснСумКомп+ФотОснкомп;
			иначе
	            ФотОснкомп=0;
	        конецесли;
            конеццикла;
    	КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ФотМех) = 1 тогда
	     ФотМехУложИт=Ит1.КО();
		 ФотМехИт=Ит1.ДО();
		  Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	ФотМехкомп=Ит1.ДО()-Ит1.КО(); 
			   	ФотМехсумКомп=ФОТМехСумКомп+ФОТМехкомп;
			иначе
	            ФотМехкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.МашМех) = 1 тогда
	     МашМехУложИт=Ит1.КО();
		 МашМехИт=Ит1.ДО();
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Машкомп=Ит1.ДО()-Ит1.КО(); 
			   	МашсумКомп=МашСумКомп+Машкомп;
			иначе
	            Машкомп=0;
	        конецесли;
            конеццикла;
   	КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ПланНак) = 1 тогда
	     ПланНакУложИт=Ит1.КО();
		 ПланНакИт=Ит1.ДО();
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Планкомп=Ит1.ДО()-Ит1.КО(); 
			   	ПлансумКомп=ПланСумКомп+Планкомп;
			иначе
	            Планкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.НаклРасх) = 1 тогда
	     НаклРасхУложИт=Ит1.КО();
		 НаклРасхИт=Ит1.ДО();  
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Наклкомп=Ит1.ДО()-Ит1.КО(); 
			   	НаклсумКомп=НаклСумКомп+Наклкомп;
			иначе
	            Наклкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Врем) = 1 тогда
	      ВремУложИт=Ит1.КО();
		  ВремИт=Ит1.ДО();
		   Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Времкомп=Ит1.ДО()-Ит1.КО(); 
			   	ВремсумКомп=ВремСумКомп+Времкомп;
			иначе
	            Времкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Зимн) = 1 тогда
	      ЗимнУложИт=Ит1.КО();
		  ЗимнИт=Ит1.ДО(); 
		  Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Зимнкомп=Ит1.ДО()-Ит1.КО(); 
			   	ЗимнсумКомп=ЗимнСумКомп+Зимнкомп;
			иначе
	            Зимнкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.НДС) = 1 тогда
	      НДСУложИт=Ит1.КО();
		  НДСИт=Ит1.ДО(); 
		   Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	НдсКомп=Ит1.ДО()-Ит1.КО(); 
			   	НдсСумКомп=НдсСумКомп+НдсКомп;
			иначе
	            ндскомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли; 
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Итого) = 1 тогда
	       ИтогоУложИт=Ит1.КО();
		   ИтогоИт=Ит1.ДО(); 
		    Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Итогокомп=Ит1.ДО()-Ит1.КО(); 
			   	ИтогосумКомп=ИтогоСумКомп+Итогокомп;
			иначе
	            Итогокомп=0;
	        конецесли;
           конеццикла;
   	КонецЕсли; 
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ИтогоСндс) = 1 тогда
	        ИтогоСНДСУложИт=Ит1.КО(); 
			ИтогоСНДСИт=Ит1.ДО();  
			 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	комп=Ит1.ДО()-Ит1.КО(); 
			   	сумКомп=СумКомп+комп;
			иначе
	            комп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
    //считаем остатки на дату
	Если ОбъектГЖФ=1 тогда
	    ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФактГЖФ.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
        ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФактГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
        МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМехГЖФ.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
   	иначеЕсли ((ОбъектГЖФ=3) или (объектГЖФ=4)) тогда
	    ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФактГЖФ_2014.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
        ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФактГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
        МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМехГЖФ_2014.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
    иначе
	    ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФакт.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
        ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФакт.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
        МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМех.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
    конецесли;
   		
	Если СуммаНакл<0 тогда
			  СуммаНакл=0;
	конецесли;
	НаклРасхОстаток=НаклСумКомп+СуммаНакл;
	Если СуммаПлан<0 тогда
			  СуммаПлан=0;
    конецесли;
    ПланНакОстаток=ПланСумКомп+СуммаПлан; 
	//////////////
	Если ОбъектГЖФ=1 тогда
	     ВрОстаток=ВремСумКомп+Окр(Константа.ПроцВремГЖФ.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
         ЗимнОстаток=ЗимнСумКомп+Окр(Константа.ПроцЗимнГЖФ.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
    иначеЕсли ((ОбъектГЖФ=3) или (объектГЖФ=4)) тогда
	     ВрОстаток=ВремСумКомп+Окр(Константа.ПроцВремГЖФ_2014.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
         ЗимнОстаток=ЗимнСумКомп+Окр(Константа.ПроцЗимнГЖФ_2014.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
    иначе
	     ВрОстаток=ВремСумКомп+Окр(Константа.ПроцВрем.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
         ЗимнОстаток=ЗимнСумКомп+Окр(Константа.ПроцЗимн.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
   	конецесли;
	ИтогоОстаток=Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток+ЗимнОстаток;
    НДСОстаток=Окр(Константа.НДС/100*(ИтогоОстаток),2);
    ИтогоСНДСОстаток=Окр(ИтогоОстаток+НДСОстаток,2);
	Таб.ВывестиСекцию("Итоги");
Конеццикла;	
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Накопит.вед.материалов "+Контр+" "+Об+" "+Видр+" "+ПериодСтр(ВыбНачПериода,ВыбКонПериода),"");

	//////////////////
ИначеЕсли ((ПустоеЗначение(Флаг4)=0) и (ПустоеЗначение(Видр)=0)) тогда //сводный по подрядчикам, по виду работ
    //
	Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр, 1,1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Объекты,Об, 1);
	Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"1",,, 1,, "СК");
	пл(об);
	Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); 
	Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты,,0,,,);
	Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 1 Цикл  
    Контр=Ит.Субконто(3); 
		
	Таб.ВывестиСекцию("Шапка|Основа");
	Таб.ПрисоединитьСекцию("Шапка|Остаток"); 
	Таб.ПрисоединитьСекцию("Шапка|Факт");

	ТЗоснВСЕГОКомпл=0;
	ТЗмехВСЕГОКомпл=0;
	ЭксплВСЕГОКомпл=0; 
	ТЗоснВСЕГОУлож=0;
	ТЗмехВСЕГОУлож=0;
	ЭксплВСЕГОУлож=0; 
	ТЗоснВСЕГООстаток=0;
	ТЗмехВСЕГООстаток=0;
	ЭксплВСЕГООстаток=0; 
	
	СуммаИтоговая=0;
	СуммаНакл=0;
	СуммаПлан=0;
	
	//Ит.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,,,,"Код");
	//Пока Ит.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
	    СуммаПоВидуРабот=0;
        СуммаНаклПоВидуРабот=0;
		СуммаПланПоВидуРабот=0;
		ТзоснКомпл=0;
		ТЗмехкомпл=0;
		ЭксплКомпл=0; 
		ТзОснУлож=0;
		ТзМехУлож=0;
		ЭксплУлож=0;
		Ит.ВыбратьСубконто(ВидыСубконто.Материалы,,,,,"Код");
			Пока Ит.ПолучитьСубконто(ВидыСубконто.Материалы) = 1 Цикл
			    ЦенаТек=0;
				СуммаТек=0;
				Мат=Ит.ПредставлениеСубконто(2);
				Если Ит.Субконто(1).ЭтоГруппа()=0 тогда
					Если ((Ит.Субконто(2)=СпрТЗ) или (Ит.Субконто(2)=СпрТЗмех) или (Ит.Субконто(2)=СпрЭкспл)) тогда
						Если Ит.Субконто(2)=СпрТЗ тогда
							ТзоснКомпл=Ит.ДО(3);
							ТзоснВСЕГОКомпл=ТЗоснВСЕГОКомпл+ТЗоснКомпл;
                             							
							ТзоснУлож=Ит.КО(3);
							ТзоснВСЕГОУлож=ТЗоснВСЕГОУлож+ТЗоснУлож;        
							
							ТзоснВСЕГООстаток=ТзоснВСЕГОКомпл-ТзоснВСЕГОУлож;
							 Если ТЗОснВсегоОстаток<0 тогда
							      ТЗОснВсегоОстаток=0;
							 иначе	
							 конецесли;	
						КонецЕсли;
						Если Ит.Субконто(2)=СпрТЗмех тогда 
						    ТзмехКомпл=Ит.ДО(3);
							ТзмехВСЕГОКомпл=ТЗмехВСЕГОКомпл+ТЗмехКомпл;
														
							ТзмехУлож=Ит.КО(3); 
							ТЗмехВсегоУлож=ТЗмехВСЕГОУлож+ТЗмехУлож; 
							
							ТзмехВСЕГООстаток=ТзмехВСЕГОКомпл-ТзмехВСЕГОУлож;
							Если ТЗМехВсегоОстаток<0 тогда
							      ТЗМехВсегоОстаток=0;
							иначе	
							конецесли;	
						КонецЕсли;
						Если Ит.Субконто(2)=СпрЭкспл тогда
							ЭксплКомпл=Ит.ДО(3);
							ЭксплВСЕГОКомпл=ЭксплВСЕГОКомпл+ЭксплКомпл;
							
							ЭксплУлож=Ит.КО(3);             
							ЭксплВсегоУлож=ЭксплВсегоУлож+ЭксплУлож;
							
							ЭксплВСЕГООстаток=ЭксплВСЕГОКомпл-ЭксплВСЕГОУлож; 
							 Если ЭксплВсегоОстаток<0 тогда
							      ЭксплВсегоОстаток=0;
							 иначе	
							 конецесли;	
						КонецЕсли;	
					Иначе
						Таб.ВывестиСекцию("Субконто2|Основа");
						
						Если ((объектгжф=1) или (объектгжф=3)) тогда
					        ЦенаТек=Ит.Субконто(2).ЦенаГЖФ.Получить(ДатаРасчета); 
					    иначеЕсли объектгжф=4 тогда
					        ЦенаТек=Ит.Субконто(2).ЦенаГЖФ2014.Получить(ДатаРасчета); 
                        иначе
						    ЦенаТек=Ит.Субконто(2).Цена.Получить(ДатаРасчета); 
                        конецесли;
						
						Если Ит.Субконто(2)=СпрТзр тогда
							 СуммаТек=Ит.ДО()-Ит.КО();
							 Если СуммаТек<0 тогда
							      СуммаТек=0;
							 иначе	
							 конецесли;	
						Иначе СуммаТек=Ит.СКД(3)*ЦенаТек;
						КонецЕсли;	
					    суммаматериалы=0;
						Если Ит.субконто(2)=СпрМатериалы тогда
					        СуммаМатериалы=Ит.КО();
							 // 
							 СуммаТек=Ит.ДО()-Ит.КО();
							 Если СуммаТек<0 тогда
							      СуммаТек=0;
							 иначе	
							 конецесли;	
							 //
						конецесли;
						
					  СуммаПоВидуРабот=СуммаПоВидуРабот+СуммаТек-СуммаМатериалы;	
						
					  Таб.ПрисоединитьСекцию("Субконто2|Остаток");
					  Таб.ПрисоединитьСекцию("Субконто2|Факт");
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;//по материалам 
	Если Ит.Субконто(1).ЭтоГруппа()=0 тогда
    Таб.ВывестиСекцию("Субконто2СиниеТзОсн|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзОсн|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзОсн|Факт"); 
	Таб.ВывестиСекцию("Субконто2СиниеТзМех|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзМех|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеТзМех|Факт");
    Таб.ВывестиСекцию("Субконто2СиниеЭкспл|Основа");
	Таб.ПрисоединитьСекцию("Субконто2СиниеЭкспл|Остаток");
	Таб.ПрисоединитьСекцию("Субконто2СиниеЭкспл|Факт");
	конецесли;			

	Если СуммаПоВидуРабот<0 тогда
		СуммаПоВидуРабот=0;
	иначе	
	конецесли;
	СуммаИтоговая=СуммаИтоговая+Суммаповидуработ;		
				
    ВР=Ит.ПредставлениеСубконто(1);
	Если СтрЧислоВхождений(Ит.Субконто(1).Код,".")<>2 тогда			
	Таб.ВывестиСекцию("СубконтоИтог|Основа");
	Таб.ПрисоединитьСекцию("СубконтоИтог|Остаток");
	Таб.ПрисоединитьСекцию("СубконтоИтог|Факт");  
    КонецЕсли;	

    Если СтрЧислоВхождений(Ит.Субконто(1).Код,".")=2 тогда			
	Таб.ВывестиСекцию("Субконто1|Основа");
	Таб.ПрисоединитьСекцию("Субконто1|Остаток");
	Таб.ПрисоединитьСекцию("Субконто1|Факт");  
    КонецЕсли;			
	Если ОбъектГЖФ=1 тогда
    	СуммаНаклРасхПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНаклГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2ФактГЖФ.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
        СуммаПланНакПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(ДатаРасчета)/100*Константа.ФОТПланГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
    иначеЕсли ((ОбъектГЖФ=3) или (объектГЖФ=4)) тогда
    	СуммаНаклРасхПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНаклГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2ФактГЖФ_2014.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
        СуммаПланНакПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(ДатаРасчета)/100*Константа.ФОТПланГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
    иначе
	    СуммаНаклРасхПоВидуРабот=Окр(Ит.Субконто(1).ПроцентНР.Получить(ДатаРасчета)/100*Константа.ФОТНакл.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*Константа.ПроцНакл2Факт.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
        СуммаПланНакПоВидуРабот=Окр(Ит.Субконто(1).ПроцентПН.Получить(ДатаРасчета)/100*Константа.ФОТПлан.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*((ТЗоснКомпл-ТЗоснУлож)+(ТЗмехКомпл-ТЗмехУлож)));
	конецесли;
	СуммаНакл=СуммаНакл+СуммаНаклРасхПоВидуРабот;
 	СуммаПлан=СуммаПлан+СуммаПланНакПоВидуРабот;
//	КонецЦикла;//по видам работ 
	Таб.ВывестиСекцию("Подвал|Основа");
	Таб.ПрисоединитьСекцию("Подвал|Остаток"); 
	Таб.ПрисоединитьСекцию("Подвал|Факт");
	//расчет затрат по СМР компл 
	ФотОснУложИт=0;
	ФотМехУложИт=0;
	МашМехУложИт=0;
	ПланнакУложИт=0;
	НаклРасхУложИт=0;
	ВремУложИт=0;
	ЗимнУложИт=0;
	НДСУложИт=0;
	ИтогоУложИт=0;
	ИтогоСНдсУложИт=0;
	ФотОснИт=0;
	ФотМехИт=0;
	МашМехИт=0;
	ПланнакИт=0;
	НаклРасхИт=0;
	ВремИт=0;
	ЗимнИт=0;
	НДСИт=0;
	ИтогоИт=0;
	ИтогоСНдсИт=0; 
	сумкомп=0;	комп=0; 
	ФотОснсумКомп=0;	ФотОснкомп=0;	ФотМехкомп=0;	ФотМехсумКомп=0;	Машкомп=0;	МашсумКомп=0;
	Планкомп=0;	ПланСумКомп=0; 	Наклкомп=0;	НаклСумКомп=0;	Времкомп=0;	ВремСумКомп=0;	Зимнкомп=0;
	ЗимнСумКомп=0;	ндскомп=0;	НдсСумКомп=0;	Итогокомп=0;	ИтогоСумКомп=0;

	Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
	Ит1.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Итоги,, 1);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контр, 1);
	Ит1.ИспользоватьСубконто(ВидыСубконто.Объекты,Об, 1);
    Ит1.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,видр, 1,1);
	Ит1.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"3",,, 1,, "СК");
	Ит1.ВыбратьСубконто(ВидыСубконто.Итоги,,0);	
     	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ФотОсн) = 1 тогда
	    ФотОснУложИт=Ит1.КО();
		ФотОснИт=Ит1.ДО();
		    Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	ФотОснкомп=Ит1.ДО()-Ит1.КО(); 
			   	ФотОснсумКомп=ФотОснСумКомп+ФотОснкомп;
			иначе
	            ФотОснкомп=0;
	        конецесли;
            конеццикла;
    	КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ФотМех) = 1 тогда
	     ФотМехУложИт=Ит1.КО();
		 ФотМехИт=Ит1.ДО();
		  Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	ФотМехкомп=Ит1.ДО()-Ит1.КО(); 
			   	ФотМехсумКомп=ФОТМехСумКомп+ФОТМехкомп;
			иначе
	            ФотМехкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.МашМех) = 1 тогда
	     МашМехУложИт=Ит1.КО();
		 МашМехИт=Ит1.ДО();
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Машкомп=Ит1.ДО()-Ит1.КО(); 
			   	МашсумКомп=МашСумКомп+Машкомп;
			иначе
	            Машкомп=0;
	        конецесли;
            конеццикла;
   	КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ПланНак) = 1 тогда
	     ПланНакУложИт=Ит1.КО();
		 ПланНакИт=Ит1.ДО();
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Планкомп=Ит1.ДО()-Ит1.КО(); 
			   	ПлансумКомп=ПланСумКомп+Планкомп;
			иначе
	            Планкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.НаклРасх) = 1 тогда
	     НаклРасхУложИт=Ит1.КО();
		 НаклРасхИт=Ит1.ДО();  
		 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Наклкомп=Ит1.ДО()-Ит1.КО(); 
			   	НаклсумКомп=НаклСумКомп+Наклкомп;
			иначе
	            Наклкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Врем) = 1 тогда
	      ВремУложИт=Ит1.КО();
		  ВремИт=Ит1.ДО();
		   Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Времкомп=Ит1.ДО()-Ит1.КО(); 
			   	ВремсумКомп=ВремСумКомп+Времкомп;
			иначе
	            Времкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Зимн) = 1 тогда
	      ЗимнУложИт=Ит1.КО();
		  ЗимнИт=Ит1.ДО(); 
		  Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Зимнкомп=Ит1.ДО()-Ит1.КО(); 
			   	ЗимнсумКомп=ЗимнСумКомп+Зимнкомп;
			иначе
	            Зимнкомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.НДС) = 1 тогда
	      НДСУложИт=Ит1.КО();
		  НДСИт=Ит1.ДО(); 
		   Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	НдсКомп=Ит1.ДО()-Ит1.КО(); 
			   	НдсСумКомп=НдсСумКомп+НдсКомп;
			иначе
	            ндскомп=0;
	        конецесли;
            конеццикла;
    КонецЕсли; 
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.Итого) = 1 тогда
	       ИтогоУложИт=Ит1.КО();
		   ИтогоИт=Ит1.ДО(); 
		    Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	Итогокомп=Ит1.ДО()-Ит1.КО(); 
			   	ИтогосумКомп=ИтогоСумКомп+Итогокомп;
			иначе
	            Итогокомп=0;
	        конецесли;
           конеццикла;
   	КонецЕсли; 
	Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ИтогоСндс) = 1 тогда
	        ИтогоСНДСУложИт=Ит1.КО(); 
			ИтогоСНДСИт=Ит1.ДО();  
			 Ит1.ВыбратьСубконто(ВидыСубконто.ВидыРабот,,0);	
            Пока Ит1.ПолучитьСубконто(ВидыСубконто.ВидыРабот) = 1 Цикл
            Если ((Ит1.Субконто(4).ПринадлежитГруппе(СпрВр5)=1) и (Ит1.Субконто(4).Этогруппа()=1)) тогда
	           	комп=Ит1.ДО()-Ит1.КО(); 
			   	сумКомп=СумКомп+комп;
			иначе
	            комп=0;
	        конецесли;
            конеццикла;
    КонецЕсли;
    //считаем остатки на дату                 
	Если ОбъектГЖФ=1 тогда
    	ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФактГЖФ.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
        ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФактГЖФ.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
        МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМехГЖФ.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
    иначеЕсли ((ОбъектГЖФ=3) или (объектгжф=4)) тогда
    	ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФактГЖФ_2014.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
        ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФактГЖФ_2014.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
        МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМехГЖФ_2014.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
    иначе     
	    ФОТоснОстаток=ФотОснСумКомп+Окр(Константа.ФОТФакт.получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗоснВсегоОстаток);
        ФОТмехОстаток=ФотМехСумКомп+Окр(Константа.ФОТФакт.Получить(ДатаРасчета)/Константа.СрКолЧасФакт.Получить(ДатаРасчета)*ТЗмехВсегоОстаток);
        МашМехОстаток=МашСумКомп+Окр(Константа.ПроцМашМех.Получить(ДатаРасчета)*ЭксплВсегоОстаток);
    конецесли;
	Если СуммаНакл<0 тогда
			  СуммаНакл=0;
	конецесли;
	НаклРасхОстаток=НаклСумКомп+СуммаНакл;
	Если СуммаПлан<0 тогда
			  СуммаПлан=0;
    конецесли;
    ПланНакОстаток=ПланСумКомп+СуммаПлан; 
	//////////////
	Если ОбъектГЖФ=1 тогда
	    ВрОстаток=ВремСумКомп+Окр(Константа.ПроцВремГЖФ.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
        ЗимнОстаток=ЗимнСумКомп+Окр(Константа.ПроцЗимнГЖФ.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
    иначеЕсли ((ОбъектГЖФ=3) или (объектГЖФ=4)) тогда
	    ВрОстаток=ВремСумКомп+Окр(Константа.ПроцВремГЖФ_2014.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
        ЗимнОстаток=ЗимнСумКомп+Окр(Константа.ПроцЗимнГЖФ_2014.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
    иначе
	    ВрОстаток=ВремСумКомп+Окр(Константа.ПроцВрем.Получить(ДатаРасчета)/100*Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая));
        ЗимнОстаток=ЗимнСумКомп+Окр(Константа.ПроцЗимн.Получить(ДатаРасчета)/100*(Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток));
	конецесли;
	ИтогоОстаток=Окр(НаклРасхОстаток+ПланНакОстаток+МашМехОстаток+ФОТоснОстаток+С­уммаИтоговая)+ВрОстаток+ЗимнОстаток;
    НДСОстаток=Окр(Константа.НДС/100*(ИтогоОстаток),2);
    ИтогоСНДСОстаток=Окр(ИтогоОстаток+НДСОстаток,2);
	Таб.ВывестиСекцию("Итоги");
Конеццикла;	
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Накопит.вед.материалов "+Контр+" "+Об+" "+Видр+" "+ПериодСтр(ВыбНачПериода,ВыбКонПериода),"");

КонецЕсли;	
КонецПроцедуры

Процедура ПриОткрытии()
	ВыбНачПериода = НачалоПериодаБИ();
	ВыбКонПериода = КонецПериодаБИ(); 
    ДатаРасчета=ТекущаяДата();
КонецПроцедуры


Процедура Обработать()
   	Если ПустоеЗначение(Флаг4)=0 тогда
   		СформироватьСводный();
   	Иначе
   		Сформировать();
   	КонецЕсли;	
КонецПроцедуры
Показать
12. Виталий Сергеевич (Slypower) 15.11.17 12:02 Сейчас в теме
Вырви глаз.... лучше бы сразу отчет приложил
13. albert po (akmelek) 15.11.17 13:53 Сейчас в теме
(12)исходный отчет приложил. Буду рад любой помощи.
Прикрепленные файлы:
отчет.ert
Оставьте свое сообщение