X
X
Xvir432018-04-05 11:58:43
Delphi
Xvir43, 2018-04-05 11:58:43

How to make a request from 1s in Delphi?

How to transfer a procedure from 1C to Delphi?

1c
Процедура Отчет(ТабДок, КонецПериода, НачалоПериода, ПометкаУдаления) Экспорт
  //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
  // Данный фрагмент построен конструктором.
  // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

  Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
  Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
  Запрос.УстановитьПараметр("ПометкаУдаления", ложь);
  Запрос.УстановитьПараметр("ВозвратНаличными", ложь);

  ИтоговаяТаблица = Запрос.Выполнить().Выгрузить();

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

  Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
  Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
  Запрос.УстановитьПараметр("ПометкаУдаления", ложь);


  Результат=Запрос.Выполнить().Выбрать();
  Пока Результат.Следующий() Цикл
    НоваяСтрока=ИтоговаяТаблица.Добавить();
    НоваяСтрока.Номенклатура=Результат.Номенклатура;
    НоваяСтрока.Количество=Результат.Количество;
    
  КонецЦикла;
  
ИтоговаяТаблица.Свернуть("Номенклатура","Количество");
ИтоговаяТаблица.Сортировать("Номенклатура ВОЗР");	
  
  ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
  ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
  ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
  ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
  ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
  

  ТабДок.Очистить();
  ОбластьЗаголовок.Параметры.ДатаНачала=НачалоПериода;
  ОбластьЗаголовок.Параметры.ДатаКонца=КонецПериода;
  ТабДок.Вывести(ОбластьЗаголовок);
  ТабДок.Вывести(ОбластьШапкаТаблицы);
   ИтогоКоличество=0;
  Для Каждого ТекСтрока из ИтоговаяТаблица Цикл
  ОбластьНоменклатура.Параметры.Номенклатура = ТекСтрока.Номенклатура;
ОбластьНоменклатура.Параметры.Количество =текСтрока.Количество;
 ИтогоКоличество=ИтогоКоличество+текСтрока.Количество;
ТабДок.Вывести(ОбластьНоменклатура);

  КонецЦикла;
  
  
  ////////ТабДок.НачатьАвтогруппировкуСтрок();

  ////////ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

  ////////Пока ВыборкаНоменклатура.Следующий() Цикл
  ////////	ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
  ////////	ТабДок.Вывести(ОбластьНоменклатура, ВыборкаНоменклатура.Уровень(),,ложь);

  ////////	ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();

  ////////	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
  ////////		ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
  ////////		ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень(),,ложь);
  ////////	КонецЦикла;
  ////////КонецЦикла;

  ////////ТабДок.ЗакончитьАвтогруппировкуСтрок();
  ТабДок.Вывести(ОбластьПодвалТаблицы);
  ОбластьПодвал.Параметры.ИтогоКоличество=ИтогоКоличество;
  ТабДок.Вывести(ОбластьПодвал);

  //////////}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры


I do so
delphi
Var
   doc,doc1:olevariant;
   sel_res,res12,tabl: variant;
   i,u:integer;
begin

  //Проверяем, существует ли соединение с 1Cv8
  if YesLinkToVariant(s1C8_ole) then
     begin
    doc:=s1C8_ole.NewObject('Запрос');
     doc.text:='ВЫБРАТЬ ЗаказПокупателяТовары.Номенклатура КАК Номенклатура, '+
      'ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура) КАК НоменклатураСтрокой , '+
      'ЗаказПокупателяТовары.Количество КАК Количество ' +
      'ИЗ'+
      ' Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары '+
     ' ГДЕ '+
     'ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &НачалоПериода '+
     'И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки <= &КонецПериода '+
     'И ЗаказПокупателяТовары.Ссылка.ПометкаУдаления = &ПометкаУдаления; ';




     doc.УстановитьПараметр('НачалоПериода',StrToDate('03.04.2018'));
     doc.УстановитьПараметр('КонецПериода',StrToDate('04.04.2018'));
    doc.УстановитьПараметр('ПометкаУдаления',false);



       sel_res :=doc.Execute().Choose();
       if not VarIsNull(sel_res) then
       //s12:=sel_res.Choose();
      // if not VarIsNull(res12) then
         begin
        try
        i:=0;
        u:=0;

       while sel_res.Следующий() do
         begin
           for I := 0 to StringGrid1.RowCount-1 do
             begin

             if StringGrid1.Cells[0,i]=String(sel_res.НоменклатураСтрокой) then
              begin
              u:=i;
               StringGrid1.Cells[1,i]:=inttostr(strtoint(StringGrid1.Cells[1,i])+1);
              break;
              end;



             end;
             if u=0 then
             begin
             StringGrid1.RowCount:=StringGrid1.RowCount+1;
               StringGrid1.Cells[1,StringGrid1.RowCount-1]:='0';
               StringGrid1.Cells[0,StringGrid1.RowCount-1]:=String(sel_res.НоменклатураСтрокой);
             end      ;
      // (sel_res.Количество);
      Memo1.Lines.Add(sel_res.Количество);
                       end;




        except
          on E: Exception do ShowMessage('Ошибка:  while Choose.Next() do:'+E.ClassName+':'+E.Message);
        end;
        end;
  end
  else begin
     ShowMessage('Сначала нужно установить соединение с 1Cv8 !');
  end;
end;


Gives, but not all. How to transfer correctly in order to receive the entire order for production?

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question