@Xvir43

Delphi запрос в 1с что не так?

Помогите пожалуйста выполнить запрос, делаю так:
Var
   doc:olevariant;
   QResult:olevariant;
   sel_res,res: variant;
begin
 
  //Проверяем, существует ли соединение с 1Cv8
  if YesLinkToVariant(s1C8_ole) then
     begin
 
     doc:=s1C8_ole.NewObject('Запрос');
      doc.text:='ВЫБРАТЬ ЗаказПокупателяТовары.Номенклатура КАК Номенклатура, ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура), ЗаказПокупателяТовары.Количество КАК Количество ИЗ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары'+
       ' ГДЕ ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &НачалоПериода И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки <= &КонецПериода И ЗаказПокупателяТовары.Ссылка.ПометкаУдаления = &ПометкаУдаления; ';
       doc.УстановитьПараметр('НачалоПериода',StrToDate('28.03.2018'));
        doc.УстановитьПараметр('КонецПериода',StrToDate('30.03.2018'));
        doc.УстановитьПараметр('ПометкаУдаления','ложь');
 
       sel_res :=doc.Выполнить();
       res:=sel_res.Выбрать();
 
        try
       while res.Следующий() do
    begin
       Memo1.Lines.Add( String(res.Номенклатура));
      // (sel_res.Количество);
 
 
    end;
 
        except
          on E: Exception do ShowMessage('Ошибка:  while Choose.Next() do:'+E.ClassName+':'+E.Message);
        end;
  end
  else begin
     ShowMessage('Сначала нужно установить соединение с 1Cv8 !');
  end;
end;


все выполняется без ошибок ,но цикл не работает дельфи его пропускает.
как будто пустой результат.

что не так?

Процедура Отчет(ТабДок, КонецПериода, НачалоПериода, ПометкаУдаления) Экспорт
    //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ЗаказПокупателяВозвраты.Номенклатура КАК Номенклатура,
    |   ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяВозвраты.Номенклатура),
    |   ЗаказПокупателяВозвраты.Количество КАК Количество
    |ИЗ
    |   Документ.ЗаказПокупателя.Возвраты КАК ЗаказПокупателяВозвраты
    |ГДЕ
    |   ЗаказПокупателяВозвраты.Ссылка.ПометкаУдаления = &ПометкаУдаления
    |   И ЗаказПокупателяВозвраты.Ссылка.ВозвратНаличными = &ВозвратНаличными
    |   И ЗаказПокупателяВозвраты.Ссылка.ДатаОтгрузки >= &НачалоПериода
    |   И ЗаказПокупателяВозвраты.Ссылка.ДатаОтгрузки <= &КонецПериода";
 
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос.УстановитьПараметр("ПометкаУдаления", ложь);
    Запрос.УстановитьПараметр("ВозвратНаличными", ложь);
 
    ИтоговаяТаблица = Запрос.Выполнить().Выгрузить();
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
    |   ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура),
    |   ЗаказПокупателяТовары.Количество КАК Количество
    |ИЗ
    |   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
    |ГДЕ
    |    ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &НачалоПериода
    |   И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки <= &КонецПериода
    |   И ЗаказПокупателяТовары.Ссылка.ПометкаУдаления = &ПометкаУдаления";
 
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос.УстановитьПараметр("ПометкаУдаления", ложь);
 
 
    Результат=Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
        НоваяСтрока=ИтоговаяТаблица.Добавить();
        НоваяСтрока.Номенклатура=Результат.Номенклатура;
        НоваяСтрока.Количество=Результат.Количество;
         
    КонецЦикла;

вот рабочая процедура с 1с
  • Вопрос задан
  • 419 просмотров
Решения вопроса 2
nki
@nki
bezkart.ru готовая система лояльности
Вы значение параметра ПометкаУдаления как строку передаете?
В данном случае, можно сразу в запросе писать
ПометкаУдаления = Ложь
Ответ написан
@Dementor
программист, архитектор, аналитик
Константин Нагибович правильно написал: проблема с вашим параметром ПометкаУдаления! Вы вместо FALSE передаете какой-то левый литерал строкового типа. Или передавайте правильное булевое значение, или в запросе напишите "ГДЕ НЕ ЗаказПокупателяВозвраты.Ссылка.ПометкаУдаления"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект