|
|
ЗУП 3.1 Программный перерасчёт документа отпуска |
☑ |
|
0
DomenER
04.06.21
✎
16:27
|
Всем привет.
Запросом выбираю нужные мне документы отпуска. Далее в цикле меняю данные табличной части на стороне сервера через ПолучитьОбъект по передаваемой ссылке с клиента.
А вот как запустить пересчитать не понятно (НДФЛ хочу пересчитать).
На клиенте пытаюсь запустить на клиенте
ФормаДокумента = ПолучитьФорму("Документ.Отпуск.Форма.ФормаДокумента", Новый Структура("Ключ",СсылкаДокументаОтпуска), ЭтаФорма);
ФормаДокумента.ПерезаполнитьНачисленияСотрудника(СтрокаТЧотпусков.Сотрудник,истина,Ложь);
И ругается, что "Данные были изменены или удалены другим пользователем". А вот если зайти в документ, подправить данные, то документ пересчитывается нормально.
И также показывает, если использовать следующее
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ФормаДокумента, ОписаниеТаблицыНачислений(Истина))
ОписаниеТаблицыНачислений - это типовая функция конфигурации.
Как программно запустить перерасчёт?
|
|
|
1
Serg_1960
04.06.21
✎
16:56
|
Имхо, надо открыть форму объекта, а не его ссылки. Иначе будет ругаться на попытку сохранить этот объект после того, как форма изменит и сохранит объект, полученный её из ссылки.
|
|
|
2
mikecool
04.06.21
✎
17:00
|
наверняка есть серверные вызовы пересчета - ищи их
|
|
|
3
DomenER
04.06.21
✎
17:09
|
(2) Пока не нашёл. Выполняется очень много кода...
|
|
|
4
Фрэнки
04.06.21
✎
18:40
|
(3) На самом деле, с такой фигней, как перерасчет НДФЛ, бороться достаточно тяжело. Я бы посмотрел, имеет ли смысл выполнить перерасчет НДФЛ в том списке лиц, который был обработан в отдельном документе для перерасчёта НДФЛ. Понимаю, что это костыль, но конфиг реально заточен под интерактивные действия расчетчика, а не программиста.
|
|
|
5
DomenER
05.06.21
✎
13:37
|
Помогла разобраться одна обработка с инфостарта.
//Получил форму по ссылке
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", СсылкаДокументаОтпуска);
ПараметрыФормы.Вставить("ПерезаполнитьНачисления", Ложь);
ФормаДокумента = ПолучитьФорму("Документ.Отпуск.Форма.ФормаДокумента", ПараметрыФормы, ЭтаФорма);
ФормаДокумента.Открыть();
//Далее пересчитываю
ФормаДокумента.ПерезаполнитьНачисленияСотрудника(СтрокаТЧотпусков.Сотрудник,истина,Ложь);
// Потом провожу и закрываю
ФормаДокумента.КомандаПровестиИЗакрыть(ФормаДокумента.Команды.КомандаПровестиИЗакрыть);
Если нужно перезаполнить начисления, то я использовал:
ФормаДокумента.РассчитатьНачисления(ФормаДокумента.Команды.Рассчитать);
|
|
|
6
SleepyHead
гуру
05.06.21
✎
14:37
|
(0) А потом окажется, что по этим документам уже есть ведомости на выплату.
В результате пересчета НДФЛ возникают последствия, которые тебе еще аукнутся - пересчитанный отпуск попадет в очередную ведомость, часть дохода по отпуску при этом переедет на дату новой ведомости.
И начнется очередной раунд борьбы за НДФЛ.
Устранять нужно причину ошибок, а не их следствия.
|
|
|
7
DrZombi
гуру
05.06.21
✎
21:32
|
(0) Никак, нет этого у ЗУП-а, да, только через форму, т.е. на сервере это можно организовать, но вам не понравится.
Пример, как обойти ограничения от 1С...
https://infostart.ru/1c/articles/317865/
https://infostart.ru/public/1274701/
|
|
|
8
DrZombi
гуру
05.06.21
✎
21:35
|
+(7) Спам бот робит на этой же снове.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший