Автор Тема: ЗИКГУ. Билет 2.1  (Прочитано 3123 раз)

0 Пользователей и 1 Гость просматривают эту тему.

whoame

  • Новичок
  • *
  • Сообщений: 6
ЗИКГУ. Билет 2.1
« : Июль 30, 2019, 03:50:42 pm »
Приветствую всех! В общем, прошу советов и критики по поводу решения, ибо осознаю, что оно, как минимум, сыроватое. Задача про посещение спортивного зала госслужащими и получении ими в результате материальной выгоды.

Мое решение:

В режиме 1С Предприятия создал начисление Материальная выгода с посещений спортзала, Код "МВ", назначение начисления - "Доход в натуральной форме", код дохода - 2520.

Создал оборотный РН ПосещениеСпортзала:
Измерения: Сотрудник, Подразделение (для разбивки мат. выгоды в отчете в разрезе подразделений);
Ресурс: КоличествоДней;

Создал документ ПосещениеСпортзала:
Реквизиты: ПериодПосещения, ВидРасчета (для выбора созданного в режиме 1С Предприятия Начисления)
ТЧ: Посещение: Реквизиты: Сотрудник (спр. Сотрудники), День1...День11 (Булево).
Документ делает движения в следующие регистры накопления: РНПосещенияСпортзала, НачисленияУдержанияПоСотрудникам, СведенияОДоходахНДФЛ, РасчетыНалогоплательщиковСБюджетомПоНДФЛ, ЗарплатаКВыплате, ВзаиморасчетыССотрудниками, а также в регистр расчета Начисления.

Код модуля объекта:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.РНПосещенияСпортзала.Записывать = Истина;
Движения.РНПосещенияСпортзала.Очистить();
Движения.НачисленияУдержанияПоСотрудникам.Записывать = Истина;
Движения.НачисленияУдержанияПоСотрудникам.Очистить();
Движения.СведенияОДоходахНДФЛ.Записывать = Истина;
Движения.СведенияОДоходахНДФЛ.Очистить();
Движения.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Записывать=Истина;
Движения.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Очистить();
Движения.ЗарплатаКВыплате.Записывать = Истина;
Движения.ЗарплатаКВыплате.Очистить();
Движения.ВзаиморасчетыССотрудниками.Записывать = Истина;
Движения.ВзаиморасчетыССотрудниками.Очистить();
Движения.Начисления.Записывать = Истина;
Движения.Начисления.Очистить();


НачалоМесяца = НачалоМесяца(ПериодПосещения);

Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ПосещениеСпортзалаПосещение.Ссылка КАК Ссылка,
               | ПосещениеСпортзалаПосещение.Сотрудник КАК Сотрудник,
               | ПосещениеСпортзалаПосещение.День1 КАК День1,
               | ПосещениеСпортзалаПосещение.День2 КАК День2,
               | ПосещениеСпортзалаПосещение.День3 КАК День3,
               | ПосещениеСпортзалаПосещение.День4 КАК День4,
               | ПосещениеСпортзалаПосещение.День5 КАК День5,
               | ПосещениеСпортзалаПосещение.День6 КАК День6,
               | ПосещениеСпортзалаПосещение.День7 КАК День7,
               | ПосещениеСпортзалаПосещение.День8 КАК День8,
               | ПосещениеСпортзалаПосещение.День9 КАК День9,
               | ПосещениеСпортзалаПосещение.День10 КАК День10,
               | ПосещениеСпортзалаПосещение.День11 КАК День11
               |ПОМЕСТИТЬ Вт_Общ
               |ИЗ
               | Документ.ПосещениеСпортзала.Посещение КАК ПосещениеСпортзалаПосещение
               |ГДЕ
               | ПосещениеСпортзалаПосещение.Ссылка = &Ссылка
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка КАК Ссылка,
               | Вт_Общ.Сотрудник КАК Сотрудник,
               | Вт_Общ.День1 КАК ДниПосещения
               |ПОМЕСТИТЬ ВТ_Посещение
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |ГДЕ
               | Вт_Общ.Ссылка = &Ссылка
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День2
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День3
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День4
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День5
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День6
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День7
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День8
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День9
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День10
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День11
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               | ВТ_Посещение.Ссылка КАК Ссылка,
               | ВТ_Посещение.Сотрудник КАК Сотрудник,
               | ВТ_Посещение.ДниПосещения КАК ДниПосещения,
               | КОЛИЧЕСТВО(ВТ_Посещение.ДниПосещения) КАК КоличествоДней
               |ПОМЕСТИТЬ ВТ_ВТ
               |ИЗ
               | ВТ_Посещение КАК ВТ_Посещение
               |ГДЕ
               | ВТ_Посещение.Ссылка = &Ссылка
               | И ВТ_Посещение.ДниПосещения = ИСТИНА
               |
               |СГРУППИРОВАТЬ ПО
               | НАЧАЛОПЕРИОДА(ВТ_Посещение.Ссылка.ПериодПосещения, ДЕНЬ),
               | ВТ_Посещение.Ссылка,
               | ВТ_Посещение.Сотрудник,
               | ВТ_Посещение.ДниПосещения
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               | ВТ_ВТ.Ссылка КАК Ссылка,
               | ВТ_ВТ.Сотрудник КАК Сотрудник,
               | СтоимостьПосещенияСпортзалаСрезПоследних.Стоимость КАК РыночнаяСтоимость,
               | ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев < 12
               | ТОГДА 85
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев МЕЖДУ 12 И 24
               | ТОГДА 75
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев МЕЖДУ 24 И 48
               | ТОГДА 65
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев >= 48
               | ТОГДА 55
               | ИНАЧЕ 0
               | КОНЕЦ
               | КОНЕЦ
               | КОНЕЦ
               | КОНЕЦ КАК ЛьготныйПроцент,
               | ВТ_ВТ.КоличествоДней КАК КоличествоДней,
               | КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение
               |ИЗ
               | РегистрСведений.СтажиФизическихЛиц.СрезПоследних(&Период, ) КАК СтажиФизическихЛицСрезПоследних
               | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ВТ КАК ВТ_ВТ
               | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&Период, ) КАК КадроваяИсторияСотрудниковСрезПоследних
               | ПО (КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = ВТ_ВТ.Сотрудник)
               | ПО СтажиФизическихЛицСрезПоследних.ФизическоеЛицо = ВТ_ВТ.Сотрудник.ФизическоеЛицо,
               | РегистрСведений.СтоимостьПосещенияСпортзала.СрезПоследних(&Период, ) КАК СтоимостьПосещенияСпортзалаСрезПоследних
               |
               |СГРУППИРОВАТЬ ПО
               | ВТ_ВТ.Ссылка,
               | ВТ_ВТ.Сотрудник,
               | СтоимостьПосещенияСпортзалаСрезПоследних.Стоимость,
               | ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев < 12
               | ТОГДА 85
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев МЕЖДУ 12 И 24
               | ТОГДА 75
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев МЕЖДУ 24 И 48
               | ТОГДА 65
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев >= 48
               | ТОГДА 55
               | ИНАЧЕ 0
               | КОНЕЦ
               | КОНЕЦ
               | КОНЕЦ
               | КОНЕЦ,
               | ВТ_ВТ.ДниПосещения,
               | ВТ_ВТ.КоличествоДней,
               | КадроваяИсторияСотрудниковСрезПоследних.Подразделение";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Период", КонецМесяца(ПериодПосещения));

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() цикл


    //Мой регистр
Движение = движения.РНПосещенияСпортзала.Добавить();
Движение.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движение.КоличествоПосещений = ВыборкаДетальныеЗаписи.КоличествоДней;
Движение.Период = ПериодПосещения;
Движение.Подразделение = ВыборкаДетальныеЗаписи.Подразделение;


//РН НачисленияУдержания
Движ = Движения.НачисленияУдержанияПоСотрудникам.Добавить();
Движ.Период = ПериодПосещения;
Движ.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ.НачислениеУдержание = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Материальная выгода с посещений спортзала");
движ.Сумма = (ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней);
Движ.ГруппаНачисленияУдержанияВыплаты = перечисления.ГруппыНачисленияУдержанияВыплаты.Справочно;
Движ.ПериодДействия = ПериодПосещения;

Движ1 = Движения.НачисленияУдержанияПоСотрудникам.Добавить();
Движ1.Период = ПериодПосещения;
Движ1.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ1.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ1.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ1.НачислениеУдержание = Перечисления.ВидыОсобыхНачисленийИУдержаний.НДФЛ;
движ1.Сумма = Окр((((ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней))*0.13), 0);
Движ1.ГруппаНачисленияУдержанияВыплаты = перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано;
Движ1.ПериодДействия = ПериодПосещения;

//РН УчетДоходовДляНДФЛ
Движ2 = Движения.СведенияОДоходахНДФЛ.Добавить();
Движ2.Период = КонецМесяца(ПериодПосещения);
Движ2.ДатаПолученияДохода = ПериодПосещения;
Движ2.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ2.КодДохода = ВидРасчета.КодДоходаНДФЛ;
Движ2.СуммаДохода = (ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней);
    Движ2.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ2.Начисление = ВидРасчета;
Движ2.КатегорияДохода = ВидРасчета.КатегорияДохода;
Движ2.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ2.ГоловнаяОрганизация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ2.ДоходМежрасчетногоПериода = Истина;
Движ2.ДатаПолученияДоходаФиксирована = Истина;
Движ2.МесяцНалоговогоПериода = ПериодПосещения;
Движ2.НеУчитыватьДоходВ6НДФЛ = Истина;

//РН Расчеты с бюджетом по ндфл
Движ3 = Движения.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Добавить();
Движ3.Период = КонецМесяца(ПериодПосещения);
Движ3.ГоловнаяОрганизация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ3.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ3.МесяцНалоговогоПериода = ПериодПосещения;
Движ3.КатегорияДохода = видрасчета.КатегорияДохода;
Движ3.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ3.Сумма = Окр((((ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней))*0.13), 0);
    Движ3.РасчетМежрасчетногоПериода = Истина;
Движ3.УчитыватьВыплаченныйДоходВ6НДФЛ = ложь;
Движ3.ДатаПолученияДоходаФиксирована = Истина;
Движ3.СтавкаНалогообложенияРезидента = перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13;

//РН Зарплата к выплате
Движ4 = Движения.ЗарплатаКВыплате.Добавить();
Движ4.Период = НачалоМесяца(ПериодПосещения);
Движ4.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ4.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ4.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ4.ПериодВзаиморасчетов = НачалоМесяца(ПериодПосещения);
Движ4.СуммаКВыплате = (-1) * Окр((((ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней))*0.13), 0);

//РН Взаиморасчеты с сотрудниками
Движ5 = Движения.ВзаиморасчетыССотрудниками.Добавить();
Движ5.Период = НачалоМесяца(ПериодПосещения);
Движ5.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ5.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ5.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ5.СуммаВзаиморасчетов = (-1) * Окр((((ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней))*0.13), 0);
    Движ5.ГруппаНачисленияУдержанияВыплаты = перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано;

//РР Начисления
Движ6 = Движения.Начисления.Добавить();
Движ6.ПериодРегистрации = НачалоМесяца(ПериодПосещения);
Движ6.ВидРасчета = ВидРасчета;
Движ6.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ6.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ6.ГоловнаяОрганизация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ6.Результат = (ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней);
Движ6.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ6.Месяц = НачалоМесяца(ПериодПосещения);
Движ6.ГоловнойСотрудник = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнойСотрудник;
Движ6.ПериодДействияНачало = ПериодПосещения;
Движ6.ПериодДействияКонец = КонецМесяца(ПериодПосещения);
Движ6.БазовыйПериодНачало = Дата;
Движ6.БазовыйПериодКонец = КонецМесяца(Дата);


КонецЦикла;

   
КонецПроцедуры

Код Отчета выглядит следующим образом:
ВЫБРАТЬ
РНПосещенияСпортзалаОбороты.Подразделение КАК Подразделение,
РНПосещенияСпортзалаОбороты.Сотрудник КАК Работник,
РНПосещенияСпортзалаОбороты.Период КАК Период,
РНПосещенияСпортзалаОбороты.КоличествоПосещенийОборот КАК ПосещенийСпортзала,
РНПосещенияСпортзалаОбороты.Сотрудник.ГоловнаяОрганизация КАК Учреждение
ПОМЕСТИТЬ ВТ_Посещения
ИЗ
РегистрНакопления.РНПосещенияСпортзала.Обороты(&НачалоПериода, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Месяц, ) КАК РНПосещенияСпортзалаОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОсновныеНачисления.ПериодДействия КАК ПериодДействия,
ОсновныеНачисления.Сотрудник КАК Сотрудник,
ОсновныеНачисления.Результат КАК Результат
ПОМЕСТИТЬ ВТ_Начисления
ИЗ
РегистрРасчета.Начисления КАК ОсновныеНачисления
ГДЕ
ОсновныеНачисления.ВидРасчета.Код = "МВ"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Посещения.Работник КАК Работник,
ВТ_Посещения.Подразделение КАК Подразделение,
ВТ_Посещения.ПосещенийСпортзала КАК ПосещенийСпортзала,
ВТ_Посещения.Период КАК Период,
ВТ_Начисления.Результат КАК МатериальнаяВыгода,
ВТ_Посещения.Работник.ГоловнаяОрганизация КАК Учреждение
ИЗ
ВТ_Посещения КАК ВТ_Посещения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Начисления КАК ВТ_Начисления
ПО ВТ_Посещения.Работник = ВТ_Начисления.Сотрудник
И ВТ_Посещения.Период = ВТ_Начисления.ПериодДействия

Очень интересует вопрос по поводу "жесткой" привязки зависимости процента льготы от стажа (см. запрос в модуле документа). Можно ли это сделать менее варварским способом или подобное решение имеет право на жизнь в реалиях сдачи экзамена?

LaSkReN

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Константин
Re: ЗИКГУ. Билет 2.1
« Ответ #1 : Октябрь 10, 2019, 05:13:00 pm »
Добрый день, а где вы взяли билеты для ЗИКГУ ред 3?


whoame

  • Новичок
  • *
  • Сообщений: 6
Re: ЗИКГУ. Билет 2.1
« Ответ #2 : Октябрь 16, 2019, 02:24:50 pm »
Приветствую. Приобретали сборник задач. Издание от 2017 года (свежее месяца три-четыре назад не было).

LaSkReN

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Константин
Re: ЗИКГУ. Билет 2.1
« Ответ #3 : Октябрь 28, 2019, 01:04:27 pm »
сборник для збу 1.0?

whoame

  • Новичок
  • *
  • Сообщений: 6
Re: ЗИКГУ. Билет 2.1
« Ответ #4 : Ноябрь 05, 2019, 12:38:38 pm »
В глаза не видел сборника для 1.0, поэтому утверждать не буду. А так - задачи 1 в 1 с теми, которые были выложены здесь для ЗГУ (точного раздела, где они находятся подсказать не могу).

FLU911

  • Пользователь
  • **
  • Сообщений: 63
  • Спец-конс: ЗУП, ЗКГУ, УТ Спец: ЗУП, ЗКГУ
  • ФИО: Флишкин Дмитрий
Re: ЗИКГУ. Билет 2.1
« Ответ #5 : Июль 18, 2020, 12:06:29 am »
Приветствую всех! В общем, прошу советов и критики по поводу решения, ибо осознаю, что оно, как минимум, сыроватое. Задача про посещение спортивного зала госслужащими и получении ими в результате материальной выгоды.

Мое решение:

В режиме 1С Предприятия создал начисление Материальная выгода с посещений спортзала, Код "МВ", назначение начисления - "Доход в натуральной форме", код дохода - 2520.

Создал оборотный РН ПосещениеСпортзала:
Измерения: Сотрудник, Подразделение (для разбивки мат. выгоды в отчете в разрезе подразделений);
Ресурс: КоличествоДней;

Создал документ ПосещениеСпортзала:
Реквизиты: ПериодПосещения, ВидРасчета (для выбора созданного в режиме 1С Предприятия Начисления)
ТЧ: Посещение: Реквизиты: Сотрудник (спр. Сотрудники), День1...День11 (Булево).
Документ делает движения в следующие регистры накопления: РНПосещенияСпортзала, НачисленияУдержанияПоСотрудникам, СведенияОДоходахНДФЛ, РасчетыНалогоплательщиковСБюджетомПоНДФЛ, ЗарплатаКВыплате, ВзаиморасчетыССотрудниками, а также в регистр расчета Начисления.

Код модуля объекта:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.РНПосещенияСпортзала.Записывать = Истина;
Движения.РНПосещенияСпортзала.Очистить();
Движения.НачисленияУдержанияПоСотрудникам.Записывать = Истина;
Движения.НачисленияУдержанияПоСотрудникам.Очистить();
Движения.СведенияОДоходахНДФЛ.Записывать = Истина;
Движения.СведенияОДоходахНДФЛ.Очистить();
Движения.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Записывать=Истина;
Движения.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Очистить();
Движения.ЗарплатаКВыплате.Записывать = Истина;
Движения.ЗарплатаКВыплате.Очистить();
Движения.ВзаиморасчетыССотрудниками.Записывать = Истина;
Движения.ВзаиморасчетыССотрудниками.Очистить();
Движения.Начисления.Записывать = Истина;
Движения.Начисления.Очистить();


НачалоМесяца = НачалоМесяца(ПериодПосещения);

Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ПосещениеСпортзалаПосещение.Ссылка КАК Ссылка,
               | ПосещениеСпортзалаПосещение.Сотрудник КАК Сотрудник,
               | ПосещениеСпортзалаПосещение.День1 КАК День1,
               | ПосещениеСпортзалаПосещение.День2 КАК День2,
               | ПосещениеСпортзалаПосещение.День3 КАК День3,
               | ПосещениеСпортзалаПосещение.День4 КАК День4,
               | ПосещениеСпортзалаПосещение.День5 КАК День5,
               | ПосещениеСпортзалаПосещение.День6 КАК День6,
               | ПосещениеСпортзалаПосещение.День7 КАК День7,
               | ПосещениеСпортзалаПосещение.День8 КАК День8,
               | ПосещениеСпортзалаПосещение.День9 КАК День9,
               | ПосещениеСпортзалаПосещение.День10 КАК День10,
               | ПосещениеСпортзалаПосещение.День11 КАК День11
               |ПОМЕСТИТЬ Вт_Общ
               |ИЗ
               | Документ.ПосещениеСпортзала.Посещение КАК ПосещениеСпортзалаПосещение
               |ГДЕ
               | ПосещениеСпортзалаПосещение.Ссылка = &Ссылка
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка КАК Ссылка,
               | Вт_Общ.Сотрудник КАК Сотрудник,
               | Вт_Общ.День1 КАК ДниПосещения
               |ПОМЕСТИТЬ ВТ_Посещение
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |ГДЕ
               | Вт_Общ.Ссылка = &Ссылка
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День2
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День3
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День4
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День5
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День6
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День7
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День8
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День9
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День10
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | Вт_Общ.Ссылка,
               | Вт_Общ.Сотрудник,
               | Вт_Общ.День11
               |ИЗ
               | Вт_Общ КАК Вт_Общ
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               | ВТ_Посещение.Ссылка КАК Ссылка,
               | ВТ_Посещение.Сотрудник КАК Сотрудник,
               | ВТ_Посещение.ДниПосещения КАК ДниПосещения,
               | КОЛИЧЕСТВО(ВТ_Посещение.ДниПосещения) КАК КоличествоДней
               |ПОМЕСТИТЬ ВТ_ВТ
               |ИЗ
               | ВТ_Посещение КАК ВТ_Посещение
               |ГДЕ
               | ВТ_Посещение.Ссылка = &Ссылка
               | И ВТ_Посещение.ДниПосещения = ИСТИНА
               |
               |СГРУППИРОВАТЬ ПО
               | НАЧАЛОПЕРИОДА(ВТ_Посещение.Ссылка.ПериодПосещения, ДЕНЬ),
               | ВТ_Посещение.Ссылка,
               | ВТ_Посещение.Сотрудник,
               | ВТ_Посещение.ДниПосещения
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               | ВТ_ВТ.Ссылка КАК Ссылка,
               | ВТ_ВТ.Сотрудник КАК Сотрудник,
               | СтоимостьПосещенияСпортзалаСрезПоследних.Стоимость КАК РыночнаяСтоимость,
               | ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев < 12
               | ТОГДА 85
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев МЕЖДУ 12 И 24
               | ТОГДА 75
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев МЕЖДУ 24 И 48
               | ТОГДА 65
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев >= 48
               | ТОГДА 55
               | ИНАЧЕ 0
               | КОНЕЦ
               | КОНЕЦ
               | КОНЕЦ
               | КОНЕЦ КАК ЛьготныйПроцент,
               | ВТ_ВТ.КоличествоДней КАК КоличествоДней,
               | КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение
               |ИЗ
               | РегистрСведений.СтажиФизическихЛиц.СрезПоследних(&Период, ) КАК СтажиФизическихЛицСрезПоследних
               | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ВТ КАК ВТ_ВТ
               | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&Период, ) КАК КадроваяИсторияСотрудниковСрезПоследних
               | ПО (КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = ВТ_ВТ.Сотрудник)
               | ПО СтажиФизическихЛицСрезПоследних.ФизическоеЛицо = ВТ_ВТ.Сотрудник.ФизическоеЛицо,
               | РегистрСведений.СтоимостьПосещенияСпортзала.СрезПоследних(&Период, ) КАК СтоимостьПосещенияСпортзалаСрезПоследних
               |
               |СГРУППИРОВАТЬ ПО
               | ВТ_ВТ.Ссылка,
               | ВТ_ВТ.Сотрудник,
               | СтоимостьПосещенияСпортзалаСрезПоследних.Стоимость,
               | ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев < 12
               | ТОГДА 85
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев МЕЖДУ 12 И 24
               | ТОГДА 75
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев МЕЖДУ 24 И 48
               | ТОГДА 65
               | ИНАЧЕ ВЫБОР
               | КОГДА СтажиФизическихЛицСрезПоследних.РазмерМесяцев >= 48
               | ТОГДА 55
               | ИНАЧЕ 0
               | КОНЕЦ
               | КОНЕЦ
               | КОНЕЦ
               | КОНЕЦ,
               | ВТ_ВТ.ДниПосещения,
               | ВТ_ВТ.КоличествоДней,
               | КадроваяИсторияСотрудниковСрезПоследних.Подразделение";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Период", КонецМесяца(ПериодПосещения));

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() цикл


    //Мой регистр
Движение = движения.РНПосещенияСпортзала.Добавить();
Движение.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движение.КоличествоПосещений = ВыборкаДетальныеЗаписи.КоличествоДней;
Движение.Период = ПериодПосещения;
Движение.Подразделение = ВыборкаДетальныеЗаписи.Подразделение;


//РН НачисленияУдержания
Движ = Движения.НачисленияУдержанияПоСотрудникам.Добавить();
Движ.Период = ПериодПосещения;
Движ.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ.НачислениеУдержание = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Материальная выгода с посещений спортзала");
движ.Сумма = (ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней);
Движ.ГруппаНачисленияУдержанияВыплаты = перечисления.ГруппыНачисленияУдержанияВыплаты.Справочно;
Движ.ПериодДействия = ПериодПосещения;

Движ1 = Движения.НачисленияУдержанияПоСотрудникам.Добавить();
Движ1.Период = ПериодПосещения;
Движ1.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ1.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ1.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ1.НачислениеУдержание = Перечисления.ВидыОсобыхНачисленийИУдержаний.НДФЛ;
движ1.Сумма = Окр((((ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней))*0.13), 0);
Движ1.ГруппаНачисленияУдержанияВыплаты = перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано;
Движ1.ПериодДействия = ПериодПосещения;

//РН УчетДоходовДляНДФЛ
Движ2 = Движения.СведенияОДоходахНДФЛ.Добавить();
Движ2.Период = КонецМесяца(ПериодПосещения);
Движ2.ДатаПолученияДохода = ПериодПосещения;
Движ2.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ2.КодДохода = ВидРасчета.КодДоходаНДФЛ;
Движ2.СуммаДохода = (ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней);
    Движ2.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ2.Начисление = ВидРасчета;
Движ2.КатегорияДохода = ВидРасчета.КатегорияДохода;
Движ2.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ2.ГоловнаяОрганизация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ2.ДоходМежрасчетногоПериода = Истина;
Движ2.ДатаПолученияДоходаФиксирована = Истина;
Движ2.МесяцНалоговогоПериода = ПериодПосещения;
Движ2.НеУчитыватьДоходВ6НДФЛ = Истина;

//РН Расчеты с бюджетом по ндфл
Движ3 = Движения.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Добавить();
Движ3.Период = КонецМесяца(ПериодПосещения);
Движ3.ГоловнаяОрганизация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ3.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ3.МесяцНалоговогоПериода = ПериодПосещения;
Движ3.КатегорияДохода = видрасчета.КатегорияДохода;
Движ3.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ3.Сумма = Окр((((ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней))*0.13), 0);
    Движ3.РасчетМежрасчетногоПериода = Истина;
Движ3.УчитыватьВыплаченныйДоходВ6НДФЛ = ложь;
Движ3.ДатаПолученияДоходаФиксирована = Истина;
Движ3.СтавкаНалогообложенияРезидента = перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13;

//РН Зарплата к выплате
Движ4 = Движения.ЗарплатаКВыплате.Добавить();
Движ4.Период = НачалоМесяца(ПериодПосещения);
Движ4.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ4.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ4.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ4.ПериодВзаиморасчетов = НачалоМесяца(ПериодПосещения);
Движ4.СуммаКВыплате = (-1) * Окр((((ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней))*0.13), 0);

//РН Взаиморасчеты с сотрудниками
Движ5 = Движения.ВзаиморасчетыССотрудниками.Добавить();
Движ5.Период = НачалоМесяца(ПериодПосещения);
Движ5.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ5.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ5.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ5.СуммаВзаиморасчетов = (-1) * Окр((((ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней))*0.13), 0);
    Движ5.ГруппаНачисленияУдержанияВыплаты = перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано;

//РР Начисления
Движ6 = Движения.Начисления.Добавить();
Движ6.ПериодРегистрации = НачалоМесяца(ПериодПосещения);
Движ6.ВидРасчета = ВидРасчета;
Движ6.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
Движ6.ФизическоеЛицо = ВыборкаДетальныеЗаписи.Сотрудник.ФизическоеЛицо;
Движ6.ГоловнаяОрганизация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ6.Результат = (ВыборкаДетальныеЗаписи.РыночнаяСтоимость*ВыборкаДетальныеЗаписи.КоличествоДней)- (ВыборкаДетальныеЗаписи.РыночнаяСтоимость * ВыборкаДетальныеЗаписи.ЛьготныйПроцент/100 * ВыборкаДетальныеЗаписи.КоличествоДней);
Движ6.Организация = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнаяОрганизация;
Движ6.Месяц = НачалоМесяца(ПериодПосещения);
Движ6.ГоловнойСотрудник = ВыборкаДетальныеЗаписи.Сотрудник.ГоловнойСотрудник;
Движ6.ПериодДействияНачало = ПериодПосещения;
Движ6.ПериодДействияКонец = КонецМесяца(ПериодПосещения);
Движ6.БазовыйПериодНачало = Дата;
Движ6.БазовыйПериодКонец = КонецМесяца(Дата);


КонецЦикла;

   
КонецПроцедуры

Код Отчета выглядит следующим образом:
ВЫБРАТЬ
РНПосещенияСпортзалаОбороты.Подразделение КАК Подразделение,
РНПосещенияСпортзалаОбороты.Сотрудник КАК Работник,
РНПосещенияСпортзалаОбороты.Период КАК Период,
РНПосещенияСпортзалаОбороты.КоличествоПосещенийОборот КАК ПосещенийСпортзала,
РНПосещенияСпортзалаОбороты.Сотрудник.ГоловнаяОрганизация КАК Учреждение
ПОМЕСТИТЬ ВТ_Посещения
ИЗ
РегистрНакопления.РНПосещенияСпортзала.Обороты(&НачалоПериода, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Месяц, ) КАК РНПосещенияСпортзалаОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОсновныеНачисления.ПериодДействия КАК ПериодДействия,
ОсновныеНачисления.Сотрудник КАК Сотрудник,
ОсновныеНачисления.Результат КАК Результат
ПОМЕСТИТЬ ВТ_Начисления
ИЗ
РегистрРасчета.Начисления КАК ОсновныеНачисления
ГДЕ
ОсновныеНачисления.ВидРасчета.Код = "МВ"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Посещения.Работник КАК Работник,
ВТ_Посещения.Подразделение КАК Подразделение,
ВТ_Посещения.ПосещенийСпортзала КАК ПосещенийСпортзала,
ВТ_Посещения.Период КАК Период,
ВТ_Начисления.Результат КАК МатериальнаяВыгода,
ВТ_Посещения.Работник.ГоловнаяОрганизация КАК Учреждение
ИЗ
ВТ_Посещения КАК ВТ_Посещения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Начисления КАК ВТ_Начисления
ПО ВТ_Посещения.Работник = ВТ_Начисления.Сотрудник
И ВТ_Посещения.Период = ВТ_Начисления.ПериодДействия

Очень интересует вопрос по поводу "жесткой" привязки зависимости процента льготы от стажа (см. запрос в модуле документа). Можно ли это сделать менее варварским способом или подобное решение имеет право на жизнь в реалиях сдачи экзамена?

Нашли какое-нибудь более элегантное решение данной задачи? И вообще удалось ли сдать экзамен , и что попалось на нем?

Alexander

  • Пользователь
  • **
  • Сообщений: 33
  • ФИО: Kulikov Alexander
Re: ЗИКГУ. Билет 2.1
« Ответ #6 : Август 10, 2020, 08:57:56 am »
Готовлюсь с сдаче по зКГУ. Эту задачу тоже решил, но сильно иначе (выложу попозже). Хотелось бы объединить усилия для более успешного прохождения экзекуции :)

Alexander

  • Пользователь
  • **
  • Сообщений: 33
  • ФИО: Kulikov Alexander
Re: ЗИКГУ. Билет 2.1
« Ответ #7 : Август 10, 2020, 10:31:40 am »
Мое решение задачи 2.1 сборника.

Особенности госучреждения - рассчитывается денежное содержание государственных служащих.
Установить галку о натуральных доходах
Ввести Начисление "Доход от посещения спортзала" с формулой
(100 - ПроцентСтоимостиПосещенияСпортзала) / 100 * РыночнаяСтоимостьСпортзала * КоличествоПосещенийСпортзала
Где
РыночнаяСтоимостьСпортзала  - единовременный показатель для организации
КоличествоПосещенийСпортзала - число - единовременный показатель для сотрудника
ПроцентСтоимостиПосещенияСпортзала - числовой зависящий от стажа (стаж госслужбы) для сотрудника (обратить внимание что значение показателя рассчитывается от месяцев стажа)

Документ: ПосещениеСпортзала
Реквизиты: Организация, ПериодРегистрации, СтоимостьПосещений, ПоказательКоличествоПосещений, ПоказательРыночнаяСтоимость
   ТабельПосещения.Сотрудник, ТабельПосещения.Посещение1, ...ТабельПосещения.Посещение10
добавлеям обротный РН ПосещениеСпортзала
Измерение Сотрудник, Ресурс Количество

В проведении
   ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
               
                - региструем движения в РН ПосещениеСпортзала

   // регистрируем значения показателей для сотрудника ... там все элементарно (РС значения разовых показателей сотрудников)
   РасчетЗарплатыРасширенный.ЗарегистрироватьЗначенияРазовыхПоказателейСотрудников(Движения, Организация, РазовыеПоказателиСотрудников());
Ф функции РазовыеПоказателиСотрудников прсоито собираем таблицу значений с требуемыми полями ПериодДействия, Сотрудник, ФизическоеЛицо, Показатель (Показатель Количество Посещений),  Значение)

   // регистрируем значение разовых показателей для организации
               (пишем напрямую в регистр (программного интерфейса на эту тему не нашел)

Отчет
выбираем данные из РН НачисленияУдержанияПоСотрудникам по сумма мат выгоды, количество посещений выбираем из нашего регистра ПосещениеСпортзала
Запрос и компоновка - простейшие

ВЫБРАТЬ
   НачисленияУдержанияПоСотрудникамОбороты.Подразделение КАК Подразделение,
   НачисленияУдержанияПоСотрудникамОбороты.Сотрудник КАК Сотрудник,
   ЕСТЬNULL(ПосещениеСпортзалаОбороты.КоличествоОборот, 0) КАК ПочещенийСпортзала,
   НачисленияУдержанияПоСотрудникамОбороты.СуммаОборот КАК МатериальнаяВыгода,
   НачисленияУдержанияПоСотрудникамОбороты.Период КАК Период,
   НачисленияУдержанияПоСотрудникамОбороты.Организация КАК Организация
ИЗ
   РегистрНакопления.НачисленияУдержанияПоСотрудникам.Обороты(
         ,
         ,
         Месяц,
         Организация = &Организация
            И (ВЫРАЗИТЬ(НачислениеУдержание КАК ПланВидовРасчета.Начисления)) = &МатериальныйДоходЗаПосещение) КАК НачисленияУдержанияПоСотрудникамОбороты
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПосещениеСпортзала.Обороты(, , Месяц, Сотрудник.ГоловнаяОрганизация = &Организация) КАК ПосещениеСпортзалаОбороты
      ПО НачисленияУдержанияПоСотрудникамОбороты.Сотрудник = ПосещениеСпортзалаОбороты.Сотрудник
         И НачисленияУдержанияПоСотрудникамОбороты.Период = ПосещениеСпортзалаОбороты.Период

Всё