Васильев Дмитрий | Заместитель начальника ИТ отдела | ООО Саянскгазобетон

«Практика разработки и внедрения "Карты склада" на крупном предприятии по производству автоклавного газобетона»

В докладе будут рассмотрены проблемы склада с которыми столкнулись после запуска предприятия. Рассмотрим как за полгода работы предприятия можно навести беспорядок на складе и учете, и каким образом навести порядок после внедрения графической карты склада в системе 1С. Что такое карта склада и зоны хранения продукции. Будут подробно рассмотрены уже работающие методы маркировки на выпуске готовой продукции и реализации конечному покупателю с использованием терминалов сбора данных. Также расскажу как мы организовали рабочие места автопогрузчиков и кладовщиков для работы в 1С с помощью мобильных устройств.

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

1. akmelek 14.11.17 14:39 Сейчас в теме
Доброго дня! В 7.7 новичок совсем. Есть самописная конфигурация на 7.7. Есть отчет, который формируется по контрагенту, по виду работ, и по объекту строительства. У всех тип справочник. Отчет работает. Поставили задачу добавить фильтр, Данные для фильтра - тип перечисление. Подскажите как это реализовать? В 8 проще все и понятнее все...
Ответы
Сортировка: Древо
9. user856012 8 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. akmelek 14.11.17 16:05 Сейчас в теме
код отчета довольно таки большой запросов нет. Есть выполнитьзапрос и перед ним значение субконто
3. Slypower 14.11.17 15:18 Сейчас в теме
В запросе тоже не забудьте вывести этот критерий для условия
5. 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 7 14.11.17 18:56 Сейчас в теме
ИспользоватьСубконто....это если Бухгалтерия 77 стоит. А если торговля? Автор не сообщил какая именно конфа стоит - (Бухгалтерский учет,Оперативный учет, Расчет)
8. Shevon 14.11.17 19:06 Сейчас в теме
Синтаксис:
это если Бухгалтерия 77 стоит.


Судя по приведенному коду, стоит (строится запрос по бухгалтерским итогам)
10. dvk09 15.11.17 11:22 Сейчас в теме
Может повытягиваем информацию?
А реквизитом какого объекта отчета является значение перечисления?
11. 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. akmelek 15.11.17 13:53 Сейчас в теме
(12)исходный отчет приложил. Буду рад любой помощи.
Прикрепленные файлы:
отчет.ert
14. Apelsinka 7 01.12.17 13:54 Сейчас в теме
Таб = СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("Сформировать");
	Ит = СоздатьОбъект("БухгалтерскиеИтоги");
	Ит.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);

	Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,видр, 1,1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контр, 1);
	Ит.ИспользоватьСубконто(ВидыСубконто.Объекты,Об, 1); 
	Если ТипРаботы.Выбран() = 1 Тогда
	Ит.ИспользоватьСубконто(ВидыСубконто.ТипРабот,ТипРаботы, 2);     
	КонецЕсли;
	Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"1",,, 1,, "СК");
	Таб.ВывестиСекцию("Шапка|Основа");
	Таб.ПрисоединитьСекцию("Шапка|Остаток"); 
	Таб.ПрисоединитьСекцию("Шапка|Факт");
	Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); 
	ТЗоснВСЕГОКомпл=0;
	ТЗмехВСЕГОКомпл=0;
	ЭксплВСЕГОКомпл=0; 
	ТЗоснВСЕГОУлож=0;
	ТЗмехВСЕГОУлож=0;
	ЭксплВСЕГОУлож=0; 
	ТЗоснВСЕГООстаток=0;
	ТЗмехВСЕГООстаток=0;
	ЭксплВСЕГООстаток=0; 
	
	СуммаИтоговая=0; 
	СуммаНаклИтоговая=0;
	СуммаПланИтоговая=0;
	пл(об);       
	//*******
	Ит.ВыбратьСубконто(ВидыСубконто.ТипРабот,,,,,"Код");
	Пока Ит.ПолучитьСубконто(ВидыСубконто.ТипРабот) = 1 Цикл
	//*********
Показать
15. Apelsinka 7 01.12.17 13:56 Сейчас в теме
Немного непонятно именно отбор будет или разворачивать по типу работ. Отчет ваш прилагаю. Там ведь форма поменяется. Условие только если какой то тип работы выбран, тогда будет отбираться. Иначе нет. Но можно доделать.
Прикрепленные файлы:
отчет.ert
16. akmelek 01.12.17 14:43 Сейчас в теме
(15)Спасибо за ответ. ТипРабот является реквизитом ВидРабот. Нужен фильтр, который будет фильтровать уже формирующийся отчет из контрагента, обьекта и ВидаРабот по ТипРабот. Если есть возможность и желание очень прошу помочь, так как не разобрался.
Оставьте свое сообщение
Все разделы

Вакансии


Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 150 000 руб.
Полный день

Программист 1С
Москва
зарплата от 120 000 руб. до 160 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата до 160 000 руб.
Полный день