Бухгалтерский запрос в разрезе субконто и дат

1. saszj 14 03.02.17 06:29 Сейчас в теме
Нужно сделать выборку задолженности по подотчету по сотрудникам в разрезе дней за период. Написал такой код:

БИ.ИспользоватьСубконто(ВидыСубконто.Сотрудники);
БИ.ВыполнитьЗапрос(ДатаНач, ДатаНач, "71.1", , , 1, "День");
БИ.ВыбратьСубконто(ВидыСубконто.Сотрудники);
Пока БИ.ПолучитьСубконто(ВидыСубконто.Сотрудники) = 1 Цикл
ТекДата = ДатаНач;
Пока ТекДата <= ДатаКон Цикл
Если БИ.ПолучитьПериод(, ТекДата) = 1 Тогда
ТекСумма = БИ.СКД("С") - БИ.СКК("С");
КонецЕсли;
КонецЦикла;
КонецЦикла;
Показать

Ну так эта гадина семерка ни разу не смогла получить период с ТекДатой. А обороты есть. Убираешь БИ.ИспользоватьСубконто(ВидыСубконто.Сотрудники) - нет проблем, всё как положено - сальдо меняется. Но мне то надо с аналитикой! Где я не прав, люди?!
По теме из базы знаний
Найденные решения
2. nicotin 35 03.02.17 08:49 Сейчас в теме
Какой-то код у Вас сомнительный.
БИ.ВыполнитьЗапрос(ДатаНач, ДатаНач, "71.1", , , 1, "День"); - даты начала и конца такие и должны быть?

Пока ТекДата <= ДатаКон Цикл - нигде в тексте не видно, чтобы ТекДата или КонДата менялись, значит цикл будет бесконечный.

Попробуйте вот такой код:
	БИ.ИспользоватьСубконто(ВидыСубконто.Сотрудники); 
	БИ.ВыполнитьЗапрос(ДатаНач, ДатаКон, "71.1", , , 1, "День"); 
	БИ.ВыбратьСубконто(ВидыСубконто.Сотрудники); 
	Пока БИ.ПолучитьСубконто(ВидыСубконто.Сотрудники) = 1 Цикл 
		Если БИ.ВыбратьПериоды()=1 Тогда
			 Пока БИ.ПолучитьПериод()=1 Цикл 
				 ТекДата = БИ.НачДата; 
				 ТекСумма = БИ.СКД("С") - БИ.СКК("С"); 
				 Сообщить(""+ТекДата+" "+ТекСумма+" "+БИ.Субконто(1));
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
Показать

И да, действительно, метод даст результат только для тех сотрудников, у которых были обороты в заданном периоде.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nicotin 35 03.02.17 08:49 Сейчас в теме
Какой-то код у Вас сомнительный.
БИ.ВыполнитьЗапрос(ДатаНач, ДатаНач, "71.1", , , 1, "День"); - даты начала и конца такие и должны быть?

Пока ТекДата <= ДатаКон Цикл - нигде в тексте не видно, чтобы ТекДата или КонДата менялись, значит цикл будет бесконечный.

Попробуйте вот такой код:
	БИ.ИспользоватьСубконто(ВидыСубконто.Сотрудники); 
	БИ.ВыполнитьЗапрос(ДатаНач, ДатаКон, "71.1", , , 1, "День"); 
	БИ.ВыбратьСубконто(ВидыСубконто.Сотрудники); 
	Пока БИ.ПолучитьСубконто(ВидыСубконто.Сотрудники) = 1 Цикл 
		Если БИ.ВыбратьПериоды()=1 Тогда
			 Пока БИ.ПолучитьПериод()=1 Цикл 
				 ТекДата = БИ.НачДата; 
				 ТекСумма = БИ.СКД("С") - БИ.СКК("С"); 
				 Сообщить(""+ТекДата+" "+ТекСумма+" "+БИ.Субконто(1));
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
Показать

И да, действительно, метод даст результат только для тех сотрудников, у которых были обороты в заданном периоде.
3. saszj 14 03.02.17 14:03 Сейчас в теме
(2) Спасибо огромное! Проморгал даты в запросе.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот