Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ЗУП 3.1 Программный перерасчёт документа отпуска

ЗУП 3.1 Программный перерасчёт документа отпуска
Я
   DomenER
 
04.06.21 - 16:27
Всем привет.

Запросом выбираю нужные мне документы отпуска. Далее в цикле меняю данные табличной части на стороне сервера через ПолучитьОбъект по передаваемой ссылке с клиента.

А вот как запустить пересчитать не понятно (НДФЛ хочу пересчитать).

На клиенте пытаюсь запустить на клиенте
ФормаДокумента = ПолучитьФорму("Документ.Отпуск.Форма.ФормаДокумента", Новый Структура("Ключ",СсылкаДокументаОтпуска), ЭтаФорма);
ФормаДокумента.ПерезаполнитьНачисленияСотрудника(СтрокаТЧотпусков.Сотрудник,истина,Ложь);

И ругается, что "Данные были изменены или удалены другим пользователем". А вот если зайти в документ, подправить данные, то документ пересчитывается нормально.

И также показывает, если использовать следующее
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ФормаДокумента, ОписаниеТаблицыНачислений(Истина))

ОписаниеТаблицыНачислений - это типовая функция конфигурации.

Как программно запустить перерасчёт?
   Serg_1960
 
1 - 04.06.21 - 16:56
Имхо, надо открыть форму объекта, а не его ссылки. Иначе будет ругаться на попытку сохранить этот объект после того, как форма изменит и сохранит объект, полученный её из ссылки.
   mikecool
 
2 - 04.06.21 - 17:00
наверняка есть серверные вызовы пересчета - ищи их
   DomenER
 
3 - 04.06.21 - 17:09
(2) Пока не нашёл. Выполняется очень много кода...
   Фрэнки
 
4 - 04.06.21 - 18:40
(3) На самом деле, с такой фигней, как перерасчет НДФЛ, бороться достаточно тяжело. Я бы посмотрел, имеет ли смысл выполнить перерасчет НДФЛ в том списке лиц, который был обработан в отдельном документе для перерасчёта НДФЛ. Понимаю, что это костыль, но конфиг реально заточен под интерактивные действия расчетчика, а не программиста.
   DomenER
 
5 - 05.06.21 - 13:37
Помогла разобраться одна обработка с инфостарта.
//Получил форму по ссылке

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", СсылкаДокументаОтпуска);
ПараметрыФормы.Вставить("ПерезаполнитьНачисления", Ложь);
ФормаДокумента = ПолучитьФорму("Документ.Отпуск.Форма.ФормаДокумента", ПараметрыФормы, ЭтаФорма);
ФормаДокумента.Открыть();

//Далее пересчитываю

ФормаДокумента.ПерезаполнитьНачисленияСотрудника(СтрокаТЧотпусков.Сотрудник,истина,Ложь);
// Потом провожу и закрываю

ФормаДокумента.КомандаПровестиИЗакрыть(ФормаДокумента.Команды.КомандаПровестиИЗакрыть);


Если нужно перезаполнить начисления, то я использовал:
ФормаДокумента.РассчитатьНачисления(ФормаДокумента.Команды.Рассчитать);
   SleepyHead
 
6 - 05.06.21 - 14:37
(0) А потом окажется, что по этим документам уже есть ведомости на выплату.
В результате пересчета НДФЛ возникают последствия, которые тебе еще аукнутся - пересчитанный отпуск попадет в очередную ведомость, часть дохода по отпуску при этом переедет на дату новой ведомости.
И начнется очередной раунд борьбы за НДФЛ.

Устранять нужно причину ошибок, а не их следствия.
   DrZombi
 
7 - 05.06.21 - 21:32
(0) Никак, нет этого у ЗУП-а, да, только через форму, т.е. на сервере это можно организовать, но вам не понравится.

Пример, как обойти ограничения от 1С...
https://infostart.ru/1c/articles/317865/
https://infostart.ru/public/1274701/
   DrZombi
 
8 - 05.06.21 - 21:35
+(7) Спам бот робит на этой же снове.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.