|
Обработка печать трудового договора ошибка | ☑ | ||
---|---|---|---|---|
0
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"); Структура.ОкладПрописью = ЧислоПрописью(ВыборкаДетальныеЗаписи.Размер); КонецЕсли; КонецЦикла; Возврат Структура; КонецФункции &НаСервере Функция ПолучитьМакетНаСервере() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); СсылкаМакет = ОбработкаОбъект.ПолучитьМакет("Макет"); Возврат СсылкаМакет; КонецФункции &НаСервере Процедура ПриОткрытииНаСервере(Док, СписокЗамен, ФОтк) СписокЗамен = Новый Структура; //СписокЗамен.Вставить("ОргПродавец", СокрЛП(х.ОргПродавец)); //СписокЗамен.Вставить("ПредставлениеПродавец", СокрЛП(ВыбраннаяСтрокаНаФормеПодпись)); //СписокЗамен.Вставить("ФизЛицоПродавец", СокрЛП(ВыбраннаяСтрокаНаФормеНаименование)); КонецПроцедуры |
|||
1
skynet7017
22.11.18
✎
14:53
|
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); МассивНазначений = Новый Массив(); МассивНазначений.Добавить("Справочник.Сотрудники"); ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "Трудовой договор РИРЦ"); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); ПараметрыРегистрации.Вставить("Информация", "Трудовой договор РИРЦ"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, НСтр("ru = 'Трудовой договор РИРЦ'"),//для отображения пользователю "ВПФ_Договор", //можно использовать для подмены поставляемой печатной формы "ОткрытиеФормы", Использование. Варианты: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода" Ложь,Показывать оповещение. Варианты Истина, Ложь );//Модификатор ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры |
|||
2
Mankubus
22.11.18
✎
15:08
|
А где ошибка - то?
|
|||
3
Полбатона
22.11.18
✎
15:09
|
Автор, научись сначала правильно задавать свои вопросы. Твой говнокод тут никому не интересен
|
|||
4
tesseract
22.11.18
✎
15:10
|
(2) Читать не хочет. На сервере только ods.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |