Недавно писал обработку автосписания расхождений. Вот запрос из нее :
Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыБУ.КоличествоОстаток КАК КолвоБУ,
| ТоварыУУ.КоличествоОстаток КАК КолвоУУ,
| ЕСТЬNULL(ТоварыБУ.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыУУ.КоличествоОстаток, 0) КАК Разница,
| ВЫБОР
| КОГДА ТоварыБУ.Субконто1 ЕСТЬ NULL
| ТОГДА ТоварыУУ.Номенклатура
| ИНАЧЕ ТоварыБУ.Субконто1
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТоварыБУ.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыУУ.КоличествоОстаток, 0) > 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК Загружать,
| ТоварыБУ.СуммаОстаток,
| ТоварыБУ.СуммаОстаток / ТоварыБУ.КоличествоОстаток * (ЕСТЬNULL(ТоварыБУ.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыУУ.КоличествоОстаток, 0)) КАК РазницаСумма
|ИЗ
| (ВЫБРАТЬ
| ПартииТоваровНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
| ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаКон, Склад = &Склад) КАК ПартииТоваровНаСкладахОстатки) КАК ТоварыУУ
| ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
| ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток,
| ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
| ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаКон, Счет.Код = ""281"", , Субконто3 = &Склад) КАК ХозрасчетныйОстатки) КАК ТоварыБУ
| ПО ТоварыУУ.Номенклатура = ТоварыБУ.Субконто1");
Запрос.УстановитьПараметр("ДатаКон",КонПериода);
Запрос.УстановитьПараметр("Склад",Склад);
Рез = Запрос.Выполнить();
Товары.Загрузить(Рез.Выгрузить());