Вход | Регистрация
 

Обработка печать трудового договора ошибка

Обработка печать трудового договора ошибка
Я
   skynet7017
 
22.11.18 - 14:53
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    Сотрудник=Параметры.ОбъектыНазначения[0];
    
    СтруктураНаПечать=ПечатьНаСервере(Сотрудник);
    Если СтруктураНаПечать<>Неопределено Тогда
        ИмяВрем = ПолучитьИмяВременногоФайла(".doc");
        СтруктураНаПечать.Записать(ИмяВрем);
        ЗапуститьПриложение(ИмяВрем,,,);
    КонецЕсли;
    ЭтаФорма.Закрыть();
КонецПроцедуры

&НаСервере
Функция ПечатьНаСервере(Сотрудник)
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    КомОбъект  = Макет.Получить();
    Word = КомОбъект.Application;
    Док=Word.Documents();
    
    ИмяВремФайла=ПолучитьИмяВременногоФайла(".doc");
    Док.SaveAs(ИмяВремФайла);
    Док.Close(0);
    Попытка
        Word = Новый COMОбъект("Word.Application");
        Док = Word.Documents.Open(ИмяВремФайла);            
        Док.Activate();
        
        Файл = КаталогВременныхФайлов() + "Макет_ТД.doc";
        
        Структура = ПолучитьДанныеСотрудника(Сотрудник);
        
        Selection = Док.Content;
        ПустаяСтрока="                    ";
        Для Каждого Стр из Структура Цикл
            Selection = Док.Content;
            Если СокрЛП(Стр.Значение)<>"" Тогда
                Selection.Find.Execute("["+Стр.Ключ+"]",Истина,Истина,Ложь,,,Истина,,Истина,СокрЛП(Стр.Значение),2);
            Иначе
                Selection.Find.Execute("["+Стр.Ключ+"]",Истина,Истина,Ложь,,,Истина,,Истина,ПустаяСтрока,2);
            КонецЕсли;
        КонецЦикла;
        
        ИмяВрем = ПолучитьИмяВременногоФайла(".doc");
        Док.Save();
        Док.Close(0);
        Word.Quit();
        МойДокументВДвоичныхДанных = Новый ДвоичныеДанные(ИмяВремФайла);
        //Док.SaveAs(Файл);
        //ЗапуститьПриложение("""" + Файл + """");
        Возврат МойДокументВДвоичныхДанных;
    Исключение
        Сообщить(ОписаниеОшибки());
        Word.Quit();
    КонецПопытки;
КонецФункции

&НаСервере
Функция ПолучитьДанныеСотрудника(Сотрудник)
    
    Структура=Новый Структура;
    Структура.Вставить("НомерДоговора","");
    Структура.Вставить("ДатаДоговора","");
    Структура.Вставить("ФамилияИмяОтчество",СокрЛП(Сотрудник.ФизическоеЛицо.ФИО));
    Структура.Вставить("Подразделение","");
    Структура.Вставить("Должность","");
    Структура.Вставить("СтавкаПриНеполнойЗанятости","");
    Структура.Вставить("ДатаНачалаРаботы","");
    Структура.Вставить("ДатаОкончанияРаботы","");
    Структура.Вставить("КолМесяцевИсп","");
    Структура.Вставить("Оклад","");
    Структура.Вставить("ОкладПрописью","");
    Структура.Вставить("ФИО",СокрЛП(Сотрудник.ФизическоеЛицо.ФИО));
    Структура.Вставить("ПаспортныеДанные","");
    Структура.Вставить("АдресРегистрации","");
    Структура.Вставить("ДатаДоговораПолная","");
    Структура.Вставить("ЧислоМесяцГодДатаДоговора","");
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.Сотрудник КАК Сотрудник,
        |    ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.ДатаДоговораКонтракта КАК ДатаДоговораКонтракта,
        |    ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.НомерДоговораКонтракта КАК НомерДоговораКонтракта,
        |    ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.ДатаНачала КАК ДатаНачала,
        |    СведенияКонтрактаДоговораСотрудникаСрезПоследних.ДатаОкончания КАК ДатаОкончания
        |ИЗ
        |    РегистрСведений.ОсновныеДанныеКонтрактаДоговораСотрудника.СрезПоследних(, Сотрудник = &Сотрудник) КАК ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияКонтрактаДоговораСотрудника.СрезПоследних(, Сотрудник = &Сотрудник) КАК СведенияКонтрактаДоговораСотрудникаСрезПоследних
        |        ПО ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.Сотрудник = СведенияКонтрактаДоговораСотрудникаСрезПоследних.Сотрудник";
    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Структура.НомерДоговора = ВыборкаДетальныеЗаписи.НомерДоговораКонтракта;
        Структура.ДатаДоговора = Формат(ВыборкаДетальныеЗаписи.ДатаДоговораКонтракта,"ДФ=dd.MM.yyyy");
        Структура.ЧислоМесяцГодДатаДоговора = Формат(ВыборкаДетальныеЗаписи.ДатаДоговораКонтракта,"ДФ=dd.MM.yyyy");
        Структура.ДатаДоговораПолная = Формат(ВыборкаДетальныеЗаписи.ДатаДоговораКонтракта,"ДФ= '«dd» MMMM yyyy'");
        Структура.ДатаНачалаРаботы = Формат(ВыборкаДетальныеЗаписи.ДатаНачала,"ДФ=dd.MM.yyyy");
        Структура.ДатаОкончанияРаботы = Формат(ВыборкаДетальныеЗаписи.ДатаОкончания,"ДФ=dd.MM.yyyy");
    КонецЦикла;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ДокументыФизическихЛицСрезПоследних.ВидДокумента КАК ВидДокумента,
        |    ДокументыФизическихЛицСрезПоследних.Серия КАК Серия,
        |    ДокументыФизическихЛицСрезПоследних.Номер КАК Номер,
        |    ДокументыФизическихЛицСрезПоследних.ДатаВыдачи КАК ДатаВыдачи,
        |    ДокументыФизическихЛицСрезПоследних.СрокДействия КАК СрокДействия,
        |    ДокументыФизическихЛицСрезПоследних.КемВыдан КАК КемВыдан,
        |    ДокументыФизическихЛицСрезПоследних.КодПодразделения КАК КодПодразделения
        |ИЗ
        |    РегистрСведений.ДокументыФизическихЛиц.СрезПоследних(
        |            ,
        |            Физлицо = &Физлицо
        |                И ВидДокумента = &ВидДокумента) КАК ДокументыФизическихЛицСрезПоследних";
    
    Запрос.УстановитьПараметр("ВидДокумента", Справочники.ВидыДокументовФизическихЛиц.ПаспортРФ);
    Запрос.УстановитьПараметр("Физлицо", Сотрудник.ФизическоеЛицо);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Структура.ПаспортныеДанные = СокрЛП(ВыборкаДетальныеЗаписи.ВидДокумента)+" "+СокрЛП(ВыборкаДетальныеЗаписи.Серия)+" "+СокрЛП(ВыборкаДетальныеЗаписи.Номер)+" выдан  "+СокрЛП(ВыборкаДетальныеЗаписи.КемВыдан)+" "+Формат(ВыборкаДетальныеЗаписи.ДатаВыдачи,"ДФ=dd.MM.yyyy");
    КонецЦикла;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ФизическиеЛицаКонтактнаяИнформация.Тип КАК Тип,
        |    ФизическиеЛицаКонтактнаяИнформация.Вид КАК Вид,
        |    ФизическиеЛицаКонтактнаяИнформация.Представление КАК Представление
        |ИЗ
        |    Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
        |ГДЕ
        |    ФизическиеЛицаКонтактнаяИнформация.Ссылка = &ФизЛицо
        |    И ФизическиеЛицаКонтактнаяИнформация.Тип = &Тип
        |    И ФизическиеЛицаКонтактнаяИнформация.Вид = &Вид";
    
    Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.АдресПоПропискеФизическиеЛица);
    Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);
    Запрос.УстановитьПараметр("ФизЛицо", Сотрудник.ФизическоеЛицо);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Структура.АдресРегистрации = ВыборкаДетальныеЗаписи.Представление;
    КонецЦикла;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
        |    КадроваяИсторияСотрудниковСрезПоследних.Организация КАК Организация,
        |    КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение,
        |    КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность,
        |    КадроваяИсторияСотрудниковСрезПоследних.КоличествоСтавок КАК КоличествоСтавок,
        |    КадроваяИсторияСотрудниковСрезПоследних.ВидДоговора КАК ВидДоговора
        |ИЗ
        |    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, Сотрудник = &Сотрудник) КАК КадроваяИсторияСотрудниковСрезПоследних";
    
    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Структура.Подразделение = ВыборкаДетальныеЗаписи.Подразделение;
        Структура.Должность = ВыборкаДетальныеЗаписи.Должность;
        Структура.СтавкаПриНеполнойЗанятости = ВыборкаДетальныеЗаписи.КоличествоСтавок;
    КонецЦикла;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
        |    КадроваяИсторияСотрудниковСрезПоследних.Регистратор КАК Регистратор,
        |    КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия КАК ВидСобытия,
        |    КадроваяИсторияСотрудниковСрезПоследних.НомерСтроки КАК НомерСтроки
        |ИЗ
        |    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, Сотрудник = &Сотрудник) КАК КадроваяИсторияСотрудниковСрезПоследних
        |ГДЕ
        |    КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия = &ВидСобытия";
    
    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
    Запрос.УстановитьПараметр("ВидСобытия", Перечисления.ВидыКадровыхСобытий.Прием);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Докум = ВыборкаДетальныеЗаписи.Регистратор;
        Если ТипЗнч(Докум)=Тип("ДокументСсылка.ПриемНаРаботу") Тогда
            Структура.КолМесяцевИсп = Докум.ДлительностьИспытательногоСрока;
        ИначеЕсли ТипЗнч(Докум)=Тип("ДокументСсылка.ПриемНаРаботуСписком") Тогда
            Структура.КолМесяцевИсп = Докум.Сотрудники[ВыборкаДетальныеЗаписи.НомерСтроки-1].ДлительностьИспытательногоСрока;
        КонецЕсли;
    КонецЦикла;
    
    Если Структура.КолМесяцевИсп="" Тогда
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ПриемНаРаботу.Сотрудник КАК Сотрудник,
        |    ПриемНаРаботу.ДлительностьИспытательногоСрока КАК ДлительностьИспытательногоСрока
        |ИЗ
        |    Документ.ПриемНаРаботу КАК ПриемНаРаботу
        |ГДЕ
        |    ПриемНаРаботу.Сотрудник = &Сотрудник
        |    И ПриемНаРаботу.Проведен = ИСТИНА
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    ПриемНаРаботуСпискомСотрудники.Сотрудник,
        |    ПриемНаРаботуСпискомСотрудники.ДлительностьИспытательногоСрока
        |ИЗ
        |    Документ.ПриемНаРаботуСписком.Сотрудники КАК ПриемНаРаботуСпискомСотрудники
        |ГДЕ
        |    ПриемНаРаботуСпискомСотрудники.Сотрудник = &Сотрудник
        |    И ПриемНаРаботуСпискомСотрудники.Ссылка.Проведен = ИСТИНА";
        
        Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
        РезультатЗапроса = Запрос.Выполнить();
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            Структура.КолМесяцевИсп = ВыборкаДетальныеЗаписи.ДлительностьИспытательногоСрока;
        КонецЦикла;
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ВидыЗанятостиСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
        |    ВидыЗанятостиСотрудниковСрезПоследних.ВидЗанятости КАК ВидЗанятости
        |ИЗ
        |    РегистрСведений.ВидыЗанятостиСотрудников.СрезПоследних(, Сотрудник = &Сотрудник) КАК ВидыЗанятостиСотрудниковСрезПоследних";
    
    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.ВидЗанятости = Перечисления.ВидыЗанятости.ОсновноеМестоРаботы Тогда
            Структура.СтавкаПриНеполнойЗанятости = "";
        КонецЕсли;
    КонецЦикла;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПлановыеНачисленияСрезПоследних.Сотрудник КАК Сотрудник,
        |    ПлановыеНачисленияСрезПоследних.Начисление КАК Начисление,
        |    ПлановыеНачисленияСрезПоследних.Размер КАК Размер
        |ИЗ
        |    РегистрСведений.ПлановыеНачисления.СрезПоследних(, Сотрудник = &Сотрудник) КАК ПлановыеНачисленияСрезПоследних";
    
    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если Найти(нрег(СокрЛП(ВыборкаДетальныеЗаписи.Начисление)),"оклад")>0 Тогда
            Структура.Оклад = Формат(ВыборкаДетальныеЗаписи.Размер,"ЧЦ=15; ЧДЦ=2");
            Структура.ОкладПрописью = ЧислоПрописью(ВыборкаДетальныеЗаписи.Размер);
        КонецЕсли;
    КонецЦикла;
    
    Возврат Структура;
    
КонецФункции

&НаСервере
Функция ПолучитьМакетНаСервере()
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    СсылкаМакет = ОбработкаОбъект.ПолучитьМакет("Макет");
    Возврат СсылкаМакет;    
КонецФункции    

&НаСервере
Процедура ПриОткрытииНаСервере(Док, СписокЗамен, ФОтк)
    
    СписокЗамен = Новый Структура;
    //СписокЗамен.Вставить("ОргПродавец",                         СокрЛП(х.ОргПродавец));
    //СписокЗамен.Вставить("ПредставлениеПродавец",                 СокрЛП(ВыбраннаяСтрокаНаФормеПодпись));
    //СписокЗамен.Вставить("ФизЛицоПродавец",                        СокрЛП(ВыбраннаяСтрокаНаФормеНаименование));
    
КонецПроцедуры
 
 
   skynet7017
 
1 - 22.11.18 - 14:53
Функция СведенияОВнешнейОбработке() Экспорт
  
  ПараметрыРегистрации = Новый Структура;
  ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
  МассивНазначений = Новый Массив();
  МассивНазначений.Добавить("Справочник.Сотрудники");
  ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
  
  ПараметрыРегистрации.Вставить("Наименование", "Трудовой договор РИРЦ");
  ПараметрыРегистрации.Вставить("Версия", "1.0");
  ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
  ПараметрыРегистрации.Вставить("Информация", "Трудовой договор РИРЦ");
  
  ТаблицаКоманд = ПолучитьТаблицуКоманд();
  ДобавитьКоманду(ТаблицаКоманд,
          НСтр("ru = 'Трудовой договор РИРЦ'")//для отображения пользователю

          "ВПФ_Договор",    //можно использовать для подмены поставляемой печатной формы

          "ОткрытиеФормы",  Использование.  Варианты: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"   
          Ложь,Показывать оповещение. Варианты Истина, Ложь 
          )//Модификатор 


  ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
  ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
  Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()

  Команды = Новый ТаблицаЗначений;
  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

  Возврат Команды;

КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
   Mankubus
 
2 - 22.11.18 - 15:08
А где ошибка - то?
   Полбатона
 
3 - 22.11.18 - 15:09
Автор, научись сначала правильно задавать свои вопросы. Твой говнокод тут никому не интересен
   tesseract
 
4 - 22.11.18 - 15:10
(2) Читать не хочет. На сервере только ods.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует