Very responsible and hard task!!! Create the last document processing
Closed this issue · 2 comments
pozitr0n commented
Tasks:
- Add new fields "№ТрудовогоДоговора" and "ДатаТрудовогоДоговора" to the register of information "Контракты"
- Add the movings to the register of informations "Контракты"
- Add the field-form into the document ПеремещениеСотрудника
- Add the printing form to the document ПеремещениеСотрудника
pozitr0n commented
Done.
pozitr0n commented
#Если Клиент Тогда
Функция Печать() Экспорт
АктивныйДокумент = ПолучитьМакет("ПФ_DOC_ПечатьДопСоглашения").Получить();
ПечатьВВорд(СсылкаНаОбъект.ПолучитьОбъект(), АктивныйДокумент);
КонецФункции
Процедура ПечатьВВорд(Объект, КомОбъект, НаПринтер = Ложь, Ворд = Неопределено) Экспорт
//Проверка документа
Если Объект.ЭтоНовый() Тогда
Предупреждение("Документ можно распечатать только после его записи");
Возврат;
ИначеЕсли Не УправлениеПользователями.РазрешитьПечатьНепроведенныхДокументов(Объект.Проведен) Тогда
Предупреждение("Недостаточно полномочий для печати непроведенного документа!");
Возврат;
КонецЕсли;
Если Не РаботаСДиалогами.ПроверитьМодифицированность(Объект) Тогда
Возврат;
КонецЕсли;
//------------------
Попытка
СоответствиеРеквизитов = Новый Соответствие;
СоответствиеРеквизитов = ДополнитьРеквизитами_МН(Объект.Ссылка, СоответствиеРеквизитов);
Для Каждого ЭлементСоответствия Из СоответствиеРеквизитов Цикл
//Сообщить(Строка(ЭлементСоответствия.Ключ) + " - " + Строка(ЭлементСоответствия.Значение));
ЗначениеВЗакладку(КомОбъект, ЭлементСоответствия.Ключ, ЭлементСоответствия.Значение);
КонецЦикла;
//Вывод документа
КомОбъект.Application.Visible=1;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Функция ДополнитьРеквизитами_МН(Документ, Результат)
Перем НоваяСтрока;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КонтрактыСрезПоследних.ДатаТрудовогоДоговора,
| КонтрактыСрезПоследних.НомерТрудовогоДоговора,
| КонтрактыСрезПоследних.ФизЛицо
|ИЗ
| РегистрСведений.Контракты.СрезПоследних(&ПараметрДата, ) КАК КонтрактыСрезПоследних
|ГДЕ
| КонтрактыСрезПоследних.Регистратор.ФизЛицо = &ФизЛицо";
Запрос.УстановитьПараметр("ПараметрДата", Документ.ДатаПеремещения);
Запрос.УстановитьПараметр("ФизЛицо", Документ.ФизЛицо);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НомерТрудовогоКонтракта = ВыборкаДетальныеЗаписи.НомерТрудовогоДоговора;
ДатаТрудовогоКонтракта = ВыборкаДетальныеЗаписи.ДатаТрудовогоДоговора;
КонецЦикла;
Результат = Новый Соответствие;
Результат.Вставить("НомерСоглашения", Документ.НомерДополнительногоСоглашения);
Результат.Вставить("НомерСоглашения_Англ", Документ.НомерДополнительногоСоглашения);
Результат.Вставить("ДатаТрудовогоКонтракта", Формат(ДатаТрудовогоКонтракта, "ДЛФ=DD"));
Результат.Вставить("НомерТрудовогоКонтракта", НомерТрудовогоКонтракта);
Результат.Вставить("ДатаТрудовогоКонтракта_Англ", Формат(ДатаТрудовогоКонтракта, "Л=en_US; ДЛФ=DD"));
Результат.Вставить("НомерТрудовогоКонтракта_Англ", НомерТрудовогоКонтракта);
Результат.Вставить("ДатаТрудовогоКонтракта_2", Формат(ДатаТрудовогоКонтракта, "ДЛФ=DD"));
Результат.Вставить("НомерТрудовогоКонтракта_2", НомерТрудовогоКонтракта);
Результат.Вставить("ДатаТрудовогоКонтракта_Англ_2", Формат(ДатаТрудовогоКонтракта, "Л=en_US; ДЛФ=DD"));
Результат.Вставить("НомерТрудовогоКонтракта_Англ_2", НомерТрудовогоКонтракта);
Результат.Вставить("ДатаПеремещения", Формат(Документ.ДатаПеремещения, "ДЛФ=DD"));
Результат.Вставить("ДатаПеремещения_Англ", Формат(Документ.ДатаПеремещения, "Л=en_US; ДЛФ=DD"));
Результат.Вставить("ДатаПеремещения_2", Формат(Документ.ДатаПеремещения, "ДЛФ=DD"));
Результат.Вставить("ДатаПеремещения_Англ_2", Формат(Документ.ДатаПеремещения, "Л=en_US; ДЛФ=DD"));
ИмяФизЛицаИменительныйПадеж = Документ.ФизЛицо;
//ИмяФизЛица = ОбщегоНазначенияЛокализация.Падеж(Строка(ИмяФизЛицаИменительныйПадеж),4,"3","123");
Фамилия = " " + ВыделитьСлово(ИмяФизЛицаИменительныйПадеж);
Имя = " " + ВыделитьСлово(ИмяФизЛицаИменительныйПадеж);
Отчество = " " + ВыделитьСлово(ИмяФизЛицаИменительныйПадеж);
ФИО = Врег(Фамилия) + Имя + Отчество;
Результат.Вставить("ИмяФизЛица", ФИО);
Результат.Вставить("ИмяФИзЛица_Англ", Транслит(ФИО));
Результат.Вставить("ИмяФизЛица_2", ФИО);
Результат.Вставить("ИмяФИзЛица_Англ_2", Транслит(ФИО));
Результат.Вставить("ЧТС", Документ.ЧасоваяСтавка);
Результат.Вставить("ЧТС_Англ", Документ.ЧасоваяСтавка);
Результат.Вставить("ЧТС_Транслит", ЧислоПрописью(Цел(Документ.ЧасоваяСтавка), "L=ru_RU; НД = Ложь; НП=Ложь"," , , , , , , , ,") + " копеек");
//Результат.Вставить("ЧТС_Транслит_Англ", Транслит(ЧислоПрописью(Документ.ЧасоваяСтавка)));
Результат.Вставить("ЧТС_Транслит_Англ", ЧислоПрописью(Цел(Документ.ЧасоваяСтавка), "L=en_EN; НД = Ложь; НП=Ложь"," , , , , , , , ,0") + " kopecks");
Возврат Результат;
КонецФункции
Процедура ЗначениеВЗакладку(Документ, Закладка, Значение) Экспорт
Попытка
Документ.Bookmarks(СокрЛП(Закладка)).Select();
Врем=СокрЛП(Значение);
Документ.Application.Selection.Text = Врем;
Исключение
//Сообщить("Не найдена закладка! "+Закладка,СтатусСообщения.Важное);
//Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
КонецПопытки;
КонецПроцедуры
Функция ВыделитьСлово(ИсходнаяСтрока)
Буфер = СокрЛ(ИсходнаяСтрока);
ПозицияПослПробела = Найти(Буфер, " ");
Если ПозицияПослПробела = 0 Тогда
ИсходнаяСтрока = "";
Возврат Буфер;
КонецЕсли;
ВыделенноеСлово = СокрЛП(Лев(Буфер, ПозицияПослПробела));
ИсходнаяСтрока = Сред(ИсходнаяСтрока, ПозицияПослПробела + 1);
Возврат ВыделенноеСлово;
КонецФункции
Функция Транслит(Вход)
Коды = Новый Соответствие;
Коды.Вставить("ё","yo");
Коды.Вставить("Ё","Yo");
Нач = КодСимвола("А");
Англ = "A" "B" "V" "G" "D" "E" "Zh" "Z" "I" "Y" "K" "L" "M" "N" "O" "P" "R" "S" "T" "U" "F" "Kh" "Ts" "Ch" "Sh" "Shch" "" "Y" "" "E" "Yu" "Ya" "a" "b" "v" "g" "d" "e" "zh" "z" "i" "y" "k" "l" "m" "n" "o" "p" "r" "s" "t" "u" "f" "kh" "ts" "ch" "sh" "shch" "" "y" "" "e" "yu" "ya";
Для К = Нач по КодСимвола("я") Цикл
Коды.Вставить(Символ(К), СтрПолучитьСтроку(Англ, К - Нач + 1));
КонецЦикла;
Выход = "";
Для К=1 по СтрДлина(Вход) Цикл
Бкв = Сред(Вход,К,1);
Зн = Коды.Получить(Бкв);
Выход = Выход + ?(Зн = Неопределено, Бкв, Зн);
КонецЦикла;
Возврат Выход;
КонецФункции
#КонецЕсли