Надо помочь разобраться в алгоритме поставленной задачи.
Всем привет! Есть такая задачка:
В документе «ДоходВНатуральнойФорме» подменить процедуру формы документа «ОбработатьИзменениеПоказателейНаСервере». Алгоритм : для вида расчета «Оплата питания»
Сумма*30% на первые три месяца начисления этого вида расчета. После трех месяцев использования
компенсации за питание сотрудник начинает оплачивать питание в полном объеме.
Подменить могу, вид расчета "Оплата питания" вытащу из ВидРасчетаИнфо = ЗарплатаКадрыРасширенныйПовтИсп.ПолучитьИнформациюОВидеРасчета(Объект.Начисление); в указанной процедуре. Но что дальше не соображу никак. Сам документ "ДоходВНатуральнойФорме делает разовое начисление. А в задачке , по сути, целый график выплат надо, или условия где-то прописать.
Я учусь, не судите строго плз...
В документе «ДоходВНатуральнойФорме» подменить процедуру формы документа «ОбработатьИзменениеПоказателейНаСервере». Алгоритм : для вида расчета «Оплата питания»
Сумма*30% на первые три месяца начисления этого вида расчета. После трех месяцев использования
компенсации за питание сотрудник начинает оплачивать питание в полном объеме.
Подменить могу, вид расчета "Оплата питания" вытащу из ВидРасчетаИнфо = ЗарплатаКадрыРасширенныйПовтИсп.ПолучитьИнформациюОВидеРасчета(Объект.Начисление); в указанной процедуре. Но что дальше не соображу никак. Сам документ "ДоходВНатуральнойФорме делает разовое начисление. А в задачке , по сути, целый график выплат надо, или условия где-то прописать.
Я учусь, не судите строго плз...
По теме из базы знаний
Найденные решения
В общем у меня все получилось:
Ошибка была в тексте запроса:
надо было
и
присвоение параметра было не правильного типа:
надо было
Если кому интересно))
Всех благодарю за помощь!
Ошибка была в тексте запроса:
| Начисления.ФизическоеЛицо.Наименование = &ФИОСотрудника
надо было
| Начисления.Сотрудник = &ФИОСотрудника
и
присвоение параметра было не правильного типа:
Запрос.УстановитьПараметр("ВидНачисления", "Оплата питания");
надо было
Запрос.УстановитьПараметр("ВидНачисления", Объект.Начисление);
Если кому интересно))
Всех благодарю за помощь!
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Может лучше отдельное начисление сделать, с показателями для расчета.
В документе «ДоходВНатуральнойФорме» подменить процедуру формы документа «ОбработатьИзменениеПоказателейНаСервере». Алгоритм : для вида расчета «Оплата питания»
Сумма*30% на первые три месяца начисления этого вида расчета. После трех месяцев использования
компенсации за питание сотрудник начинает оплачивать питание в полном объеме.
Сумма*30% на первые три месяца начисления этого вида расчета. После трех месяцев использования
компенсации за питание сотрудник начинает оплачивать питание в полном объеме.
Может лучше отдельное начисление сделать, с показателями для расчета.
Да, так и есть.
Как я понял теперь надо проверять значение поля формы "Вид дохода" - "Оплата питания" или нет...
и еще, видимо, надо запрос делать по регистру расчета по каждому сотруднику, было ли у него начисление с видом дохода оплата питания в промежутке предыдущих 3х месяцев...
Как я понял теперь надо проверять значение поля формы "Вид дохода" - "Оплата питания" или нет...
и еще, видимо, надо запрос делать по регистру расчета по каждому сотруднику, было ли у него начисление с видом дохода оплата питания в промежутке предыдущих 3х месяцев...
(3)
Нет, лучше проверять не документ проверять, а начисление у сотрудника.
Как я понял теперь надо проверять значение поля формы "Вид дохода" - "Оплата питания" или нет...
и еще, видимо, надо запрос делать по регистру расчета по каждому сотруднику, было ли у него начисление с видом дохода оплата питания в промежутке предыдущих 3х месяцев...
и еще, видимо, надо запрос делать по регистру расчета по каждому сотруднику, было ли у него начисление с видом дохода оплата питания в промежутке предыдущих 3х месяцев...
Нет, лучше проверять не документ проверять, а начисление у сотрудника.
(4) Так начисления еще нет. Происходит только заполнение документа.
Короче надо создать начисление новое, с заполнением фиксированной суммой. Потом вводим сумму в кнопке "Заполнить показатели". Если вид начисления выбран "Оплата питания" то сумму, которую ввели в кнопке "Заполнить показатели" умножаем на 30%. Как-то так..
Теперь надо запрос наваять
Короче надо создать начисление новое, с заполнением фиксированной суммой. Потом вводим сумму в кнопке "Заполнить показатели". Если вид начисления выбран "Оплата питания" то сумму, которую ввели в кнопке "Заполнить показатели" умножаем на 30%. Как-то так..
Теперь надо запрос наваять
(5)
Нужно проверить есть ли расчеты по этому сотруднику и виду начислению за прошлые периоды..
"Заполнить показатели". Если вид начисления выбран "Оплата питания" то сумму, которую ввели в кнопке "Заполнить показатели" умножаем на 30%. Как-то так..
Теперь надо запрос наваять
Теперь надо запрос наваять
Нужно проверить есть ли расчеты по этому сотруднику и виду начислению за прошлые периоды..
(7) Таково условие задачи, я ни при чем
Почти доделал, но затык:
Что не так с этим запросом? Вид начисления какого типа должен быть?
В общем записи в регистре раньше даты точно есть. Но почему-то они не выводятся.((
Почти доделал, но затык:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Начисления.ФизическоеЛицо.Наименование КАК ФизическоеЛицоНаименование,
| Начисления.Результат КАК Результат,
| Начисления.ПериодРегистрации КАК ПериодРегистрации
|ИЗ
| РегистрРасчета.Начисления КАК Начисления
|ГДЕ
| Начисления.ФизическоеЛицо.Наименование = &ФИОСотрудника
| И Начисления.ПериодРегистрации < &ДатаНачалаПериода
| И Начисления.ВидРасчета = &ВидНачисления";
НачПер = ДатаПолученияДохода - 7603200;
Запрос.УстановитьПараметр("ФИОСотрудника", ФИОСотрудник);
Запрос.УстановитьПараметр("ДатаНачалаПериода", НачПер);
Запрос.УстановитьПараметр("ВидНачисления", "Оплата питания");
ПоказатьЧто не так с этим запросом? Вид начисления какого типа должен быть?
В общем записи в регистре раньше даты точно есть. Но почему-то они не выводятся.((
(8) Создается вид начисления (если подобного еще нет), в формуле которого используется показатель, который вносится ежемесячно. В документе, который вводит показатель делается внешняя обработка заполнения. И уже в обработку заполнения заносите бизнес-логику расчета показателя. Путь этот показатель будет - как раз процент или конечная сумма. Не важно.
В документе начисления все заполнится как следует.
Не надо переписывать типовой функционал из-за подобных задач.
P.S.: Тип - план видов расчета
В документе начисления все заполнится как следует.
Не надо переписывать типовой функционал из-за подобных задач.
P.S.: Тип - план видов расчета
(12) Это тестовое задание
Алгоритм следующий, надо с помощью запроса найти записи раньше чем 3 месяца относительно текущей даты. Если такие записи есть - значит начисление Оплата питания не начисляем, если таких записей нет - то начисляем (сумма * 30%)
Дата создаваемого документа 11.05.2016
Откатываем 3 месяца, смотрим в регистр начислений - записи есть:
Вот запрос, который должен выводить эти записи:
Если точкой останова посмотреть переменные, то получается что
НачПер = 13.02.2016
ФИОСотрудник = Ваньков ...
ТестПеременная = Оплата питания
Короче все ок, записи раньше даты есть. Но запрос их почему-то не выводит.
Почему?
Алгоритм следующий, надо с помощью запроса найти записи раньше чем 3 месяца относительно текущей даты. Если такие записи есть - значит начисление Оплата питания не начисляем, если таких записей нет - то начисляем (сумма * 30%)
Дата создаваемого документа 11.05.2016
Откатываем 3 месяца, смотрим в регистр начислений - записи есть:
Вот запрос, который должен выводить эти записи:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Начисления.ФизическоеЛицо.Наименование КАК ФизическоеЛицоНаименование,
| Начисления.Результат КАК Результат,
| Начисления.ПериодРегистрации КАК ПериодРегистрации
|ИЗ
| РегистрРасчета.Начисления КАК Начисления
|ГДЕ
| Начисления.ФизическоеЛицо.Наименование = &ФИОСотрудника
| И Начисления.ПериодРегистрации < &ДатаНачалаПериода
| И Начисления.ВидРасчета = &ВидНачисления";
НачПер = ДатаПолученияДохода - 7603200;
Запрос.УстановитьПараметр("ФИОСотрудника", ФИОСотрудник);
Запрос.УстановитьПараметр("ДатаНачалаПериода", НачПер);
//Запрос.УстановитьПараметр("ВидНачисления", Объект.Начисление.Наименование);
ТестПеременная = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Оплата питания");
Запрос.УстановитьПараметр("ВидНачисления", ТестПеременная);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
ПоказатьЕсли точкой останова посмотреть переменные, то получается что
НачПер = 13.02.2016
ФИОСотрудник = Ваньков ...
ТестПеременная = Оплата питания
Короче все ок, записи раньше даты есть. Но запрос их почему-то не выводит.
Почему?
В общем у меня все получилось:
Ошибка была в тексте запроса:
надо было
и
присвоение параметра было не правильного типа:
надо было
Если кому интересно))
Всех благодарю за помощь!
Ошибка была в тексте запроса:
| Начисления.ФизическоеЛицо.Наименование = &ФИОСотрудника
надо было
| Начисления.Сотрудник = &ФИОСотрудника
и
присвоение параметра было не правильного типа:
Запрос.УстановитьПараметр("ВидНачисления", "Оплата питания");
надо было
Запрос.УстановитьПараметр("ВидНачисления", Объект.Начисление);
Если кому интересно))
Всех благодарю за помощь!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот