Answer the question
In order to leave comments, you need to log in
How to make a request from 1s in Delphi?
How to transfer a procedure from 1C to Delphi?
Процедура Отчет(ТабДок, КонецПериода, НачалоПериода, ПометкаУдаления) Экспорт
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяВозвраты.Номенклатура КАК Номенклатура,
| ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяВозвраты.Номенклатура),
| ЗаказПокупателяВозвраты.Количество КАК Количество
|ИЗ
| Документ.ЗаказПокупателя.Возвраты КАК ЗаказПокупателяВозвраты
|ГДЕ
| ЗаказПокупателяВозвраты.Ссылка.ПометкаУдаления = &ПометкаУдаления
| И ЗаказПокупателяВозвраты.Ссылка.ВозвратНаличными = &ВозвратНаличными
| И ЗаказПокупателяВозвраты.Ссылка.ДатаОтгрузки >= &НачалоПериода
| И ЗаказПокупателяВозвраты.Ссылка.ДатаОтгрузки <= &КонецПериода";
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("ПометкаУдаления", ложь);
Запрос.УстановитьПараметр("ВозвратНаличными", ложь);
ИтоговаяТаблица = Запрос.Выполнить().Выгрузить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
| ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура),
| ЗаказПокупателяТовары.Количество КАК Количество
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
|ГДЕ
| ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &НачалоПериода
| И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки <= &КонецПериода
| И ЗаказПокупателяТовары.Ссылка.ПометкаУдаления = &ПометкаУдаления";
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("ПометкаУдаления", ложь);
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
НоваяСтрока=ИтоговаяТаблица.Добавить();
НоваяСтрока.Номенклатура=Результат.Номенклатура;
НоваяСтрока.Количество=Результат.Количество;
КонецЦикла;
ИтоговаяТаблица.Свернуть("Номенклатура","Количество");
ИтоговаяТаблица.Сортировать("Номенклатура ВОЗР");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
ТабДок.Очистить();
ОбластьЗаголовок.Параметры.ДатаНачала=НачалоПериода;
ОбластьЗаголовок.Параметры.ДатаКонца=КонецПериода;
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ИтогоКоличество=0;
Для Каждого ТекСтрока из ИтоговаяТаблица Цикл
ОбластьНоменклатура.Параметры.Номенклатура = ТекСтрока.Номенклатура;
ОбластьНоменклатура.Параметры.Количество =текСтрока.Количество;
ИтогоКоличество=ИтогоКоличество+текСтрока.Количество;
ТабДок.Вывести(ОбластьНоменклатура);
КонецЦикла;
////////ТабДок.НачатьАвтогруппировкуСтрок();
////////ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
////////Пока ВыборкаНоменклатура.Следующий() Цикл
//////// ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
//////// ТабДок.Вывести(ОбластьНоменклатура, ВыборкаНоменклатура.Уровень(),,ложь);
//////// ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();
//////// Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//////// ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
//////// ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень(),,ложь);
//////// КонецЦикла;
////////КонецЦикла;
////////ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ОбластьПодвал.Параметры.ИтогоКоличество=ИтогоКоличество;
ТабДок.Вывести(ОбластьПодвал);
//////////}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры
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;
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question