Имя: Пароль:
1C
1С v8
тонкий клиент и Excel
0 Alever
 
18.07.13
13:19
Доброго времени суток всем. Есть такая задача:
1 Ork
 
18.07.13
13:20
Емко.
2 Alever
 
18.07.13
13:25
Есть файлик екселя, в котором данные представлены в строковом виде, есть обработка, которая содержит в себе Макет. Необходио реализовать загрузку и вывод на экран печатной формы каждой строки этого файлика в форме этого макета. То есть берем одно строку, разбираем ее и помещаем данные в макет и все это выводим на экран. Все бы ничего - задачка простая, но связано это с Веб-киентом - Загрузку файлика осуществляем на стороне клиента а вот как дальше быть?
Вот код:

&НаКлиенте
Процедура Загрузить(Команда)
   
   НомерЛиста =1;    
   Колонка = 1;

   Эксель = Новый COMОбъект("Excel.Application");
   Эксель.Visible = 0;
   Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
   Лист = Книга.WorkSheets(НомерЛиста);
   
   ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
   
   Если Объект.СтрокаДоКоторойЗагружать = 999 Тогда
       ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
   Иначе
       ВсегоСтрок = Объект.СтрокаДоКоторойЗагружать;
   КонецЕсли;

   ТабДокумент = Новый ТабличныйДокумент();
   ТабДокумент = ПолучитьМакетНаСервере();

                   
   Для Строка = Объект.СтрокаСКоторойЗагружать по ВсегоСтрок Цикл

   //    //ТабДокумент.Вывести(ТабДокумент.ОбластьПробела);
   //    //Ячейка = СокрЛП(Лист.Cells(Строка,Колонка).Value);
   //    НоваяСтрока.НомерПП = СокрЛП(Лист.Cells(Строка,Колонка).Value);
   //    НоваяСтрока.ФИОПолучателя = СокрЛП(Лист.Cells(Строка,Колонка+1).Value);
   //    //ИндексОПС =  СокрЛП(Лист.Cells(Строка,Колонка+2).Value);
   //    //АдресМестаНазначения = СокрЛП(Лист.Cells(Строка,Колонка+3).Value);
   //    //НомерШПИ =  СокрЛП(Лист.Cells(Строка,Колонка+4).Value);
   //    //СуммаПрописью = СокрЛП(Лист.Cells(Строка,Колонка+6).Value);
   //    //
   //    //ТабДокумент.ОбластьМакета.Параметры.ФИОПолучателя = ФИОПолучателя;
   //    //ТабДокумент.ОбластьМакета.Параметры.ИндексОПС = ИндексОПС;
   //    //ТабДокумент.ОбластьМакета.Параметры.АдресМестаНазначения = АдресМестаНазначения;
   //    //ТабДокумент.ОбластьМакета.Параметры.НомерШПИ = НомерШПИ;
   //    //ТабДокумент.ОбластьМакета.Параметры.СуммаПрописью = ЧислоПрописью(СуммаПрописью, "L=ru_RU");//, ПараметрПрописиНаКазахском);//ЧислоПрописью(СуммаПрописью, "L=kk_KZ", ПараметрПрописиНаКазахском);
   //    //
   //    
   //    //ТабДокумент.Вывести(ТабДокумент.ОбластьМакета);
   //    //ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

   КонецЦикла;
   
   Эксель.Workbooks.Close();
   Эксель.Quit();
   Эксель = Неопределено;

   ТабДокумент.Показать("Печать по установленному шаблону");
   
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетНаСервере()
   
   ТабДокумент = Новый ТабличныйДокумент();  
   
   Макет = Обработки.ПечатьПоШаблону.ПолучитьМакет("ПечатьПоШаблону");
   ОбластьМакета  = Макет.ПолучитьОбласть("Шапка");
   ОбластьПробела = Макет.ПолучитьОбласть("Пробел");
   
   ТабДокумент.ОтображатьСетку = Ложь;
   ТабДокумент.ТолькоПросмотр = Истина;
   ТабДокумент.ОтображатьЗаголовки = Ложь;

   Возврат ТабДокумент;
   
КонецФункции
3 Alever
 
18.07.13
13:27
Сорри может что я не так описал - я не так часто тут темы выкладываю, так что если что прошу извинить.
4 Maniac
 
18.07.13
13:28
10000 рублей. сделаем.