Имя: Пароль:
1C
1С v8
Не сохраняются показатели расчета зарплаты
0 Sayan_mi
 
27.02.18
08:06
День добрый усть ЗиУП 3.1
Есть внешняя обработка заполняющая табличную часть документа Разовые начисления.
Табличную часть формы она заполнила, т.е. заполнено время, заполнены необходимые для данного вида расчета показатели, заполнена сумма.
(т.ч. начисления) При сохранении документа, показатели уходят в пустоту. Причем не зависит от того пишу ли я их в т.ч. показатели.
В чем может быть проблема?
1 SleepyHead
 
гуру
27.02.18
08:13
(0) В том, что не заполнена таблничная часть "Показатели". Ваш кэп.
2 Фрэнки
 
27.02.18
08:13
Там куча проблем.
Если совсем кратко, то сделай замер производительности с момента нажатия на кнопку запись и просто взгляни в какую кучу программного кода превращены событие перед записью документа.
3 SleepyHead
 
гуру
27.02.18
08:14
(2) Что же я тогда не так делаю, что у меня все заполняется и проводится? ))
4 Sayan_mi
 
27.02.18
08:27
(1) Заполнял и т.ч. показатели. При сохранении очищается ;(
На другом виде расчета (там один показатель) все сохранялось. Тут два показателя - глухо.
5 SleepyHead
 
гуру
27.02.18
08:29
(4) Есть соответствие между ТЧ показателей и сотрудников по идентификатору строки? Ты его вообще заполнял?
6 SleepyHead
 
гуру
27.02.18
08:33
Алгоритм примерно такой. Из вида начисления читаешь его показатели, запросом. Соединяешь с таблицей показателей, чтобы понять, какой из них рассчитывается, какой нет.

потом при формировании строк разового начисления примерно такой крестьянский код

                ИдентификаторСтрокиВидаРасчета = ИдентификаторСтрокиВидаРасчета + 1;
                
                СтрНачисление = Док.Начисления.Добавить();
                СтрНачисление.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
                СтрНачисление.Подразделение = мПодразделение;
                СтрНачисление.Результат = ВыборкаДетальныеЗаписи.Сумма;
                СтрНачисление.ИдентификаторСтрокиВидаРасчета = ИдентификаторСтрокиВидаРасчета;
                СтрНачисление.ДатаНачала = НачалоМесяца(Объект.ПериодРегистрации);
                СтрНачисление.ДатаОкончания = КонецМесяца(Объект.ПериодРегистрации);
                СтрНачисление.ФиксРасчет = Истина;
                СтрНачисление.ФиксЗаполнение = Истина;
                СтрНачисление.ФиксРасчетВремени = Истина;
                СтрНачисление.ПериодРегистрацииВремени = СтрНачисление.ДатаНачала;
                СтрНачисление.ГрафикРаботыНорма = ГрафикНормы;
                СтрНачисление.ГрафикРаботы = ГрафикРаботы;
                СтрНачисление.ВидУчетаВремени = Справочники.ВидыИспользованияРабочегоВремени.Явка;
                СтрНачисление.ПериодДействия = НачалоМесяца(Объект.ПериодРегистрации);
                СтрНачисление.ОбщийГрафик = ОбщийГрафик;
                СтрНачисление.ПериодРегистрацииНормыВремени = НачалоМесяца(Объект.ПериодРегистрации);
                
                Если СтрПоказатель.Рассчитывается Тогда
                    СтрПок = Док.Показатели.Добавить();
                    СтрПок.ИдентификаторСтрокиВидаРасчета = ИдентификаторСтрокиВидаРасчета;
                    СтрПок.Показатель = СтрПоказатель.Показатель;
                    СтрПок.Значение = ВыборкаДетальныеЗаписи.Сумма;
                КонецЕсли;
                
                СтрРаспределение = Док.РаспределениеРезультатовНачислений.Добавить();
                СтрРаспределение.ИдентификаторСтроки = ИдентификаторСтрокиВидаРасчета;
                СтрРаспределение.Территория = Док.Подразделение;
                СтрРаспределение.СтатьяФинансирования = Док.СтатьяФинансирования;
                СтрРаспределение.СтатьяРасходов = Док.СтатьяРасходов;
                СтрРаспределение.Результат = ВыборкаДетальныеЗаписи.Сумма;
                СтрРаспределение.СпособОтраженияЗарплатыВБухучете = СпособОтраженияЗарплатыВБухучете;
                
                СтрФЛ = Док.ФизическиеЛица.Добавить();
                СтрФЛ.ФизическоеЛицо = ВыборкаДетальныеЗаписи.ФизическоеЛицо;
7 Sayan_mi
 
27.02.18
08:34
(5) Естественно и в т.ч начисления (ИдентификаторСтрокиВидаРасчета) и в т.ч. тоже значение (по строке т.ч. Начисления)
8 SleepyHead
 
гуру
27.02.18
08:34
Для чтения данных о показателях я использовал такой крестьянский код:

    // получаем колонки: ВидНачисления, Показатель, Способ, ВидДокумента (для подбора вида документа - разовое начисление или назначение постоянной надбавки)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("МассивПриказов", МассивПриказов);
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    АлтГПУ_ПриказОЕдиновременнойДоплате.ВидПоощрения.ВидНачисления КАК ВидНачисления
        |ПОМЕСТИТЬ ВТ_ВидыНачисления
        |ИЗ
        |    Документ.АлтГПУ_ПриказОЕдиновременнойДоплате КАК АлтГПУ_ПриказОЕдиновременнойДоплате
        |ГДЕ
        |    АлтГПУ_ПриказОЕдиновременнойДоплате.Ссылка В(&МассивПриказов)
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    НачисленияПоказатели.Показатель КАК Показатель,
        |    НачисленияПоказатели.Ссылка КАК ВидНачисления,
        |    НачисленияПоказатели.Ссылка.СпособВыполненияНачисления КАК Способ,
        |    НачисленияПоказатели.Ссылка.ВидДокументаНачисления КАК ВидДокумента,
        |    НачисленияПоказатели.Ссылка.Рассчитывается КАК Рассчитывается
        |ИЗ
        |    ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
        |ГДЕ
        |    НачисленияПоказатели.Ссылка В
        |            (ВЫБРАТЬ
        |                ВТ_ВидыНачисления.ВидНачисления КАК ВидНачисления
        |            ИЗ
        |                ВТ_ВидыНачисления КАК ВТ_ВидыНачисления)
        |    И НачисленияПоказатели.ОсновнойПоказатель";
    ТаблицаПоказателей = Запрос.Выполнить().Выгрузить();
    ТаблицаПоказателей.Индексы.Добавить("ВидНачисления");
9 SleepyHead
 
гуру
27.02.18
08:35
Этот запрос сложноват, можешь переделать его на чтение из одного вида начисления. А я читал по набору документов.
10 Фрэнки
 
27.02.18
08:40
(3) вероятно, что была выполнена вся настройка опций, расчетов, удержаний, показателей и т.д. - где-то там в порядке заполнения прописали нечто, что ликвидировало проблему.

Я бы автору посоветовал еще, до того, как наверчивать автозаполнение документа в форме, проверить его заполнение при полностью интерактивном способе.
11 Sayan_mi
 
27.02.18
08:50
(10) Заполняется. И по этому документу уже пишется вторая обработка по заполнению, первая прекрасно отработала!!!
12 SleepyHead
 
гуру
27.02.18
08:51
(11) а проблема-то решена?
13 Sayan_mi
 
27.02.18
09:01
(12) Решил - Не правильно вычислял показатели. Значение то в Т.ч. отображалось, а имя показателя шло неопределено.