8.х Как получить в отчете по номеклатуре нулевые остатки и ненулевые в 8.1

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем tlevit, 9 июн 2009.

  1. TopicStarter Overlay
    tlevit
    Offline

    tlevit

    Регистрация:
    16 окт 2008
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Имеется (ниже) следующий код, здесь выбирается только номенклатура с не нулевыми остатками, как получить нулевой остаток по номенклатуре
    Код:
    Запрос = Новый Запрос; 
    Запрос.УстановитьПараметр("ДатаКон",  КонецДня(ДатаКон)); 
    
    Запрос.Текст = " 
    |ВЫБРАТЬ 
    |* 
    |ИЗ 
    |    РегистрБухгалтерии.Типовой.Остатки(&ДатаКон) КАК Выборка"; 
    //* 
    
    ТабличнаяЧастьИнфо.Загрузить(Запрос.Выполнить().Выгрузить()); 
    ТабДок=Новый ТабличныйДокумент; 
    
    ПоискСчета = Ложь; 
    
    Если РеквизитСчет.Код = "1300" Тогда 
    ПоискСчета = Истина; 
    КонецЕсли; 
    
    Для Каждого ПеремСтрока Из ТабличнаяЧастьИнфо Цикл 
    ЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ПеремСтрока.Субконто1); 
    МинЗапас = ЭлементНоменклатуры.МинимальныйЗапас; 
    Если МинЗапас <> 0 Тогда 
    Если ПеремСтрока.Субконто2 = "Основной склад" Тогда 
    
    Если ПоискСчета Или (ПеремСтрока.Счет = РеквизитСчет.Код) Тогда    
    Если ПеремСтрока.КоличествоОстатокДт < МинЗапас Тогда 
    ЭлементыФормы.ТабличноеПолеОтчет.ДобавитьСтроку(); 
    ПеремСтрокаОтчет = ЭлементыФормы.ТабличноеПолеОтчет.ТекущаяСтрока; 
    ПеремСтрокаОтчет.Субконто1 = ПеремСтрока.Субконто1; 
    ПеремСтрокаОтчет.МинимальныйЗапас = МинЗапас; 
    ПеремСтрокаОтчет.Остатки = ПеремСтрока.КоличествоОстатокДт; 
    ПеремСтрокаОтчет.ПланЗакупа = МинЗапас - ПеремСтрока.КоличествоОстатокДт; 
    КонецЕсли;    
    КонецЕсли; 
    КонецЕсли; 
    КонецЕсли; 
    КонецЦикла; 
    
    
    
  2. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Возьми весь справочник с левым соединением с регистром.
    Примерно так
    Код:
    "ВЫБРАТЬ
    |	Справочник.Ссылка,
    |	Справочник.Представление,
    |	ТоварыНаСкладахОстатки.Склад,
    |	ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Склад),
    |	ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
    |ИЗ
    |	Справочник.Номенклатура КАК Справочник
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК |ТоварыНаСкладахОстатки
    |		ПО Справочник.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
    |ГДЕ
    |	Справочник.ЭтоГруппа = ЛОЖЬ
    |	И ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) = 0"
    
  3. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    Если нужен остаток только товара, который хоть когда-то был на складе, то можно к остаткамИоборотам обратиться и вытянуть конечный остаток... Возможно так будет быстрее, т.к. не будет левого соединения... Хотя надо смотреть по месту... Весьма вероятно, что соединение со справочником быиграет...

Поделиться этой страницей