Процедура Заполнить(Кнопка) УсловиеДвижения = ""; Запрос=Новый Запрос; Если ЭтаФорма.ВыводитьВсеОсновныеОстатки Тогда ТипСоединенияДвижения = "ПОЛНОЕ"; УсловиеОстаков = "ИМЕЮЩИЕ | (СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток)>0) | ИЛИ СУММА(ТоварыНаМагазинахОстатки.КоличествоНачальныйОстаток)<>0 | ИЛИ СУММА(ТоварыНаМагазинахОстатки.КоличествоПриход)<>0 | ИЛИ СУММА(ТоварыНаМагазинахОстатки.КоличествоРасход)<>0 | ИЛИ СУММА(ТоварыНаМагазинахОстатки.КоличествоКонечныйОстаток)<>0"; Иначе ТипСоединенияДвижения = "ПРАВОЕ"; УсловиеОстаков = ""; Если ЭтаФорма.ВыводитьТолькоПодажи Тогда УсловиеДвижения = "И ТоварыВРозницеОстаткиИОбороты.КоличествоРасход > 0"; КонецЕсли; КонецЕсли; РозничныйТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная"); Запрос.Текст=" |ВЫБРАТЬ | СпрНоменклатура.Код КАК Код, | СпрНоменклатура.Ссылка КАК Номенклатура, | СУММА(ЦеныНоменклатуры.Цена) КАК Цена, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК ОстаткиОсновные, | СУММА(ТоварыНаМагазинахОстатки.КоличествоНачальныйОстаток) КАК ОстаткиМагазинаНачало, | СУММА(ТоварыНаМагазинахОстатки.КоличествоПриход) КАК Поступления, | СУММА(ТоварыНаМагазинахОстатки.КоличествоРасход) КАК Продажи, | СУММА(ТоварыНаМагазинахОстатки.КоличествоКонечныйОстаток) КАК ОстаткиМагазинаКонец, | СУММА(ОборотыПеремещение.КоличествоРасходПеремещение) КАК КоличествоРасходПеремещение |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура | ПОЛНОЕ СОЕДИНЕНИЕ | (ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток, | 0 КАК ОстаткиМагазинаНачало, | 0 КАК Поступления, | 0 КАК Продажи, | 0 КАК ОстаткиМагазинаКонец, | 0 КАК КоличествоРасходПеремещение | ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&КонПериода) КАК ТоварыНаСкладахОстатки |ГДЕ | ТоварыНаСкладахОстатки.Склад =&Склад | СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура | ИМЕЮЩИЕ (СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток)>0) |) КАК ТоварыНаСкладахОстатки | ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура |ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПеремещениеТоваров.Номенклатура КАК Номенклатура, | 0 КАК КоличествоОстаток, | 0 КАК КоличествоНачальныйОстаток, | 0 КАК КоличествоПриход, | 0 КАК КоличествоРасход, | 0 КАК КоличествоКонечныйОстаток, | СУММА(ПеремещениеТоваров.КоличествоРасходПеремещение) КАК КоличествоРасходПеремещение | ИЗ | (ВЫБРАТЬ | Обороты.Регистратор КАК Регистратор, | Обороты.Номенклатура КАК Номенклатура, | 0 КАК КоличествоОстаток, | 0 КАК КоличествоНачальныйОстаток, | 0 КАК КоличествоПриход, | 0 КАК КоличествоРасход, | 0 КАК КоличествоКонечныйОстаток, | СУММА(Обороты.КоличествоРасход) КАК КоличествоРасходПеремещение | ИЗ | РегистрНакопления.ТоварыВРознице.Обороты(&НачПериода,&КонПериода , Регистратор, ) КАК Обороты | ГДЕ | Обороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров И | Обороты.Склад = &Магазин | | СГРУППИРОВАТЬ ПО | Обороты.Регистратор, | Обороты.Номенклатура | ) КАК ПеремещениеТоваров | СГРУППИРОВАТЬ ПО | ПеремещениеТоваров.Номенклатура) КАК ОборотыПеремещение | ПО СпрНоменклатура.Ссылка = ОборотыПеремещение.Номенклатура | | " + ТипСоединенияДвижения + " СОЕДИНЕНИЕ (ВЫБРАТЬ | ТоварыВРозницеОстаткиИОбороты.Номенклатура, | 0 КАК КоличествоОстаток, | СУММА(ТоварыВРозницеОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток, | СУММА(ТоварыВРозницеОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход, | СУММА(ТоварыВРозницеОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход, | СУММА(ТоварыВРозницеОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток, | 0 КАК КоличествоРасходПеремещение | ИЗ | РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&НачПериода,&КонПериода) КАК ТоварыВРозницеОстаткиИОбороты | ГДЕ | ТоварыВРозницеОстаткиИОбороты.Склад = &Магазин | " + УсловиеДвижения + " | СГРУППИРОВАТЬ ПО | ТоварыВРозницеОстаткиИОбороты.Номенклатура) КАК ТоварыНаМагазинахОстатки |ПО СпрНоменклатура.Ссылка = ТоварыНаМагазинахОстатки.Номенклатура |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонПериода, ТипЦен = &ТипЦен) КАК ЦеныНоменклатуры | ПО СпрНоменклатура.Ссылка = ЦеныНоменклатуры.Номенклатура |ГДЕ | СпрНоменклатура.ЭтоГруппа = ЛОЖЬ |СГРУППИРОВАТЬ ПО | СпрНоменклатура.Ссылка | " + УсловиеОстаков + " |УПОРЯДОЧИТЬ ПО | СпрНоменклатура.Ссылка АВТОУПОРЯДОЧИВАНИЕ"; Запрос.Параметры.Вставить("Склад",Склад); Запрос.Параметры.Вставить("Магазин",Магазин); Запрос.Параметры.Вставить("НачПериода",НачалоДня(НачПериода)); Запрос.Параметры.Вставить("КонПериода",КонецДня(КонПериода)); Запрос.Параметры.Вставить("ТипЦен",РозничныйТипЦен); ТаблицаОстатков.Загрузить(Запрос.Выполнить().Выгрузить()); Для Каждого Строка Из ТаблицаОстатков Цикл Строка.Поступления =Строка.Поступления-Строка.КоличествоРасходПеремещение; Строка.Продажи =Строка.Продажи-Строка.КоличествоРасходПеремещение; КонецЦикла; КонецПроцедуры