Имя: Пароль:
1C
1С v8
При выборе номенклатуры выводился остаток в табличной части документа
0 temik_a
 
26.03.12
21:34
Ребята подскажите как вывести остаток товара в табличной части при выборе номенклатуры, (по примеру документа списание товаров).Т.Е. когда я выбираю номенклатуру в следующей колонке мне показывался товар по определенному складу.
я сделал не много
Процедура НедовложенияНоменклатураПриИзменении(Элемент, ОформленияСтрок)
   Если ЗначениеЗаполнено (Элемент.Значение) Тогда
       ЭлементыФормы.Недовложения.ТекущиеДанные.ЕдиницаИзмеренияНоменклатуры = Элемент.Значение.ОсновнаяЕдиницаИзмерения;//Если ЗначениеЗаполнено(Элемент.Значение) Тогда
КонецЕсли;
       Стр = ЭлементыФормы.Недовложения.ТекущиеДанные;
Стр.Остаток = ПолучитьОстатокТовара(Стр.Номенклатура);
КонецПроцедуры

Функция  ПолучитьОстатокТовара (Номенклатура)
     Запрос = Новый Запрос;
   Запрос.Текст = "
        | ВЫБРАТЬ
        |    ОстаткиТоваровКомпанииОстатки.СкладКомпании.Подразделение,
       
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура,
        |    ОстаткиТоваровКомпанииОстатки.КоличествоОстаток,
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура.ОсновнаяЕдиницаИзмерения
        |ИЗ
        |    РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК ОстаткиТоваровКомпанииОстатки
        |ГДЕ
        |ОстаткиТоваровКомпанииОстатки.Номенклатура = &Номенклатура   ";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
        Запрос.УстановитьПараметр("СкладКомпании", СкладКомпании);
   РезультатЗапроса = Запрос.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
       
       Остаток = Недовложения.Добавить();
       Остаток.Номенклатура = Выборка.Номенклатура;        
       Остаток.Остаток = Выборка.КоличествоОстаток;
Остаток.ЕдиницаИзмеренияНоменклатуры = Выборка.Номенклатура.ОсновнаяЕдиницаИзмерения;
КонецЦикла;
КонецФункции
1 catena
 
26.03.12
22:22
(0)Зачем в функции Недовложения.Добавить()? Твоя функция должна вернуть циферку. В запросе надо добавить условие на склад и убрать все лишнее, кроме остатка.
2 hhhh
 
26.03.12
22:22
а зачем в недовложения строчку добавляешь?

пиши просто

Пока Выборка.Следующий() Цикл
       
       Возврат Остаток.КоличествоОстаток;
КонецЦикла;
Возврат 0;
3 temik_a
 
27.03.12
09:52
2hhhh
Выдает ошибку переменная не определена (остаток)

А какой мне функцией вернуть циферку?
4 Fish
 
27.03.12
09:55
(3) Подумать самому никак? Напиши:
Если Выборка.Следующий() Тогда
Возврат Выборка.КоличествоОстаток;
Иначе
Возврат 0;
КонецЕсли;
5 Kassius
 
27.03.12
10:02
и склад не используется.
6 temik_a
 
27.03.12
10:33
мой код в общем выводит мне остатки по каждому складу, но есть 2 проблемы, мне нужно выводить по подразделениям (в каждом подразделении у меня может быть пару складов и на них храниться могут одинаковые продукты)и по этому мне выводит по каждому складу из подразделения а мне нужно чтоб в общем по подразделению.
Проблема 2, при выборе номенклатуры у меня не заполняется строчка с остатком где я выбираю номенклатуру, а дальше все выводиться. Наверное меня ни кто не поймет((((
7 hhhh
 
27.03.12
10:49
(6) может так

Запрос.Текст = "
        | ВЫБРАТЬ
        |    ОстаткиТоваровКомпанииОстатки.СкладКомпании.Подразделение,
       
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура,
        |    СУММА(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток),
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура.ОсновнаяЕдиницаИзмерения
        |ИЗ
        |    РегистрНакопления.ОстаткиТоваровКомпании.Остатки(, Номенклатура = &Номенклатура)  КАК ОстаткиТоваровКомпанииОстатки
СГРУППИРОВАТЬ ПО
   |   ОстаткиТоваровКомпанииОстатки.СкладКомпании.Подразделение,  
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура,

      ";
8 zak555
 
27.03.12
10:50
(0) жесть

сделай подбор, в котором будем выводится остаток товара
9 temik_a
 
27.03.12
11:32
2hhhh есть по подразделению выводиться. Спасибо
Теперь нужно решить как убрать первую строчку в которую не выводиться остаток (при выборе номенклатуры)