Имя: Пароль:
1C
1С v8
Запрос с сравнением
0 temik_a
 
29.03.12
16:43
Ребята помогите, Есть запрос, из этого запроса попадают данные в табличную часть документа при нажатии на кнопку,если я еще раз нажму на кнопку то таблица дополняется данными из запроса, происходит задвоение. в таб части меняются данные в одной колонке из таблицы, мне нужно сделать такой запрос чтоб сравнивал эту колонку и в случае нахождения там данных выводил данные из запроса и не задваивал данные.
вот код функции
Функция  ПолучитьОстатокТовара (Номенклатура)
     
      Запрос = Новый Запрос;
   Запрос.Текст = "
        | ВЫБРАТЬ
        |    ОстаткиТоваровКомпанииОстатки.СкладКомпании.Подразделение,
        |    ОстаткиТоваровКомпанииОстатки.СкладКомпании,
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура,
        |    СУММА (ОстаткиТоваровКомпанииОстатки.КоличествоОстаток),
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура.ОсновнаяЕдиницаИзмерения
       
        |ИЗ
        |    РегистрНакопления.ОстаткиТоваровКомпании.Остатки (, Номенклатура = &Номенклатура) КАК ОстаткиТоваровКомпанииОстатки
       
        |ГДЕ
        |ОстаткиТоваровКомпанииОстатки.СкладКомпании.Подразделение = &Подразделение
       
        |СГРУППИРОВАТЬ ПО
        |ОстаткиТоваровКомпанииОстатки.СкладКомпании.Подразделение,
        |ОстаткиТоваровКомпанииОстатки.СкладКомпании,
        |    ОстаткиТоваровКомпанииОстатки.Номенклатура    ";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
        Запрос.УстановитьПараметр("СкладКомпании", СкладКомпании);
        Запрос.УстановитьПараметр("Подразделение", СкладКомпании.Подразделение);
   РезультатЗапроса = Запрос.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
       
       Остаток = Недовложения.Добавить();
       Остаток.Номенклатура = Выборка.Номенклатура;        
       Остаток.Остаток = Выборка.КоличествоОстаток;
       Остаток.Склад = Выборка.СкладКомпании;
       Остаток.Подразделение = Выборка.СкладКомпанииПодразделение;
       Остаток.ЕдиницаИзмеренияНоменклатуры = Выборка.Номенклатура.ОсновнаяЕдиницаИзмерения;
КонецЦикла;
   

   Возврат 0;
         
КонецФункции
1 EasyRider
 
29.03.12
16:49
(0)в этом коде сравнением и не пахнет
2 Reset
 
29.03.12
16:51
Добавь НайтиСтроки в цикл перед добавлением. Если не находишь, добавляй строку. Если находишь, записывай в найденную. Что делать, если найдешь более 1 - решай сам.
3 Reset
 
29.03.12
16:53
Или вовсе загружай результат запроса в ТЧ (затирая старые записи) - если, конечно, они не нужны.