Запись регистра расчетов измененные пользователем данные
Всем добрый день!
Задача такая, не могу понять как решить -
В модуле формы при нажатии на команду Рассчитать заполняются поля табличной части результат и количество дней. Там два запроса и условные операторы. Это все ок, все работает. Данные берутся из регистра.
Далее пользователь в форме документа может поменять эти данные в ручную и эти новые данные при проведении документа, должны попасть в регистр расчета. При проведении попадают данные, которые рассчитываются в алгоритмах.
В форме документа процедуре обработка проведения в конце анализируется поле документа "Результат" - если оно заполнено (значит пользователь либо нажал на кнопку Расчитать, либо внес что то сам) то в стандартную структуру "дополнительные параметры" добавляю запись с ключом "Рассчитать" и значением Истина.
Далее если Этот параметр истина то регистр расчетов должен очищаться от предыдущей записи, которую сделал этот регистратор (документ), и должна попасть запись с новыми полями (все поля прежние, кроме поля Количество дней и Результат - эти данные должны быть взяты из формы документа)., но этого не происходит.
Если добавить после проверки метод Очистить, то вообще записи в регистр не добавляются.
В общем нужна помощь
Мне кажется что решение тут какое то элементарное)
Задача такая, не могу понять как решить -
В модуле формы при нажатии на команду Рассчитать заполняются поля табличной части результат и количество дней. Там два запроса и условные операторы. Это все ок, все работает. Данные берутся из регистра.
Далее пользователь в форме документа может поменять эти данные в ручную и эти новые данные при проведении документа, должны попасть в регистр расчета. При проведении попадают данные, которые рассчитываются в алгоритмах.
В форме документа процедуре обработка проведения в конце анализируется поле документа "Результат" - если оно заполнено (значит пользователь либо нажал на кнопку Расчитать, либо внес что то сам) то в стандартную структуру "дополнительные параметры" добавляю запись с ключом "Рассчитать" и значением Истина.
Далее если Этот параметр истина то регистр расчетов должен очищаться от предыдущей записи, которую сделал этот регистратор (документ), и должна попасть запись с новыми полями (все поля прежние, кроме поля Количество дней и Результат - эти данные должны быть взяты из формы документа)., но этого не происходит.
Если добавить после проверки метод Очистить, то вообще записи в регистр не добавляются.
В общем нужна помощь
Мне кажется что решение тут какое то элементарное)
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОсновныеНачисления.Записывать = Истина;
Движения.ДополнительныеНачисления.Записывать = Истина;
Для Каждого ТекСтрокаНачисления Из Начисления Цикл
Если ТипЗнч(ТекСтрокаНачисления.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисления") Тогда
Движение = Движения.ОсновныеНачисления.Добавить();
Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала;
Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
Если ТекСтрокаНачисления.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.БольничныйЛист Тогда
Движение.ТипГрафика = Константы.Пятидневка.Получить();
Иначе
Движение.ТипГрафика = ТекСтрокаНачисления.ТипГрафика;
КонецЕсли;
//Движение.ОтработаноДней = ТекСтрокаНачисления.ОтработаноДней;
Если ТекСтрокаНачисления.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Отпуск Тогда
НачалоМесяца = НачалоМесяца(Движение.ПериодДействияНачало);
Движение.БазовыйПериодНачало = ДобавитьМесяц(НачалоМесяца,-3);
Движение.БазовыйПериодКонец = НачалоМесяца-1;
КонецЕсли;
ИначеЕсли ТипЗнч(ТекСтрокаНачисления.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисления") Тогда
Движение = Движения.ДополнительныеНачисления.Добавить();
Движение.БазовыйПериодНачало = ТекСтрокаНачисления.ДатаНачала;
Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
Иначе
Продолжить;
КонецЕсли;
Движение.Сторно = Ложь;
Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета;
Движение.ПериодРегистрации = Дата;
Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;
Движение.Подразделение = ТекСтрокаНачисления.Подразделение;
Движение.Размер = ТекСтрокаНачисления.Размер;
//Движение.Результат = ТекСтрокаНачисления.Результат;
КонецЦикла;
Движения.Записать();
РасчетЗП.РасчитатьРегистрРасчета(Движения.ОсновныеНачисления, Отказ);
РасчетЗП.РасчитатьРегистрРасчета(Движения.ДополнительныеНачисления, Отказ);
Для каждого ТекСтрока Из Начисления Цикл
Если ЗначениеЗаполнено(ТекСтрока.Результат) Тогда
ДополнительныеСвойства.Вставить("Расчитать", Истина);
Если ДополнительныеСвойства.Расчитать = Истина Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ДополнительныеСвойства.Расчитать = Истина Тогда
Движение.Результат = ТекСтрокаНачисления.Результат;
Движение.ОтработаноДней = ТекСтрокаНачисления.ОтработаноДней;
КонецЕсли;
Движения.Записать();
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Регистры расчета в 1с8 для чайников
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки
- Несколько способов обнуления взаиморасчетов. Несколько способов корректировки записей регистров взаиморасчетов для УПП 1.3
- Database Compression Tool (DCT) Универсальный инструмент сжатия, свертки и конвертации баз данных 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот