Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 июл 2022, 04:13

Вывод из Excel цен

Автор Mitka90, 15 дек 2017, 08:06

0 Пользователей и 1 гость просматривают эту тему.

Mitka90

Здравствуйте! Возник такой вопрос: как можно вывести из xls-файла (Excel 97-2003) данные из разных столбцов в табличную часть, при этом чтобы они не перебивались (например, в отчёте одного вида нужно вывести данные из столбца 29 в "Цены для физ.лиц" и "Цены для юр.лиц", а в другой - из 61 и 59 соответственно, но это должно выполняться всё в одном документе):


Процедура ДействияФормыГрузимЦены(Кнопка)
Если ЗначениеЗаполнено(файл) тогда
сообщить(файл);
док=получитьComобъект(файл);
номстр=1;
ии=0;
нн=0;
Сообщить(сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value));
пока сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value)<>"zzzzzz" цикл//смотрим код!!!
ии=ии+1;
Зкод=сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value);
сообщить(Зкод);//код
Знаим=сокрлп(""+док.SHeets("Лист").Cells(номстр,2).value);//наименование
спр=справочники.Прейскурант.НайтиПоКоду(СокрЛП(Зкод));
Если спр.Ссылка<>справочники.Прейскурант.ПустаяСсылка() Тогда
стро=Работы.Добавить();
стро.ПунктПрейскуранта=спр.Ссылка;
стро.код=Зкод;
стро.ценанас=сокрлп(""+док.SHeets("Лист").Cells(номстр,61).value);
стро.ценаюл=сокрлп(""+док.SHeets("Лист").Cells(номстр,59).value);
Иначе
  сообщить("не найден код="+Зкод);
КонецЕсли;
номстр=номстр+1;
КонецЦикла;
  Конецесли;
КонецПроцедуры


В общем, должно быть так:
в отчёте "Прейскурант-1" должны выводиться цены из столбца 29 в столбцы табличной части под названиями "Цены для физ.лиц" и "Цены для юр.лиц" (два одинаковых значения из "29"), а в отчёте "Прейскурант-2" - из столбцов 61 для физ.лиц и 59 - для юр.лиц (для них в табличной части предусмотрены столбцы "Цены для физ.лиц" и "Цены для юр.лиц".

AIFrame

Вы выводите отчет по данным из excel?
Отчеты прейскурант-1 и -2 это разные "отчеты"? Так и напишите в них разный код выполнения.

Mitka90

Да, из Excel.
Отчёты разные.
   
Можно сделать так:
   Процедура ДействияФормыГрузимЦены(Кнопка)
    Если ЗначениеЗаполнено(файл) тогда
    сообщить(файл);
    док=получитьComобъект(файл);
    номстр=1;
    ии=0;
    нн=0;
    Сообщить(сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value));
    пока сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value)<>"zzzzzz" цикл//смотрим код!!!
    ии=ии+1;
    Зкод=сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value);
    сообщить(Зкод);//код
    Знаим=сокрлп(""+док.SHeets("Лист").Cells(номстр,2).value);//наименование
    спр=справочники.Прейскурант.НайтиПоКоду(СокрЛП(Зкод));
    Если спр.Ссылка<>справочники.Прейскурант.ПустаяСсылка() Тогда
    стро=Работы.Добавить();
    стро.ПунктПрейскуранта=спр.Ссылка;
    стро.код=Зкод;
    стро.ценанас=сокрлп(""+док.SHeets("Лист").Cells(номстр,61).value) + " " + сокрлп(""+док.SHeets("Лист").Cells(номстр,29).value);
    стро.ценаюл=сокрлп(""+док.SHeets("Лист").Cells(номстр,59).value) + " " + сокрлп(""+док.SHeets("Лист").Cells(номстр,29).value);
    Иначе
    сообщить("не найден код="+Зкод);
    КонецЕсли;
    номстр=номстр+1;
    КонецЦикла;
    Конецесли;
    КонецПроцедуры


но получается в итоге то, что из отчёта "Прейскурант-2" всё выводится, как нужно, а из отчёта "Прейскурант-1" почти во всех полях, где цена, почему-то ничего не отображается.


Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск