Имя: Пароль:
1C
1С v8
ВПФ в Worde не формируется!!!
0 листопад
 
24.04.14
01:00
Формирую свою внешнюю печ.форму (к справочнику СотрудникиОрганизаций), чтобы она сразу формировалась в Ворд. Подключила ее к справочнику, при попытке ее сформировать (как обычно, нажимаю на нее в списке выбора) - ничего не происходит: ни печ.форма не формируется, ни ворд не запускается. Подскажите, куда смотреть?

Ворд на компе 2003. Платформа 8.2, ЗуП.

Вот мой код:


Функция Печать() Экспорт
    ПечатьДоговорВорд();
КонецФункции

Функция ПечатьДоговорВорд()
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    // Установим параметры запроса
    Запрос.УстановитьПараметр("СправочникСсылка", СсылкаНаОбъект.Ссылка);
    Запрос.УстановитьПараметр("Физлицо", СсылкаНаОбъект.Физлицо);
    Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация);
    Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.ДатаДоговора);
    
    Возврат Запрос.Выполнить();
    
    //Заполняем переменные макета
    ш_НомерТД = СокрЛП(Запрос.НомерДок);
    ш_ДатаИзм = СокрЛП(Запрос.ДатаДок);
    
    Макет = ПолучитьМакет("МакетWord");
    MSWord = Макет.Получить();
    
    Попытка
        Документ = MSWord.Application.Documents(1);
        Документ.Activate();
        
        Замена = Документ.Content.Find;
        Замена.Wrap = 1;   //чтобы не писать каждый раз  Find
        Замена.Execute("ш_НомерТД", , , , , , , , ,ш_НомерТД,2);
        Замена.Execute("ш_ДатаИзм", , , , , , , , ,ш_ДатаИзм,2);
        
        MSWord.Application.Visible=Истина;
        MsWord.Activate();
    Исключение
        Сообщить(ОписаниеОшибки());
        MSWord.Application.Quit();
    КонецПопытки;
    
КонецФункции
1 листопад
 
24.04.14
01:26
Исправила, но теперь не подтягивает НомерДок и ДатуДок. Вот код:


Функция Печать() Экспорт
    ПечатьДоговор();
КонецФункции

Функция ПечатьДоговор()
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    // Установим параметры запроса
    Запрос.УстановитьПараметр("СправочникСсылка", СсылкаНаОбъект.Ссылка);
    Запрос.УстановитьПараметр("Физлицо", СсылкаНаОбъект.Физлицо);
    Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация);
    Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.ДатаДоговора);
    
    // Выберем (если есть доступ) ответственное физлицо
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК Физлицо,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.Должность,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо.Наименование КАК НаименованиеФизлица,
    |    ФизическиеЛица.Комментарий
    |ПОМЕСТИТЬ ВТОтветственноеЛицо
    |ИЗ
    |    РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
    |            &ДатаДокумента,
    |            ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)
    |                И СтруктурнаяЕдиница = &Организация) КАК ОтветственныеЛицаОрганизацийСрезПоследних
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
    |        ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = ФизическиеЛица.Ссылка";
    Запрос.Выполнить();
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОтветственноеЛицоОрганизации.Должность КАК ДолжностьРуководителя,
    |    ТрудовойДоговор.НомерДоговора КАК НомерДок,
    |    ТрудовойДоговор.ДатаДоговора КАК ДатаДок,
    |    ТрудовойДоговор.Организация.НаименованиеПолное КАК ПолноеНазваниеОрганизации,
    |    ЕСТЬNULL(ФИООтветственныхЛиц.Фамилия + "" "" + ФИООтветственныхЛиц.Имя + "" "" + ФИООтветственныхЛиц.Отчество, ОтветственноеЛицоОрганизации.НаименованиеФизлица) КАК ФИОРуководителя,
    |    ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, ТрудовойДоговор.Физлицо.Наименование) КАК ФИОРаботника,
    |    ТрудовойДоговор.ДатаОкончания КАК ДатаУвольнения,
    |    ТрудовойДоговор.ДатаНачала КАК ДатаПриема,
    |    ТрудовойДоговор.Должность.Наименование КАК Должность,
    |    ТрудовойДоговор.ЗанимаемыхСтавок,
    |    ТрудовойДоговор.ИспытательныйСрок,
    |    ТрудовойДоговор.ПодразделениеОрганизации.Наименование КАК Подразделение,
    |    ВЫБОР
    |        КОГДА ТрудовойДоговор.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    |            ТОГДА ""основной работе""
    |        ИНАЧЕ ""совместительству""
    |    КОНЕЦ КАК ВидЗанятости,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
    |    ВЫРАЗИТЬ(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК СТРОКА(300)) КАК ДокументКемВыдан,
    |    АдресРегистрации.Представление КАК АдресРегистрации,
    |    ТелефонДомашний.Представление КАК Телефоны,
    |    КонтактнаяИнформация.Представление КАК АдресОрганизации,
    |    ТелефонОрганизации.Представление КАК ТелефоныОрганизации,
    |    ТрудовойДоговор.Организация.Наименование КАК НазваниеОрганизации,
    |    ТрудовойДоговор.Организация.ИНН + ""/"" + ТрудовойДоговор.Организация.КПП КАК ИНН,
    |    ТрудовойДоговор.ГрафикРаботы.ВидГрафика КАК ВидГрафика,
    |    ТрудовойДоговор.ГрафикРаботы.ДлительностьРабочейНедели КАК ДлительностьРабочейНедели,
    |    ТрудовойДоговор.ВидРасчета,
    |    ТрудовойДоговор.ТарифнаяСтавка,
    |    ТрудовойДоговор.ВалютаТарифнойСтавки.Наименование КАК ВалютаТарифнойСтавки,
    |    ТрудовойДоговор.ПерсональныеНадбавки.(
    |        Ссылка,
    |        НомерСтроки,
    |        Надбавка КАК Надбавка,
    |        Показатель1
    |    )
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК ТрудовойДоговор
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТОтветственноеЛицо КАК ОтветственноеЛицоОрганизации
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
    |                &ДатаДокумента,
    |                Физлицо В
    |                    (ВЫБРАТЬ
    |                        Ответственные.Физлицо
    |                    ИЗ
    |                        ВТОтветственноеЛицо КАК Ответственные)) КАК ФИООтветственныхЛиц
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаДокумента, Физлицо = &Физлицо) КАК ФИОФизЛиц
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(&ДатаДокумента, Физлицо = &Физлицо) КАК ПаспортныеДанныеФизЛицСрезПоследних
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК АдресРегистрации
    |        ПО ТрудовойДоговор.Физлицо = АдресРегистрации.Объект
    |            И (АдресРегистрации.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ТелефонДомашний
    |        ПО ТрудовойДоговор.Физлицо = ТелефонДомашний.Объект
    |            И (ТелефонДомашний.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонФизЛица))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |        ПО ТрудовойДоговор.Организация = КонтактнаяИнформация.Объект
    |            И (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресОрганизации))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ТелефонОрганизации
    |        ПО ТрудовойДоговор.Организация = ТелефонОрганизации.Объект
    |            И (ТелефонОрганизации.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонОрганизации))
    |ГДЕ
    |    ТрудовойДоговор.Ссылка = &СправочникСсылка";
    
    //Возврат Запрос.Выполнить();
    
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    // *******************************************************
    //Заполняем переменные макета
    ш_НомерТД = СокрЛП(Шапка.НомерДок);
    ш_ДатаИзм = СокрЛП(Шапка.ДатаДок);
    
    // ********************************************************
    Макет = ПолучитьМакет("МакетWord");
    MSWord = Макет.Получить();
    
    Попытка
        Документ = MSWord.Application.Documents(1);
        Документ.Activate();
        
        Замена = Документ.Content.Find;
        Замена.Wrap = 1;   //чтобы не писать каждый раз  Find
        Замена.Execute("ш_НомерТД", , , , , , , , ,ш_НомерТД,2);
        Замена.Execute("ш_ДатаИзм", , , , , , , , ,ш_ДатаИзм,2);
        
        MSWord.Application.Visible=Истина;
        MsWord.Activate();
    Исключение
        Сообщить(ОписаниеОшибки());
        MSWord.Application.Quit();
    КонецПопытки;
    
КонецФункции
2 листопад
 
24.04.14
01:45
вопрос закрыт, разобралась сама.
всем спасибо.
3 Godofsin
 
24.04.14
05:44
(2) Умничка!
4 User_Agronom
 
24.04.14
05:52
Делов то на 40 минут всего было))
5 Wobland
 
24.04.14
06:04
в сорок минут я б едва ль уложился...
1. согнять в магазин за кофе - 15
2. поставить чайник - 5
3. забыть сигареты и сгонять в магазин за сигаретами - 15
4. налить кофе - 2
5. забыть печеньки и сгонять в магазин за печеньками - 15
6. почитать почту и новости - 10
7. приступить к работе - 5
8. поработать - 1

итого: 68 минут
6 Godofsin
 
24.04.14
06:07
(5) Ты бы вместо кофе что-нить для памяти попоил, а то забываешь много =)
7 Godofsin
 
24.04.14
06:07
попоил = попил
8 фобка
 
24.04.14
06:15
(5) >4. налить кофе - 2
=D