Экспорт в Эксель и остатки

Dzo

Active member
13.04.2009
38
0
#1
Есть простенький текст программы

Процедура Выполнить()
xl=СоздатьОбъект("Excel.Application");
xl.Workbooks.Add(); //Добавляем новый документ
xl.Visible=1; //Делаем его видимым

row=1; //первая строка
column=1;
спр=СоздатьОбъект("Справочник.Контрагенты");
Ном=СоздатьОбъект("Справочник.Номенклатура");
ТипыЦен=СоздатьОбъект("Справочник.ТипыЦен");
Цены=СоздатьОбъект("Справочник.Цены");
ТипыЦен.НайтиПоНаименованию("Розничные");
Розн=ТипыЦен.ТекущийЭлемент();

Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса=
"//{{ЗАПРОС(Остатки)
|Номенклатура=Регистр.ОстаткиТМЦ.Номенклатура;
|Кол=Регистр.ОстаткиТМЦ.Количество;
|"//}}Запрос
;

Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Не удалось выполнить запрос");
КонецЕсли;

Ном.ВыбратьЭлементы();
Пока Ном.ПолучитьЭлемент()=1 Цикл
Если Ном.ТекущийЭлемент().ЭтоГруппа()=0 Тогда
Цены.ИспользоватьВладельца(Ном.ТекущийЭлемент());
Цены.НайтиПоРеквизиту("ТипЦен", Розн, 0);
ТекущаяЦена=Цены.ТекущийЭлемент();
xl.Cells(row,1).Value=Ном.Наименование;
xl.Cells(row,2).Value=ТекущаяЦена.Цена.Получить(РабочаяДата());
xl.Cells(row,3).Value=ТекущаяЦена.Валюта.Наименование;
xl.Cells(row,4).Value=Запрос.Кол;
row=row+1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры


Не отображаются остатки ТМЦ в колонек документа экселя

ТиС 7.7
 

puh14

Well-known member
11.07.2008
1 412
0
#2
конечно не отображаются - нет периода в котором рассчитываются остатки, нет функции, определяющей тип количества (начальный остаток, приход, расход, конечный остаток). то бишь остатки просто не рассчитываются, потому и пустые. Нет связи между запросом и перебором номенклатуры. Проще количество через сводныйОстаток получить.
 

Dzo

Active member
13.04.2009
38
0
#3
А не подскажите по конкретнее, если не сложно )
 

puh14

Well-known member
11.07.2008
1 412
0
#4
Процедура Выполнить()
xl=СоздатьОбъект("Excel.Application");
xl.Workbooks.Add(); //Добавляем новый документ
xl.Visible=1; //Делаем его видимым

row=1; //первая строка
column=1;
спр=СоздатьОбъект("Справочник.Контрагенты");
Ном=СоздатьОбъект("Справочник.Номенклатура");
ТипыЦен=СоздатьОбъект("Справочник.ТипыЦен");
Цены=СоздатьОбъект("Справочник.Цены");
ТипыЦен.НайтиПоНаименованию("Розничные");
Розн=ТипыЦен.ТекущийЭлемент();

Рег = СоздатьОбъект("регистр.ОстаткиТОваров");
Рег.ВременныйРасчет();
РассчитатьРегистрыНа(ТутНадоДату);//проще всего дату задавать на форме.

Ном.ВыбратьЭлементы();
Пока Ном.ПолучитьЭлемент()=1 Цикл
Если Ном.ТекущийЭлемент().ЭтоГруппа()=0 Тогда
Цены.ИспользоватьВладельца(Ном.ТекущийЭлемент());
Цены.НайтиПоРеквизиту("ТипЦен", Розн, 0);
ТекущаяЦена=Цены.ТекущийЭлемент();
xl.Cells(row,1).Value=Ном.Наименование;
xl.Cells(row,2).Value=ТекущаяЦена.Цена.Получить(РабочаяДата());
xl.Cells(row,3).Value=ТекущаяЦена.Валюта.Наименование;
xl.Cells(row,4).Value=Рег.СводныйОстаток(,Ном.ТекущийЭлемент(),,"Количество"); //Посмотри про эту функцию - там надо в опр порядке все проставить
row=row+1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
 

Dzo

Active member
13.04.2009
38
0
#5
Схему я понял, но выдает ошибку:

xl.Cells(row,4).Value=Рег.СводныйОстаток(Ном.ТекущийЭлемент(),,"Количество");
{Обработка.ВыгрузкаНоменклатуры.Форма.Модуль(50)}: Неверный идентификатор ресурса!

Проверил названия Регистра и индентификатора "Количество" все совпадает, не пойму в чем проблема (
 

unknown181538

НеГуру
28.12.2008
1 417
0
#6
Проверил названия Регистра и индентификатора "Количество" все совпадает, не пойму в чем проблема (
А порядок проверил? В этой функции количеству измерений должно соответствовать количество запятых.
 

Dzo

Active member
13.04.2009
38
0
#7
Я разобрался, а как ставить плюсы? Что то у меня закрыты эти поля..