Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Заявление - расчет в ФСС          
Loreny Подменю пользователя
сообщение 21.01.15, 15:45
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день!

1С: Предприятие 8,2: УПП 1.3.33.6

Господа! Такая проблема, у нас поменялась форма Приложения к ЗаявкеВФСС. Необходимо отредактировать сам макет(табличную часть). Т.к. создать копию документа во внешнюю обработку нельзя, создал вручную копию документа. НО, модуль обращается к другим функциям и процедурам которые не указанные в данном модуле. Убрать их из модуля нельзя, т.к. на них завязанная работа формирования табличной части. Подскажите как можно более правильно скопировать Документ либо написать печатную форму на основе базовой?

Vofka Подменю пользователя
сообщение 21.01.15, 16:06
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Вам надо печатную форму изменить?

logist Подменю пользователя
сообщение 21.01.15, 22:11
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Loreny @ 21.01.15, 15:45) *
у нас поменялась форма Приложения к ЗаявкеВФСС

попутно вопрос - что значит "у нас"?, она же везде стандартная


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Loreny Подменю пользователя
сообщение 22.01.15, 8:18
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 21.01.15, 16:06) *
Вам надо печатную форму изменить?

да

Цитата(logist @ 21.01.15, 22:11) *
попутно вопрос - что значит "у нас"?, она же везде стандартная

Как говорят в фонде, в нашем городе (г.Мариуполь), из Киева пришло распоряжение на новый шаблон документа который отличается от шаблона установленного в 1С.
А выгружать из 1с в xls , а потом еще и руками редактировать его это как минимум глупо и муторно.

alex040269 Подменю пользователя
сообщение 22.01.15, 8:28
Сообщение #5

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(Loreny @ 22.01.15, 8:18) *
А выгружать из 1с в xls , а потом еще и руками редактировать его это как минимум глупо и муторно.

значит нужно реализовать внешнюю печатную форму.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Loreny Подменю пользователя
сообщение 22.01.15, 8:45
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(alex040269 @ 22.01.15, 8:28) *
значит нужно реализовать внешнюю печатную форму.

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

Егор Динин Подменю пользователя
сообщение 22.01.15, 8:51
Сообщение #7

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1454
Из: Киев
Спасибо сказали: 548 раз
Рейтинг: 0

Цитата(Loreny @ 22.01.15, 9:45) *
затягивать данные из двух другх документов

О чем именно речь? Давайте код и что нужно получить.

Vofka Подменю пользователя
сообщение 22.01.15, 8:55
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

По-моему обсуждение заходит в тупик. Если у вас есть конкретные проблемы с программированием - выкладывайте с чем конкретно (и тема переедет в раздел программирования). Потому что никто не видит вашего кода и врядли кто-то понимает о чем вы говорите. Если же вопрос не в программировании, то в чём?

Loreny Подменю пользователя
сообщение 22.01.15, 9:05
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Егор Динин @ 22.01.15, 8:51) *
О чем именно речь? Давайте код и что нужно получить.


Сейчас шапка табличной части Приложения выглядит так:


Необходимо привести к такому виду:


Код оригинального модуля
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДОКУМЕНТА

// Форматирует сумму прописью документа
//
// Параметры:
//  СуммаДок - число - реквизит, который надо представить прописью
//  СуммаБезКопеек - булево - флаг представления суммы без копеек
//
// Возвращаемое значение
//  Отформатированную строку
//
Функция ФорматироватьСуммуПрописи(СуммаДок)
    
    Результат     = СуммаДок;
    ЦелаяЧасть    = Цел(СуммаДок);
    ФорматСтрока  = "Л=uk_UA; ДП=Ложь";
    ПарамПредмета = "гривна, гривні, гривень, ж, копійка, копійки, копійок, ж, 2";
    
    Результат = ЧислоПрописью(Результат,ФорматСтрока,ПарамПредмета);
    
    Возврат Результат;
    
КонецФункции // ФорматироватьСуммуПрописи()

////////////////////////////////////////////////////////////////////////////////
// ПЕЧАТЬ
//

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

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

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

#Если Клиент Тогда
    
Функция ПечатьЗаявка() Экспорт
    
    ТабДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Заявка");
    
    //Шапка
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапка.Параметры.Организация = Организация.НаименованиеПолное;
    
    //Получим данные из РС КодыОрганизаций
     Результат = ПолучитьЗапросПоКодам();
     Выборка = Результат.Выбрать();
    
     Если Выборка.Следующий() Тогда
         ОбластьШапка.Параметры.ФИОДиректораФонда = Выборка.ФИОДиректораФонда;
         ОбластьШапка.Параметры.НазваниеРабочегоОрганаФонда = Выборка.НазваниеРабочегоОрганаФонда;
         ОбластьШапка.Параметры.КодПоЕДРПОУ = Выборка.КодПоЕДРПОУ;
         ОбластьШапка.Параметры.НомерРегистрации = Выборка.НомерРегистрации;
     КонецЕсли;
    
     //Получим данные из РС КонтактнаяИнформация для адреса организации
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                    |    КонтактнаяИнформация.Представление КАК Адрес
                    |ИЗ
                    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                    |ГДЕ
                    |    КонтактнаяИнформация.Объект = &Объект
                    |    И КонтактнаяИнформация.Тип = &Тип
                    |    И КонтактнаяИнформация.Вид = &Вид";
    
     Запрос.УстановитьПараметр("Объект", Организация );
     Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);
     Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
    
     Результат = Запрос.Выполнить();
     Выборка = Результат.Выбрать();
    
     Если Выборка.Следующий() Тогда
         ОбластьШапка.Параметры.Адрес = Выборка.Адрес;    
     КонецЕсли;
    
     //Получим данные из РС КонтактнаяИнформация для телефона организации
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                    |    КонтактнаяИнформация.Представление КАК Телефон
                    |ИЗ
                    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                    |ГДЕ
                    |    КонтактнаяИнформация.Объект = &Объект
                    |    И КонтактнаяИнформация.Тип = &Тип
                    |    И КонтактнаяИнформация.Вид = &Вид";
    
     Запрос.УстановитьПараметр("Объект", Организация );
     Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);
     Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ТелефонОрганизации);
    
     Результат = Запрос.Выполнить();
     Выборка = Результат.Выбрать();
    
     Если Выборка.Следующий() Тогда
         ОбластьШапка.Параметры.Телефон = Выборка.Телефон;    
     КонецЕсли;
    
    ОбластьШапка.Параметры.НомерСчета = Организация.БанковскийСчетДляРасчетовСФСС.НомерСчета;
    ОбластьШапка.Параметры.МФОБанкаОрганизации = Организация.БанковскийСчетДляРасчетовСФСС.Банк.Код;
    
    ТабДокумент.Вывести(ОбластьШапка);
    
    //Заголовок
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ТабДокумент.Вывести(ОбластьЗаголовок);    
    
    //ШапкаТаблицы
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ТабДокумент.Вывести(ОбластьШапкаТаблицы);
    
    //СтрокаВремНетрудоспособность
    ОбластьВремНетрудоспособность = Макет.ПолучитьОбласть("СтрокаВремНетрудоспособность");
    ОбластьВремНетрудоспособность.Параметры.Сумма = Формат(ВсегоПоБольничным,"ЧЦ=15; ЧДЦ=2; ЧН=; ЧГ=");
    ОбластьВремНетрудоспособность.Параметры.Дни = КоличествоДнейПоБольничным;
    ТабДокумент.Вывести(ОбластьВремНетрудоспособность);
    
    //СтрокаВремНетрудоспособностьУход
    ОбластьВремНетрудоспособностьУход = Макет.ПолучитьОбласть("СтрокаВремНетрудоспособностьУход");
    ОбластьВремНетрудоспособностьУход.Параметры.Сумма = Формат(ВсегоПоБольничнымПоУходу,"ЧЦ=15; ЧДЦ=2; ЧН=; ЧГ=");
    ОбластьВремНетрудоспособностьУход.Параметры.Дни = КоличествоДнейПоБольничнымПоУходу;
    ТабДокумент.Вывести(ОбластьВремНетрудоспособностьУход);
    
    //СтрокаВремНетрудоспособностьБерем
    ОбластьВремНетрудоспособностьБерем = Макет.ПолучитьОбласть("СтрокаВремНетрудоспособностьБерем");
    ОбластьВремНетрудоспособностьБерем.Параметры.Сумма = Формат(ВсегоПоБеременностиИРодам,"ЧЦ=15; ЧДЦ=2; ЧН=; ЧГ=");
    ОбластьВремНетрудоспособностьБерем.Параметры.Дни = КоличествоДнейПоБеременостиИРодам;
    ТабДокумент.Вывести(ОбластьВремНетрудоспособностьБерем);

    //СтрокаВремНетрудоспособностьПогребение
    ОбластьВремНетрудоспособностьПогребение = Макет.ПолучитьОбласть("СтрокаВремНетрудоспособностьПогребение");
    ОбластьВремНетрудоспособностьПогребение.Параметры.Сумма = Формат(ВсегоНаПогребение,"ЧЦ=15; ЧДЦ=2; ЧН=; ЧГ=");
    ТабДокумент.Вывести(ОбластьВремНетрудоспособностьПогребение);
    
    //Итог
    ОбластьИтог = Макет.ПолучитьОбласть("Итог");
    ОбластьИтог.Параметры.СуммаИтог = Формат(ВсегоПоДокументу,"ЧЦ=15; ЧДЦ=2; ЧН=; ЧГ=");
    ТабДокумент.Вывести(ОбластьИтог);
    
    Возврат ТабДокумент;
    
КонецФункции    

Функция ПечатьПриложение() Экспорт
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    Макет = ПолучитьМакет("Приложение");
    
    //Шапка
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ТабДокумент.Вывести(ОбластьШапка);
    
    //СтрокаПоБольничным
    ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаПоБольничным");
    НомерСтроки = 1;
    РезультатЗапросаПоШапке = СформироватьЗапросПоШапке();
    ВыборкаПоШапкеДокумента = РезультатЗапросаПоШапке.Выбрать();
    Если ВыборкаПоШапкеДокумента.Следующий() Тогда
        
        РезультатЗапросаПоДокументам = ПолучитьЗапросДляПечатиПриложения(ВыборкаПоШапкеДокумента);
        ВыборкаПоДокументам = РезультатЗапросаПоДокументам.Выбрать();
        ТаблицаНачислений = СгруппироватьПериодыНачислений(ВыборкаПоДокументам);
        
        Для Каждого Начисление ИЗ ТаблицаНачислений Цикл
            Если Не Начисление.РезультатФСС = 0 Тогда
             ОбластьСтрока.Параметры.Номер = НомерСтроки;
             ОбластьСтрока.Параметры.Сотрудник                     = ОбщегоНазначения.ФамилияИнициалыФизЛица(Начисление.Сотрудник.ФизЛицо);
             ОбластьСтрока.Параметры.КодПоДРФО                     = Начисление.ДРФО;
             ОбластьСтрока.Параметры.СерияНомер                 = Начисление.Серия + " " + Начисление.Номер;
             ОбластьСтрока.Параметры.ПричинаНетрудоспособности  = Начисление.ПричинаНетрудоспособности.КодПричины;
             ОбластьСтрока.Параметры.ПериодНетрудоспособности   = "З " + Формат(Начисление.ПериодНачало, "ДЛФ=Д") + " по " + Формат(Начисление.ПериодКонец, "ДЛФ=Д");
             ОбластьСтрока.Параметры.КоличествоДней             = Начисление.КоличествоДней;
             ОбластьСтрока.Параметры.КоличествоДнейФСС             = Начисление.КоличествоДнейФСС;
             ОбластьСтрока.Параметры.Результат                     = Формат(Начисление.Результат,"ЧЦ=15; ЧДЦ=2; ЧН=; ЧГ=");
             ОбластьСтрока.Параметры.РезультатФСС                 = Формат(Начисление.РезультатФСС,"ЧЦ=15; ЧДЦ=2; ЧН=; ЧГ=");
            
             ТабДокумент.Присоединить(ОбластьСтрока);
            
             НомерСтроки = НомерСтроки +1;
         КонецЕсли;
        КонецЦикла;
        
    КонецЕсли;
        
    //Подпись
    ОбластьПодпись = Макет.ПолучитьОбласть("Подпись");
    
    ЧислоДокумента                          = Формат(Дата,"ДФ='дд';Л=uk_UA");
    ДатаДокумента                           = Формат(Дата,"ДФ='дд ММММ ггггр.';Л=uk_UA");
    ДатаДокументаБезЧисла                   = Прав(ДатаДокумента, СтрДлина(ДатаДокумента) - 2);
    ОбластьПодпись.Параметры.ДатаДокумента     = ЧислоДокумента + ДатаДокументаБезЧисла;

    Руководители = ФормированиеПечатныхФорм.ОтветственныеЛица(Организация, Дата);

    Если ЗначениеЗаполнено(Руководители.Руководитель) Тогда
        ОбластьПодпись.Параметры.ФИОРуководителя = Руководители.РуководительФИО.Фамилия        + " " + Руководители.РуководительФИО.Имя     + " " + Руководители.РуководительФИО.Отчество;
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Руководители.ГлавныйБухгалтер) Тогда
        ОбластьПодпись.Параметры.ФИОБухгалтера   = Руководители.ГлавныйБухгалтерФИО.Фамилия + " " + Руководители.ГлавныйБухгалтерФИО.Имя + " " + Руководители.ГлавныйБухгалтерФИО.Отчество;
    КонецЕсли;

    ТабДокумент.Вывести(ОбластьПодпись);
  
    Возврат ТабДокумент;
    
КонецФункции

Функция ПечатьЗаявкаНС() Экспорт
    
    ТабДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("ЗаявкаНС");
    
    //Шапка
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапка.Параметры.Организация = Организация.НаименованиеПолное;
    
    //Получим данные из РС КодыОрганизаций
     Результат = ПолучитьЗапросПоКодам();
     Выборка = Результат.Выбрать();
    
     Если Выборка.Следующий() Тогда
             ОбластьШапка.Параметры.КодПоЕДРПОУ = Выборка.КодПоЕДРПОУ;
             ОбластьШапка.Параметры.ИНН = Выборка.ИНН;
             ОбластьШапка.Параметры.КВЕД = Выборка.КодКВЕД;
             ОбластьШапка.Параметры.Риск = Выборка.КлассПрофессиональногоРиска;
     КонецЕсли;
    
     //Получим данные из РС КонтактнаяИнформация для адреса организации
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                    |    КонтактнаяИнформация.Представление КАК Адрес
                    |ИЗ
                    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                    |ГДЕ
                    |    КонтактнаяИнформация.Объект = &Объект
                    |    И КонтактнаяИнформация.Тип = &Тип
                    |    И КонтактнаяИнформация.Вид = &Вид";
    
     Запрос.УстановитьПараметр("Объект", Организация );
     Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);
     Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
    
     Результат = Запрос.Выполнить();
     Выборка = Результат.Выбрать();
    
     Если Выборка.Следующий() Тогда
         ОбластьШапка.Параметры.Адрес = Выборка.Адрес;    
     КонецЕсли;
    
     //Получим данные из РС КонтактнаяИнформация для телефона организации
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                    |    КонтактнаяИнформация.Представление КАК Телефон
                    |ИЗ
                    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                    |ГДЕ
                    |    КонтактнаяИнформация.Объект = &Объект
                    |    И КонтактнаяИнформация.Тип = &Тип
                    |    И КонтактнаяИнформация.Вид = &Вид";
    
     Запрос.УстановитьПараметр("Объект", Организация );
     Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);
     Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ТелефонОрганизации);
    
     Результат = Запрос.Выполнить();
     Выборка = Результат.Выбрать();
    
     Если Выборка.Следующий() Тогда
         ОбластьШапка.Параметры.Телефон = Выборка.Телефон;    
     КонецЕсли;
    ОбластьШапка.Параметры.НомерСчета = Организация.ОсновнойБанковскийСчет.НомерСчета;
    ОбластьШапка.Параметры.МФОБанкаОрганизации = Организация.ОсновнойБанковскийСчет.Банк.Код;
    ОбластьШапка.Параметры.Банк = Организация.ОсновнойБанковскийСчет.Банк;
    
    ОбластьШапка.Параметры.Месяц = Формат(ПериодРегистрации, "ДФ=MMMM;Л = uk_UA");;
    ОбластьШапка.Параметры.Год = Год(ПериодРегистрации);
    
    ТабДокумент.Вывести(ОбластьШапка);
    
    //Шапка помощь
    ОбластьШапка = Макет.ПолучитьОбласть("ШапкаПомощь");
    ТабДокумент.Вывести(ОбластьШапка);
    
    //Строка Помощь
    ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаПомощь");
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаявлениеРасчетВФССДокументыПоНачислениям.НомерСтроки КАК Номер,
                   |    ЗаявлениеРасчетВФССДокументыПоНачислениям.Документ.НомерБольничногоЛиста КАК НомерБЛ,
                   |    ЗаявлениеРасчетВФССДокументыПоНачислениям.Документ.СерияБольничногоЛиста КАК СерияБЛ,
                   |    ЗаявлениеРасчетВФССДокументыПоНачислениям.Документ.Сотрудник КАК Сотрудник,
                   |    ЗаявлениеРасчетВФССДокументыПоНачислениям.Документ КАК Документ,
                   |    ЗаявлениеРасчетВФСС.Комментарий
                   |ИЗ
                   |    Документ.ЗаявлениеРасчетВФСС.ДокументыПоНачислениям КАК ЗаявлениеРасчетВФССДокументыПоНачислениям
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявлениеРасчетВФСС КАК ЗаявлениеРасчетВФСС
                   |        ПО ЗаявлениеРасчетВФССДокументыПоНачислениям.Ссылка = ЗаявлениеРасчетВФСС.Ссылка
                   |ГДЕ
                   |    ЗаявлениеРасчетВФССДокументыПоНачислениям.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка",Ссылка );
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл  
        
        РезультатЗапросаПоШапке = СформироватьЗапросПоШапке();
        ВыборкаПоШапкеДокумента = РезультатЗапросаПоШапке.Выбрать();
        Если ВыборкаПоШапкеДокумента.Следующий() Тогда
            РезультатЗапросаПоДокументам = ПолучитьЗапросДляРасчетаСумм(ВыборкаПоШапкеДокумента);
            ВыборкаПоДокументам = РезультатЗапросаПоДокументам.Выбрать();
                    
            Пока ВыборкаПоДокументам.Следующий() Цикл
                Если ВыборкаПоДокументам.Документ = Выборка.Документ Тогда
                    Если НЕ ВыборкаПоДокументам.Результат = 0 Тогда
                    ОбластьСтрока.Параметры.Номер = Выборка.Номер;
                    ОбластьСтрока.Параметры.СерияНомер = Выборка.СерияБЛ + " " + Выборка.НомерБЛ;
                    ОбластьСтрока.Параметры.Сотрудник  = Выборка.Сотрудник;

                    Сумма = ВыборкаПоДокументам.Результат;
                    СтрокаСуммы = ОбщегоНазначения.СформироватьСуммуПрописью(Сумма, глЗначениеПеременной("ВалютаРегламентированногоУчета"), "uk");
                    СтрокаСуммы  = СтрокаСуммы + " (" + Цел(Сумма) + " грн. " + Формат((Сумма - Цел(Сумма)) * 100, "ЧЦ=2; ЧВН=") + " коп.)";
                    ОбластьСтрока.Параметры.Результат  = СтрокаСуммы;  
                    ОбластьСтрока.Параметры.Комментарий = Выборка.Комментарий;
                    
                    ТабДокумент.Присоединить(ОбластьСтрока);

                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
        

    КонецЦикла;
    
    
    //Шапка траты
    ОбластьШапка = Макет.ПолучитьОбласть("ШапкаТраты");
    ТабДокумент.Вывести(ОбластьШапка);

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

     Если ЗначениеЗаполнено(Руководители.Руководитель) Тогда
         ОбластьПодпись.Параметры.ФИОРуководителя = Руководители.РуководительФИО.Фамилия        + " " + Руководители.РуководительФИО.Имя     + " " + Руководители.РуководительФИО.Отчество;
     КонецЕсли;
    
     Если ЗначениеЗаполнено(Руководители.ГлавныйБухгалтер) Тогда
         ОбластьПодпись.Параметры.ФИОБухгалтера   = Руководители.ГлавныйБухгалтерФИО.Фамилия + " " + Руководители.ГлавныйБухгалтерФИО.Имя + " " + Руководители.ГлавныйБухгалтерФИО.Отчество;
     КонецЕсли;


     ТабДокумент.Вывести(ОбластьПодпись);

    
    Возврат ТабДокумент;

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

Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
    
    // Получить экземпляр документа на печать
    Если  ИмяМакета = "Заявка" Тогда
        ТабДокумент = ПечатьЗаявка()
    ИначеЕсли ИмяМакета = "Приложение" Тогда
        Если ЗаСчетФССОтНС Тогда
            Предупреждение("При включенном флаге ""За счет ФСС от НС"" печать ""Приложения"" не производится!");
        Иначе
            ТабДокумент = ПечатьПриложение()
        КонецЕсли;
    ИначеЕсли ИмяМакета = "ЗаявкаНС" Тогда
        ТабДокумент = ПечатьЗаявкаНС()
    КонецЕсли;
    
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер,ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект,"Заявление - расчет в ФСС "));
    
КонецФункции    

#КонецЕсли

// Возвращает доступные варианты печати документа
//
// Вовращаемое значение:
//  Струткура, каждая строка которой соответствует одному из вариантов печати
//  
Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
    
     Если ЗаСчетФССОтНС Тогда
         Возврат Новый Структура("ЗаявкаНС, Приложение", "Заявка", "Приложение");
     Иначе
         Возврат Новый Структура("Заявка, Приложение", "Заявка", "Приложение");
     КонецЕсли;
    
КонецФункции // ПолучитьСтруктуруПечатныхФорм()

Процедура АвтозаполнениеДокумента() Экспорт
    
    Если ЭтоНовый() Тогда
        #Если Клиент Тогда
        ТекстВопроса = "Перед заполнением докумет необходимо записать. Продолжить?";
        Если Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да,) <> КодВозвратаДиалога.Да Тогда
            Возврат;
        КонецЕсли;
        #КонецЕсли
        Записать();
    КонецЕсли;
    

    Запрос = ПолучитьЗапросДокументовПособий();
    
    ДокументыПоНачислениям.Загрузить(Запрос.Выполнить().Выгрузить());
    
    РасчитатьИтоговыеСуммы();
КонецПроцедуры

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


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

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

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ОБЕСПЕЧЕНИЯ ПРОВЕДЕНИЯ ДОКУМЕНТА

// Формирует запрос по шапке документа
//
// Параметры:
//  Режим - режим проведения
//
// Возвращаемое значение:
//  Результат запроса
//
Функция СформироватьЗапросПоШапке()

    Запрос = Новый Запрос;

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

    Запрос.Текст = "
    |Выбрать РАЗРЕШЕННЫЕ
    |    Дата,
    |    ПериодРегистрации,
    |    Организация,
    |    Ответственный,
    |     Ссылка
    |Из
    |    Документ." + Метаданные().Имя + "
    |Где
    |    Ссылка = &ДокументСсылка
    |";

    Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросПоШапке()

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

// Проверяет правильность заполнения шапки документа.
// Если какой-то из реквизтов шапки, влияющий на проведение не заполнен или
// заполнен не корректно, то выставляется флаг отказа в проведении.
// Проверка выполняется по выборке из результата запроса по шапке,
// все проверяемые реквизиты должны быть включены в выборку по шапке.
//
// Параметры:
//  ВыборкаПоШапкеДокумента    - выборка из результата запроса по шапке документа,
//  Отказ                     - флаг отказа в проведении.
//    Заголовок                - Заголовок для сообщений об ошибках проведения
//
Процедура ПроверитьЗаполнениеШапки(ВыборкаПоШапкеДокумента, Отказ, Заголовок)

    Если НЕ ЗначениеЗаполнено(ВыборкаПоШапкеДокумента.Организация) Тогда
        ОбщегоНазначения.СообщитьОбОшибке("Не указана организация!", Отказ, Заголовок);
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(ВыборкаПоШапкеДокумента.Ответственный) Тогда
        ОбщегоНазначения.СообщитьОбОшибке("Не указано ответственное лицо!", Отказ, Заголовок);
    КонецЕсли;
    
КонецПроцедуры // ПроверитьЗаполнениеШапки()

// Проверяет заполнена ли СтатьяРасчетовСФСС.
// Если реквизит не заполнен , то выставляется флаг отказа в проведении.
// Проверка выполняется по выборке из результата запроса по строке ТЧ документа,
//
// Параметры:
//  ВыборкаПоШапкеДокумента        - выборка из результата запроса по шапке документа,
//  ВыборкаПоСтрокамДокумента    - спозиционированная на определеной строке выборка
//                                из результата запроса по документам,
//  Отказ                         - флаг отказа в проведении.
//    Заголовок                    - Заголовок для сообщений об ошибках проведения
//
Процедура ПроверитьЗаполнениеСтатьиРасчетовСФСС(ВыборкаПоШапкеДокумента, ВыборкаПоТЧ, Отказ, Заголовок)
    
    Если НЕ ЗначениеЗаполнено(ВыборкаПоТЧ.СтатьяРасчетовСФСС) Тогда
        СтрокаСообщения = "В документе: " + ВыборкаПоТЧ.Документ + " не заполнена статья расчетов в ФСС";
        ОбщегоНазначения.СообщитьОбОшибке(СтрокаСообщения, Отказ, Заголовок);
    КонецЕсли;
КонецПроцедуры

// По строке выборки результата запроса по документу формируем движения по регистрам
//
// Параметры:
//  ВыборкаПоШапкеДокумента                  - выборка из результата запроса по шапке документа
//  СтруктураПроведенияПоРегистрамНакопления - структура, содержащая имена регистров
//                                             накопления по которым надо проводить документ
//  СтруктураПараметров                      - структура параметров проведения.
//
// Возвращаемое значение:
//  Нет.
//
Процедура ДобавитьСтрокуВДвиженияПоРегистрамНакопления(ВыборкаПоШапкеДокумента, ВыборкаПоТЧ)

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    // Заголовок для сообщений об ошибках проведения.
    Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка);

    РезультатЗапросаПоШапке = СформироватьЗапросПоШапке();

    // Получим реквизиты шапки из запроса
    ВыборкаПоШапкеДокумента = РезультатЗапросаПоШапке.Выбрать();
    
    Если ВыборкаПоШапкеДокумента.Следующий() Тогда

        //Надо позвать проверку заполнения реквизитов шапки
        ПроверитьЗаполнениеШапки(ВыборкаПоШапкеДокумента, Отказ, Заголовок);

        // Движения стоит добавлять, если в проведении еще не отказано (отказ =ложь)
        Если НЕ Отказ Тогда
            
            РезультатЗапросаПоДокументам = СформироватьЗапросПоДокументамТабличнойЧасти(ВыборкаПоШапкеДокумента);
            ВыборкаПоДокументам = РезультатЗапросаПоДокументам.Выбрать();
            
            Пока ВыборкаПоДокументам.Следующий() Цикл
                
                ПроверитьЗаполнениеСтатьиРасчетовСФСС(ВыборкаПоШапкеДокумента, ВыборкаПоДокументам, Отказ, Заголовок);
                //Если не заполнена СтатьяРасчетовСФСС не проводим
                Если Не Отказ Тогда
                    ДобавитьСтрокуВДвиженияПоРегистрамНакопления(ВыборкаПоШапкеДокумента, ВыборкаПоДокументам);    
                КонецЕсли;                                                                                                              
            КонецЦикла;                                                                                                           
        КонецЕсли;
        
                
    КонецЕсли;
    
    
КонецПроцедуры

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

Функция СгруппироватьПериодыНачислений(Выборка)
    Перем прСотрудник, прПричинаНетрудоспособности, прДРФО, прСерия, прНомер; //переменные содержащие информацию с прошлой строки выборки при обходе ее в цикле
    Перем прПериодНачало;
    Перем прПериодКонец;
    Перем прКоличествоДней, прКоличествоДнейФСС, прРезультат, прРезультатФСС;
    Перем НоваяСтрока; //Строка табличной части
    
    прПериодНачало = Дата(1,1,1);
    прПериодКонец = Дата(1,1,1);
                
    ТаблицаНачислений = Новый ТаблицаЗначений;
    
    ТаблицаНачислений.Колонки.Добавить("Сотрудник");
    ТаблицаНачислений.Колонки.Добавить("ПричинаНетрудоспособности");
    ТаблицаНачислений.Колонки.Добавить("ДРФО");
    ТаблицаНачислений.Колонки.Добавить("Серия");
    ТаблицаНачислений.Колонки.Добавить("Номер");
    ТаблицаНачислений.Колонки.Добавить("ПериодНачало");
    ТаблицаНачислений.Колонки.Добавить("ПериодКонец");
    ТаблицаНачислений.Колонки.Добавить("КоличествоДней");
    ТаблицаНачислений.Колонки.Добавить("КоличествоДнейФСС");
    ТаблицаНачислений.Колонки.Добавить("Результат");
    ТаблицаНачислений.Колонки.Добавить("РезультатФСС");
                            
    Пока Выборка.Следующий() Цикл
        //если строки абсолютно разные добавляем новые
        Если Выборка.Сотрудник <> прСотрудник ИЛИ Выборка.ПричинаНетрудоспособности <> прПричинаНетрудоспособности ИЛИ НачалоДня(Выборка.ПериодНачало) <> (НачалоДня(прПериодКонец)+ 1*60*60*24) ИЛИ
          Выборка.ДРФО <> прДРФО ИЛИ Выборка.Серия <> прСерия ИЛИ Выборка.Номер <> прНомер Тогда
            НоваяСтрока = ТаблицаНачислений.Добавить();
            НоваяСтрока.Сотрудник = Выборка.Сотрудник;
            НоваяСтрока.ПричинаНетрудоспособности = Выборка.ПричинаНетрудоспособности;
            НоваяСтрока.ДРФО = Выборка.ДРФО;
            НоваяСтрока.Серия = Выборка.Серия;
            НоваяСтрока.Номер = Выборка.Номер;
            НоваяСтрока.ПериодНачало = Выборка.ПериодНачало;
            НоваяСтрока.ПериодКонец = Выборка.ПериодКонец;
            НоваяСтрока.КоличествоДней = Выборка.КоличествоДней + Выборка.КоличествоДнейФСС;
            НоваяСтрока.КоличествоДнейФСС = Выборка.КоличествоДнейФСС;
            НоваяСтрока.Результат = Выборка.Результат + Выборка.РезультатФСС;
            НоваяСтрока.РезультатФСС = Выборка.РезультатФСС;
            
            
            прСотрудник = Выборка.Сотрудник;
            прПричинаНетрудоспособности = Выборка.ПричинаНетрудоспособности;
            прДРФО = Выборка.ДРФО;
            прСерия = Выборка.Серия;
            прНомер = Выборка.Номер;
            
            прПериодНачало = Выборка.ПериодНачало;
            прПериодКонец = Выборка.ПериодКонец;
        //если строки одинаковые и если дата конца первой строки на один день меньше даты второй строки , совмещаем их, делаем одну строку.    
        ИначеЕсли Выборка.Сотрудник = прСотрудник И Выборка.ПричинаНетрудоспособности = прПричинаНетрудоспособности И
          Выборка.ДРФО = прДРФО И Выборка.Серия = прСерия И Выборка.Номер = прНомер И НачалоДня(Выборка.ПериодНачало) = (НачалоДня(прПериодКонец)+ 1*60*60*24)   Тогда
            НоваяСтрока.ПериодНачало = прПериодНачало;
            НоваяСтрока.ПериодКонец = Выборка.ПериодКонец;
            НоваяСтрока.КоличествоДней = НоваяСтрока.КоличествоДней + Выборка.КоличествоДней + Выборка.КоличествоДнейФСС;
            НоваяСтрока.КоличествоДнейФСС = НоваяСтрока.КоличествоДнейФСС + Выборка.КоличествоДнейФСС;
            НоваяСтрока.Результат = НоваяСтрока.Результат + Выборка.Результат + Выборка.РезультатФСС;
            НоваяСтрока.РезультатФСС = НоваяСтрока.РезультатФСС + Выборка.РезультатФСС;
            
            
            прСотрудник = Выборка.Сотрудник;
            прПричинаНетрудоспособности = Выборка.ПричинаНетрудоспособности;
            прДРФО = Выборка.ДРФО;
            прСерия = Выборка.Серия;
            прНомер = Выборка.Номер;
            
            прПериодКонец = Выборка.ПериодКонец;
    КонецЕсли;
                
    КонецЦикла;
    
    Возврат ТаблицаНачислений;
    
КонецФункции


если этот код скопировать в новую печатную форму(без каких либо изменений) то при проверке кода выдает ошибки об отсутствии функции "Записать"

alex040269 Подменю пользователя
сообщение 22.01.15, 9:22
Сообщение #10

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(Loreny @ 22.01.15, 9:05) *
функции "Записать"

эта функция не нужна в печ.форме.

что вы собираетесь записывать?

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


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Loreny Подменю пользователя
сообщение 22.01.15, 9:24
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(alex040269 @ 22.01.15, 9:22) *
та функция не нужна в печ.форме.

что вы собираетесь записывать?

нужна только функция


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


но там много связаных функций

Petre Подменю пользователя
сообщение 22.01.15, 10:02
Сообщение #12

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Цитата(Loreny @ 22.01.15, 9:24) *
но там много связаных функций

Если это - экспортные функции, обращайтесь к ним через реквизит ссылки на документ (по стандартам внешних печатных форм это "СсылкаНаОбъект").
Если эти функции не экспортные, придется их скопировать в модуль впф.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 6:40
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!