Этот метод работает отлично
Функция глПолучитьБИОстатокТовара(ДатаОстатков,Склад,Отдел,Номенклатура) Экспорт Если (глСтатусБИ = 1) и (ДатаОстатков=ТекущаяДата()) Тогда Запрос = глПодключениеБИ.СоздатьКоманду(); Запрос.УстановитьТекстовыйПараметр("Счет", СчетПоКоду("01.1")); Запрос.УстановитьТекстовыйПараметр("Субконто1", Склад); Если ПустоеЗначение(Отдел)=0 Тогда Запрос.УстановитьТекстовыйПараметр("Субконто2", Отдел); ДопТекстЗапроса = "and (Остатки.SC1 = :Субконто2)"; Иначе ДопТекстЗапроса = ""; КонецЕсли; Запрос.УстановитьТекстовыйПараметр("Субконто3", Номенклатура); ТекстЗапроса = " |SELECT | Остатки.ACCID as [СчетИд $Счет.основной] |, Остатки.SC0 as [Суб1 $Справочник.МестаХранения] |, Остатки.SC1 as [Суб2 $Справочник.Отделы] |, Остатки.SC2 as [Суб3 $Справочник.Номенклатура] |, Остатки.OBDT1 as [OBDT1 $Число] |, Остатки.OBKT1 as [OBKT1 $Число] |, Остатки.OBDT2 as [OBDT2 $Число] |, Остатки.OBKT2 as [OBKT2 $Число] |, Остатки.OBDT3 as [OBDT3 $Число] |, Остатки.OBKT3 as [OBKT3 $Число] |, Остатки.Date as [Date $Дата] |FROM | 1SBKTTL as Остатки |Where | (Остатки.Kind='3') and (Остатки.ACCID = :Счет) and (Остатки.SC0 = :Субконто1) and (Остатки.SC2 = :Субконто3) #"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"#",ДопТекстЗапроса); ТТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.Выгрузить(ТТЗ); //ТТЗ.Свернуть("Суб1,Суб3","OBKT1,OBKT2,OBKT3,OBDT1,OBDT2,OBDT3"); Возврат ("OBKT2")-ТТЗ.Итог("OBKT3"); Иначе Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2); Если ПустоеЗначение(Отдел)=0 Тогда Ит.ИспользоватьСубконто(ВидыСубконто.Отделы, Отдел, 2); КонецЕсли; Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура,Номенклатура, 2); Ит.ВыполнитьЗапрос(ДатаОстатков,ДатаОстатков,"01.1",,, 1,, "К"); Возврат Ит.СКД(3); КонецЕсли; КонецФункции
|