Имя: Пароль:
1C
1С v8
Ошибка в Веб-интерфейсе
0 Rodinyr
 
22.08.11
10:04
Есть кусок кода

ВременныйФайл=ПолучитьИмяВременногоФайла("doc");
   
   АктивныйДокумент=ПолучитьОбщийМакет("Договор");
   АктивныйДокумент.Записать(ВременныйФайл);
   попытка
        КомОбъект=ПолучитьCOMОбъект(ВременныйФайл);
    исключение
        Сообщить("Ошибка Создания Шаблона Договора");
        возврат неопределено;
    конецПопытки;


В Тонком клиенте команда "ПолучитьCOMОбъект" отрабатывается отлично, но в веб-клиенте вылетает. может как-то эту проблему решить?
1 Rodinyr
 
22.08.11
10:08
Помогите пожалуйста! срочно нужно.
2 Rodinyr
 
22.08.11
10:15
В синтаксис помощнике Метод должен выполняться как в тонком клиенте так и в веб-интерфейсе, но при выполнении этого метода вылетает ошибка.
3 trdm
 
22.08.11
10:20
Скорее всего ошибка в документации.
Веб-клиент должен работать в разных осях. Какой же в лине ком-объект????
4 Rodinyr
 
22.08.11
10:24
А какже мне тогда в веб-клиенте запустить Макет который создан как Active Document?
5 Rodinyr
 
22.08.11
10:24
Я на форумах натыкался только на подобный прием решения задачи
6 vde69
 
22.08.11
10:31
(4) зачем тебе это?

идеология управляемых форм - формирование формы на сервере а использование на клиенте
7 vde69
 
22.08.11
10:33
по сабжу - скорее всего безопасность режет сом

ихмо
сом в веб клиенте = банке вазелина для того кто это придумал
8 Rodinyr
 
22.08.11
10:37
(6)Попросил клиент чтобы макет из word заполнялся данными базы. Ну я его засунул в active document от туда вызываю.
в тонком клиенте отлично работает. а вот в веб как раз как ты сказал безопасность и режет. пишет ошибка доступа. и как обойти это я не знаю.
9 Rodinyr
 
22.08.11
10:43
Вот и мучаюсь с СОМ объектом
10 Саныч
 
22.08.11
10:50
Попробуй узел в местную сеть добавить.
11 vde69
 
22.08.11
10:54
(8) формируй word документ на сервере и потом уже готовый ФАЙЛ передовай клиенту
12 Rodinyr
 
22.08.11
11:16
(11)Так Функция вызывается на сервере, а передается в веб
&НаСервере
Функция ПечатьДоговора(ссылка)
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Договор.Дата,
   |    Договор.ДатаВозврата,
   |    Договор.Закрыт,
   |    Договор.Код,
   |    Договор.Коментарий,
   |    Договор.МаксСрок,
   |    Договор.МаксСумма,
   |    Договор.Менеджер,
   |    Договор.ПоднятыйПроцент,
   |    Договор.Процент,
   |    Договор.Срок,
   |    Договор.СтатусЗаявки,
   |    Договор.СтатусПроверки,
   |    Договор.Сумма,
   |    Договор.Штраф,
   |    Договор.Владелец.Наименование КАК фио,
   |    Договор.Владелец.ПаспортСерияНомер КАК ПаспортСерияНомер,
   |    Договор.Владелец.ПаспортДата КАК ПаспортДата,
   |    Договор.Владелец.ПаспортКемВыдан КАК Выдан,
   |    Договор.Владелец.АдресРегистрацииКлиента КАК Регистрация,
   |    Договор.Владелец.АдресПроживанияКлиента КАК проживание,
   |    Договор.Владелец.Пол как пол
   |ИЗ
   |    Справочник.Договор КАК Договор
   |ГДЕ
   |    Договор.Ссылка В(&Ссылка)";
   Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();

   
   
   ВременныйФайл=ПолучитьИмяВременногоФайла("doc");
   
   АктивныйДокумент=ПолучитьОбщийМакет("Договор");
   АктивныйДокумент.Записать(ВременныйФайл);
   попытка
        КомОбъект=ПолучитьCOMОбъект(ВременныйФайл);
    исключение
       Сообщить("Ошибка Создания Шаблона Договора");
       возврат неопределено;
    конецПопытки;
    Пока Выборка.Следующий() Цикл
        Паспорт=" ,паспорт "+Выборка.ПаспортСерияНомер+" выдан "+Формат(ВЫборка.ПаспортДата,"ДФ=дд.ММ.гггг")+" "+Выборка.Выдан;
        если Выборка.Пол=перечисления.ПолФизическогоЛица.Женский тогда
           Паспорт=паспорт+", зарегистрирована: "+Выборка.Регистрация+" фактически проживающая по адресу:"+Выборка.Проживание;
        иначе
            Паспорт=паспорт+", зарегистрирован: "+Выборка.Регистрация+" фактически проживающий по адресу:"+Выборка.Проживание;
        КонецЕсли;
       
            Док=КомОбъект.Application.Documents(1);
        Заменить=док.Content.Find;
        Заменить.ClearFormatting();
       Заменить.Replacement.ClearFormatting();
       
       Заменить.Forward = True;
       //Selection.Find.Wrap = wdFindContinue;

       Заменить.Format = False;
       Заменить.MatchCase = False;
       Заменить.MatchWholeWord = False;
       Заменить.MatchWildcards = False;
       Заменить.MatchSoundsLike = False;
       Заменить.MatchAllWordForms = False;

        Заменить.Execute("LOAN_NUMBER",,,,,,,,,Выборка.Код,00000002);
        Заменить.Execute("DATE_START",,,,,,,,,Формат(Выборка.Дата,"ДФ=дд.ММ.гггг"),00000002);
        Заменить.Execute("FIO",,,,,,,,,Выборка.фио,00000002);
        Заменить.Execute("SUM1",,,,,,,,,Формат(Выборка.Сумма,"ЧЦ=10; ЧДЦ=2; ЧРД=."),00000002);
        Заменить.Execute("SUM3",,,,,,,,,ЧислоПрописью(Выборка.Сумма, "Л = ru_RU; ДП = Истина", "рубль, рубля, рублей, м,копейка, копейки, копеек, ж, 2"),00000002 );
        Заменить.Execute("PERCENT",,,,,,,,,Формат(Выборка.Процент,"ЧЦ=3"),00000002);
        Заменить.Execute("DURATION",,,,,,,,,Выборка.Срок,00000002);
        Заменить.Execute("DATEEND",,,,,,,,,Выборка.ДатаВозврата,00000002);
        Заменить.Execute("SUM2",,,,,,,,,Формат(Выборка.Сумма+Выборка.Сумма*Выборка.Процент*Выборка.Срок/100,"ЧЦ=10;ЧДЦ=2;ЧРД=."),00000002);
        Заменить.Execute("FINE",,,,,,,,,Выборка.Штраф,00000002);
        Заменить.Execute("RAISED",,,,,,,,,Выборка.ПоднятыйПроцент,00000002);
        Заменить.Execute("DEBTOR",,,,,,,,,Выборка.фио+" "+Паспорт,00000002);
        док.SaveAs(ВременныйФайл);
               
   КонецЦикла;
   КомОбъект.Application.Quit();
   КомОбъект=Неопределено;
   Адрес=ПоместитьВоВременноеХранилище(новый ДвоичныеДанные(ВременныйФайл));
   УдалитьФайлы(ВременныйФайл);
   Возврат Адрес;
   
КонецФункции


вот весь код
13 Rodinyr
 
22.08.11
11:18
(10) какой  узел? Если человек веб запускает не в локальной сети а удалленно в др городе
14 Rodinyr
 
22.08.11
11:31
в Этой теме говорились проверить настроийки и разрешить доступ: v8: Не могу получить ComОбъект
но где и какие, я так и не понял
15 vde69
 
22.08.11
11:34
(12) описание огибки в студию!

а то сейчас выяснится что ошибка возникает на ПоместитьВоВременноеХранилище(новый ДвоичныеДанные(ВременныйФайл))
16 Саныч
 
22.08.11
11:39
В (8) ты утверждаешь что режет безопастность браузера. Чтобы убедится что это так, можно попробовать запустить веб-клиент в локалке предварительно добавив в браузере узел в местную сеть.
17 Rodinyr
 
22.08.11
11:43
(16)сейчас постараюсь!!
(15) вылетает и именно на попытке создать сом
объект
18 Rodinyr
 
22.08.11
11:51
(17) добавил узлы в доверенные, но при запуске через веб вылетает ошибка доступа
19 Rodinyr
 
22.08.11
11:51
Может попробовать полный путь к временному файлу прописать?
20 Rodinyr
 
22.08.11
12:01
Все ровно полный путь не получилось!!! и узлы добавлены в доверенные.
21 Rodinyr
 
22.08.11
12:09
Может в настройках IIS нужно дать доступ какой-нибудь узлу?
22 Rodinyr
 
22.08.11
12:25
Мыслей не у кого нет Как сделать так чтоб веб заработал коректно
23 vde69
 
22.08.11
12:31
(22)ты уверен, что данный код выполняется именно на сервере 1с? что-то у меня есть сомнения.


по тому как для серверного выполнения пофигу какой клиент...

ps
&НаСервере - далеко не везде работает...
24 Rodinyr
 
22.08.11
12:44
ну а где же он должен выполняться?
Я при получении Временного файла вывожу сообщение с путем. так он выводит путь к папке на сервере!!!
25 Rodinyr
 
22.08.11
12:49
Тем более запрос на клиенте не выполняется!!!
26 vde69
 
22.08.11
12:55
(24) дай описание ошибки (в логе должно быть)
27 Rodinyr
 
22.08.11
13:37
(26)Ошибка Создания Шаблона Договора{Справочник.Договор.Команда.ПечатьДоговора.МодульКоманды(61)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Не удается открыть файл при помощи специального имени
28 Rodinyr
 
22.08.11
13:50
ВОт такую ошибку выдает
29 Rodinyr
 
22.08.11
13:51
точнее вот такую
Ошибка Создания Шаблона Договора{Справочник.Договор.Команда.ПечатьДоговора.МодульКоманды(61)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Отказано в доступе.
30 Rodinyr
 
22.08.11
14:11
Ну что? есть Мысли?
Я уже все настройки по-моему перебрал в IIS!!!!
31 vde69
 
22.08.11
14:38
(30) у тебя точно сервер 1с? или файловая база?
32 Rodinyr
 
22.08.11
14:42
Прошу прощения, файловая система!!!
33 Rodinyr
 
22.08.11
14:42
Настроил веб сервер
34 Rodinyr
 
22.08.11
14:43
все что реализовал работает прекрасно, но вот тут заткнулся
35 vde69
 
22.08.11
14:43
(29) такая ошибка возникает из-за 3х причин
1. права на DCOM
2. файловые права к файлу (или блокировка файла)
3. файловые права к темповым директориям екселя (и шаблонам)

но если ты под тонким запускал и все работает - то эти причины отпадают.
36 vde69
 
22.08.11
14:43
(32) база 1с файловая?????
37 Undefined
 
22.08.11
14:46
Попробуй в разных браузерах запустить.
38 Undefined
 
22.08.11
14:47
Иногда то что в IE не работает в мозиле работает на ура
39 Rodinyr
 
22.08.11
14:49
во всез браузерах не работает
40 Rodinyr
 
22.08.11
14:52
Я попробовал заменить
КомОбъект=ПолучитьCOMОбъект(ВременныйФайл);

на

КомОбъект=АктивныйДокумент.Получить();

теперь вот что выдает:

Ошибка Создания Шаблона Договора{Справочник.Договор.Команда.ПечатьДоговора.МодульКоманды(60)}: Ошибка при вызове метода контекста (Получить)
41 Rodinyr
 
22.08.11
14:52
(36) да!!
42 Rodinyr
 
22.08.11
14:57
Уже все что можно разрешил!!! Даже не знаю где нужно открыть доступ
43 vde69
 
22.08.11
15:02
(41) тогда поздравляю, для файловой 1с &НаСервере = &НаКлиенте

в данном случае тебе нужно сделать
1. Для пользователя под которым запускются сенсы на веб сервере (если разрешен ананимус - то это встроеный типа user_a...) разрешить запуск DCOM (лучше не всего а только екселя), но имей в виду это ДЫРИЩА в безопасности.
2. Дать права на темповые каталоги (какие конкретно - не знаю) для пробы можешь дать на весь диск а потом урезать
44 Rodinyr
 
22.08.11
15:08
Прошу Прощение за тупость, но разрешение запуска DCOM делается в настройках IIS? Или я ошибаюсь?
45 vde69
 
22.08.11
15:13
(44)нет, самое простое включить в локальную группу "Пользователи DCOM"
46 vde69
 
22.08.11
15:14
все ушел работать, думаю дальше и так все понятно
47 Rodinyr
 
22.08.11
16:29
Ну... тогда я пас... уже все включил. все разрешил.
48 Rodinyr
 
22.08.11
17:39
Теперь такая ошибка:

Ошибка Создания Шаблона Договора{Справочник.Договор.Команда.ПечатьДоговора.МодульКоманды(51)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Ошибка при выполнении приложения-сервера
49 Serginio1
 
22.08.11
18:24
Посмотри параметры WORD\Центр Управления Безоапастностью\Параметры Центра Безопасности\Надежные расположения. Может это касается не только макросов
50 Rodinyr
 
22.08.11
20:50
ага! хорошо попробую!!!
51 Rodinyr
 
24.08.11
20:47
Поднимаю старую тему!!!
вевозможные разрешения открыл. Все ровно при работе ПолучитьСОМОбъект ругается. Выдает ошибку выполнения приложения-сервера.
Я пошел по другому пути я стал создавать новый ком объект и в нем открывать нужный файл. Вот так:
КомОбъект = Новый COMОбъект("Word.Application");    КомОбъект.Documents.Open("C:\Temp\Temp.doc");  

но программа зависает на методе open, причем мертво зависает.
Вчем проблема не могу догнать!!!
52 Nexux
 
24.08.11
21:09
расширение работы с файлами может
53 Rodinyr
 
24.08.11
21:13
Расширение работы с файлами у меня отрабатываються на стороне клиента, аэт две функции на стороне сервера и до расширения файла еще долеко!!! функция должна открыть файл, запольнить параметры и передать файл на клиент, а она даже файл открыть по человечески не может. вот в чем проблема.
54 Rodinyr
 
24.08.11
21:14
(53) + я коментил функцию эту смотрел трудоспособность расширения файлов, там без проблем.
55 Serginio1
 
24.08.11
21:38
У меня такая проблема была (а может и сейчас есть) с Экселем на 64 битном сервере. Приходилось в 8.1 запускать клиента передавать ему mxl фыйл который конвертировал в XLS
56 Rodinyr
 
24.08.11
21:47
Тут все четко. ОС 32 битная
57 Rodinyr
 
24.08.11
22:43
что интересно, если после запуска прогаммы посмотреть во временную папку то можно увидеть что файл вроде открылся, но процесс висит!!!
58 Rodinyr
 
24.08.11
22:45
и с екселем получитьСОМобъект как то быстрее справляется чем с вордом
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший