pozitr0n/1C-Project-Automation-of-the-Company

New the layout and output processing

Closed this issue · 2 comments

Tasks:

  1. Create the layout
  2. Create the output processing
  3. Create the right request to get the ДолжностьДоПеревода
  4. Combine all the fields
  5. Test the layout and processing

Some modules:

#Если Клиент Тогда 

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

    АктивныйДокумент = ПолучитьМакет("ПФ_DOC_ПереводСотрудника").Получить();
    ПечатьВВорд(СсылкаНаОбъект.ПолучитьОбъект(), АктивныйДокумент);

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

Процедура ПечатьВВорд(Объект, КомОбъект, НаПринтер = Ложь, Ворд = Неопределено) Экспорт  

    //Проверка документа
    Если Объект.ЭтоНовый() Тогда
        Предупреждение("Документ можно распечатать только после его записи");
        Возврат;
    ИначеЕсли Не УправлениеПользователями.РазрешитьПечатьНепроведенныхДокументов(Объект.Проведен) Тогда
        Предупреждение("Недостаточно полномочий для печати непроведенного документа!");
        Возврат;
    КонецЕсли; 

    Если Не РаботаСДиалогами.ПроверитьМодифицированность(Объект) Тогда
        Возврат;
    КонецЕсли;
    //------------------

    Попытка
        СоответствиеРеквизитов = Новый Соответствие;
        СоответствиеРеквизитов = ДополнитьРеквизитами_МН(Объект.Ссылка, СоответствиеРеквизитов);

        Для Каждого ЭлементСоответствия Из СоответствиеРеквизитов Цикл
            //Сообщить(Строка(ЭлементСоответствия.Ключ) + "    -   " + Строка(ЭлементСоответствия.Значение));
            ЗначениеВЗакладку(КомОбъект, ЭлементСоответствия.Ключ, ЭлементСоответствия.Значение);
        КонецЦикла;

        //Вывод документа
        КомОбъект.Application.Visible=1;       
    Исключение
        Сообщить(ОписаниеОшибки());   
    КонецПопытки;

КонецПроцедуры    

Функция ДополнитьРеквизитами_МН(Документ, Результат)

    Перем НоваяСтрока;

    //////////////
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
                   |    РаботникиОрганизацийСрезПоследних.Должность
                   |ИЗ
                   |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ПараметрДата, ) КАК РаботникиОрганизацийСрезПоследних";

    Запрос.УстановитьПараметр("ПараметрДата", Документ.Дата - 1);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    КонецЦикла;
    //////////////

    Результат = Новый Соответствие;

    Результат.Вставить("ДатаПриказа",Формат(Документ.ДатаПриказа, "Дф=dd.MM.yyyy"));
    Если ЗначениеЗаполнено(Документ.ПриказНомерСквозной) Тогда
        НомерПриказа = "N " + Документ.ПриказНомерСквозной + "-к";
        Результат.Вставить("НомерПриказа", НомерПриказа);
    КонецЕсли;

    Результат.Вставить("ФИО_Сотрудника",ОбщегоНазначенияЛокализация.Падеж(Строка(Документ.ФизЛицо),2,3,"123"));
    Результат.Вставить("ФИО_Сотр", ОбщегоНазначенияЛокализация.Падеж(Строка(Документ.ФизЛицо),-2,"123"));      
    Результат.Вставить("Сотрудника_ФИО", ОбщегоНазначенияЛокализация.Падеж(Строка(Документ.ФизЛицо),-1,"123"));


    // Вывод основных данных: до и после перевода
    //
    //Данные до перевода
    Результат.Вставить("ДолжностьДоПеревода", "заместителя директора");
    Результат.Вставить("МагазинДоПеревода", Документ.ПодразделениеИсходное.Наименование);    
    Результат.Вставить("АдресМагазинаДоПеревода", Документ.ПодразделениеИсходное.АдресПодразделения);    

    //Данные после перевода
    Результат.Вставить("ДолжностьПослеПеревода", Документ.Должность);
    Результат.Вставить("МагазинПослеПеревода", Документ.ПодразделениеОрганизации);
    Результат.Вставить("АдресМагазинаПослеПеревода", Документ.ПодразделениеОрганизации.АдресПодразделения);
    Результат.Вставить("ДатаПеремещения", Формат(Документ.ДатаПеремещения,"Дф=dd.MM.yyy"));
    Результат.Вставить("ДатаЗаявления", Формат(Документ.ДатаПриказа, "Дф=dd.MM.yyy"));
    Результат.Вставить("ДатаТрудовогоДоговора", Формат(Документ.ДатаТрудовогоДоговора, "Дф=dd.MM.yyy"));
    Результат.Вставить("НомерТрудовогоДоговора", Документ.НомерТрудовогоДоговора);
    Результат.Вставить("ФамилияОзнакомлен", "_____________       " + ОбщегоНазначенияЛокализация.Падеж(Строка(Документ.ФизЛицо),-2,"123"));
    Результат.Вставить("ДатаОзнакомлен", "__________.2016");
    Возврат Результат;

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

Процедура ЗначениеВЗакладку(Документ, Закладка, Значение) Экспорт 

    Попытка
        Документ.Bookmarks(СокрЛП(Закладка)).Select(); 
        Врем=СокрЛП(Значение);
        Документ.Application.Selection.Text = Врем;             
    Исключение
        //Сообщить("Не найдена закладка! "+Закладка,СтатусСообщения.Важное);    
        //Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
    КонецПопытки;

КонецПроцедуры 

#КонецЕсли

Finished!