ВНИМАНИЕ! Уважаемые коллеги, получилась комичная ситуация, что 1С доработало типовую Зуп 2.5 в 102 релизе так же, как и я, это сделал в начале Года! Тему можно отправлять в Архив.
Для тех, кто уже внес изменения, как у меня. Я написал небольшую обработку, для переброски из Доработанного реквизита в типовой, дату Удержания-Выплаты З/П. Не знаю как сделать Обработку бесплатной, поэтому пишите в личку.
Суть моей доработки проста, создать Дату Удержанного НДФЛ в документе "Начисление зарплаты сотрудникам организаций" (Рис. 1), где мы можем проставить дату выплаты З/П по данному начислению. У кого-то возникнет ситуация выплаты начисления разными датами, для этого мы создаем и в Табличной части "НДФЛ" одноименный реквизит где имеем возможность проставить дату Удержания индивидуально для каждого сотрудника и суммы Налога. См. Рис 1.
Небольшое преимущество данного примера, это выведение добавленных реквизитов программным способом. И при обновлении Вам необходимо будет сохранять всего одну строку в Типовом модуле. (См. пункт 4 данной инструкции)
1. Создаем реквизит документа с типом дата в документе "Начисление зарплаты сотрудникам организаций", у меня имя "РТ_ДатаУдержанияНДФЛ"
2. Создаем одноименный реквизит с Типом значения Дата в ТЧ "НДФЛ".
3. Создаем Наш Общий модуль, у меня он называется "РТ_ОбщийМодуль".
Заполнение модуля:
#Область ДоработкаНДФЛУдержанный
Процедура РТ_УдалитьУдержаниеВВыплатеЗПОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
//Если у нас не упрощенный режим, ничего не трогаем!
УпрощенныйУчетНДФЛ = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Источник.Организация, "УпрощенныйУчетНДФЛ");
Если НЕ УпрощенныйУчетНДФЛ Тогда
Возврат
КонецЕсли;
//Удаляем чушь
НДФЛ_Удерж = Источник.Движения.НДФЛРасчетыСБюджетом;
НДФЛ_Удерж.Очистить();
НДФЛ_Удерж.Записывать = Истина;
НДФЛ_РасчетС_Бюджетом = Источник.Движения.РасчетыНалоговыхАгентовСБюджетомПоНДФЛ;
НДФЛ_РасчетС_Бюджетом.Очистить();
НДФЛ_РасчетС_Бюджетом.Записывать = Истина;
КонецПроцедуры
Процедура ВыводДополнительныхРеквизитов(ДокументОбъект, ФормаДокумента) Экспорт
// Вывод или сохранение дополнительных реквизитов
// Если элемент формы существует то сохраняем значение
Элемент = ФормаДокумента.ЭлементыФормы.Найти("РТ_ДатаУдержанияНДФЛ");
Если Элемент = Неопределено Тогда
// Создание заголовка
Элемент = ФормаДокумента.ЭлементыФормы.Добавить(Тип("Надпись"), "ЗаголовокРТ_ДатаУдержанияНДФЛ", Истина, ФормаДокумента.Панель);
Элемент.Заголовок = "Дата Удержания НДФЛ:";
// Настройка
Элемент.Лево = 416;
Элемент.Верх = 102;
Элемент.Высота = 19;
Элемент.Ширина = 140;
// Установка привязок
Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ФормаДокумента.ЭлементыФормы.ЗаголовокРТ_ДатаУдержанияНДФЛ, ГраницаЭлементаУправления.Верх);
Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Право, ФормаДокумента.ЭлементыФормы.ПериодНачисленияДатаОкончания, ГраницаЭлементаУправления.Право);
Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ФормаДокумента.ЭлементыФормы.ПериодНачисленияДатаОкончания, ГраницаЭлементаУправления.Право);
// Создание поле ввода
Элемент = ФормаДокумента.ЭлементыФормы.Добавить(Тип("ПолеВвода"), "РТ_ДатаУдержанияНДФЛ", Истина, ФормаДокумента.Панель);
Элемент.ТипЗначения = Новый ОписаниеТипов("Дата");
Элемент.Данные = "РТ_ДатаУдержанияНДФЛ";
// Настройка
Элемент.Лево = 416 + 140;
Элемент.Верх = 102;
Элемент.Высота = 19;
Элемент.Ширина = 92;
// Установка привязок
Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ФормаДокумента.ЭлементыФормы.РТ_ДатаУдержанияНДФЛ, ГраницаЭлементаУправления.Верх);
Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Право, ФормаДокумента.ЭлементыФормы.Ответственный, ГраницаЭлементаУправления.Право);
Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Лево,ФормаДокумента.ЭлементыФормы.ПериодНачисленияДатаОкончания, ГраницаЭлементаУправления.Право);
//Выводим в таличную часть реквизиты
ЭлементыФормы = ФормаДокумента.ЭлементыФормы;
ЭлементыФормы.НДФЛ.Колонки.Добавить("РТ_ДатаУдержанияНДФЛ", "Дата удержания НДФЛ");
ЭлементыФормы.НДФЛ.Колонки.РТ_ДатаУдержанияНДФЛ.Данные = "РТ_ДатаУдержанияНДФЛ";
ЭлементыФормы.НДФЛ.Колонки.РТ_ДатаУдержанияНДФЛ.УстановитьЭлементУправления(Тип("ПолеВвода"));
ЭлементыФормы.НДФЛ.Колонки.РТ_ДатаУдержанияНДФЛ.ЭлементУправления.КнопкаВыбора = Истина;
КонецЕсли;
КонецПроцедуры
Процедура РТ_ПроведениеНачислениеЗПОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
//Если у нас не упрощенный режим, ничего не трогаем!
УпрощенныйУчетНДФЛ = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Источник.Организация, "УпрощенныйУчетНДФЛ");
Если НЕ УпрощенныйУчетНДФЛ Тогда
Возврат
КонецЕсли;
ДатаУдержанияНДФЛ = Источник.РТ_ДатаУдержанияНДФЛ;
ТЗ_НДФЛ_сДатами = ПолучитьЛичныеДатыУдержания(Источник.Ссылка);
Если ТЗ_НДФЛ_сДатами.Количество() = 0 Тогда
ДатыВТЧ = Ложь;
Иначе
ДатыВТЧ = Истина;
КонецЕсли;
Если ДатаУдержанияНДФЛ <> Дата(1,1,1) Тогда
НДФЛ_Удерж = Источник.Движения.НДФЛРасчетыСБюджетом;
НДФЛ_Удерж.Записывать = Истина;
Для Каждого Записи из НДФЛ_Удерж Цикл
Если Записи.ВидСтроки = Перечисления.НДФЛРасчетыСБюджетомВидСтроки.Удержание Тогда
Записи.Период = ДатаУдержанияНДФЛ;
//Проверяем даты Удержания НДФЛ в талице
Если ДатыВТЧ Тогда
Для Каждого СтрокаТЗ из ТЗ_НДФЛ_сДатами Цикл
Если СтрокаТЗ.ФизЛицо = Записи.ФизЛицо И СтрокаТЗ.Налог = Записи.Налог И СтрокаТЗ.ПодразделениеОрганизации = Записи.ПодразделениеОрганизации Тогда
Записи.Период = СтрокаТЗ.РТ_ДатаУдержанияНДФЛ;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьЛичныеДатыУдержания(Ссылка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачислениеЗарплатыРаботникамОрганизацийНДФЛ.Ссылка,
| НачислениеЗарплатыРаботникамОрганизацийНДФЛ.ФизЛицо,
| НачислениеЗарплатыРаботникамОрганизацийНДФЛ.Налог,
| НачислениеЗарплатыРаботникамОрганизацийНДФЛ.РТ_ДатаУдержанияНДФЛ,
| НачислениеЗарплатыРаботникамОрганизацийНДФЛ.ПодразделениеОрганизации
|ИЗ
| Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛ КАК НачислениеЗарплатыРаботникамОрганизацийНДФЛ
|ГДЕ
| НачислениеЗарплатыРаботникамОрганизацийНДФЛ.Ссылка = &Ссылка
| И НачислениеЗарплатыРаботникамОрганизацийНДФЛ.РТ_ДатаУдержанияНДФЛ <> &ПустаяДата";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ПустаяДата", Дата(1,1,1));
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса.Выгрузить();
КонецФункции // ПолучитьЛичныеДатыУдержания(Источник.Ссылка);()
#КонецОбласти
4. В конце процедуры "ПриОткрытии" Формы документа "Начисление зарплаты сотрудникам организаций" вставляем:
//Измения +
РТ_ОбщийМодуль.ВыводДополнительныхРеквизитов(ДокументОбъект,ЭтаФорма);
//Изменения -
Это единственное изменение, которое необходимо будет сохранять при Обновлении конфы.
5. Создаем Подписку на событие Источник = ДокументОбъект.НачислениеЗарплатыРаботникамОрганизаций, Событие = ОбработкаПроведения, Обработчик = РТ_ОбщийМодуль.РТ_ПроведениеНачислениеЗПОбработкаПроведения.
На этом все. Обращу внимание, что в моем Общем модуле есть процедура "РТ_УдалитьУдержаниеВВыплатеЗПОбработкаПроведения", она создана для Подписки при проведении Ведомости на выплату З/П. Не описывал создание этой подписки по причине того, что в релизе 2.5.101.2 разработчки убрал движение этого документа по регистру "НДФЛРасчетыСБюджетом", но я у себя оставил.
Так же для Бухгалтеров создал Внешний отчет для сверки 6-НДФЛ: //infostart.ru/public/505533/
Первые отчеты ушли на этой неделе, будем смотреть, что скажут в ИФНС, но в 6-НДФЛ все было красиво.
P.S
Знаю, что Код местами туповат, но сделал так...