Имя: Пароль:
1C
1С v8
1c83 Бухня выборка по документам
,
0 Юзер123
 
naïve
03.02.14
14:14
Всем доброго дня. К стыду для себя обнаружил что не умею писать клинт серверные варианты обработок.

стоит задача для бухни написать выборку по документам и запихнуть ее в эксель.  

что то я запутался что должно быть на клиенте а что на сервере.

Перем Эксель,Книга,Лист,ВсегоКолонок,ВсегоСтрок,ПутьКФайлу,НачДата,КонДата,Док;
&НаСервере
Процедура КнопкаВыполнитьНажатие(ВсегоСтрок)
        // Вставить содержимое обработчика.
        // Вставить содержимое обработчика.
        
        //Эксель = Новый COMОбъект("Excel.Application");

        
        //ПутьКФайлу=  "D:\Обмен1с\Анализ плановых цен КРОСС и КЭЗ.xlsx" ;
        //НомерЛиста =1;
        ////Следующая команда откроет книгу:
        //Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
        //
        ////Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:
        //Лист = Книга.WorkSheets(НомерЛиста);
        //
        //
        ////Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:
        //ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
        //ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
        //
        ////Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:
        
        
        Док =  Документы.РеализацияТоваровУслуг;
        
        //НачДата = Дата("01.01.2013");
        //КонДата = Дата("01.01.2014");
        Выборка = Док.Выбрать(НачДата,КонДата);
        
        
        Пока Выборка.Следующий() цикл
            
            Для каждого СтрокаДок из Выборка.Товары цикл
                
                
                Сообщить(ВсегоСтрок);
                // цикл по строчкам файла
                Для НомерСтроки=9 по Число(ВсегоСтрок) цикл
                    
                    КодНоменВФайле =  Лист.Cells(НомерСтроки, 3).Value;
                    ЦенаВФайле =   Лист.Cells(НомерСтроки, 9).Value;
                    Если Сокрлп(КодНоменВФайле) = Сокрлп( СтрокаДок.Номенклатура.Код) тогда
                        Если  Сокрлп(ЦенаВФайле) ="" тогда
                            
                            Лист.Cells(НомерСтроки, 9).Value = СтрокаДок.Цена+"р."    
                            
                        КонецЕсли;
                        
                    КонецЕсли;
                    
                    
                КонецЦикла;
                
            КонецЦикла;
            
        КонецЦикла;
        
        Попытка
            Книга.SaveAs(ПутьКФайлу);
        Исключение
            Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
        КонецПопытки;
        

    КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
    Эксель = Новый COMОбъект("Excel.Application");
        ПутьКФайлу=  "D:\Обмен1с\Анализ плановых цен КРОСС и КЭЗ.xlsx" ;
        НомерЛиста =1;
        //Следующая команда откроет книгу:
        Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
        
        //Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:
        Лист = Книга.WorkSheets(НомерЛиста);
        
        
        //Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:
        ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
        ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
        
        
        
        
        
     КнопкаВыполнитьНажатие(ВсегоСтрок);
    
             Эксель.Application.Quit();

    КонецПроцедуры
1 Wobland
 
03.02.14
14:16
что-нибудь совсем не похожее на это
2 Юзер123
 
naïve
03.02.14
14:17
(1)  Вы очень помогли.
3 Wobland
 
03.02.14
14:18
(2) всегда пожалуйста, продолжайте наблюдения
4 Юзер123
 
naïve
03.02.14
14:32
совствеено все беда в том что на сервере когда делаю выборку по документам ее не видно в процедуре клиента.
5 vicof
 
03.02.14
14:33
(4) И не будет видно - на сервере сервеные типы, на клиенте - клиентские.
6 ДенисЧ
 
03.02.14
14:33
(4) дык и не увидишь....
Сгенери печатную форму а-ля отчёт, потом её в ексель сохрани...
7 Юзер123
 
naïve
03.02.14
14:33
никогда до этого не писал подобные обработки. Наведите на мысль кто более сговорчив кто (1)
8 Юзер123
 
naïve
03.02.14
14:34
(6)  не вариант.  надо что бы обработка в готовый ексель пихала данные в нужные места
9 Юзер123
 
naïve
03.02.14
14:37
так нет никакого шанса перенести то что я на сервере получил  на клиент?
10 Юзер123
 
naïve
03.02.14
14:38
ну или на клиенте выборку сделать?
11 vicof
 
03.02.14
14:39
(9) Читаем профразработку.
Клиент только отображает данные.
12 Юзер123
 
naïve
03.02.14
14:39
(11)  но сервер не умеет  в эксель писать..
13 Sasha_1CK
 
03.02.14
14:39
(10) а зачем СОМ на клиенте?
Он вроде бы и на сервере запускается - а на сервере - че хотите то и передавайте
14 vicof
 
03.02.14
14:40
(12) Правда?
15 Sasha_1CK
 
03.02.14
14:40
(12) точно?
16 Юзер123
 
naïve
03.02.14
14:40
(13)  нет. пробовал.  на сервере Офиса нет.
17 Юзер123
 
naïve
03.02.14
14:42
(14) (15)  ну  в начальном варианте весь код был на сервере . а на клиенте просто вызывалась процедура на сервере.  но ругалась бухня на создание сом объекта
18 Юзер123
 
naïve
03.02.14
14:42
Офиса на сервере нет
19 Юзер123
 
naïve
03.02.14
14:46
я верно понимаю. все процедуру "На сераере" выполняются на компе где стоит сервер 1с?.
20 Sasha_1CK
 
03.02.14
14:48
Ну тогда пихаете свои данные в массивы- и уже массивы пробуете передать на клиента.
Все равно в екселе вам нужны только примитивные типы, текст, чсило и дата
21 Юзер123
 
naïve
03.02.14
14:49
(20)  если я поставлю на сервак оффис то поможет?
22 Юзер123
 
naïve
03.02.14
14:52
если я локально у себя на компе  разверну базу бухни тож долно работать?
23 Юзер123
 
naïve
03.02.14
14:57
народ, подскажите.
24 Sasha_1CK
 
03.02.14
14:58
(22) по идее да
25 Юзер123
 
naïve
03.02.14
14:59
(24)  а  (20) ?
26 Sasha_1CK
 
03.02.14
15:01
ну вообще сам по себе СОМ &НаСервере запускается. В Вашем случае он запуститься не мог по причине отсутствия приложения - поэтому и 20 и 22 должны работать
27 Юзер123
 
naïve
03.02.14
15:05
(26) откуда запускать есть разница? с сервака или  из локальной сети можно?. на сервере возможно не регана  comcntr.dll была. помимо приложения.
28 Юзер123
 
naïve
03.02.14
15:06
{Форма.Форма.Форма(8,19)}: Тип не определен (Сomobject)
            Эксель = Новый <<?>>Сomobject("Excel.Application");  (Проверка: Сервер)
29 ilyavorobyev
 
03.02.14
15:07
(0) На Сервере получай запросом что надо, потом все в ТаблицуЗначений которая на форме и дальше на клиенте пихай ТЗ  в Эксель, все просто
30 Юзер123
 
naïve
03.02.14
15:11
(29) таблица значений которая на форме? т.е. на форме обработки надо добавить тз.   в процедуре сервера ее заполнить. и на клиенте  заполнить ее данными ексель?
31 ilyavorobyev
 
03.02.14
15:17
(30) судя по твоей теме тебе надо в эксель запихнуть, хотя это роли не играет, да на форму тз туда все с сервера пихай из выборки и уже на клиенте из тз в эксель или из экселя в тз
32 ukolabrother
 
03.02.14
15:17
(29) вот это
33 Wobland
 
03.02.14
15:42
он вас таки отговорил от табличного документа?
34 ilyavorobyev
 
03.02.14
15:50
(33) должно быть все автоматизированно а тут с табличным еще ручками копипастить, низковато как то)))
35 Юзер123
 
naïve
03.02.14
15:54
(33) о чем ты?

(34) спасибо. все работет (31) все ок. другая беда. почему то выбока не видит документы за период.. когда я открываю базу бухни их там нет но глБух все видит. оО.  фильтров нет.  периода нет. контрагент нужный и организация. прова как у глБуха.
36 Юзер123
 
naïve
03.02.14
15:56
все разобрались. Доблестные Бухи не туда запихнули реализацию.