Вход | Регистрация

1С:Предприятие ::

Метки: 

Вывод из Excel цен

Я
   Mitka90
 
14.12.17 - 13:08
Здравствуйте! Возник такой вопрос: как можно вывести из 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;        
        КонецЦикла;
       Конецесли;        
КонецПроцедуры
 
 
   Kigo_Kigo
 
1 - 14.12.17 - 13:28
В параметре Cells(номстр,1) Нопер строки,Номерколонки
   Kigo_Kigo
 
2 - 14.12.17 - 13:31
стро.ценанас=сокрлп(""+док.SHeets("Лист").Cells(номстр,61).value) + " " + сокрлп(""+док.SHeets("Лист").Cells(номстр,59).value);
Так чтоль, чейт вопрос понять не могу
   Mitka90
 
3 - 14.12.17 - 15:42
Kigo_Kigo
в общем, должно быть так:
в отчёте "Прейскурант-1" должны выводиться цены из столбца 29 в столбцы табличной части под названиями "Цены для физ.лиц" и "Цены для юр.лиц" (два одинаковых значения из "29"), а в отчёте "Прейскурант-2" - из столбцов 61 для физ.лиц и 59 - для юр.лиц (для них в табличной части предусмотрены столбцы "Цены для физ.лиц" и "Цены для юр.лиц".

В данном случае, если использовать такой запрос, то из отчёта "Прейскурант-1" выводит всё как нужно, а из отчёта "Прейскурант-2" почти во всех полях, где цена, почему-то ничего не отображается.
Если взять мой код, что выше я прилагал, то там ровным счётом всё наоборот + в "П-1" цены нигде не отображаются.
   Mitka90
 
4 - 15.12.17 - 14:40
Вот такой код получается, который выводит то, о чём я указал выше:

Процедура ДействияФормыГрузимЦены(Кнопка)
Если ЗначениеЗаполнено(файл) тогда
сообщить(файл);
док=получить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;
КонецЦикла;
Конецесли;
КонецПроцедуры
   Базис
 
5 - 15.12.17 - 15:18
Каждый тип цен завести в отдельный документ, отчёт строить по документам или регистрам.


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует