• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы Dzo
  • Дата начала
D

Dzo

Есть простенький текст программы

Процедура Выполнить()
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
 
P

puh14

конечно не отображаются - нет периода в котором рассчитываются остатки, нет функции, определяющей тип количества (начальный остаток, приход, расход, конечный остаток). то бишь остатки просто не рассчитываются, потому и пустые. Нет связи между запросом и перебором номенклатуры. Проще количество через сводныйОстаток получить.
 
D

Dzo

А не подскажите по конкретнее, если не сложно )
 
P

puh14

Процедура Выполнить()
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;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
 
D

Dzo

Схему я понял, но выдает ошибку:

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

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

unknown181538

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

Dzo

Я разобрался, а как ставить плюсы? Что то у меня закрыты эти поля..
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!