Имя: Пароль:
1C
1С v8
Как получить остатки с учетом резерва
0 1C2SS
 
13.05.13
14:11
1С 8.2. УНФ 1.4
Как лучше всего программно получить остатки товара с учетом резерва (т.е. сколько доступно) ? Товар приходуется и расходуется в регистр ЗапасыНаСкладах. А вот как узнать что товар зарезервирован я ни как не пойму.
1 palpetrovich
 
13.05.13
14:14
(0) лучше всего открыть ФормуПодбораНоменклатуры - там все есть
2 mikecool
 
13.05.13
14:17
(0) то , что не поймешь - хреново
если пользуется регистр СвободныеОстатки - то из него, иначе
ТоварыНаСкладах - Резервы - ТоварыПереданные и еще какой то регистр
3 1C2SS
 
13.05.13
16:03
Решение такое:
тзн = Объект.Запасы.Выгрузить(,"Номенклатура");
   Зап = новый Запрос; //По всем складам!
   Зап.Текст=    "
   |    ВЫБРАТЬ
   |    НоменклатураСписок.Ссылка КАК Номенклатура,
   |    НоменклатураСписок.Код КАК Код,
   |    НоменклатураСписок.Артикул КАК Артикул,
   |    НоменклатураСписок.Наименование КАК Наименование,
   |    НоменклатураСписок.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   |    НоменклатураСписок.ИспользоватьХарактеристики КАК ИспользоватьХарактеристики,
   |    НоменклатураСписок.ИспользоватьПартии КАК ИспользоватьПартии,
   |    СУММА(ЗапасыОстатки.КоличествоОстаток)  КАК Остаток,
   |        
   |    СУММА(ВЫБОР
   |            КОГДА ЗапасыОстатки.ЗаказПокупателя = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяССылка)
   |                ТОГДА 0
   |            ИНАЧЕ ЗапасыОстатки.КоличествоОстаток
   |        КОНЕЦ)  КАК Резерв,
   |    
   |        СУММА(ЗапасыОстатки.КоличествоОстаток - ВЫБОР
   |            КОГДА ЗапасыОстатки.ЗаказПокупателя = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяССылка)
   |                ТОГДА 0
   |            ИНАЧЕ ЗапасыОстатки.КоличествоОстаток
   |        КОНЕЦ)  КАК СвободныйОстаток,
   |    0 КАК ЦенаПоКлассификатору,
   |    0 КАК Цена
   |ИЗ
   |    Справочник.Номенклатура КАК НоменклатураСписок
   |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Запасы.Остатки(
   |                &НаДату,
   |                Номенклатура.Ссылка В (&тзн)    ) КАК ЗапасыОстатки
   |        ПО НоменклатураСписок.Ссылка = ЗапасыОстатки.Номенклатура
   |ГДЕ
   |    (НЕ НоменклатураСписок.ЭтоГруппа)
   |    И НоменклатураСписок.Ссылка В (&тзн)    
   |СГРУППИРОВАТЬ ПО
   |    НоменклатураСписок.Ссылка,
   |    НоменклатураСписок.Код,
   |    НоменклатураСписок.Артикул,
   |    НоменклатураСписок.Наименование,
   |    НоменклатураСписок.ЕдиницаИзмерения,
   |    НоменклатураСписок.ИспользоватьХарактеристики,
   |    НоменклатураСписок.ИспользоватьПартии,
   |    0,
   |   0";    
   зап.Параметры.Вставить("НаДату", ДатаДокумента);
   зап.Параметры.Вставить("тзн", тзн);
   
   рез=зап.Выполнить().Выгрузить();
Основная теорема систематики: Новые системы плодят новые проблемы.