helpf.pro
Регистрация

v7: Выборка отчета

Rustavelli
04.06.2015 16:28Прочитано: 3648

Добрый день!

Помогите с отчетом. Впервые начал кодировать на семерке и столкнулся с проблемой. Нужно создать регламентированный отчет за квартал, по сотрудникам. За квартал я получил, но как в цикле дополнительно получить данные по каждому месяцу квартала?

Код 1C v 7.x
 Процедура Сформировать()

Нпп=0;

НачДата_1 = НачМесяца(ВыбНачПериода); 
КонДата_1 = КонМесяца(ВыбНачПериода);
НачДата_2 = НачМесяца(ДобавитьМесяц(ВыбКонПериода,-1)); 
КонДата_2 = КонМесяца(ДобавитьМесяц(ВыбКонПериода,-1));
НачДата_3 = НачМесяца(ВыбКонПериода); 
КонДата_3 = КонМесяца(ВыбКонПериода);

СпрНалоги = СоздатьОбъект("Справочник.НалогиИОтчисления");
СпрНалоги.НайтиПоКоду("ПФизЗП");
Налог = СпрНалоги.ТекущийЭлемент();     

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");

Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники);
Ит.ИспользоватьКорСубконто(ВидыСубконто.Налоги,Налог,2);
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "67", "65",,2,8,);

Таб.ВывестиСекцию("Шапка");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

Ит.ВыбратьСубконто(ВидыСубконто.Сотрудники);
      
Пока Ит.ПолучитьСубконто(ВидыСубконто.Сотрудники) = 1 Цикл
Нпп=Нпп+1;  
Таб.ВывестиСекцию("Субконто2");
КонецЦикла;

Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать",""); 

КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
all4cf
05.06.2015 00:49Ответ № 1

Так же через бух итоги, в другую переменную их помести и выбирай за период

Rustavelli
05.06.2015 12:04Ответ № 2

Спасибо, получилось! Результат есть, но очень долго формируется отчет, или так и должно быть

Код 1C v 7.x
 
Èò = ÑîçäàòüÎáúåêò("ÁóõãàëòåðñêèåÈòîãè");
Èò.ÈñïîëüçîâàòüÑóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè);
Èò.ÈñïîëüçîâàòüÊîðÑóáêîíòî(ÂèäûÑóáêîíòî.Íàëîãè,Íàëîã,2);
Èò.ÂûïîëíèòüÇàïðîñ(Íà÷àëîÃîäà, ÂûáÊîíÏåðèîäà, "67", "65",,2,8,);

Òàá.ÂûâåñòèÑåêöèþ("Øàïêà");
Òàá.Îïöèè(0,0,Òàá.ÂûñîòàÒàáëèöû(),0);

Èò.ÂûáðàòüÑóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè);

Ïîêà Èò.Ïîëó÷èòüÑóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè) = 1 Öèêë

Íïï=Íïï+1;
 
// çà ïðîøëûé êâàðòàë
Åñëè Íà÷àëîÃîäà <> Íà÷Äàòà_1 Òîãäà
ÈòÍà÷ = ÑîçäàòüÎáúåêò("ÁóõãàëòåðñêèåÈòîãè");
ÈòÍà÷.ÈñïîëüçîâàòüÑóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè,Èò.Ñóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè));
ÈòÍà÷.ÈñïîëüçîâàòüÊîðÑóáêîíòî(ÂèäûÑóáêîíòî.Íàëîãè,Íàëîã);
ÈòÍà÷.ÂûïîëíèòüÇàïðîñ(Íà÷àëîÃîäà, ÄàòàÊîíÏåðåäÍà÷Êâàðòàëà, "67", "65",,2,,);
ÈòÍà÷.ÂûáðàòüÑóáêîíòî();
Åñëè ÈòÍà÷.Ïîëó÷èòüÑóáêîíòî() = 1 Òîãäà
ÊîíåöÅñëè;
ÊîíåöÅñëè;

// çà ïåðâûé ìåñÿö êâàðòàëà
Èò1 = ÑîçäàòüÎáúåêò("ÁóõãàëòåðñêèåÈòîãè");
Èò1.ÈñïîëüçîâàòüÑóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè,Èò.Ñóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè));
Èò1.ÈñïîëüçîâàòüÊîðÑóáêîíòî(ÂèäûÑóáêîíòî.Íàëîãè,Íàëîã);
Èò1.ÂûïîëíèòüÇàïðîñ(Íà÷Äàòà_1, ÊîíÄàòà_1, "67", "65",,2,,);
Èò1.ÂûáðàòüÑóáêîíòî();
Åñëè Èò1.Ïîëó÷èòüÑóáêîíòî() = 1 Òîãäà
ÊîíåöÅñëè;

// çà âòîðîé ìåñÿö êâàðòàëà
Èò2 = ÑîçäàòüÎáúåêò("ÁóõãàëòåðñêèåÈòîãè");
Èò2.ÈñïîëüçîâàòüÑóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè,Èò.Ñóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè));
Èò2.ÈñïîëüçîâàòüÊîðÑóáêîíòî(ÂèäûÑóáêîíòî.Íàëîãè,Íàëîã);
Èò2.ÂûïîëíèòüÇàïðîñ(Íà÷Äàòà_2, ÊîíÄàòà_2, "67", "65",,2,,);
Èò2.ÂûáðàòüÑóáêîíòî();
Åñëè Èò2.Ïîëó÷èòüÑóáêîíòî() = 1 Òîãäà
ÊîíåöÅñëè;
          
// çà òðåòèé ìåñÿö êâàðòàëà
Èò3 = ÑîçäàòüÎáúåêò("ÁóõãàëòåðñêèåÈòîãè");
Èò3.ÈñïîëüçîâàòüÑóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè,Èò.Ñóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè));
Èò3.ÈñïîëüçîâàòüÊîðÑóáêîíòî(ÂèäûÑóáêîíòî.Íàëîãè,Íàëîã);
Èò3.ÂûïîëíèòüÇàïðîñ(Íà÷Äàòà_3, ÊîíÄàòà_3, "67", "65",,2,,);
Èò3.ÂûáðàòüÑóáêîíòî();
Åñëè Èò3.Ïîëó÷èòüÑóáêîíòî() = 1 Òîãäà
ÊîíåöÅñëè;
   
// îáîðîò çà êâàðòàë
ÈòÎá = ÑîçäàòüÎáúåêò("ÁóõãàëòåðñêèåÈòîãè");
ÈòÎá.ÈñïîëüçîâàòüÑóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè,Èò.Ñóáêîíòî(ÂèäûÑóáêîíòî.Ñîòðóäíèêè));
ÈòÎá.ÈñïîëüçîâàòüÊîðÑóáêîíòî(ÂèäûÑóáêîíòî.Íàëîãè,Íàëîã);
ÈòÎá.ÂûïîëíèòüÇàïðîñ(ÂûáÍà÷Ïåðèîäà, ÂûáÊîíÏåðèîäà, "67", "65",,2,,);
ÈòÎá.ÂûáðàòüÑóáêîíòî();
Åñëè ÈòÎá.Ïîëó÷èòüÑóáêîíòî() = 1 Òîãäà
ÊîíåöÅñëè;

Òàá.ÂûâåñòèÑåêöèþ("Ñóáêîíòî2"); 

ÊîíåöÖèêëà;
Rustavelli
05.06.2015 12:26Ответ № 3
Код 1C v 7.x
 	
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники);
Ит.ИспользоватьКорСубконто(ВидыСубконто.Налоги,Налог,2);
Ит.ВыполнитьЗапрос(НачалоГода, ВыбКонПериода, "67", "65",,2,8,);

Таб.ВывестиСекцию("Шапка");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

Ит.ВыбратьСубконто(ВидыСубконто.Сотрудники);

Пока Ит.ПолучитьСубконто(ВидыСубконто.Сотрудники) = 1 Цикл

Нпп=Нпп+1;
 
// за прошлый квартал
Если НачалоГода <> НачДата_1 Тогда
ИтНач = СоздатьОбъект("БухгалтерскиеИтоги");
ИтНач.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Ит.Субконто(ВидыСубконто.Сотрудники));
ИтНач.ИспользоватьКорСубконто(ВидыСубконто.Налоги,Налог);
ИтНач.ВыполнитьЗапрос(НачалоГода, ДатаКонПередНачКвартала, "67", "65",,2,,);
ИтНач.ВыбратьСубконто();
Если ИтНач.ПолучитьСубконто() = 1 Тогда
КонецЕсли;
КонецЕсли;

// за первый месяц квартала
Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит1.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Ит.Субконто(ВидыСубконто.Сотрудники));
Ит1.ИспользоватьКорСубконто(ВидыСубконто.Налоги,Налог);
Ит1.ВыполнитьЗапрос(НачДата_1, КонДата_1, "67", "65",,2,,);
Ит1.ВыбратьСубконто();
Если Ит1.ПолучитьСубконто() = 1 Тогда
КонецЕсли;

// за второй месяц квартала
Ит2 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит2.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Ит.Субконто(ВидыСубконто.Сотрудники));
Ит2.ИспользоватьКорСубконто(ВидыСубконто.Налоги,Налог);
Ит2.ВыполнитьЗапрос(НачДата_2, КонДата_2, "67", "65",,2,,);
Ит2.ВыбратьСубконто();
Если Ит2.ПолучитьСубконто() = 1 Тогда
КонецЕсли;
          
// за третий месяц квартала
Ит3 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит3.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Ит.Субконто(ВидыСубконто.Сотрудники));
Ит3.ИспользоватьКорСубконто(ВидыСубконто.Налоги,Налог);
Ит3.ВыполнитьЗапрос(НачДата_3, КонДата_3, "67", "65",,2,,);
Ит3.ВыбратьСубконто();
Если Ит3.ПолучитьСубконто() = 1 Тогда
КонецЕсли;
   
// оборот за квартал
ИтОб = СоздатьОбъект("БухгалтерскиеИтоги");
ИтОб.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Ит.Субконто(ВидыСубконто.Сотрудники));
ИтОб.ИспользоватьКорСубконто(ВидыСубконто.Налоги,Налог);
ИтОб.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "67", "65",,2,,);
ИтОб.ВыбратьСубконто();
Если ИтОб.ПолучитьСубконто() = 1 Тогда
КонецЕсли;

Таб.ВывестиСекцию("Субконто2"); 

КонецЦикла;


all4cf
05.06.2015 16:06Ответ № 4

Долго, да... так и есть

попробуй 

Код 1C v 7.x
 // за первый месяц квартала
Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит1.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Ит.Субконто(ВидыСубконто.Сотрудники));
Ит1.ИспользоватьКорСубконто(ВидыСубконто.Налоги,Налог);

и такойже код за другие месяца и квартал поместить перед началом цикла

Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.