|
ЗУП 3. Сохранение объекта плана видов расчета. | ☑ | ||
---|---|---|---|---|
0
Target1025
09.12.19
✎
07:52
|
В расчетных листках не проставляется показатель процента северной надбавки т.к. в таблице Показатели объекта видов расчета не нет строки, где ОсновнойПоказатель = Истина. К примеру в РК есть такая строка, в СН - нет.
Пытаясь откорректировать лично, я столкнулся с тем, что не понимаю, почему объект плана видов расчета не хочет сохраняться: &НаСервереБезКонтекста Процедура сделатьНаСервере() Выборка = ПланыВидовРасчета.Начисления.Выбрать(); Пока Выборка.Следующий() Цикл Если (""+Выборка = "Северная надбавка")Тогда Если Сокрлп(Выборка.Код) = "СН" Тогда Объектик = Выборка.ПолучитьОбъект(); Сообщить(Объектик.Показатели[1].ОсновнойПоказатель); Объектик.Показатели[1].ОсновнойПоказатель = Истина; Сообщить(Объектик.Показатели[1].ОсновнойПоказатель); Объектик.Записать(); Сообщить(Объектик.Показатели[1].ОсновнойПоказатель); КонецЕсли; КонецЕсли; КонецЦикла; // Вставить содержимое обработчика. КонецПроцедуры &НаКлиенте Процедура сделать(Команда) сделатьНаСервере(); КонецПроцедуры вывод: Нет (это до начала корректировки) Да (это после корректировки, но до сохранения) Нет (это после сохранения, показатель снова становится Ложь) |
|||
1
2S
09.12.19
✎
08:30
|
зачем темы плодить?
|
|||
2
Target1025
09.12.19
✎
08:31
|
(1) Это уже другая тема с другим совершенно вопросом. Она пересекается с прошлой темой, да, но вопрос уже другой.
|
|||
3
2S
09.12.19
✎
08:35
|
(2) мы пошли другим путем - написали свою расчетку, где РК и СН выведены в колонки с выводом показателей.
|
|||
4
Target1025
09.12.19
✎
09:17
|
(3) Тоже неплохо.
=== (0) Объект сохранялся, просто показатель "переписывался" в момент сохранения. В Процедура ЗаполнитьИнформациюОПоказателяхВидаРасчета(ВидРасчетаОбъект) Экспорт общего модуля РасчетЗарплатыРасширенный есть такой цикл: СтрокиПоказателей = Новый Массив; Для Каждого СтрокаПоказателя Из ВидРасчетаОбъект.Показатели Цикл // Для начала все строки не основные. СтрокаПоказателя.ОсновнойПоказатель = Ложь; // Получаем сведения о показателе. СведенияОПоказателе = СведенияОПоказателях[СтрокаПоказателя.Показатель]; Если СведенияОПоказателе <> Неопределено Тогда // Собираем не автоматически рассчитываемые показатели. Если (Не СведенияОПоказателе.ЗначениеРассчитываетсяАвтоматически И СведенияОПоказателе.НазначениеПоказателя = Перечисления.НазначенияПоказателейРасчетаЗарплаты.ДляСотрудника) Тогда СтрокиПоказателей.Добавить(СтрокаПоказателя); КонецЕсли; КонецЕсли; КонецЦикла; Он перебором очищает все показатели, проставляя ему Ложь и тут же показатели и только те, что НЕ имеют признак "ЗначениеРассчитываетсяАвтоматически" попадают в массив СтрокиПоказателей. Следующим циклом он из отобранных, по своим алгоритмам подбирает ОсновнойПоказатель и ему ставит признак Истина. Т.к. РК имеет признак ЗначениеРассчитываетсяАвтоматически = Ложь, то он попадает в список строк, а СН имеет признак ЗначениеРассчитываетсяАвтоматически = Истина и не попадает. Временной поправкой кода в стиле - Если (Не СведенияОПоказателе.ЗначениеРассчитываетсяАвтоматически И СведенияОПоказателе.НазначениеПоказателя = Перечисления.НазначенияПоказателейРасчетаЗарплаты.ДляСотрудника) или (СведенияОПоказателе.Наименование = "Северная надбавка") Тогда можно добиться попадания СН в список строк с последующей простановкой показания Истина в ОсновнойПоказатель. Далее можно базу вернуть на поддержку, т.к. вид расчета уже будет сохранен. С этого момента в расчетный листок начинает попадать показатель СН. Какие неожиданные эффекты могут вылезти в других местах - я пока что не знаю. :) |
|||
5
Target1025
09.12.19
✎
12:45
|
Нашел более точное место имплементации изменений:
Общий модуль , процедура ДополнитьТекстЗапросаНачисленияУдержанияЗначениямиПоказателей(ТекстЗапроса) запрос |ПОМЕСТИТЬ ВТПоказателиНачисленийПредварительно |ИЗ | ВТСотрудникиМесяцы КАК СотрудникиМесяцы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.Начисления КАК Начисления | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели | ПО Начисления.ВидРасчета = НачисленияПоказатели.Ссылка | И (НачисленияПоказатели.ОсновнойПоказатель) правим на |ПОМЕСТИТЬ ВТПоказателиНачисленийПредварительно |ИЗ | ВТСотрудникиМесяцы КАК СотрудникиМесяцы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.Начисления КАК Начисления | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели | ПО Начисления.ВидРасчета = НачисленияПоказатели.Ссылка | И (НачисленияПоказатели.ОсновнойПоказатель | ИЛИ НачисленияПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.СевернаяНадбавка)) Но придется снять с поддержки конфигурацию. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |