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

В данном случае, если использовать такой запрос, то из отчёта "Прейскурант-1" выводит всё как нужно, а из отчёта "Прейскурант-2" почти во всех полях, где цена, почему-то ничего не отображается.
Если взять мой код, что выше я прилагал, то там ровным счётом всё наоборот + в "П-1" цены нигде не отображаются.
4 Mitka90
 
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 Базис
 
naïve
15.12.17
15:18
Каждый тип цен завести в отдельный документ, отчёт строить по документам или регистрам.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.