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


А это функция которая делает данные для второго табличного поля
Функция  ПолучитьОстатокТовара (Номенклатура)
     Запрос = Новый Запрос;
   Запрос.Текст = "
        | ВЫБРАТЬ
         |    ОстаткиТоваровКомпанииОстатки.СкладКомпании.Подразделение,
        |    ОстаткиТоваровКомпанииОстатки.СкладКомпании,
       
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура,
        |    СУММА (ОстаткиТоваровКомпанииОстатки.КоличествоОстаток),
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура.ОсновнаяЕдиницаИзмерения
        |ИЗ
        |    РегистрНакопления.ОстаткиТоваровКомпании.Остатки (, Номенклатура = &Номенклатура) КАК ОстаткиТоваровКомпанииОстатки
     
        |СГРУППИРОВАТЬ ПО
       |ОстаткиТоваровКомпанииОстатки.СкладКомпании.Подразделение,
         |ОстаткиТоваровКомпанииОстатки.СкладКомпании,
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура    ";
             
        Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
        Запрос.УстановитьПараметр("СкладКомпании", СкладКомпании);
   РезультатЗапроса = Запрос.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
   
       Пока Выборка.Следующий() Цикл
       
       Остаток = Недовложения.Добавить();
       Остаток.Номенклатура = Выборка.Номенклатура;        
       Остаток.Остаток = Выборка.КоличествоОстаток;
       Остаток.Склад = Выборка.СкладКомпании;
       Остаток.Подразделение = Выборка.СкладКомпанииПодразделение;
       Остаток.ЕдиницаИзмеренияНоменклатуры = Выборка.Номенклатура.ОсновнаяЕдиницаИзмерения;
                   КонецЦикла;
   Возврат 0;
  КонецФункции
1 Alex S D
 
27.03.12
18:09
Недовложения.Очистить()
2 Человечкин
 
27.03.12
18:23
(1)  ))))))))))
3 temik_a
 
28.03.12
10:03
Не помогает, удаляет все, а при следующей активизации данные из функции не переходят
4 temik_a
 
28.03.12
11:23
НЕт, все таки помогло. Недовложения.Очистить() нужно было вставить в самое начало функции ПолучитьОстатокТовара
5 cViper
 
28.03.12
11:29
(0) Рекомендую сделать КЭШ в виде временной таблицы, и потом к этому кэшу обращаться при активизации строки. Так как делаешь ты получится слишком ресурсо-затратно.