|
Программный пересчет строки сотрудника в разовом начислении. | ☑ | ||
---|---|---|---|---|
0
gul_Sayan
03.11.23
✎
10:06
|
Есть задача Нужно программно скорректировать строку начисления (не все) в документе разовое начисление.
Строку то скорректировал, а вот как пересчитать НДФЛ и Удержания не открывая формы? |
|||
1
SleepyHead
03.11.23
✎
10:07
|
(0) Смотри, что происходит по кнопке "Пересчитать сотрудника". И можно ли обойтись без открытия формы, работая только с коллекциями, связанными с документом.
|
|||
2
gul_Sayan
03.11.23
✎
10:22
|
По кнопке передаётся в том числе и форма, а вот форму то открывать и не хочется, тем паче что иногда требуется пересчитать 1 строку из 100.
|
|||
3
SleepyHead
03.11.23
✎
10:24
|
(2) Передай туда структуру, которая повторяет то, что содержат данные формы.
|
|||
4
Масянька
03.11.23
✎
10:24
|
(0) Все пересчеты лежат в модуле формы. И работают с ТЧ документа.
Такое вот ноу-хау от 1С. |
|||
5
Масянька
03.11.23
✎
10:27
|
(4) РасчетЗарплатыРасширенныйКлиентСервер.УстановитьПланируемуюДатуВыплаты(ВладелецФормы, ОписаниеДокумента(ВладелецФормы))
|
|||
6
gul_Sayan
03.11.23
✎
10:34
|
Короче похоже без открытия формы не обойтись :-(
|
|||
7
SleepyHead
03.11.23
✎
10:36
|
(2)
Это из модуля формы документа. Все считается на сервере Сдается мне, переписать этот код без формы особого труда не составит. &НаСервере Процедура ПересчитатьНДФЛ() УстановитьПривилегированныйРежим(Истина); МенеджерРасчета = РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(Объект.МесяцНачисления, Объект.Организация); Сотрудники = ОбщегоНазначения.ВыгрузитьКолонку(Объект.Начисления, "Сотрудник"); ФизическиеЛицаСотрудников = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Сотрудники, "ФизическоеЛицо"); ФизическиеЛица = ОбщегоНазначения.ВыгрузитьКолонку(ФизическиеЛицаСотрудников, "Значение"); ЗаполнитьНастройкиМенеджераРасчета(ФизическиеЛица, МенеджерРасчета); МенеджерРасчета.НастройкиРасчета.ФизическиеЛица = ФизическиеЛица; Если ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца Тогда Объект.НДФЛ.Очистить(); Объект.КорректировкиВыплаты.Очистить(); Объект.ПримененныеВычетыНаДетейИИмущественные.Очистить(); КонецЕсли; ДанныеФормыВДанныеМенеджераРасчета(МенеджерРасчета); МенеджерРасчета.ПересчитатьНДФЛ(); РасчетЗарплатыВДанныеФормы(МенеджерРасчета.Зарплата); ЗаполнитьНалогиУдержания(); УстановитьПривилегированныйРежим(Ложь); КонецПроцедуры |
|||
8
El_Duke
03.11.23
✎
10:46
|
(7) "Сдается мне, переписать этот код без формы особого труда не составит"
Очень опасный инструмент может получиться. Пересчитали начисление, налоги и ... никаких следов. Кто, когда, зачем ? Пострашнее чем фаустпатрон. Особенно в прошедшем периоде, когда пересчитанный НДФЛ и остальное надо пересдать корректировкой 6-НДФЛ, перс.сведений и тд. В Разовом начислении есть каноническая ссылка Исправить, хоть следы останутся для последующего следствия |
|||
9
SleepyHead
03.11.23
✎
10:51
|
(8) Хочет человек создать документ, заполнить и рассчитать. Под его ответственность.
Мне этот момент интересен чисто технически - можно или нет. |
|||
10
gul_Sayan
03.11.23
✎
11:44
|
(7) Спасибо.
|
|||
11
gul_Sayan
03.11.23
✎
11:46
|
(8) Документы текущего периода, так что корректировка вполне возможна, да и так первоначально собирались документ открывать и пересчитывать сотрудников.
|
|||
12
SleepyHead
03.11.23
✎
11:48
|
(11) А может, все же по кнопке "Исправить" и не грешить?
|
|||
13
Масянька
03.11.23
✎
11:51
|
(11) По законам жанрам (ЗУП), если ЗП ещё не закрыта (рассчитана, выплачена) - корректируем в док-те, иначе - исправляем док-т.
Не забываем про межрасчетные выплаты. |
|||
14
El_Duke
03.11.23
✎
13:11
|
(11) Если доки текущего периода, то зачем вообще нужна эта задача ?
|
|||
15
Gucci76
03.11.23
✎
13:27
|
ПерезаполнитьДанныеФормыНаСервере(МассивСотрудников,Истина);
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |