|
ЗУП 31 | ☑ | ||
---|---|---|---|---|
0
Natalika
18.12.17
✎
16:23
|
Здравствуйте. Подскажите пожалуйста, как загрузить значения разовых показателей в ЗУП 3.1? Есть показатель "Премия Торг", создала шаблон документа ввода исходных данных с выбранным показателем, вводится раз в месяц, по сотрудникам. Вручную можно заполнить документ "Данные для расчета зп", который заполняет таблицу на форме "ДанныеСводно", а затем при записи заполняет значения в табличную часть "ЗначенияПоказателей" и "ФизическиеЛица". Я написала обработку заполнения табличных частей "ЗначенияПоказателей" и "ФизическиеЛица" для выбранного документа, но таблица "ДанныеСводно" остается пустой и данные в табл части документа не записываются. Подскажите пожалуйста как загрузить значения разовых показателей в документ "Данные для расчета зп"?
|
|||
1
El_Duke
гуру
18.12.17
✎
16:46
|
(0) Загрузить откуда ? Что выступает источником данных для документа Данные для расчета зарплаты ?
|
|||
2
Natalika
18.12.17
✎
16:52
|
(1) Ежемесячно из Торговой базы для продавцов выгружаются значения премий. В ЗУП 2.5 эти значения загружались в рег. св. "Значения показателей схем мотивации", в ЗУП 3.1 это рег. св. "Значения разовых показателей расчета зарплаты (для сотрудников)", но у него должен быть регистратор "Данные для расчета зп". Я не пойму как его правильно запонить...
|
|||
3
El_Duke
гуру
18.12.17
✎
16:55
|
(2) Продавцов 100500 человек и у каждого свой уникальный % премии ?
|
|||
4
Natalika
18.12.17
✎
16:56
|
(3)Да. Размер премии зависит от выручки продавца за период.
|
|||
5
ZDenis
18.12.17
✎
17:01
|
(0) Я тоже заполняю документ "Данные для расчета зарплаты" внешними данными, но для этого достаточно заполнить табличную часть "ЗначенияПоказателей". "ФизическиеЛица" заполниться сама при проведении (записи), если в "ЗначенияПоказателей" заполнен сотрудник
|
|||
6
Natalika
18.12.17
✎
17:06
|
(5) у вас заполняется разовый показатель или распределяется сумма сдельной работы по сотрудникам? Первый случай у меня не работает, а со вторым все хорошо.
|
|||
7
ZDenis
18.12.17
✎
17:13
|
(6) Именно разовый показатель. Вообще из всего перечня реквизитов табличной части заполняю только: Показатель, Значение, Период и Объект
Реквизиты самого документа - Дата, Ответственный, Организация, ВидДокумента, Период |
|||
8
ZDenis
18.12.17
✎
17:15
|
(6) Может у Вас в настройке шаблона какой-то изъян.
|
|||
9
Natalika
18.12.17
✎
17:18
|
(7) Странно. Я тоже самое заполняю. У меня пусто... А у вас на форме документа используется таблица "ЗначенияПоказателей" или таблица значений "ДанныеСводно"? У меня почему-то на форме "ДанныеСводно", а при записи из этой таблицы перезаполняется Табл часть "ЗначенияПоказателей" пустыми значениями. Можно посмотреть настройки вашего шаблона и код загрузки?
|
|||
10
ZDenis
18.12.17
✎
17:26
|
Шаблон простой:
На закладке "Показатели зарплаты" - переключатель на "Разовые (используемые только в одном месяце)", ниже галка на нужном показателе этом показателе. Все остальные закладки шаблона - пустые. На закладке "Дополнительно" - галочка "В документе используется несколько сотрудников". Ну а модуль загрузки тоже прост: &НаСервере Функция СоздатьУдержаниеНаСервере() ДокОбъект = Документы.ДанныеДляРасчетаЗарплаты.СоздатьДокумент(); ДокОбъект.Дата = Объект.Дата; ДокОбъект.Ответственный = Объект.Ответственный; ДокОбъект.Организация = Объект.Организация; ДокОбъект.ВидДокумента = Справочники.ВидыДокументовВводДанныхДляРасчетаЗарплаты.НайтиПоНаименованию("Удержания за телефон"); ДокОбъект.Период = Объект.МесяцНачисления; Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("УдержаноЗаТелефон"); ТаблицаУдержаний = Объект.Начисления.Выгрузить(); ТаблицаУдержаний.Свернуть("Сотрудник", "КУдержанию"); Для Каждого Строка ИЗ ТаблицаУдержаний Цикл Если Строка.КУдержанию = 0 Тогда Продолжить; КонецЕсли; Стр = ДокОбъект.ЗначенияПоказателей.Добавить(); Стр.Показатель = Показатель; Стр.Значение = Строка.КУдержанию; Стр.Период = Объект.МесяцНачисления; Стр.Объект = Строка.Сотрудник; КонецЦикла; ДокОбъект.Записать(); Возврат ДокОбъект.Ссылка; КонецФункции |
|||
11
Natalika
18.12.17
✎
17:40
|
У меня настройка шаблона такая же. Вот код внешней обработки заполнения табличной части:
ИмяФайлаСервер = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища); ДвоичныеДанные.записать(ИмяФайлаСервер); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайлаСервер); ДокОбъект.ЗначенияПоказателей.Очистить(); Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяУзла = ЧтениеXML.Имя; Если ИмяУзла = "Строка" Тогда КодСотрудника = ЧтениеXML.ПолучитьАтрибут("КодСотрудника"); ФИОСотрудника = ЧтениеXML.ПолучитьАтрибут("Сотрудник"); СуммаПремии = ЧтениеXML.ПолучитьАтрибут("Сумма"); ФизЛицо=Справочники.ФизическиеЛица.НайтиПоКоду(КодСотрудника); Если ФизЛицо.Пустая() Тогда Сообщить("Физлицо с кодом "+КодСотрудника+" не найден"); Продолжить; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СотрудникиОрганизаций.Ссылка КАК Ссылка |ИЗ | Справочник.Сотрудники КАК СотрудникиОрганизаций | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников | ПО СотрудникиОрганизаций.Ссылка = ТекущиеКадровыеДанныеСотрудников.Сотрудник | И (ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения, ДАТАВРЕМЯ(1, 1, 1)) = ДАТАВРЕМЯ(1, 1, 1)) | И (ТекущиеКадровыеДанныеСотрудников.ОсновноеРабочееМестоВОрганизации) | И (ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)) |ГДЕ | СотрудникиОрганизаций.ФизическоеЛицо = &Физлицо | И СотрудникиОрганизаций.ГоловнаяОрганизация = &Организация | И НЕ СотрудникиОрганизаций.ПометкаУдаления"; Запрос.УстановитьПараметр("Организация", ДокОбъект.Организация); Запрос.УстановитьПараметр("Физлицо", ФизЛицо); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Следующий() Тогда Сотрудник = ВыборкаДетальныеЗаписи.Ссылка; ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Объект", Сотрудник); МассивСтрок = ДокОбъект.ЗначенияПоказателей.НайтиСтроки(ПараметрыОтбора); Если МассивСтрок.Количество()=0 Тогда Сообщить("0.Добавляем Строку сотрудник "+Сотрудник); НоваяСтрока = ДокОбъект.ЗначенияПоказателей.Добавить(); НоваяСтрока.Объект = Сотрудник; Иначе Сообщить("1 Строка сотрудник "+Сотрудник); НоваяСтрока = МассивСтрок[0]; КонецЕсли; НоваяСтрока.Период = ДокОбъект.Период; НоваяСтрока.Показатель = ДокОбъект.ВидДокумента.Показатели.Получить(0).Показатель; НоваяСтрока.Значение = СуммаПремии; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; ЧтениеXML.Закрыть(); Не работает. Не понимаю. Но единственное, что меня смущает, это то, что на форме документа используется другая таблица значений, с которой перезаполняется Табличная часть "ЗначенияПоказателей". Поэтому я перепишу лучше обработку как у вас - сделаю, чтобы сразу создавался и заполнялся документ. Потом просто буду открывать созданный документ для пользователя. Спасибо большое за ваш вариант!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |