Унифицированная форма Т-2 с фото сотрудника. (печатная форма для типовой конфигурации ЗУП 2.5)

Публикация № 87620 07.09.11

Разработка - Практика программирования

Доработка типовой конфигурации Зарплата и Управление Персоналом 8.

Добрый день, коллеги!

Представляю Вашему вниманию один из вариантов унифицированной формы Т-2, широко используемой кадровыми специалистами в типовой конфигурации Зарплата и управление персоналом. Данная статья представляет собой доработку типовой конфигурации Зарплата и Управление Персоналом.

Многие пользовались типовым отчетом УнифицированнаяФормаТ-2 в ЗУПе, и большинство кадровых работников сталкивалось и продолжает сталкиваться со сложностью настройки отчета на СКД. Также поискав в интернете и не обнаружив готовых решений формы с наличием фото сотрудника на первой странице, возникла необходимость ее модификации. Таким образом типовой отчет был переработан в печатную форму, открывающуюся из формы элемента справочника СотрудникиОрганизации.

Для работы кода, необходимо предварительно скопировать макет печатной формы Т2_от_5_1_2004 из типового отчета. Фото реализовано в виде элемента с типом Рисунок с именем ФотоНаПропуск. На форме элемента справочника СотрудникиОрганизаций создается кнопка с действием ОсновныеДействияФормыДействиеФормаТ2.

Код модуля формы элемента справочника СотрудникиОрганизации:

Процедура ОсновныеДействияФормыДействиеФормаТ2(Кнопка)

    Отказ = Ложь;

    Если Модифицированность() Тогда
        Если Вопрос("Данные сотрудника еще не записаны! Записать?", РежимДиалогаВопрос.ОКОтмена,, КодВозвратаДиалога.ОК,) = КодВозвратаДиалога.ОК Тогда
            Отказ = Не ЗаписатьВФорме();
        Иначе
            Возврат
        КонецЕсли;
    КонецЕсли;

    Если Не Отказ Тогда
        ФормаТ2();
    КонецЕсли;

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

Код модуля объекта справочника СотрудникиОрганизации:

 

Функция ФормаТ2(ТабДокумент = Неопределено) Экспорт

    Если ТабДокумент = Неопределено Тогда
        ТабДокумент = Новый ТабличныйДокумент;
        ВыводитьНаПечать = Истина;
    КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    ДатаАктуальности=КонецДня(ТекущаяДата());
    Запрос.УстановитьПараметр("ДатаАктуальности", ДатаАктуальности);
    Запрос.УстановитьПараметр("Физлицо",          Физлицо);
    Запрос.УстановитьПараметр("Сотрудник",        Ссылка);

    СписокОфицерскихЗваний = Новый Массив;
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.МладшийЛейтенант);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.Лейтенант);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.СтаршийЛейтенант);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.Капитан);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.Майор);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.Подполковник);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.Полковник);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.ГенералМайор);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.ГенералЛейтенант);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.ГенералПолковник);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.ГенералАрмии);
    СписокОфицерскихЗваний.Добавить(Справочники.ЗваниеГражданскогоВоинскогоУчета.МаршалРоссийскойФедерации);
    Запрос.УстановитьПараметр("Офицеры", СписокОфицерскихЗваний);

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

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   ВЫБОР
    |       КОГДА СотрудникиОрганизаций.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    |           ТОГДА ""Основная""
    |       ИНАЧЕ ""По совместительству""
    |   КОНЕЦ КАК ВидРаботы,
    |   СотрудникиОрганизаций.Код КАК ТабельныйНомер,
    |   СотрудникиОрганизаций.НомерДоговора КАК ТрудовойДоговорНомер,
    |   СотрудникиОрганизаций.ДатаДоговора КАК ТрудовойДоговорДата,
    |   СотрудникиОрганизаций.Физлицо.Наименование КАК Представление,
    |   СотрудникиОрганизаций.Физлицо.ДатаРождения КАК ДатаРождения,
    |   СотрудникиОрганизаций.Физлицо.МестоРождения КАК МестоРождения,
    |   СотрудникиОрганизаций.Физлицо.МестоРожденияКодПоОКАТО КАК МестоРожденияКодПоОКАТО,
    |   СотрудникиОрганизаций.Физлицо.Пол КАК Пол,
    |   СотрудникиОрганизаций.Физлицо.ИНН КАК ИНН,
    |   СотрудникиОрганизаций.Физлицо.СтраховойНомерПФР КАК СтраховойНомерПФР,
    |   ФИОФизЛицСрезПоследних.Фамилия,
    |   ФИОФизЛицСрезПоследних.Имя,
    |   ФИОФизЛицСрезПоследних.Отчество,
    |   ВЫБОР
    |       КОГДА ЕСТЬNULL(ГражданствоФизЛицСрезПоследних.Страна, ЗНАЧЕНИЕ(Справочник.КлассификаторСтранМира.Россия)) = ЗНАЧЕНИЕ(Справочник.КлассификаторСтранМира.Россия)
    |           ТОГДА ""Гражданин Российской Федерации""
    |       КОГДА ГражданствоФизЛицСрезПоследних.Страна = ЗНАЧЕНИЕ(Справочник.КлассификаторСтранМира.ПустаяССылка)
    |           ТОГДА ""Гражданин Российской Федерации""
    |       КОГДА ГражданствоФизЛицСрезПоследних.Страна = ЗНАЧЕНИЕ(Справочник.КлассификаторСтранМира.ЛицоБезГражданства)
    |           ТОГДА ""Лицо без гражданства""
    |       ИНАЧЕ ""Иностранный гражданин""
    |   КОНЕЦ КАК Гражданство,
    |   ВЫБОР
    |       КОГДА ЕСТЬNULL(ГражданствоФизЛицСрезПоследних.Страна, ЗНАЧЕНИЕ(Справочник.КлассификаторСтранМира.Россия)) = ЗНАЧЕНИЕ(Справочник.КлассификаторСтранМира.Россия)
    |           ТОГДА ""1""
    |       ИНАЧЕ ""3""
    |   КОНЕЦ КАК ГражданствоКодПоОКИН,
    |   СемейноеПоложениеФизЛицСрезПоследних.СемейноеПоложение.Наименование КАК СемейноеПоложение,
    |   СемейноеПоложениеФизЛицСрезПоследних.СемейноеПоложение.Код КАК СемейноеПоложениеКодПоОКИН,
    |   ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид.Наименование КАК ВидДокумента,
    |   ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид КАК ВидДокументаСсылка,
    |   ВЫРАЗИТЬ(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК СТРОКА(300)) КАК ДокументКемВыдан,
    |   ЕСТЬNULL(ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ДатаВыдачи,
    |   ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения,
    |   ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
    |   ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
    |   КонтактнаяИнформацияАдрес.Представление КАК АдресПоПаспорту,
    |   КонтактнаяИнформацияАдрес1.Представление КАК АдресФактический,
    |   КонтактнаяИнформацияАдрес.Поле1 КАК ИндексАдресПоПаспорту,
    |   КонтактнаяИнформацияАдрес1.Поле1 КАК ИндексАдресФактический,
    |   ПаспортныеДанныеФизЛицСрезПоследних.ДатаРегистрацииПоМестуЖительства,
    |   КонтактнаяИнформацияТелефон.Представление КАК Телефон,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности = ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный)
    |               И (НЕ ВоинскийУчетСрезПоследних.Звание В (&Офицеры))
    |           ТОГДА ВоинскийУчетСрезПоследних.КатегорияЗапаса
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК КатегорияЗапаса,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности = ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Призывник)
    |           ТОГДА ""Подлежит призыву""
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности = ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный)
    |           ТОГДА ВоинскийУчетСрезПоследних.Звание.Наименование
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК ВоинскоеЗвание,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности = ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный)
    |           ТОГДА ВоинскийУчетСрезПоследних.Состав
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК Состав,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности = ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный)
    |           ТОГДА ВоинскийУчетСрезПоследних.ВУС
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК ВУС,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности В (ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Призывник), ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный))
    |           ТОГДА ВоинскийУчетСрезПоследних.Годность
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК Годность,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности В (ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Призывник), ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный))
    |           ТОГДА ВоинскийУчетСрезПоследних.Военкомат.Наименование
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК НаименованиеВоенкомата,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности = ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный)
    |               И ВоинскийУчетСрезПоследних.НаличиеМобпредписания
    |           ТОГДА ВоинскийУчетСрезПоследних.НомерКомандыПартии
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК НомерКомандыПартии,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности = ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный)
    |               И ВоинскийУчетСрезПоследних.ЗабронированОрганизацией <> ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
    |           ТОГДА ""Забронирован "" + ВоинскийУчетСрезПоследних.ЗабронированОрганизацией.Наименование
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК ЗабронированОрганизацией,
    |   ВЫБОР
    |       КОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскойОбязанности В (ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Призывник), ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскойОбязанности.Военнообязанный))
    |               И ВоинскийУчетСрезПоследних.ОтношениеКВоинскомуУчету В (ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскомуУчету.СнятПоВозрасту), ЗНАЧЕНИЕ(Перечисление.ОтношениеКВоинскомуУчету.СнятПоСостояниюЗдоровья))
    |           ТОГДА ВоинскийУчетСрезПоследних.ОтношениеКВоинскомуУчету
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК СнятиеСУчета,
    |   РаботникиОрганизацииСрезПоследних.ОбособленноеПодразделение КАК ОрганизацияПриема,
    |   РаботникиОрганизацииСрезПоследних.ОбособленноеПодразделение.НаименованиеПолное КАК НаименованиеОрганизации,
    |   РаботникиОрганизацииСрезПоследних.ОбособленноеПодразделение.КодПоОКПО КАК КодПоОКПО,
    |   СотрудникиОрганизаций.Ссылка КАК Сотрудник
    |ИЗ
    |   Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    |               &ДатаАктуальности,
    |               Сотрудник = &Сотрудник
    |                   И ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)) КАК РаботникиОрганизацииСрезПоследних
    |       ПО СотрудникиОрганизаций.Ссылка = РаботникиОрганизацииСрезПоследних.Сотрудник
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(&ДатаАктуальности, ФизЛицо =&ФизЛицо) КАК ПаспортныеДанныеФизЛицСрезПоследних
    |       ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних(&ДатаАктуальности, ФизЛицо =&ФизЛицо) КАК ГражданствоФизЛицСрезПоследних
    |       ПО СотрудникиОрганизаций.Физлицо = ГражданствоФизЛицСрезПоследних.ФизЛицо
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаАктуальности, ФизЛицо =&ФизЛицо) КАК ФИОФизЛицСрезПоследних
    |       ПО СотрудникиОрганизаций.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВоинскийУчет.СрезПоследних(&ДатаАктуальности, ФизЛицо =&ФизЛицо) КАК ВоинскийУчетСрезПоследних
    |       ПО СотрудникиОрганизаций.Физлицо = ВоинскийУчетСрезПоследних.Физлицо
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СемейноеПоложениеФизЛиц.СрезПоследних(&ДатаАктуальности, ФизЛицо =&ФизЛицо) КАК СемейноеПоложениеФизЛицСрезПоследних
    |       ПО СотрудникиОрганизаций.Физлицо = СемейноеПоложениеФизЛицСрезПоследних.ФизЛицо
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияАдрес
    |       ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформацияАдрес.Объект
    |           И (КонтактнаяИнформацияАдрес.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
    |           И (КонтактнаяИнформацияАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица))
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияАдрес1
    |       ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформацияАдрес1.Объект
    |           И (КонтактнаяИнформацияАдрес1.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
    |           И (КонтактнаяИнформацияАдрес1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресФизЛица))
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияТелефон
    |       ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформацияТелефон.Объект
    |           И (КонтактнаяИнформацияТелефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
    |           И (КонтактнаяИнформацияТелефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонФизЛица))
    |ГДЕ
    |   СотрудникиОрганизаций.Ссылка = &Сотрудник";

    ВыборкаРезультата   =   Запрос.Выполнить().Выбрать();

    ТабДокумент.Очистить();
    Макет               =   ПолучитьМакет("Т2_от_5_1_2004");
    ПерваяСтраницаТ2    =   Макет.ПолучитьОбласть("ПерваяСтраницаТ2");
    ВтораяСтраницаТ2    =   Макет.ПолучитьОбласть("ВтораяСтраницаТ2");
    ТретьяСтраницаТ2    =   Макет.ПолучитьОбласть("ТретьяСтраницаТ2");
    ЧетвертаяСтраницаТ2 =   Макет.ПолучитьОбласть("ЧетвертаяСтраницаТ2");
    // ФОТО
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ХранилищеДополнительнойИнформации.Наименование КАК ОписаниеИзображения,
    |   ХранилищеДополнительнойИнформации.Хранилище КАК Данные
    |ИЗ
    |   Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
    |ГДЕ
    |   ХранилищеДополнительнойИнформации.Объект = &ФизЛицо";
    ВыборкаОсновноеФото = Запрос.Выполнить().Выбрать();
    Если ВыборкаОсновноеФото.Следующий() Тогда
        ДанныеДляФото = ВыборкаОсновноеФото.Данные;
        Если ДанныеДляФото <> Null Тогда
            ФотоНаПропуск = ДанныеДляФото.Получить();
            Если ФотоНаПропуск <> Неопределено Тогда
                ПерваяСтраницаТ2.Рисунки.ФотоНаПропуск.Картинка = ФотоНаПропуск;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    // СТАЖИ
    ВыводитьДатуСтажа = Ложь;
    ВыборкаПоСтажу = ПроведениеРасчетов.ВыбратьСтажиРаботника(Физлицо);
    ВыведенПроизвольныйСтаж = Ложь;
    Пока ВыборкаПоСтажу.Следующий() Цикл

        ДатаНачалаОтсчетаСтажа = ДобавитьМесяц(ВыборкаПоСтажу.ДатаОтсчета, - ВыборкаПоСтажу.РазмерМесяцев) - ВыборкаПоСтажу.РазмерДней*86400;
        Лет     = 0;
        Месяцев = 0;
        Дней    = 0;
        ОбщегоНазначения.РазобратьРазностьДат(ДатаАктуальности, ДатаНачалаОтсчетаСтажа, Лет, Месяцев, Дней);

        Если ВыборкаПоСтажу.ВидСтажа = Справочники.ВидыСтажа.НепрерывныйСтаж Тогда

            ВтораяСтраницаТ2.Параметры["ДнейСтажа2"]    =   формат(Дней,"ЧДЦ=0");
            ВтораяСтраницаТ2.Параметры["МесяцевСтажа2"] =   Месяцев;
            ВтораяСтраницаТ2.Параметры["ЛетСтажа2"]     =   Лет;
            ВыводитьДатуСтажа = Истина;

        ИначеЕсли ВыборкаПоСтажу.ВидСтажа = Справочники.ВидыСтажа.ОбщийСтаж Тогда

            ВтораяСтраницаТ2.Параметры["ДнейСтажа1"]    =   формат(Дней,"ЧДЦ=0");
            ВтораяСтраницаТ2.Параметры["МесяцевСтажа1"] =   Месяцев;
            ВтораяСтраницаТ2.Параметры["ЛетСтажа1"]     =   Лет;
            ВыводитьДатуСтажа = Истина;

        ИначеЕсли ВыборкаПоСтажу.ВидСтажа = Справочники.ВидыСтажа.СтажНаНадбавкуЗаВыслугуЛет Тогда

            ВтораяСтраницаТ2.Параметры["ДнейСтажа3"]    =   формат(Дней,"ЧДЦ=0");
            ВтораяСтраницаТ2.Параметры["МесяцевСтажа3"] =   Месяцев;
            ВтораяСтраницаТ2.Параметры["ЛетСтажа3"]     =   Лет;
            ВыводитьДатуСтажа = Истина;

        ИначеЕсли Не ВыведенПроизвольныйСтаж Тогда

            ВыведенПроизвольныйСтаж = Истина;

            ВтораяСтраницаТ2.Параметры["ДнейСтажа4"]    =   формат(Дней,"ЧДЦ=0");
            ВтораяСтраницаТ2.Параметры["МесяцевСтажа4"] =   Месяцев;
            ВтораяСтраницаТ2.Параметры["ЛетСтажа4"]     =   Лет;
            ВтораяСтраницаТ2.Параметры["ВидСтажа"]      =   ВыборкаПоСтажу.ВидСтажа;
            ВыводитьДатуСтажа = Истина;

        КонецЕсли;

    КонецЦикла;

    // Дата стажа
    Если ВыводитьДатуСтажа И ЗначениеЗаполнено(ДатаАктуальности)Тогда
        ВтораяСтраницаТ2.Параметры["ДатаСтажа"] = "8. Стаж работы (по состоянию на  " + Формат(ДатаАктуальности, "ДЛФ=DD") + "):"
    Иначе
        ВтораяСтраницаТ2.Параметры["ДатаСтажа"] = "8. Стаж работы (по состоянию на  ""         "" _________ 20     г.):"
    КонецЕсли;

    ВтораяСтраницаТ2.Параметры.НомерДокумента = "№";
    Если ВыборкаРезультата.Следующий() тогда

        Запрос.УстановитьПараметр("ОрганизацияПриема", ВыборкаРезультата.ОрганизацияПриема);

        ПерваяСтраницаТ2.Параметры.Заполнить(ВыборкаРезультата);
        ВтораяСтраницаТ2.Параметры.Заполнить(ВыборкаРезультата);

        Если ВыборкаРезультата.Фамилия = NULL тогда
            ФИО     =   ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ВыборкаРезультата.Представление, " ");
            Если ФИО.Количество()   >   0   тогда
                Фамилия =   ФИО[0];
            КонецЕсли;
            Если ФИО.Количество()   >   1   тогда
                Имя     =   ФИО[1];
            КонецЕсли;
            Если ФИО.Количество()   >   2   тогда
                Отчество=   ФИО[2];
            КонецЕсли;
            // ФИО
            ПерваяСтраницаТ2.Параметры.Фамилия                  =   Фамилия;
            ПерваяСтраницаТ2.Параметры.Имя                      =   Имя;
            ПерваяСтраницаТ2.Параметры.Отчество                 =   Отчество;
        КонецЕсли;
        ПерваяСтраницаТ2.Параметры.ПерваяБукваФамилии = Лев(ПерваяСтраницаТ2.Параметры.Фамилия, 1);
        МестоРождения = РегламентированнаяОтчетность.ПредставлениеМестаРождения(ВыборкаРезультата.МестоРождения);
        ПерваяСтраницаТ2.Параметры.МестоРождения = СтрЗаменить(МестоРождения, "Населенный пункт: ", "");
        ПерваяСтраницаТ2.Параметры.ДатаАктуальности         = ДатаАктуальности;

        // ПАСПОРТ
        Если ВыборкаРезультата.ВидДокумента <> Null Тогда
            Если ВыборкаРезультата.ВидДокументаСсылка <> Справочники.ДокументыУдостоверяющиеЛичность.ИМНС21 И
                ВыборкаРезультата.ВидДокументаСсылка <> Справочники.ДокументыУдостоверяющиеЛичность.ИМНС01 Тогда
                ВтораяСтраницаТ2.Параметры.ДатаВыдачи = "";
                ВтораяСтраницаТ2.Параметры.ДругойДокумент = ?(ЗначениеЗаполнено(ВыборкаРезультата.ВидДокумента),ВыборкаРезультата.ВидДокумента,"<вид документа не указан>") +
                " №" + ?(ЗначениеЗаполнено(ВыборкаРезультата.ДокументНомер),ВыборкаРезультата.ДокументНомер + " ","<номер документа не указан>") + ?(ЗначениеЗаполнено(ВыборкаРезультата.ДокументСерия),ВыборкаРезультата.ДокументСерия,"") + "; выдан: " + ?(ЗначениеЗаполнено(СОКРЛП(ВыборкаРезультата.ДокументКемВыдан)),СОКРЛП(ВыборкаРезультата.ДокументКемВыдан),"<не указано> ") + " "+ Формат(ВыборкаРезультата.ДатаВыдачи,"ДЛФ=DD");
            Иначе
                ВтораяСтраницаТ2.Параметры.ВидДокумента = " серия " + ?(ЗначениеЗаполнено(ВыборкаРезультата.ДокументСерия),ВыборкаРезультата.ДокументСерия,"") + "  № " + ?(ЗначениеЗаполнено(ВыборкаРезультата.ДокументНомер),ВыборкаРезультата.ДокументНомер + " ","");
                ВтораяСтраницаТ2.Параметры.ДатаВыдачи = Формат(ВыборкаРезультата.ДатаВыдачи, "ДФ=dd.MM.yyyy");
                ВтораяСтраницаТ2.Параметры.КемВыданДокумент = ?(ЗначениеЗаполнено(СОКРЛП(ВыборкаРезультата.ДокументКемВыдан)), СОКРЛП(ВыборкаРезультата.ДокументКемВыдан),"") + ?(ЗначениеЗаполнено(ВыборкаРезультата.ДокументКодПодразделения)," № подразделения " + ВыборкаРезультата.ДокументКодПодразделения,"");
            КонецЕсли;
        КонецЕсли;

        // АДРЕСА
        Если ЗначениеЗаполнено(ВыборкаРезультата.ИндексАдресФактический) Тогда
            ВтораяСтраницаТ2.Параметры.АдресФактический =   СтрЗаменить(ВыборкаРезультата.АдресФактический,ВыборкаРезультата.ИндексАдресФактический + ",","");
        КонецЕсли;
        Если ЗначениеЗаполнено(ВыборкаРезультата.ИндексАдресПоПаспорту) Тогда
            ВтораяСтраницаТ2.Параметры.АдресПоПаспорту  =   СтрЗаменить(ВыборкаРезультата.АдресПоПаспорту,ВыборкаРезультата.ИндексАдресПоПаспорту + ",","");
        КонецЕсли;

        // Воинский учет
        ВтораяСтраницаТ2.Параметры.КатегорияЗапаса = Лев(ВтораяСтраницаТ2.Параметры.КатегорияЗапаса,1);
        ВтораяСтраницаТ2.Параметры.Годность = Лев(ВтораяСтраницаТ2.Параметры.Годность,1);
    Иначе
        Запрос.УстановитьПараметр("ОрганизацияПриема", Справочники.Организации.ПустаяСсылка());
    КонецЕсли;

    //ЗНАНИЕ ЯЗЫКА
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   ФизическиеЛицаЗнаниеЯзыков.Ссылка КАК ФизЛицо,
    |   ФизическиеЛицаЗнаниеЯзыков.СтепеньЗнанияЯзыка.Наименование КАК СтепеньЗнанияЯзыка,
    |   ФизическиеЛицаЗнаниеЯзыков.Язык.Наименование КАК Язык,
    |   ФизическиеЛицаЗнаниеЯзыков.Язык.Код КАК ЯзыкКодПоОКИН
    |ИЗ
    |   Справочник.ФизическиеЛица.ЗнаниеЯзыков КАК ФизическиеЛицаЗнаниеЯзыков
    |ГДЕ
    |   ФизическиеЛицаЗнаниеЯзыков.Ссылка = &Физлицо
    |
    |УПОРЯДОЧИТЬ ПО
    |   ФизическиеЛицаЗнаниеЯзыков.НомерСтроки";

    ИностраныйЯзык = Запрос.Выполнить().Выбрать();

    ИностраныйЯзык.Сбросить();
    инд =   0;
    Пока ИностраныйЯзык.НайтиСледующий(физлицо) Цикл
        инд =   1   +   инд;
        ПерваяСтраницаТ2.Параметры["НаименованиеЯзыка"+инд]     =   ИностраныйЯзык.Язык;
        ПерваяСтраницаТ2.Параметры["СтепеньЗнанияЯзыка"+инд]    =   ИностраныйЯзык.СтепеньЗнанияЯзыка;
        ПерваяСтраницаТ2.Параметры["ЯзыкКодПоОКИН"+инд]         =   ИностраныйЯзык.ЯзыкКодПоОКИН;
        Если инд = 2 Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;

    // ОБРАЗОВАНИЕ
    СписокПослеВузовскоеОбразование =   Новый СписокЗначений;
    СписокПослеВузовскоеОбразование.Добавить(Справочники.ВидыОбразованияФизЛиц.АспирантураОрдинатураАдъюнктура);
    СписокПослеВузовскоеОбразование.Добавить(Справочники.ВидыОбразованияФизЛиц.Докторантура);
    ПослевузовскоеОбразование = Справочники.ВидыОбразованияФизЛиц.НайтиПоНаименованию("Послевузовское образование");
    Если ЗначениеЗаполнено(ПослевузовскоеОбразование) Тогда
        СписокПослеВузовскоеОбразование.Добавить(ПослевузовскоеОбразование);
    КонецЕсли;

    Запрос.УстановитьПараметр("СписокПослеВузовскоеОбразование",    СписокПослеВузовскоеОбразование);



    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   ФизическиеЛицаОбразование.Ссылка КАК ФизЛицо,
    |   ФизическиеЛицаОбразование.ВидОбразования.Наименование КАК ВидОбразования,
    |   ФизическиеЛицаОбразование.Специальность.Наименование КАК Специальность,
    |   ФизическиеЛицаОбразование.УчебноеЗаведение.Наименование КАК УчебноеЗаведение,
    |   ВЫБОР
    |       КОГДА ФизическиеЛицаОбразование.ВидОбразования В (&СписокПослеВузовскоеОбразование)
    |           ТОГДА 2
    |       ИНАЧЕ 1
    |   КОНЕЦ КАК ПорядокОбразования,
    |   ФизическиеЛицаОбразование.ВидОбразования.Код КАК ОбразованиеКодПоОКИН,
    |   ФизическиеЛицаОбразование.ГодОкончания,
    |   ФизическиеЛицаОбразование.Диплом,
    |   ФизическиеЛицаОбразование.Квалификация,
    |   ФизическиеЛицаОбразование.Специальность.Код КАК КодПоОКСО
    |ИЗ
    |   Справочник.ФизическиеЛица.Образование КАК ФизическиеЛицаОбразование
    |ГДЕ
    |   ФизическиеЛицаОбразование.Ссылка = &Физлицо
    |
    |УПОРЯДОЧИТЬ ПО
    |   ПорядокОбразования";

    Образование = Запрос.Выполнить().Выбрать();
    Образование.Сбросить();
    НомерОбразованияВВУЗЕ = 0;
    Пока Образование.НайтиСледующий(физлицо) Цикл

        // Для вузовского образования отводится 2 строки
        Если (Образование.ПорядокОбразования = 1) тогда

            НомерОбразованияВВУЗЕ = НомерОбразованияВВУЗЕ + 1;

            Если  (НомерОбразованияВВУЗЕ >2 ) Тогда
                Продолжить;
            КонецЕсли;

            Если    НомерОбразованияВВУЗЕ = 1   тогда
                ПерваяСтраницаТ2.Параметры["Образование1"]              =   Образование.ВидОбразования;
                ПерваяСтраницаТ2.Параметры["ОбразованиеКодПоОКИН1"]     =   Образование.ОбразованиеКодПоОКИН;
            Иначе
                ПерваяСтраницаТ2.Параметры["Образование1"]              =   "" + ПерваяСтраницаТ2.Параметры["Образование1"] + ", " +    Образование.ВидОбразования;
            КонецЕсли;

            ПерваяСтраницаТ2.Параметры["ОбразовательноеУчреждение"+НомерОбразованияВВУЗЕ]   =   Образование.УчебноеЗаведение;
            ПерваяСтраницаТ2.Параметры["ДипломСерияНомер"+НомерОбразованияВВУЗЕ]            =   Образование.Диплом;
            ПерваяСтраницаТ2.Параметры["ГодОкончания"+НомерОбразованияВВУЗЕ]                =   Формат(Образование.ГодОкончания, "ЧГ=");
            ПерваяСтраницаТ2.Параметры["КвалификацияПоДиплому"+НомерОбразованияВВУЗЕ]       =   Образование.Квалификация;
            ПерваяСтраницаТ2.Параметры["СпециальностьПоДиплому"+НомерОбразованияВВУЗЕ]      =   Образование.Специальность;
            ПерваяСтраницаТ2.Параметры["КодПоОКСО"+НомерОбразованияВВУЗЕ]       =   Образование.КодПоОКСО;

        Иначе// Послевузовское образование

            ПерваяСтраницаТ2.Параметры["Образование3"]                  =   Образование.ВидОбразования;
            ПерваяСтраницаТ2.Параметры["ОбразованиеКодПоОКИН3"]         =   Образование.ОбразованиеКодПоОКИН;
            ПерваяСтраницаТ2.Параметры["ОбразовательноеУчреждение3"]    =   Образование.УчебноеЗаведение;
            ПерваяСтраницаТ2.Параметры["ДипломСерияНомер3"]             =   Образование.Диплом;
            ПерваяСтраницаТ2.Параметры["ГодОкончания3"]                 =   Формат(Образование.ГодОкончания, "ЧГ=");
            ПерваяСтраницаТ2.Параметры["СпециальностьПоДиплому3"]       =   Образование.Специальность;
            ПерваяСтраницаТ2.Параметры["КодПоОКСО3"]                    =   Образование.КодПоОКСО;

            // Вывод сведений об образовании на этом заканчивается
            Прервать;
        КонецЕсли;

    КонецЦикла;

    // СОСТАВ СЕМЬИ
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   ФизическиеЛицаСоставСемьи.Ссылка КАК ФизЛицо,
    |   ФизическиеЛицаСоставСемьи.Имя КАК Родственник,
    |   ФизическиеЛицаСоставСемьи.СтепеньРодства.Наименование КАК СтепеньРодства,
    |   ФизическиеЛицаСоставСемьи.ДатаРождения
    |ИЗ
    |   Справочник.ФизическиеЛица.СоставСемьи КАК ФизическиеЛицаСоставСемьи
    |ГДЕ
    |   ФизическиеЛицаСоставСемьи.Ссылка = &Физлицо";

    СоставСемьи = Запрос.Выполнить().Выбрать();
    СоставСемьи.Сбросить();
    инд =   0;
    Пока СоставСемьи.НайтиСледующий(ФизЛицо) Цикл
        инд = 1 + инд;
        Если инд >= 7 тогда
            Прервать;
        КонецЕсли;
        ВтораяСтраницаТ2.Параметры["СтепеньРодства"+инд]            =   СоставСемьи.СтепеньРодства;
        ВтораяСтраницаТ2.Параметры["ФИОРодственника"+инд]           =   СоставСемьи.Родственник;
        ВтораяСтраницаТ2.Параметры["ГодРожденияРодственника"+инд]   =   Формат(СоставСемьи.ДатаРождения, "ДФ=yyyy");

    КонецЦикла;


    // Профессии
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   ФизическиеЛицаПрофессии.Ссылка КАК ФизЛицо,
    |   ФизическиеЛицаПрофессии.Профессия.Код КАК КодПоОКПДТР,
    |   ФизическиеЛицаПрофессии.Профессия.Наименование КАК Профессия
    |ИЗ
    |   Справочник.ФизическиеЛица.Профессии КАК ФизическиеЛицаПрофессии
    |ГДЕ
    |   ФизическиеЛицаПрофессии.Ссылка В (&Физлицо)
    |
    |УПОРЯДОЧИТЬ ПО
    |   ФизическиеЛицаПрофессии.НомерСтроки";

    Профессии = Запрос.Выполнить().Выбрать();
    инд =   0;
    Профессии.Сбросить();

    Пока Профессии.НайтиСледующий(физлицо) И Инд <= 1 Цикл
        инд = 1 + инд;
        ПерваяСтраницаТ2.Параметры["Профессия"+инд]   = Профессии.Профессия;
        ПерваяСтраницаТ2.Параметры["КодПоОКПДТР"+инд] = Профессии.КодПоОКПДТР;
    КонецЦикла;

    // ОТПУСКА
    СписокОтпусков = Новый Массив;
    СписокОтпусков.Добавить(Перечисления.СостоянияРаботникаОрганизации.ОтпускЕжегодный);
    СписокОтпусков.Добавить(Перечисления.СостоянияРаботникаОрганизации.ОтпускБезСохраненияЗарплаты);
    СписокОтпусков.Добавить(Перечисления.СостоянияРаботникаОрганизации.ОтпускУчебный);
    СписокОтпусков.Добавить(Перечисления.СостоянияРаботникаОрганизации.ОтпускУчебныйНеоплачиваемый);
    СписокОтпусков.Добавить(Перечисления.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком);
    Запрос.УстановитьПараметр("СписокОтпусков", СписокОтпусков);

    Запрос.Текст    =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   ОтпускаРаботника.ДатаС КАК ДатаС,
    |   ОтпускаРаботника.ДатаПо КАК ДатаПо,
    |   ВЫБОР
    |       КОГДА ОтпускаРаботника.ПричинаОтсутствия = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускЕжегодный)
    |           ТОГДА ""Ежегодный""
    |       КОГДА ОтпускаРаботника.ПричинаОтсутствия = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускБезСохраненияЗарплаты)
    |           ТОГДА ""Без сохранения заработной платы""
    |       КОГДА ОтпускаРаботника.ПричинаОтсутствия = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускУчебный)
    |           ТОГДА ""Учебный оплачиваемый""
    |       КОГДА ОтпускаРаботника.ПричинаОтсутствия = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускУчебныйНеоплачиваемый)
    |           ТОГДА ""Учебный неоплачиваемый""
    |       КОГДА ОтпускаРаботника.ПричинаОтсутствия = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком)
    |           ТОГДА ""По уходу за ребенком""
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК ПричинаОтсутствия,
    |   ОтпускаРаботника.ДополнительныйОтпуск,
    |   ОтпускаРаботника.ДатаНачалаДоп,
    |   ОтпускаРаботника.ДатаОкончанияДоп,
    |   ОтпускаРаботника.Регистратор,
    |   ОтпускаРаботника.ДатаПриказа,
    |   ОтпускаРаботника.НомерПриказа,
    |   ОтпускаРаботника.Продолжительность,
    |   ОтпускаРаботника.ПродолжительностьДоп,
    |   ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    |   ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Основание КАК Основание,
    |   ОтпускаРаботника.Сотрудник КАК Сотрудник
    |ИЗ
    |   (ВЫБРАТЬ
    |       ОтпускаРаботника.ДатаС КАК ДатаС,
    |       ОтпускаРаботника.ДатаПо КАК ДатаПо,
    |       ОтпускаРаботника.ПричинаОтсутствия КАК ПричинаОтсутствия,
    |       ОтпускаРаботника.ДополнительныйОтпуск КАК ДополнительныйОтпуск,
    |       ОтпускаРаботника.ДатаНачалаДоп КАК ДатаНачалаДоп,
    |       ОтпускаРаботника.ДатаОкончанияДоп КАК ДатаОкончанияДоп,
    |       ОтпускаРаботника.Регистратор КАК Регистратор,
    |       ОтпускаРаботника.ДатаПриказа КАК ДатаПриказа,
    |       ОтпускаРаботника.НомерСтроки КАК НомерСтроки,
    |       ОтпускаРаботника.НомерПриказа КАК НомерПриказа,
    |       ВЫБОР
    |           КОГДА ОтпускаРаботника.ПричинаОтсутствия <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускЕжегодный)
    |               ТОГДА РАЗНОСТЬДАТ(ОтпускаРаботника.ДатаС, ОтпускаРаботника.ДатаПо, ДЕНЬ) + 1
    |           ИНАЧЕ ЕСТЬNULL(СУММА(ВЫБОР
    |                           КОГДА РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ ОтпускаРаботника.ДатаС И ОтпускаРаботника.ДатаПо
    |                               ТОГДА РегламентированныйПроизводственныйКалендарь.КалендарныеДни
    |                           ИНАЧЕ 0
    |                       КОНЕЦ), 0)
    |       КОНЕЦ КАК Продолжительность,
    |       ВЫБОР
    |           КОГДА ОтпускаРаботника.ПричинаОтсутствия <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускЕжегодный)
    |               ТОГДА 0
    |           ИНАЧЕ ЕСТЬNULL(СУММА(ВЫБОР
    |                           КОГДА РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ ОтпускаРаботника.ДатаНачалаДоп И ОтпускаРаботника.ДатаОкончанияДоп
    |                               ТОГДА РегламентированныйПроизводственныйКалендарь.КалендарныеДни
    |                           ИНАЧЕ 0
    |                       КОНЕЦ), 0)
    |       КОНЕЦ КАК ПродолжительностьДоп,
    |       ОтпускаРаботника.Сотрудник КАК Сотрудник
    |   ИЗ
    |       (ВЫБРАТЬ
    |           ПериодыОтпуска.ДатаС КАК ДатаС,
    |           ВЫБОР
    |               КОГДА ПериодыОтпуска.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускЕжегодный)
    |                   ТОГДА ВЫБОР
    |                           КОГДА ОтпускаОрганизацииРаботники.ДатаНачалаДоп = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |                               ТОГДА ПериодыОтпуска.ДатаПо
    |                           ИНАЧЕ ВЫБОР
    |                                   КОГДА ПериодыОтпуска.ДатаПо < ОтпускаОрганизацииРаботники.ДатаНачалаДоп
    |                                       ТОГДА ПериодыОтпуска.ДатаПо
    |                                   ИНАЧЕ ДОБАВИТЬКДАТЕ(ОтпускаОрганизацииРаботники.ДатаНачалаДоп, ДЕНЬ, -1)
    |                               КОНЕЦ
    |                       КОНЕЦ
    |               ИНАЧЕ ПериодыОтпуска.ДатаПо
    |           КОНЕЦ КАК ДатаПо,
    |           ПериодыОтпуска.Состояние КАК ПричинаОтсутствия,
    |           ОтпускаОрганизацииРаботники.ВидДополнительногоОтпуска.Наименование КАК ДополнительныйОтпуск,
    |           ОтпускаОрганизацииРаботники.ДатаНачалаДоп КАК ДатаНачалаДоп,
    |           ВЫБОР
    |               КОГДА ОтпускаОрганизацииРаботники.ДатаНачалаДоп = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |                   ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |               ИНАЧЕ ПериодыОтпуска.ДатаПо
    |           КОНЕЦ КАК ДатаОкончанияДоп,
    |           ОтпускаОрганизацииРаботники.НомерСтроки КАК НомерСтроки,
    |           ПериодыОтпуска.Регистратор КАК Регистратор,
    |           ПериодыОтпуска.Сотрудник КАК Сотрудник,
    |           ПериодыОтпуска.Регистратор.Дата КАК ДатаПриказа,
    |           ПериодыОтпуска.Регистратор.Номер КАК НомерПриказа
    |       ИЗ
    |           (ВЫБРАТЬ
    |               ДатыУходаВОтпуск.Период КАК ДатаС,
    |               ДОБАВИТЬКДАТЕ(ВЫБОР
    |                       КОГДА ДатыУходаВОтпуск.ПериодЗавершения >= МИНИМУМ(ДатыВозвращенияИзОтпуска.Период)
    |                               ИЛИ ДатыУходаВОтпуск.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |                           ТОГДА МИНИМУМ(ДатыВозвращенияИзОтпуска.Период)
    |                       ИНАЧЕ ДатыУходаВОтпуск.ПериодЗавершения
    |                   КОНЕЦ, ДЕНЬ, -1) КАК ДатаПо,
    |               ДатыУходаВОтпуск.ПервичныйДокумент КАК Регистратор,
    |               ДатыУходаВОтпуск.Сотрудник КАК Сотрудник,
    |               ДатыУходаВОтпуск.Состояние КАК Состояние
    |           ИЗ
    |               РегистрСведений.СостояниеРаботниковОрганизаций КАК ДатыУходаВОтпуск
    |                   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК ДатыВозвращенияИзОтпуска
    |                   ПО ДатыУходаВОтпуск.Период < ДатыВозвращенияИзОтпуска.Период
    |                       И ДатыУходаВОтпуск.Сотрудник = ДатыВозвращенияИзОтпуска.Сотрудник
    |           ГДЕ
    |               ДатыУходаВОтпуск.Период <= &ДатаАктуальности
    |               И ДатыУходаВОтпуск.Состояние В(&СписокОтпусков)
    |               И ДатыУходаВОтпуск.Сотрудник В(&Сотрудник)
    |
    |           СГРУППИРОВАТЬ ПО
    |               ДатыУходаВОтпуск.Период,
    |               ДатыУходаВОтпуск.ПериодЗавершения,
    |               ДатыУходаВОтпуск.ПервичныйДокумент,
    |               ДатыУходаВОтпуск.Сотрудник,
    |               ДатыУходаВОтпуск.Состояние) КАК ПериодыОтпуска
    |               ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацииРаботники
    |               ПО ПериодыОтпуска.ДатаС = ОтпускаОрганизацииРаботники.ДатаНачала
    |                   И ПериодыОтпуска.Регистратор = ОтпускаОрганизацииРаботники.Ссылка
    |                   И ПериодыОтпуска.Сотрудник = ОтпускаОрганизацииРаботники.Сотрудник
    |                   И ((НЕ ОтпускаОрганизацииРаботники.Сторно))) КАК ОтпускаРаботника
    |           ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
    |           ПО (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ ОтпускаРаботника.ДатаС И ОтпускаРаботника.ДатаПо
    |                   ИЛИ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ ОтпускаРаботника.ДатаНачалаДоп И ОтпускаРаботника.ДатаОкончанияДоп)
    |               И (РегламентированныйПроизводственныйКалендарь.ВидДня <> ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Праздник))
    |
    |   СГРУППИРОВАТЬ ПО
    |       ОтпускаРаботника.ДатаС,
    |       ОтпускаРаботника.ДатаПо,
    |       ОтпускаРаботника.ПричинаОтсутствия,
    |       ОтпускаРаботника.ДополнительныйОтпуск,
    |       ОтпускаРаботника.ДатаНачалаДоп,
    |       ОтпускаРаботника.ДатаОкончанияДоп,
    |       ОтпускаРаботника.Регистратор,
    |       ОтпускаРаботника.ДатаПриказа,
    |       ОтпускаРаботника.НомерСтроки,
    |       ОтпускаРаботника.НомерПриказа,
    |       ОтпускаРаботника.Сотрудник) КАК ОтпускаРаботника
    |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |       ПО ОтпускаРаботника.Регистратор = ОтпускаОрганизацийРаботникиОрганизации.Ссылка
    |           И ОтпускаРаботника.НомерСтроки = ОтпускаОрганизацийРаботникиОрганизации.НомерСтроки
    |           И ((НЕ ОтпускаОрганизацийРаботникиОрганизации.Сторно))
    |
    |УПОРЯДОЧИТЬ ПО
    |   Сотрудник,
    |   ДатаС,
    |   ДатаПо";

    Отпуска = Запрос.Выполнить().Выбрать();
    ПоместилисьВсеОтпуска  = Истина;
    ВывестиТолькоДопОтпуск = Ложь;
    инд =   0;
    Отпуска.Сбросить();
    Пока Отпуска.НайтиСледующий(ссылка) Цикл

        Если инд >= 14 Тогда
            ПоместилисьВсеОтпуска = ложь;
            Прервать
        КонецЕсли;

        Если НЕ ЗначениеЗаполнено(Отпуска.ДатаНачалаДоп) или  Отпуска.ДатаС < Отпуска.ДатаНачалаДоп Тогда

            инд =   инд + 1;

            // Вид отпуска
            ЧетвертаяСтраницаТ2.Параметры["ВидОтпуска"+инд]         =   Отпуска.ПричинаОтсутствия;

            // Период отпуска
            ЧетвертаяСтраницаТ2.Параметры["ДатаС"+инд]              =   Отпуска.ДатаС;
            ЧетвертаяСтраницаТ2.Параметры["ДатаПо"+инд]             =   Отпуска.ДатаПо;
            ЧетвертаяСтраницаТ2.Параметры["ДнейОтпуска"+инд]        =   Отпуска.Продолжительность;
            ЧетвертаяСтраницаТ2.Параметры["РабочийГодС"+инд]        =   Отпуска.РабочийГодС;
            ЧетвертаяСтраницаТ2.Параметры["РабочийГодПо"+инд]       =   Отпуска.РабочийГодПо;
            ЧетвертаяСтраницаТ2.Параметры["ОснованиеОтпуска"+инд]   =   "Пр.№ "+ СокрЛП(Отпуска.НомерПриказа) +" от " + Формат(Отпуска.ДатаПриказа, "ДФ=dd.MM.yyyy") + " " + Отпуска.Основание;

        КонецЕсли;

        Если ЗначениеЗаполнено(Отпуска.ДополнительныйОтпуск) и ЗначениеЗаполнено(Отпуска.ДатаНачалаДоп) и ЗначениеЗаполнено(Отпуска.ДатаОкончанияДоп) и Отпуска.ДатаНачалаДоп <= Отпуска.ДатаОкончанияДоп Тогда

            инд =   инд + 1;
            Если инд >= 14 Тогда
                ПоместилисьВсеОтпуска = ложь;
                ВывестиТолькоДопОтпуск = Истина;
                Прервать
            КонецЕсли;

            // Вид отпуска
            ЧетвертаяСтраницаТ2.Параметры["ВидОтпуска"+инд]         =   Отпуска.ДополнительныйОтпуск;

            // Период отпуска
            ЧетвертаяСтраницаТ2.Параметры["ДатаС"+инд]              =   Отпуска.ДатаНачалаДоп;
            ЧетвертаяСтраницаТ2.Параметры["ДатаПо"+инд]             =   Отпуска.ДатаОкончанияДоп;
            ЧетвертаяСтраницаТ2.Параметры["ДнейОтпуска"+инд]        =   Отпуска.ПродолжительностьДоп;
            ЧетвертаяСтраницаТ2.Параметры["РабочийГодС"+инд]        =   Отпуска.РабочийГодС;
            ЧетвертаяСтраницаТ2.Параметры["РабочийГодПо"+инд]       =   Отпуска.РабочийГодПо;
            ЧетвертаяСтраницаТ2.Параметры["ОснованиеОтпуска"+инд]   =   "Пр.№ "+ СокрЛП(Отпуска.НомерПриказа) +" от " + Формат(Отпуска.ДатаПриказа, "ДФ=dd.MM.yyyy") + " " + Отпуска.Основание;

        КонецЕсли;


    КонецЦикла;

    // ПРИЕМ И ПЕРЕВОДЫ НА ДРУГУЮ РАБОТУ
    РеглВалюта = Константы.ВалютаРегламентированногоУчета.Получить();
    Запрос.УстановитьПараметр("РеглВалюта",РеглВалюта);

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   Работники.Период КАК Период,
    |   Работники.Сотрудник КАК Сотрудник,
    |   Работники.ПричинаИзмененияСостояния КАК ПричинаИзмененияСостояния,
    |   Работники.Должность.Наименование КАК Должность,
    |   Работники.ЗанимаемыхСтавок КАК ЗанимаемыхСтавок,
    |   ВЫБОР
    |       КОГДА Работники.ОбособленноеПодразделение = РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделение
    |           ТОГДА Работники.ПодразделениеОрганизации.Наименование
    |       ИНАЧЕ Работники.ПодразделениеОрганизации.Наименование + "" ("" + Работники.ОбособленноеПодразделение.Наименование + "")""
    |   КОНЕЦ КАК ПодразделениеОрганизации,
    |   Работники.ПервичныйДокумент КАК Регистратор,
    |   Работники.ПервичныйДокумент.Дата КАК ДатаПриказа,
    |   Работники.ПервичныйДокумент.Номер КАК НомерПриказа
    |ПОМЕСТИТЬ ВТПеремещенияРаботника
    |ИЗ
    |   РегистрСведений.РаботникиОрганизаций КАК Работники
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    |               &ДатаАктуальности,
    |               Сотрудник = &Сотрудник
    |                   И ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)) КАК РаботникиОрганизацийСрезПоследних
    |       ПО Работники.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
    |ГДЕ
    |   Работники.Сотрудник = &Сотрудник
    |   И Работники.Период <= &ДатаАктуальности
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    |   РаботникиОрганизации.ПериодЗавершения,
    |   РаботникиОрганизации.Сотрудник,
    |   РаботникиОрганизации.ПричинаИзмененияСостоянияЗавершения,
    |   РаботникиОрганизации.ДолжностьЗавершения.Наименование,
    |   РаботникиОрганизации.ЗанимаемыхСтавокЗавершения,
    |   ВЫБОР
    |       КОГДА РаботникиОрганизации.ОбособленноеПодразделениеЗавершения = РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделение
    |           ТОГДА РаботникиОрганизации.ПодразделениеОрганизацииЗавершения.Наименование
    |       ИНАЧЕ РаботникиОрганизации.ПодразделениеОрганизацииЗавершения.Наименование + "" ("" + РаботникиОрганизации.ОбособленноеПодразделениеЗавершения.Наименование + "")""
    |   КОНЕЦ,
    |   РаботникиОрганизации.ПервичныйДокумент,
    |   РаботникиОрганизации.ПервичныйДокумент.Дата,
    |   РаботникиОрганизации.ПервичныйДокумент.Номер
    |ИЗ
    |   РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизации
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ПериодыПерекрытия
    |       ПО (ПериодыПерекрытия.Период <= РаботникиОрганизации.ПериодЗавершения)
    |           И (ПериодыПерекрытия.Период > РаботникиОрганизации.Период)
    |           И (ПериодыПерекрытия.Сотрудник = РаботникиОрганизации.Сотрудник)
    |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    |               &ДатаАктуальности,
    |               Сотрудник = &Сотрудник
    |                   И ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)) КАК РаботникиОрганизацийСрезПоследних
    |       ПО РаботникиОрганизации.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
    |ГДЕ
    |   РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |   И РаботникиОрганизации.Сотрудник =&Сотрудник
    |   И ПериодыПерекрытия.Период ЕСТЬ NULL
    |   И РаботникиОрганизации.Период <= &ДатаАктуальности
    |
    |ИНДЕКСИРОВАТЬ ПО
    |   Период";

    Запрос.Выполнить();
    //ПеремещенияРаботникаТекст = "ВТПеремещенияРаботника";

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   Работники.Сотрудник КАК Сотрудник,
    |   Работники.Должность КАК Должность,
    |   Работники.ЗанимаемыхСтавок,
    |   Работники.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    |   ВЫБОР
    |       КОГДА Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    |           ТОГДА ДОБАВИТЬКДАТЕ(Работники.Период, ДЕНЬ, -1)
    |       ИНАЧЕ Работники.Период
    |   КОНЕЦ КАК ДатаПеревода,
    |   Работники.ПричинаИзмененияСостояния,
    |   Работники.ДатаПриказа КАК ДатаПриказа,
    |   Работники.НомерПриказа КАК НомерПриказа,
    |   УвольненияРаботники.СтатьяТКРФ.Наименование КАК ОснованиеУвольнения,
    |   УвольненияРаботники.ДатаУвольнения,
    |   УвольненияРаботники.Ссылка.Номер КАК НомерПриказаУвольнения,
    |   УвольненияРаботники.Ссылка.Дата КАК ДатаПриказаУвольнения,
    |   ПриемНаРаботуВОрганизациюРаботники.УсловияПриемаНаРаботу КАК ХарактерРаботы,
    |   ЕСТЬNULL(ПлановыеНачисленияРаботниковОрганизаций.ТребуетВводаТарифногоРазряда, ЛОЖЬ) КАК ТребуетВводаТарифногоРазряда,
    |   ЕСТЬNULL(ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд.Наименование, """") КАК ТарифныйРазряд,
    |   ЕСТЬNULL(ВЫБОР
    |           КОГДА ПлановыеНачисленияРаботниковОрганизаций.ТребуетВводаТарифногоРазряда
    |               ТОГДА РазмерыТарифныхРазрядов.Размер
    |           ИНАЧЕ ВЫБОР
    |                   КОГДА ЕСТЬNULL(ПлановыеНачисленияРаботниковОрганизаций.Размер, 0) = 0
    |                           И ЕСТЬNULL(РазмерыТарифныхРазрядов.Размер, 0) <> 0
    |                       ТОГДА РазмерыТарифныхРазрядов.Размер
    |                   ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.Размер
    |               КОНЕЦ
    |       КОНЕЦ, 0) КАК ТарифнаяСтавка,
    |   ЕСТЬNULL(ВЫБОР
    |           КОГДА ПлановыеНачисленияРаботниковОрганизаций.ТребуетВводаТарифногоРазряда
    |               ТОГДА РазмерыТарифныхРазрядов.Валюта.Наименование
    |           ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.Валюта.Наименование
    |       КОНЕЦ, """") КАК ИмяВалюты,
    |   ЕСТЬNULL(ВЫБОР
    |           КОГДА ПлановыеНачисленияРаботниковОрганизаций.ТребуетВводаТарифногоРазряда
    |               ТОГДА РазмерыТарифныхРазрядов.Валюта
    |           ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.Валюта
    |       КОНЕЦ, &РеглВалюта) КАК Валюта
    |ИЗ
    |   ВТПеремещенияРаботника КАК Работники
    |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК УвольненияРаботники
    |       ПО Работники.Сотрудник = УвольненияРаботники.Сотрудник
    |           И Работники.Регистратор = УвольненияРаботники.Ссылка
    |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботники
    |       ПО Работники.Сотрудник = ПриемНаРаботуВОрганизациюРаботники.Сотрудник
    |           И Работники.Регистратор = ПриемНаРаботуВОрганизациюРаботники.Ссылка
    |       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |           ВложенныйЗапрос.Сотрудник КАК Сотрудник,
    |           ВложенныйЗапрос.ДатаПеревода КАК ДатаПеревода,
    |           ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.ТребуетВводаТарифногоРазряда КАК ТребуетВводаТарифногоРазряда,
    |           ПлановыеНачисленияРаботниковОрганизаций.Валюта1 КАК Валюта,
    |           ВЫБОР
    |               КОГДА ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.ПроизвольнаяФормулаРасчета
    |                   ТОГДА ВЫБОР
    |                           КОГДА ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                                   И ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <= ВложенныйЗапрос.ДатаПеревода
    |                               ТОГДА ВЫБОР
    |                                       КОГДА Показатели.Показатель1.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                           ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд1Завершения
    |                                       КОГДА Показатели.Показатель2.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                           ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд2Завершения
    |                                       КОГДА Показатели.Показатель3.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                           ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд3Завершения
    |                                       КОГДА Показатели.Показатель4.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                           ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд4Завершения
    |                                       КОГДА Показатели.Показатель5.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                           ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд5Завершения
    |                                       КОГДА Показатели.Показатель6.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                           ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд6Завершения
    |                                       ИНАЧЕ 0
    |                                   КОНЕЦ
    |                           ИНАЧЕ ВЫБОР
    |                                   КОГДА Показатели.Показатель1.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд1
    |                                   КОГДА Показатели.Показатель2.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд2
    |                                   КОГДА Показатели.Показатель3.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд3
    |                                   КОГДА Показатели.Показатель4.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд4
    |                                   КОГДА Показатели.Показатель5.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд5
    |                                   КОГДА Показатели.Показатель6.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
    |                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд6
    |                                   ИНАЧЕ 0
    |                               КОНЕЦ
    |                       КОНЕЦ
    |               ИНАЧЕ ВЫБОР
    |                       КОГДА ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.ТребуетВводаТарифногоРазряда
    |                           ТОГДА ВЫБОР
    |                                   КОГДА ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                                           И ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <= ВложенныйЗапрос.ДатаПеревода
    |                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд1Завершения
    |                                   ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд1
    |                               КОНЕЦ
    |                       ИНАЧЕ ВЫБОР
    |                               КОГДА ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                                       И ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <= ВложенныйЗапрос.ДатаПеревода
    |                                   ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель1Завершения
    |                               ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.Показатель1
    |                           КОНЕЦ
    |                   КОНЕЦ
    |           КОНЕЦ КАК ТарифныйРазряд,
    |           ЕСТЬNULL(ВЫБОР
    |                   КОГДА ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <= ВложенныйЗапрос.ДатаПеревода
    |                           И ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |                       ТОГДА ВЫБОР
    |                               КОГДА ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаЗавершения.ТребуетВводаТарифногоРазряда
    |                                   ТОГДА 0
    |                               ИНАЧЕ ВЫБОР
    |                                       КОГДА ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.ПроизвольнаяФормулаРасчета
    |                                           ТОГДА ВЫБОР
    |                                                   КОГДА Показатели.Показатель1 В (&ТарифнаяСтавкаОклад)
    |                                                           ИЛИ Показатели.Показатель1.ТарифнаяСтавка
    |                                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель1Завершения
    |                                                   КОГДА Показатели.Показатель2 В (&ТарифнаяСтавкаОклад)
    |                                                           ИЛИ Показатели.Показатель2.ТарифнаяСтавка
    |                                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель2Завершения
    |                                                   КОГДА Показатели.Показатель3 В (&ТарифнаяСтавкаОклад)
    |                                                           ИЛИ Показатели.Показатель3.ТарифнаяСтавка
    |                                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель3Завершения
    |                                                   КОГДА Показатели.Показатель4 В (&ТарифнаяСтавкаОклад)
    |                                                           ИЛИ Показатели.Показатель4.ТарифнаяСтавка
    |                                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель4Завершения
    |                                                   КОГДА Показатели.Показатель5 В (&ТарифнаяСтавкаОклад)
    |                                                           ИЛИ Показатели.Показатель5.ТарифнаяСтавка
    |                                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель5Завершения
    |                                                   КОГДА Показатели.Показатель6 В (&ТарифнаяСтавкаОклад)
    |                                                           ИЛИ Показатели.Показатель6.ТарифнаяСтавка
    |                                                       ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель6Завершения
    |                                                   ИНАЧЕ 0
    |                                               КОНЕЦ
    |                                       ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.Показатель1Завершения
    |                                   КОНЕЦ
    |                           КОНЕЦ
    |                   ИНАЧЕ ВЫБОР
    |                           КОГДА ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.ТребуетВводаТарифногоРазряда
    |                               ТОГДА 0
    |                           ИНАЧЕ ВЫБОР
    |                                   КОГДА ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.ПроизвольнаяФормулаРасчета
    |                                       ТОГДА ВЫБОР
    |                                               КОГДА Показатели.Показатель1 В (&ТарифнаяСтавкаОклад)
    |                                                       ИЛИ Показатели.Показатель1.ТарифнаяСтавка
    |                                                   ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель1
    |                                               КОГДА Показатели.Показатель2 В (&ТарифнаяСтавкаОклад)
    |                                                       ИЛИ Показатели.Показатель2.ТарифнаяСтавка
    |                                                   ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель2
    |                                               КОГДА Показатели.Показатель3 В (&ТарифнаяСтавкаОклад)
    |                                                       ИЛИ Показатели.Показатель3.ТарифнаяСтавка
    |                                                   ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель3
    |                                               КОГДА Показатели.Показатель4 В (&ТарифнаяСтавкаОклад)
    |                                                       ИЛИ Показатели.Показатель4.ТарифнаяСтавка
    |                                                   ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель4
    |                                               КОГДА Показатели.Показатель5 В (&ТарифнаяСтавкаОклад)
    |                                                       ИЛИ Показатели.Показатель5.ТарифнаяСтавка
    |                                                   ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель5
    |                                               КОГДА Показатели.Показатель6 В (&ТарифнаяСтавкаОклад)
    |                                                       ИЛИ Показатели.Показатель6.ТарифнаяСтавка
    |                                                   ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Показатель6
    |                                               ИНАЧЕ 0
    |                                           КОНЕЦ
    |                                   ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.Показатель1
    |                               КОНЕЦ
    |                       КОНЕЦ
    |               КОНЕЦ, 0) КАК Размер
    |       ИЗ
    |           (ВЫБРАТЬ
    |               РаботникиОрганизаций.Период КАК ДатаПеревода,
    |               РаботникиОрганизаций.Сотрудник КАК Сотрудник,
    |               МАКСИМУМ(ПлановыеНачисленияРаботниковОрганизаций.Период) КАК Период
    |           ИЗ
    |               ВТПеремещенияРаботника КАК РаботникиОрганизаций
    |                   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
    |                   ПО РаботникиОрганизаций.Сотрудник = ПлановыеНачисленияРаботниковОрганизаций.Сотрудник
    |                       И РаботникиОрганизаций.Период >= ПлановыеНачисленияРаботниковОрганизаций.Период
    |           ГДЕ
    |               ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО
    |
    |           СГРУППИРОВАТЬ ПО
    |               РаботникиОрганизаций.Период,
    |               РаботникиОрганизаций.Сотрудник) КАК ВложенныйЗапрос
    |               ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
    |                   ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |                       МАКСИМУМ(ВЫБОР
    |                               КОГДА Показатели.НомерСтроки = 1
    |                                   ТОГДА Показатели.Показатель
    |                               ИНАЧЕ NULL
    |                           КОНЕЦ) КАК Показатель1,
    |                       МАКСИМУМ(ВЫБОР
    |                               КОГДА Показатели.НомерСтроки = 2
    |                                   ТОГДА Показатели.Показатель
    |                               ИНАЧЕ NULL
    |                           КОНЕЦ) КАК Показатель2,
    |                       МАКСИМУМ(ВЫБОР
    |                               КОГДА Показатели.НомерСтроки = 3
    |                                   ТОГДА Показатели.Показатель
    |                               ИНАЧЕ NULL
    |                           КОНЕЦ) КАК Показатель3,
    |                       МАКСИМУМ(ВЫБОР
    |                               КОГДА Показатели.НомерСтроки = 4
    |                                   ТОГДА Показатели.Показатель
    |                               ИНАЧЕ NULL
    |                           КОНЕЦ) КАК Показатель4,
    |                       МАКСИМУМ(ВЫБОР
    |                               КОГДА Показатели.НомерСтроки = 5
    |                                   ТОГДА Показатели.Показатель
    |                               ИНАЧЕ NULL
    |                           КОНЕЦ) КАК Показатель5,
    |                       МАКСИМУМ(ВЫБОР
    |                               КОГДА Показатели.НомерСтроки = 6
    |                                   ТОГДА Показатели.Показатель
    |                               ИНАЧЕ NULL
    |                           КОНЕЦ) КАК Показатель6,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Период КАК Период,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Организация КАК Организация,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаИзмерение КАК ВидРасчетаИзмерение,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ДокументОснование КАК ДокументОснование
    |                   ИЗ
    |                       РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
    |                           ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели
    |                           ПО (ВЫБОР
    |                                   КОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения <= ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Период
    |                                           И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                                       ТОГДА ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаЗавершения
    |                                   ИНАЧЕ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета
    |                               КОНЕЦ = Показатели.Ссылка)
    |                   ГДЕ
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета.ЗачетОтработанногоВремени
    |                       И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО
    |
    |                   СГРУППИРОВАТЬ ПО
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Период,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ДокументОснование,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Организация,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчетаИзмерение,
    |                       ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник) КАК Показатели
    |                   ПО ПлановыеНачисленияРаботниковОрганизаций.Период = Показатели.Период
    |                       И ПлановыеНачисленияРаботниковОрганизаций.Сотрудник = Показатели.Сотрудник
    |                       И ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение = Показатели.ВидРасчетаИзмерение
    |                       И ПлановыеНачисленияРаботниковОрганизаций.Организация = Показатели.Организация
    |               ПО ВложенныйЗапрос.Сотрудник = ПлановыеНачисленияРаботниковОрганизаций.Сотрудник
    |                   И ВложенныйЗапрос.Период = ПлановыеНачисленияРаботниковОрганизаций.Период
    |       ГДЕ
    |           ПлановыеНачисленияРаботниковОрганизаций.ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО) КАК ПлановыеНачисленияРаботниковОрганизаций
    |           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |               ВложенныйЗапрос.ДатаПеревода КАК ДатаПеревода,
    |               РазмерТарифныхСтавок.Валюта КАК Валюта,
    |               РазмерТарифныхСтавок.ТарифныйРазряд КАК ТарифныйРазряд,
    |               РазмерТарифныхСтавок.Размер КАК Размер
    |           ИЗ
    |               (ВЫБРАТЬ
    |                   РаботникиОрганизаций.Период КАК ДатаПеревода,
    |                   РазмерТарифныхСтавок.ТарифныйРазряд КАК ТарифныйРазряд,
    |                   МАКСИМУМ(РазмерТарифныхСтавок.Период) КАК Период
    |               ИЗ
    |                   ВТПеремещенияРаботника КАК РаботникиОрганизаций
    |                       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок КАК РазмерТарифныхСтавок
    |                       ПО РаботникиОрганизаций.Период >= РазмерТарифныхСтавок.Период
    |
    |               СГРУППИРОВАТЬ ПО
    |                   РаботникиОрганизаций.Период,
    |                   РазмерТарифныхСтавок.ТарифныйРазряд) КАК ВложенныйЗапрос
    |                   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок КАК РазмерТарифныхСтавок
    |                   ПО ВложенныйЗапрос.ТарифныйРазряд = РазмерТарифныхСтавок.ТарифныйРазряд
    |                       И ВложенныйЗапрос.Период = РазмерТарифныхСтавок.Период) КАК РазмерыТарифныхРазрядов
    |           ПО ПлановыеНачисленияРаботниковОрганизаций.ДатаПеревода = РазмерыТарифныхРазрядов.ДатаПеревода
    |               И ПлановыеНачисленияРаботниковОрганизаций.ТарифныйРазряд = РазмерыТарифныхРазрядов.ТарифныйРазряд
    |       ПО Работники.Период = ПлановыеНачисленияРаботниковОрганизаций.ДатаПеревода
    |           И Работники.Сотрудник = ПлановыеНачисленияРаботниковОрганизаций.Сотрудник
    |
    |УПОРЯДОЧИТЬ ПО
    |   ДатаПеревода";

    ВыборкаРезультата   =   Запрос.Выполнить().Выбрать();
    инд =   0;
    ЧетвертаяСтраницаТ2.Параметры.Приказ = "Приказ (распоряжение) № ____________ от   ""____"" _______________ 20___г. ";
    ЧетвертаяСтраницаТ2.Параметры.ДатаУвольнения = '00010101';

    Пока ВыборкаРезультата.Следующий()  Цикл

        Если ВыборкаРезультата.ПричинаИзмененияСостояния = Перечисления.ПричиныИзмененияСостояния.Увольнение тогда

            //Встретили увольнение документом "Прием на работу" или "Увольнение"
            ЧетвертаяСтраницаТ2.Параметры["ОснованиеУвольнения"]    =   ВыборкаРезультата.ОснованиеУвольнения;
            ЧетвертаяСтраницаТ2.Параметры["ДатаУвольнения"]         =   ВыборкаРезультата.ДатаУвольнения;
            ЧетвертаяСтраницаТ2.Параметры["Приказ"] = "Приказ (распоряжение) № """ + СокрЛП(ВыборкаРезультата.НомерПриказаУвольнения) +  """ от " + Формат(ВыборкаРезультата.ДатаПриказаУвольнения, "ДЛФ=DD");

        Иначе// Кадровое назначение

            ОписаниеТарифнаяСтавка = Формат(ВыборкаРезультата.ТарифнаяСтавка,"ЧЦ=15; ЧДЦ=2; ЧН=' '");

            инд = инд + 1;

            ТретьяСтраницаТ2.Параметры["ДатаПеревода"+инд]          = ВыборкаРезультата.ДатаПеревода;
            ТретьяСтраницаТ2.Параметры["ПодразделениеПеревода"+инд] = ВыборкаРезультата.ПодразделениеОрганизации;
            ТретьяСтраницаТ2.Параметры["ДолжностьПеревода"+инд]     = ВыборкаРезультата.Должность;
            ТретьяСтраницаТ2.Параметры["ТарифнаяСтавка"+инд]        = ОписаниеТарифнаяСтавка;
            ТретьяСтраницаТ2.Параметры["ОснованиеПеревода"+инд]     = "Пр.№ "+ СокрЛП(ВыборкаРезультата.НомерПриказа) +" от " + Формат(ВыборкаРезультата.ДатаПриказа, "ДФ=dd.MM.yyyy");

        КонецЕсли;

    КонецЦикла;

    // Вывод страниц документа
    ТабДокумент.Присоединить(ПерваяСтраницаТ2);
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    ТабДокумент.Присоединить(ВтораяСтраницаТ2);
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    ТабДокумент.Присоединить(ТретьяСтраницаТ2);
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    ТабДокумент.Присоединить(ЧетвертаяСтраницаТ2);

    //Параметры документа
    ТабДокумент.ПолеСлева   = 0;
    ТабДокумент.ПолеСправа  = 0;
    ТабДокумент.ОриентацияСтраницы  = ОриентацияСтраницы.Портрет;

    //ТабДокумент.вывести(новый ТабличныйДокумент);
    Если ВыводитьНаПечать Тогда
        Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент,,, "Данные по: " + Наименование,,ТабДокумент);
    КонецЕсли;

КонецФункции //ФормаТ2

Тестировалось только в ЗуП 2.5

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Gaffer 79 07.09.11 15:02 Сейчас в теме
Гхм.. что мешало сделать внешней?
Не ради критики, а просто понять причину хочу.

Не хватает скринов в пользовательском режиме.
Проблема с доп.листами тут решена? (см. http://infostart.ru/public/19746/)
2. KandKonst 32 07.09.11 16:09 Сейчас в теме
Специально делал так, чтобы было проще кадровикам. Типовой отчет периодически глючит и запускается после пляски с бубном вокруг настройки структуры СКД. На счет проблемы с доп. листами не в курсе. Ваша ссылка не открылась(. Проверьте ссылку плиз.
4. AlexO 132 02.12.11 01:20 Сейчас в теме
(2)
подтверждаю - не только в ЗУП, но и в УПП (КА) эта дурацкая Т-2 на СКД скачет и прыгает - то выводится все нормально, то - запоминаются автоматом настройки предыдущего отбора, и объединяются с текущим.. в результате - пустой вывод.
И сборосить это довольно сложно...
А почему реализовано из справочника? т.е. это как дополнение или замена типовому отчету в ЗУП?
6. KandKonst 32 05.12.11 11:46 Сейчас в теме
(4) Делал из справочника, так как у каждого сотрудника у меня доработано несколько дополнительных печатных форм. Оригинал отчета оставил, чтобы в случае чего с ним можно было свериться. Но основной рабочий вариант- из конкретного сотрудника.
3. i-sever 08.09.11 15:17 Сейчас в теме
Ссылка по проблеме с доп.листами не открывается ! А что это за проблема?
5. AlexO 132 02.12.11 01:21 Сейчас в теме
Также - никто не знает, что там в Макетах отчета УнифицированнаяФормаТ2 делают бинарные даные под видом "макет УнифицированнаяФормаТ2"??
Для чего они там и что это?
7. KandKonst 32 05.12.11 11:48 Сейчас в теме
(5) Бинарные данные это настройка варианта отчета

<НАСТРОЙКА_ВАРИАНТА_ОТЧЕТА>
<ВЕРСИЯ>1.0</ВЕРСИЯ>
<НАИМЕНОВАНИЕ>Унифицированная форма Т-2</НАИМЕНОВАНИЕ>
<ОБЪЕКТ>ОтчетОбъект.УнифицированнаяФормаТ2</ОБЪЕКТ>
<ОПИСАНИЕ>Выводит унифицированную форму Т-2</ОПИСАНИЕ>
...
8. AlexO 132 05.12.11 16:33 Сейчас в теме
(7)
так а зачем в такой загадочной форме, что там хранится на самом деле (а отчет ли? может, вирус какой :)) ?), и где это вызывается - в самой Т2 вызовов этого загадочного нечто нет...
Это ЧТО-ТО можно посмотреть в более читабельном виде?
9. KandKonst 32 06.12.11 11:26 Сейчас в теме
(8) В самой Т-2 вызывается при нажатии кнопки Открыть (внизу справа) и выборе сохраненного варианта. То есть это настройки варианта отчета для сброса по-умолчанию.
Читабельный вид - это врятли. Все что возможно было прочитать - я написал)
10. пользователь 16.10.12 14:28
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

Практика программирования v8 Бесплатно (free)

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020    4149    Eugen-S    23    

Что за ? в коде, или Секретный оператор в 1С

Практика программирования v8 Платформа 1C v8.2 Платформа 1С v8.1 1cv8.cf Бесплатно (free)

Инкремент, модуль и прочая магия, которая скрыта под символом "?"

21.10.2021    5127    SeiOkami    33    

Расчет премий по формулам

Зарплата v8 v8::СКД КА2 УУ Бесплатно (free)

Подход к реализации расчетов премий сотрудников с использованием СКД.

17.05.2021    3338    RocKeR_13    3    

Полезные примеры СКД, ч.2

Практика программирования v8 v8::СКД Бесплатно (free)

Еще несколько примеров решения задач в СКД.

06.04.2021    10287    Neti    8    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    85314    Serginio    115    

Неочевидные нюансы записи управляемой формы

Практика программирования v8 v8::УФ Платформа 1C v8.2 1cv8.cf Бесплатно (free)

Разберем несколько нюансов записи управляемой формы.

02.04.2021    12132    SeiOkami    54    

Обзор полезных методов БСП 3.1.4

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

25.03.2021    38396    rayastar    51    

Звуковое управление в 1С 8.3

Практика программирования v8 1cv8.cf Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    6991    velemir    33    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    40960    unichkin    74    

Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)

Практика программирования v8 ERP2 БУ Бесплатно (free)

Покажу точки входа для доработки "типового" проведения документов в ERP для регистров оперативного учета. Рассмотрим три основные ситуации: нужно изменить имеющееся проведение документа; нужно сделать записи в существующие регистры; нужно с нуля описать алгоритм проведения в добавленный регистр. Пример реализован на 1С:ERP Управление предприятием 2 (2.5.4.120)

10.01.2021    10456    BuriyLesha    10    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    8698    comol    31    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В данной публикации я опишу полезные процедуры и функции модуля общего назначения библиотеки стандартных подсистем, обязательные к использованию любым программистом 1С.

30.08.2020    19686    quazare    34    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    35915    tormozit    106    

Форма выбора (подбор) в управляемых формах

Практика программирования v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    74492    user5300    19    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    63903    ids79    26    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    82701    tormozit    131    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    42760    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    34432    kuzyara    38    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    23899    YPermitin    62    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    54171    tormozit    51    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    12152    Sibars    19    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019    39307    HostHost    41    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    52204    Yashazz    56    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    50929    tormozit    74    

О программе Postman для тестирования API и для чего она нужна 1С-нику

Практика программирования Программное обеспечение (software) v8 Бесплатно (free)

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    19787    budidich    31    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    99451    rpgshnik    75    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    76361    ids79    56    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    17937    m-rv    3    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    45828    YPermitin    25    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    30058    YPermitin    81    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    44713    ids79    22    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    23226    m-rv    18    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    148655    ids79    75    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    59611    avalakh    26    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    41012    json    17    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    36642    m-rv    23    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    103572    ids79    16    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    47875    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    33585    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    22443    SeiOkami    53    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    82785    ids79    18    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    75157    ids79    28    

Регистры накопления. Виртуальные таблицы. Часть №2: "Остатки" и "Остатки и обороты"

Практика программирования v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальными таблицами регистров накопления "Остатки" и "Остатки и обороты". Анализ SQL-запрос при работе с виртуальными таблицами

22.05.2019    43508    YPermitin    8    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    62846    YPermitin    31    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    42317    ellavs    131    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    31834    ellavs    90