ЗУП 3.0 Специалист. Билет 4.

10.08.17

Разработка - Подготовка к аттестации

Пример решения 4-го билета для экзамена на специалиста по ЗУП 3.0. В публикации представлено собственное решение.

Готовиться к экзамену начал в апреле 2015-го и, к сожалению, не нашел в сети решений, которые бы полностью меня устроили.
Для публикации выбрал 4-й билет, т.к. в нем показана работа с собственными предопределенными показателями расчета ЗП, работа с представлениями в коде и использован типовой документ «Данные для расчета зарплаты».

Экзаменационные билеты можно скачать с сайта 1С.


          1. ОБЩИЕ ВЕДЕНИЯ

Итак. Возмещение квартплаты будет рассчитываться по формуле

   Мин(
   Макс(ФактическаяКвПлатаНарИт -ФактическиВозмещено, 0),
   Макс(ЗаработанныйЛимитНарИт - ФактическиВозмещено, 0))

(т.е. минимальное значение из остатка лимита и остатка невозмещенных расходов)

Где

    ФактическаяКвПлатаНарИт – фактический расход сотрудника с начала года

    ЗаработанныйЛимитНарИт – заработанный лимит с начала года

    ФактическиВозмещено – сумма возмещенная предприятием с начала года

Подробнее

а) ФактическаяКвПлатаНарИт – сумма показателей ФактическаяКвПлатаМес с начала года, ФактическаяКвПлатаМес – фактический расход сотрудника в текущем месяце, вводится в систему типовым документом «Данные для расчета зарплаты».

б) ЗаработанныйЛимитНарИт – сумма показателей ЗаработанныйЛимитМес с начала года, ЗаработанныйЛимитМес вводится в систему новым документом «Расчет лимитов».

в) ФактическиВозмещено  – сумма по регистру расчета «Начисления» с начала года по текущему виду расчета.

Объекты, добавленные в конфигурацию.

 


           2 ПОДГОТАВЛИВАЕМ СТРУКТУРУ

Снимаем конфигурацию с поддержки, и создаем подсистему "Экзамен" с дочерними.

 

Создаем перечисление «Категории должностей».

 

Далее нужно привязать категорию к должности. С предопределенной характеристикой больше возни и она отвлекает при обновлении конфигурации, так что регистр сведений в данном случае - меньшее зло.

 

Привязываем к категории должности норму возмещения окладов в год.

 

Добавляем документ.

 

И добавляем отчет «Возмещение расходов», не забываем сразу создать схему компоновки данных и указать хранилище вариантов в прочих.

          3. НАСТРАИВАЕМ ПРЕДПРИЯТИЕ

   3.1 Запускаем предприятие.

Наша панель.

 

Утверждаем штатное расписание на три должности, принимаем трех сотрудников на работу на оклад.

   3.2 В справочник «Показатели расчета зарплаты» добавляем новые показатели (для сотрудника,  разовое использование).

Показатели: ЗаработанныйЛимитМес, ЗаработанныйЛимитНарИт, ФактическаяКвПлатаМес, ФактическаяКвПлатаНарИт, ФактическиВозмещено.

 

   3.3 Далее Настройки/Шаблоны ввода исходных данных

Добавляем новый шаблон для ввода показателя ФактическаяКвПлатаМес по сотрудникам.

 

Далее Зарплата/Данные для расчета зарплаты.

Вводим документы фактических расходов за три месяца, пример:

 

   3.4 Создаем новый вид расчета «Возмещение кварт платы», указываем назначение использования «Компенсационные выплаты» и начисление выполняется «Только если введено значение показателя».

Формула расчета (описана выше):

   

Мин(
   Макс(ФактическаяКвПлатаНарИт -ФактическиВозмещено, 0),
   Макс(ЗаработанныйЛимитНарИт - ФактическиВозмещено, 0))
   //ЗаработанныйЛимитМес

Комментарий с показателем ЗаработанныйЛимитМес нужен для того, чтобы можно было указать его в реквизите «Начисление выполняется», т.к. все остальные показатели не вводятся в систему, а рассчитываются.

   3.5 Создаем документ отсутствия на работе (нужно по ТЗ).

 

   3.6 Заполняем РС «Категории должностей» и РС «Норма возмещения по категории».

 

 

          4. РАЗРАБОТКА

   4.1 Делаем наши показатели предопределенными.

Переключаемся в конфигуратор. Открываем предопределенные элементы справочника ПоказателиРасчетаЗарплаты. Добавляем ЗаработанныйЛимитМес, ЗаработанныйЛимитНарИт, ФактическаяКвПлатаМес, ФактическаяКвПлатаНарИт, ФактическиВозмещено.

Обратите внимание Имя = Наименование.

Создаем обработку с кодом

            

               об = Реквизит1.ПолучитьОбъект();
               об.ИмяПредопределенныхДанных = об.Наименование;
               об.Записать();

Где Реквизит1 – тип Справочник.ПоказателиРасчетаЗарплаты. Запускаем предприятие и обрабатываем наши показатели, теперь они предопределенные.

   4.2 Разработка документа «Расчет лимитов»

4.2.1. Создаем форму и переносим управление периодом регистрации (реквизиты формы и процедуры) из соседнего документа, например «Увольнение», также забираем и Дата/номер

Процедуры: МесяцНачисленияСтрокойПриИзменении, МесяцНачисленияСтрокойНачалоВыбора,.. в общем, все, что касается месяца. Также добавляем «ПриСозданииНаСервере»              

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

Заполнять будем процедурой в форме. Внешняя обработка заполнения здесь не нужна, т.к. они используются, как правило, для типовых документов, чтоб не менять конфигурацию.

Итак, для заполнения нам нужно отобрать всех сотрудников организации с датами приема, увольнения, тарифной ставкой и должностью. В этом нам поможет Представления_КадровыеДанныеСотрудников, пример берем из макета отчета, где оно используется. Поиск по макетам

Далее нужно внутренним соединением отобрать только те должности, которые есть в РС «Категории должностей», также подключить норму к категории. Определить правильное количество календарных дней отработанных сотрудником, с учетом дат приема и увольнения, вычислить число дней отпуска за свой счет (данные берем из РС ДанныеСостоянийСотрудников).

Модуль формы

// Работа с месяцем начисления "строкой".
&НаКлиенте
Процедура МесяцНачисленияСтрокойПриИзменении(Элемент)
    
    ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(ЭтаФорма, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", Модифицированность);
    
    ПриИзмененииМесяцаНачисления();
    
КонецПроцедуры

&НаКлиенте
Процедура МесяцНачисленияСтрокойНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    Оповещение = Новый ОписаниеОповещения("МесяцНачисленияСтрокойНачалоВыбораЗавершение", ЭтотОбъект);
    ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтаФорма, ЭтаФорма, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", , Оповещение);
    
КонецПроцедуры

&НаКлиенте
Процедура МесяцНачисленияСтрокойНачалоВыбораЗавершение(ЗначениеВыбрано, ДополнительныеПараметры) Экспорт
    
    ПриИзмененииМесяцаНачисления();
    
КонецПроцедуры

&НаКлиенте
Процедура МесяцНачисленияСтрокойРегулирование(Элемент, Направление, СтандартнаяОбработка)
    
    ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(ЭтаФорма, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", Направление, Модифицированность);
    
    ПодключитьОбработчикОжидания("ОбработчикОжиданияМесяцНачисленияПриИзменении", 0.3, Истина);
    
КонецПроцедуры

&НаКлиенте
Процедура МесяцНачисленияСтрокойАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка)
    ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МесяцНачисленияСтрокойОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
    ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры


&НаКлиенте
Процедура ПриИзмененииМесяцаНачисления()
    
    
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Если Не ЗначениеЗаполнено(Объект.Ссылка) ТОгда
        //это новый
        Объект.ПериодРегистрации = НачалоМесяца(ТекущаяДата());
    КонецЕсли;
    
    МесяцНачисленияСтрокой = ЗарплатаКадрыКлиентСервер.ПолучитьПредставлениеМесяца(Объект.ПериодРегистрации);
    
КонецПроцедуры

&НаКлиенте
Процедура Заполнить(Команда)
    ЗаполнитьНаСервере();
КонецПроцедуры


&НаСервере
Процедура ЗаполнитьНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Сотрудники.Ссылка КАК Сотрудник,
                   |    &ПериодРегистрации КАК Период
                   |ПОМЕСТИТЬ ВТСотрудники
                   |ИЗ
                   |    Справочник.Сотрудники КАК Сотрудники
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
                   |    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
                   |    ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
                   |    ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
                   |    НЕОПРЕДЕЛЕНО КАК ТарифнаяСтавка,
                   |    ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПриема,
                   |    ДАТАВРЕМЯ(1, 1, 1) КАК ДатаУвольнения,
                   |    ВТСотрудники.Период
                   |ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников
                   |ИЗ
                   |    ВТСотрудники КАК ВТСотрудники
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    Кадр.Сотрудник,
                   |    Кадр.Организация,
                   |    Кадр.Подразделение,
                   |    Кадр.Должность,
                   |    Кадр.ТарифнаяСтавка,
                   |    ВЫБОР
                   |        КОГДА Кадр.ДатаПриема < &ПериодРегистрации
                   |            ТОГДА &ПериодРегистрации
                   |        ИНАЧЕ &ПериодРегистрации
                   |    КОНЕЦ КАК ДатаС,
                   |    ВЫБОР
                   |        КОГДА Кадр.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1) ТОгда КОНЕЦПЕРИОДА(&ПериодРегистрации, МЕСЯЦ)   КОГДА Кадр.ДатаУвольнения > КОНЕЦПЕРИОДА(&ПериодРегистрации, МЕСЯЦ)
                   |            ТОГДА КОНЕЦПЕРИОДА(&ПериодРегистрации, МЕСЯЦ)
                   |        ИНАЧЕ Кадр.ДатаУвольнения
                   |    КОНЕЦ КАК ДатаПо,
                   |    Кадр.Период,
                   |    катег.Категория,
                   |    ЕСТЬNULL(НормаВозв.Норма, 0) КАК Норма
                   |ПОМЕСТИТЬ ВТПериоды1
                   |ИЗ
                   |    Представления_КадровыеДанныеСотрудников КАК Кадр
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииДолжностей КАК катег
                   |        ПО (катег.Должность = Кадр.Должность)
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НормаВозмещенияПоКатегории КАК НормаВозв
                   |        ПО (НормаВозв.категория = катег.Категория)
                   |ГДЕ
                   |    Кадр.ДатаПриема <= КОНЕЦПЕРИОДА(&ПериодРегистрации, МЕСЯЦ)
                   |    И (Кадр.ДатаУвольнения >= &ПериодРегистрации
                   |            ИЛИ Кадр.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)) и кадр.Организация = &Организация
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    сост.Сотрудник,
                   |    СУММА(РАЗНОСТЬДАТ(сост.Начало, сост.Окончание, ДЕНЬ) + 1) КАК ДнейПрогул
                   |ПОМЕСТИТЬ ВТПрогулы
                   |ИЗ
                   |    РегистрСведений.ДанныеСостоянийСотрудников КАК сост
                   |ГДЕ
                   |    НЕ сост.Сторно
                   |    И сост.Состояние В(&СпСостояний)
                   |    И (сост.Начало >= &ПериодРегистрации
                   |                И сост.Начало <= КОНЕЦПЕРИОДА(&ПериодРегистрации, МЕСЯЦ)
                   |            ИЛИ сост.Окончание >= &ПериодРегистрации
                   |                И сост.Начало <= КОНЕЦПЕРИОДА(&ПериодРегистрации, МЕСЯЦ)
                   |            ИЛИ сост.Начало < &ПериодРегистрации
                   |                И сост.Окончание > КОНЕЦПЕРИОДА(&ПериодРегистрации, МЕСЯЦ))
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    сост.Сотрудник
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ВТПериоды1.Сотрудник,
                   |    ВТПериоды1.Организация,
                   |    ВТПериоды1.Подразделение,
                   |    ВТПериоды1.Должность,
                   |    ВТПериоды1.ТарифнаяСтавка,
                   |    РАЗНОСТЬДАТ(ВТПериоды1.ДатаС, ВТПериоды1.ДатаПо, ДЕНЬ) + 1 - ЕСТЬNULL(ВТПрогулы.ДнейПрогул, 0) КАК Дней,
                   |    ВТПериоды1.Период,
                   |    ВТПериоды1.Категория,
                   |    ВТПериоды1.Норма
                   |ИЗ
                   |    ВТПериоды1 КАК ВТПериоды1
                   |        ЛЕВОЕ СОЕДИНЕНИЕ ВТПрогулы КАК ВТПрогулы
                   |        ПО (ВТПрогулы.Сотрудник = ВТПериоды1.Сотрудник)";


    ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(Запрос.Текст);
    Запрос.УстановитьПараметр("ПериодРегистрации", Объект.ПериодРегистрации);
    Запрос.УстановитьПараметр("Организация", Объект.Организация);
    
    СпСостояний = Новый СписокЗначений;
    СпСостояний.Добавить(Перечисления.СостоянияСотрудника.ДополнительныйОтпускНеоплачиваемый);
    СпСостояний.Добавить(Перечисления.СостоянияСотрудника.ОтпускУчебныйНеоплачиваемый);
    СпСостояний.Добавить(Перечисления.СостоянияСотрудника.ОтпускНеоплачиваемыйПоРазрешениюРаботодателя);
    СпСостояний.Добавить(Перечисления.СостоянияСотрудника.ОтпускНеоплачиваемыйПоЗаконодательству);
    
    Запрос.УстановитьПараметр("СпСостояний", СпСостояний);
    
    
    Табл = Запрос.Выполнить().Выгрузить();
    
    
    Объект.Лимиты.Очистить();
    
    ДнейМес = День(КонецМесяца(Объект.ПериодРегистрации));
    Для каждого СтрокаТ из Табл цикл
        СтрокаЛ                    = Объект.Лимиты.Добавить();
        СтрокаЛ.Сотрудник          = СтрокаТ.Сотрудник;
        СтрокаЛ.РазмерОклада       = СтрокаТ.ТарифнаяСтавка;
        СтрокаЛ.КатегорияДолжности = СтрокаТ.Категория;
        СтрокаЛ.ПлановыйЛимит      = СтрокаЛ.РазмерОклада * СтрокаТ.Норма / 12;
        СтрокаЛ.КоэффициентВремени = СтрокаТ.Дней / ДнейМес;
        СтрокаЛ.ЗаработанныйЛимит  = СтрокаЛ.КоэффициентВремени * СтрокаЛ.ПлановыйЛимит;
    КонецЦикла;
    
    
КонецПроцедуры

Форма документа

 

4.2.2 Проведение документа «Расчет лимитов»

Пишем заработанный лимит по сотрудникам в РС ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников


Модуль объекта

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    //Все проверяет платформа
    ДвиженияПоРег();
КонецПроцедуры

Процедура ДвиженияПоРег()
    РегЗн = Движения.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников;
    
    для каждого СтрокаЛ из Лимиты Цикл
        СтрокаД = РегЗн.Добавить();
        СтрокаД.Активность = Истина;
        СтрокаД.ПериодДействия = ПериодРегистрации;
        СтрокаД.Сотрудник = СтрокаЛ.Сотрудник;
        СтрокаД.Показатель = Справочники.ПоказателиРасчетаЗарплаты.ЗаработанныйЛимитМес;
        СтрокаД.Организация = Организация;
        СтрокаД.Значение  = СтрокаЛ.ЗаработанныйЛимит;
    КонецЦикла;
    
    РегЗн.Записать();
    
КонецПроцедуры

Создаем в предприятии три документа расчета лимитов.

   4.3 Начисление Зарплаты

В параметрах устанавливаем РежимОтладки.

 

И для просмотра внутренних таблиц создаем новый общий модуль с функцией

Функция ПросмотрВТ(Зап, ИмяВТ) Экспорт
       Запрос = Новый Запрос;
       Запрос.МенеджерВременныхТаблиц = Зап.МенеджерВременныхТаблиц;
       Запрос.Текст = "Выбрать * из " + ИмяВТ;
       Возврат Запрос.Выполнить().Выгрузить();
КонецФункции

Видео отладки.

Поиском по модулям находим функцию «ЗначенияПоказателейНачислений».

Находим в ней последний большой запрос. Нам нужно сделать вставку перед финальной выборкой.

               //вставка начало
               |
               |
               |////////////////////////////////////////////////////////////////////////////////
               //создаем ВТ с нашим видом расчета по текущему месяцу 
               |ВЫБРАТЬ Различные
               |             Интервалы.Сотрудник,
               |             НачалоПериода(Интервалы.ДатаНачала,Месяц) как Период,
               |             Интервалы.Организация,
               |             Интервалы.Подразделение
               |ПОМЕСТИТЬ ВТИнтервалы
               | из ВТИнтервалыИДатыСрезов как Интервалы
               | Где Интервалы.Начисление в (Выбрать Ссылка из ПланВидовРасчета.Начисления.Показатели Где показатель = Значение(Справочник.ПоказателиРасчетаЗарплаты.ЗаработанныйЛимитНарИт))
               |;
               |
               |
               //ВТ с новыми показателями 
               |Выбрать
               | ВТИнтервалы.Период как ПериодДействия,
               | Рег.Сотрудник,
               | Рег.Организация,
               //заработанный лимит нарастающим итогом = сумма показателя ЗаработанныйЛимитМес с начала года 
               | Значение(Справочник.ПоказателиРасчетаЗарплаты.ЗаработанныйЛимитНарИт) как Показатель,
               | Сумма(Рег.Значение) как Значение
               | Поместить ВТПоказНИ
               |из РегистрСведений.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников как Рег
               | Внутреннее Соединение ВТИнтервалы
               | по ВТИнтервалы.Сотрудник = Рег.Сотрудник
               | и ВТИнтервалы.Организация = Рег.Организация
               | и  ВТИнтервалы.Период >= Рег.ПериодДействия
               | и НачалоПериода(ВТИнтервалы.Период, Год) = НачалоПериода(Рег.ПериодДействия, Год)
               | Где
               |  Рег.Показатель = Значение(Справочник.ПоказателиРасчетаЗарплаты.ЗаработанныйЛимитМес)
               |
               |Сгруппировать по
               |
               | ВТИнтервалы.Период,
               | Рег.Сотрудник,
               | Рег.Организация
               |
               | Объединить Все
               |
               |Выбрать
               | ВТИнтервалы.Период как ПериодДействия,
               | Рег.Сотрудник,
               | Рег.Организация,
               //фактическая кварт плата нарастающим итогом = сумма  показателя ФактическаяКвПлатаМес с начала года
               | Значение(Справочник.ПоказателиРасчетаЗарплаты.ФактическаяКвПлатаНарИт) как Показатель,
               | Сумма(Рег.Значение) как Значение
               |из РегистрСведений.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников как Рег
               | Внутреннее Соединение ВТИнтервалы
               | по ВТИнтервалы.Сотрудник = Рег.Сотрудник
               | и ВТИнтервалы.Организация = Рег.Организация
               | и  ВТИнтервалы.Период >= Рег.ПериодДействия
               | и НачалоПериода(ВТИнтервалы.Период, Год) = НачалоПериода(Рег.ПериодДействия, Год)
               | Где
               |  Рег.Показатель = Значение(Справочник.ПоказателиРасчетаЗарплаты.ФактическаяКвПлатаМес)
               |
               |Сгруппировать по
               |
               | ВТИнтервалы.Период,
               | Рег.Сотрудник,
               | Рег.Организация
               |
               | Объединить Все
               |
               |Выбрать
               | ВТИнтервалы.Период,
               | Рег.Сотрудник,
               | Рег.Организация,
               //фактически возмещено = сумма по регистру расчета по новому виду расчета (обратите внимание, как определяется вид расчета)
               | Значение(Справочник.ПоказателиРасчетаЗарплаты.ФактическиВозмещено) как Показатель,
               | Сумма(Рег.Результат) как Значение
               |из РегистрРасчета.Начисления как Рег
               | Внутреннее Соединение ВТИнтервалы
               | по ВТИнтервалы.Сотрудник = Рег.Сотрудник
               | и ВТИнтервалы.Организация = Рег.Организация
               | и  ВТИнтервалы.Период >= Рег.ПериодРегистрации
               | и НачалоПериода(ВТИнтервалы.Период, Год) = НачалоПериода(Рег.ПериодРегистрации, Год)
               | Где
               |  Рег.ВидРасчета в (Выбрать Ссылка из ПланВидовРасчета.Начисления.Показатели Где показатель = Значение(Справочник.ПоказателиРасчетаЗарплаты.ЗаработанныйЛимитНарИт))
               |
               |Сгруппировать по
               |
               | ВТИнтервалы.Период,
               | Рег.Сотрудник,
               | Рег.Организация
               |;
               //вставка окончание

В финальную выборку подключаем нашу ВТПоказНИ          

               //вставка начало
               | Левое Соединение ВТПоказНИ
               | по ВТПоказНИ.Сотрудник = Интервалы.Сотрудник
               | и  ВТПоказНИ.Организация = Интервалы.Организация
               | и  ВТПоказНИ.Показатель = Интервалы.Показатель
               | и  ВТПоказНИ.ПериодДействия = НачалоПериода(Интервалы.ДатаНачала, Месяц)
               //вставка окончание

Добавляем показатель в группировку           

               |СГРУППИРОВАТЬ ПО
               //вставка начало 
               |ВТПоказНИ.Значение,
               |
                //вставка окончание
               |             Интервалы.Сотрудник,

и в выборку              

               | КОНЕЦ КАК ВремяВЧасах,
               | Начисления.ВидВремени,
               | ВЫБОР
               //вставка начало
               |  КОГДА НЕ ВТПоказНИ.Значение ЕСТЬ NULL
               |  Тогда ВТПоказНИ.Значение
               //вставка окончание 
              
               |                            КОГДА НЕ ЗначенияПериодическихПоказателейСотрудников.Значение ЕСТЬ NULL

При заполнении документа начисления зарплаты просматриваем значения своих внутренних таблиц так

 

В документе кнопка «показать подробности расчета» вам в помощь.

 

В итоге создаем три документа, проверяем математику и приступаем к разработке отчета.

4.4 Отчет

Переносим в модуль отчета процедуры ПриКомпоновкеРезультата и ИнициализироватьОтчет из другого отчета, например из АнализВзносовВФонды. В "ПриКомпоновкеРезультата" оставляем только вызов инициализации

Модуль отчета

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    ИнициализироватьОтчет();
        
КонецПроцедуры

Процедура ИнициализироватьОтчет() Экспорт
    
    ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект);
    
КонецПроцедуры

Текст запроса отчета

ВЫБРАТЬ
               Сотрудники.Ссылка КАК Сотрудник,
               &ДатаОкончания КАК Период
ПОМЕСТИТЬ ВТСотрудники
ИЗ
               Справочник.Сотрудники КАК Сотрудники
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
               ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
               ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
               ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
               ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
               НЕОПРЕДЕЛЕНО КАК ТарифнаяСтавка,
               ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПриема,
               ДАТАВРЕМЯ(1, 1, 1) КАК ДатаУвольнения
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников
ИЗ
               ВТСотрудники КАК ВТСотрудники
ГДЕ
               "ТолькоРазрешенные" = ИСТИНА
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
               ит.ПериодДействия,
               ит.Сотрудник,
               ит.Организация,
               СУММА(ит.ЗаработанныйЛимитНИ) КАК ЗаработаноЛимитаЗаПериод,
               СУММА(ит.ФактическийРасход) КАК ПодтвержденныеРасходы,
               СУММА(ит.ФактическиВозмещено) КАК ФактическиВозмещенныеРасходы
ПОМЕСТИТЬ ВТНачисл
ИЗ
               (ВЫБРАТЬ
                              Рег.ПериодДействия КАК ПериодДействия,
                              Рег.Сотрудник КАК Сотрудник,
                              Рег.Организация КАК Организация,
                              СУММА(Рег.Значение) КАК ЗаработанныйЛимитНИ,
                              0 КАК ФактическийРасход,
                              0 КАК ФактическиВозмещено
               ИЗ
                              РегистрСведений.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников КАК Рег
               ГДЕ
                              Рег.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ЗаработанныйЛимитМес)
                              И НАЧАЛОПЕРИОДА(Рег.ПериодДействия, ГОД) = НАЧАЛОПЕРИОДА(&ДатаНачала, ГОД)
                              И Рег.ПериодДействия <= &ДатаОкончания
              
               СГРУППИРОВАТЬ ПО
                              Рег.ПериодДействия,
                              Рег.Сотрудник,
                              Рег.Организация
              
               ОБЪЕДИНИТЬ ВСЕ
              
               ВЫБРАТЬ
                              Рег.ПериодДействия,
                              Рег.Сотрудник,
                              Рег.Организация,
                              0,
                              СУММА(Рег.Значение),
                              0
               ИЗ
                              РегистрСведений.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников КАК Рег
               ГДЕ
                              Рег.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ФактическаяКвПлатаМес)
                              И НАЧАЛОПЕРИОДА(Рег.ПериодДействия, ГОД) = НАЧАЛОПЕРИОДА(&ДатаНачала, ГОД)
                              И Рег.ПериодДействия <= &ДатаОкончания
              
               СГРУППИРОВАТЬ ПО
                              Рег.ПериодДействия,
                              Рег.Сотрудник,
                              Рег.Организация
              
               ОБЪЕДИНИТЬ ВСЕ
              
               ВЫБРАТЬ
                              Рег.ПериодРегистрации,
                              Рег.Сотрудник,
                              Рег.Организация,
                              0,
                              0,
                              СУММА(Рег.Результат)
               ИЗ
                              РегистрРасчета.Начисления КАК Рег
               ГДЕ
                              Рег.ВидРасчета В
                                                           (ВЫБРАТЬ
                                                                          ПланВидовРасчета.Начисления.Показатели.Ссылка
                                                           ИЗ
                                                                          ПланВидовРасчета.Начисления.Показатели
                                                           ГДЕ
                                                                          ПланВидовРасчета.Начисления.Показатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ЗаработанныйЛимитНарИт))
                              И НАЧАЛОПЕРИОДА(Рег.ПериодРегистрации, ГОД) = НАЧАЛОПЕРИОДА(&ДатаНачала, ГОД)
                              И Рег.ПериодРегистрации <= &ДатаОкончания
              
               СГРУППИРОВАТЬ ПО
                              Рег.ПериодРегистрации,
                              Рег.Сотрудник,
                              Рег.Организация) КАК ит
 
СГРУППИРОВАТЬ ПО
               ит.ПериодДействия,
               ит.Сотрудник,
               ит.Организация
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
               ВТНачисл.ПериодДействия,
               ВТНачисл.Сотрудник,
               ВТНачисл.Организация,
               ЕСТЬNULL(СУММА(ВТНачисл2.ЗаработаноЛимитаЗаПериод - ВТНачисл2.ФактическиВозмещенныеРасходы), 0) КАК ОстатокЛимитаНаНачалоПериода,
               ВТНачисл.ЗаработаноЛимитаЗаПериод,
               ВТНачисл.ПодтвержденныеРасходы,
               ВТНачисл.ФактическиВозмещенныеРасходы,
               ЕСТЬNULL(СУММА(ВТНачисл2.ЗаработаноЛимитаЗаПериод - ВТНачисл2.ФактическиВозмещенныеРасходы), 0) + ВТНачисл.ЗаработаноЛимитаЗаПериод - ВТНачисл.ФактическиВозмещенныеРасходы КАК ОстатокЛимитаНаКонецПериода
ПОМЕСТИТЬ ВТИТ
ИЗ
               ВТНачисл КАК ВТНачисл
                              ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисл КАК ВТНачисл2
                              ПО ВТНачисл.Сотрудник = ВТНачисл2.Сотрудник
                                            И ВТНачисл.Организация = ВТНачисл2.Организация
                                            И ВТНачисл.ПериодДействия > ВТНачисл2.ПериодДействия
 
СГРУППИРОВАТЬ ПО
               ВТНачисл.ПериодДействия,
               ВТНачисл.Сотрудник,
               ВТНачисл.Организация,
               ВТНачисл.ЗаработаноЛимитаЗаПериод,
               ВТНачисл.ПодтвержденныеРасходы,
               ВТНачисл.ФактическиВозмещенныеРасходы
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
               ВТИТ.ПериодДействия,
               ВТИТ.Сотрудник,
               ВТИТ.Организация,
               ВТИТ.ОстатокЛимитаНаНачалоПериода,
               ВТИТ.ЗаработаноЛимитаЗаПериод,
               ВТИТ.ПодтвержденныеРасходы,
               ВТИТ.ФактическиВозмещенныеРасходы,
               ВТИТ.ОстатокЛимитаНаКонецПериода,
               Кадр.Подразделение,
               Кадр.Должность,
               Кадр.ТарифнаяСтавка,
               Кадр.ДатаПриема,
               Кадр.ДатаУвольнения
ИЗ
               ВТИТ КАК ВТИТ
                              ЛЕВОЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников КАК Кадр
                              ПО (Кадр.Сотрудник = ВТИТ.Сотрудник)
                                            И (Кадр.Организация = ВТИТ.Организация)
ГДЕ
               ВТИТ.ПериодДействия >= НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ)
               И ВТИТ.ПериодДействия <= КОНЕЦПЕРИОДА(&ДатаОкончания, МЕСЯЦ)

Обратите внимание, как определяется бегущее сальдо начальное и конечное.

При настройке не забываем указать в выражении ПериодДействия текст «ПредставлениеПериода(НачалоПериода(ПериодДействия, "Месяц"), КонецПериода(ПериодДействия, "Месяц"), "ФП=Истина")» для отражения месяца.

В параметры добавляем свой с типом «СтандартныйПериод».

 

Настраиваем структуру.

 

И проверяем

 

          5. Дополнительно

Если вы создаете новые объекты конфигурации после первого запуска в режиме предприятия - то нужно обновить справочник идентификаторов.

Запустите код

	Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
	ВариантыОтчетов.Обновить();

 Научитесь отлаживать внешние обработки заполнения. Это нужно для первого билета: регистрация погодных условий пишется типовым документом «Данные для расчета зарплаты».

 Кратко: в DemoSSL из доп обработок сохраняем на диск элемент "Обработка заполнения". Оставляем в ней "вызов клиентского метода", создаем в конфигурации новую обработку, а во внешней создаем ее вызов. После отладки переносим код во внешнюю.

Подробнее:

//В обработку в выполнить команду 
//добавляем текст

	//отладка
	ФормаОбр = ПолучитьФорму("Обработка.ЗагрузкаТекстФайла.Форма.Форма"); //или как там называется обработка
	ФормаОбр.ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения);
	Возврат;
	//
	
	
//пример	

&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
	//отладка
	ФормаОбр = ПолучитьФорму("Обработка.ЗагрузкаТекстФайла.Форма.Форма");
	ФормаОбр.ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения);
	Возврат;
	//
	Если ИмяКоманды = "ЗагрузкаТекстФайла" Тогда
		ЗагрузкаТекстФайла(ОбъектыНазначения[0]);
	КонецЕсли;
КонецПроцедуры

//В конфу вставляем нашу обработку без текста внутри блока отладка
&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
	Если ИмяКоманды = "ЗагрузкаТекстФайла" Тогда
		ЗагрузкаТекстФайла(ОбъектыНазначения[0]);
	КонецЕсли;
КонецПроцедуры

 В билетах указаны документы которые нужно создать в конфигураторе, их достаточно, не нужно создавать новые.

 На экзамене нельзя пользоваться даже телефоном, поэтому запоминаем:

1) Имя функции ЗначенияПоказателейНачислений, для собственных показателей.

2) Имена представлений Представления_КадровыеДанныеСотрудников, Представления_ПлановоеВремя (плановое время в коде и в СКД обрабатывается по разному, посмотрите модуль типового отчета СостоянияСотрудников)

3) Для записи отклонений рабочего времени используйте УчетРабочегоВремени.ЗарегистрироватьРабочееВремяСотрудников и ЗарегистрироватьВнутрисменныеОтклонения (пример в РаботаВВыходныеИПраздничныеДни и в командировке соответственно). Это актуально для 5-го билета, где нужно при проведении персональных тренировок в рабочий день по графику регистрировать отклонение, а в выходной просто рабочее время.

4) При необходимости создавайте предопределенные элементы справочника "ВидыИспользованияРабочегоВремени".


P.S. Нужно отработать все билеты так, чтобы успевать их сделать за 3.5 часа.
+ на экзамене нужно сделать файл с описанием решения (какие документы, что двигают, почему они, а не типовые и вообще как все работает).
также вам не дается готовая база для разработки, нужно развернуть новую и настроить ее
+ нужно регулярно сохраняться в "моих документах", ознакомление с задачей также занимает некоторое время. В общем все это займет не менее 20 минут.

Вступайте в нашу телеграмм-группу Инфостарт

ЗУП специалист

См. также

Зарплата Роли и права Системный администратор Бухгалтер 1С v8.3 Бухгалтерский учет Управление правами 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5940 руб.

27.05.2021    47097    364    111    

286

Зарплата Программист Бизнес-аналитик Бухгалтер 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

<ul class="text-start d-flex flex-column align-items-start" style="padding: 0"> <li class="d-flex align-items-start mb-1" style="padding: 0"><img alt="check" class="me-2 flex" loading="lazy" src="//infostart.ru/upload/iblock/5d7/5d792bdef32cac30efb748133da1d817.png" /> <span class="fs-16">автоматически устраняйте задолженности прошлых периодов из ведомостей</span></li> <li class="d-flex align-items-start mb-1" style="padding: 0"><img alt="check" class="me-2 flex" loading="lazy" src="//infostart.ru/upload/iblock/5d7/5d792bdef32cac30efb748133da1d817.png" /> <span class="fs-16">для ЗУП 3.1, КА 2.5 и ЗиКГУ 3.1</span></li> <li class="d-flex align-items-start" style="padding: 0"><img alt="check" class="me-2 flex" loading="lazy" src="//infostart.ru/upload/iblock/5d7/5d792bdef32cac30efb748133da1d817.png" /> <span class="fs-16">экономьте время — все готово в пару кликов</span></li> </ul>

33600 руб.

14.09.2022    19732    74    28    

78

Перенос данных 1C Зарплата Бюджетный учет Программист Бухгалтер 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет зарплаты для бюджетных учреждений 3.5» и «КАМИН:Зарплата для бюджетных учреждений 5.5» на конфигурацию «Зарплата и кадры государственного учреждения».

12000 руб.

28.07.2016    64822    174    145    

143

Зарплата Кадровый учет Бухгалтер 1С v8.3 Оперативный учет Управляемые формы 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Предлагаем расширить возможности конфигурации 1С:УНФ 3.0 в части ведения кадрового учета. С помощью данного расширения в конфигурацию будут добавлены новые документы: "Отпуск" и "Командировка". Документы облегчат работу кадровика и расчетчика, а также повысят эффективность работы за счет оптимизации и упрощения процесса ведения учета.

43200 руб.

31.10.2024    1564    1    0    

1

Загрузка и выгрузка в Excel Зарплата Кадровый учет Бухгалтер 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Обработка позволяет загрузить из структурированного файла данные по физическим лицам, сотрудникам. Предусмотрено создание документов "Прием на работу". Данные загружаются не только в справочники и документы, но и в регистры сведений. Обработка разработана для конфигураций "Зарплата и Управление Персоналом, редакция 3.1"/"Зарплата и кадры государственного учреждения, редакция 3.1" на платформе 8.3.

6000 руб.

15.07.2015    67921    111    52    

115

Зарплата Производство готовой продукции (работ, услуг) Учет рабочего времени Рабочее место Бизнес-аналитик Пользователь Руководитель проекта 1С v8.3 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Торговля и склад 7.7 Бытовые услуги, сервис Оптовая торговля, дистрибуция, логистика Электротехника и микроэлектроника Управленческий учет Платные (руб)

Модуль или расширение «Сервисный центр для 1С» позволяет принимать в ремонт оборудование (компьютеры, бытовая техника и т.п.), оформлять заявки инженеров на посещение клиентов и вести начисление заработной платы для сотрудников. Позволяет наладить автоматизированный учет в сервисном центре на уже существующей базе.

16800 руб.

01.11.2012    101013    119    1    

130
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dgolovanov 25.10.15 19:49 Сейчас в теме
Я не понял, вы сдали экзамен?
xCorsair; +1 Ответить
2. maxdmt 28 25.10.15 21:43 Сейчас в теме
(1) dgolovanov, сдал на 4 по билету 6.
dgolovanov; +1 Ответить
3. Craig 279 02.11.15 13:03 Сейчас в теме
(0) Не хватает условий билета, не понятно что решали. Хотя общее описание какая цель была у данного решения.
и отладка ОбщийМодуль1.просмотрВт(запрос,"") как работает ?
4. maxdmt 28 05.11.15 16:23 Сейчас в теме
Добавил ссылку на страницу с билетами, видео с отладкой, пункт "5. Дополнительно".
5. mitia.mackarevich 96 23.03.16 02:13 Сейчас в теме
(4) шикарное описание 4 билета - лучшее что видел, однако использование двух РС как то не очень?- есть же категории. И последнее: финальный запрос показатель надо добавить в существующее поле запроса, не нужна группировка , нужны только связи.
Может неправильно прочитал то финальный запроса должен быть (Запрос пакета имею в виду):
|ВЫБРАТЬ
	|	Интервалы.Сотрудник,
	|	Интервалы.Организация,
	|	Интервалы.Подразделение,
	|	Интервалы.ДатаНачала,
	|	Интервалы.ДатаОкончания,
	|	Интервалы.Начисление,
	|	Интервалы.ДокументОснование,
	|	НачисленияПоказатели.Показатель,
	|	ВЫБОР
	|		КОГДА НачисленияПоказатели.Показатель.СпособВводаЗначений = ЗНАЧЕНИЕ(Перечисление.СпособыВводаЗначенийПоказателейРасчетаЗарплаты.ВводитсяПриРасчете)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ЗначениеПоказателяВводитсяНепосредственноПриРасчете,
	|	Начисления.КоличествоПоказателейИспользуемыхПриРасчете КАК КоличествоПоказателей,
	|	ВЫБОР
	|		КОГДА Начисления.УчетВремениВЧасах
	|			ТОГДА ИСТИНА
	|		КОГДА Начисления.УчетВремениВДняхЧасах
	|			ТОГДА ВЫБОР
	|					КОГДА Начисления.ИспользуетСреднийЗаработокОбщий = ИСТИНА
	|						ТОГДА КадровыеДанныеСотрудников.СуммированныйУчетРабочегоВремени
	|					КОГДА Начисления.СпособВыполненияНачисления = ЗНАЧЕНИЕ(Перечисление.СпособыВыполненияНачислений.ЗаПраздничныеДниПриОкончательномРасчете)
	|						ТОГДА ПочасоваяОплатаТруда.УчетВремениВЧасах
	|					КОГДА СпособыОплатыПраздничныхДней.ВремяВЧасах ЕСТЬ НЕ NULL 
	|						ТОГДА СпособыОплатыПраздничныхДней.ВремяВЧасах
	|					ИНАЧЕ ПочасоваяОплатаТруда.УчетВремениВЧасах
	|				КОНЕЦ
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ВремяВЧасах,
	|	Начисления.ВидВремени,
	|	Начисления.ИспользованиеПериода,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА НЕ ЗначенияПериодическихПоказателейСотрудников.Значение ЕСТЬ NULL 
	|				ТОГДА ЗначенияПериодическихПоказателейСотрудников.Значение
	|			КОГДА НЕ ЗначенияПериодическихПоказателейПодразделений.Значение ЕСТЬ NULL 
	|				ТОГДА ЗначенияПериодическихПоказателейПодразделений.Значение
	|			КОГДА НЕ ЗначенияПериодическихПоказателейОрганизаций.Значение ЕСТЬ NULL 
	|				ТОГДА ЗначенияПериодическихПоказателейОрганизаций.Значение
	|			КОГДА НЕ ЗначенияРазовыхСотрудники.Значение ЕСТЬ NULL 
	|				ТОГДА ЗначенияРазовыхСотрудники.Значение
	|			КОГДА НЕ ЗначенияРазовыхПодразделения.Значение ЕСТЬ NULL 
	|				ТОГДА ЗначенияРазовыхПодразделения.Значение
	|			КОГДА НЕ ЗначенияРазовыхОрганизации.Значение ЕСТЬ NULL 
	|				ТОГДА ЗначенияРазовыхОрганизации.Значение
	|			КОГДА НЕ ЗначенияОперативныхСотрудники.Значение ЕСТЬ NULL 
	|				ТОГДА ЗначенияОперативныхСотрудники.Значение
	|			КОГДА НЕ ЗначенияОперативныхПодразделения.Значение ЕСТЬ NULL 
	|				ТОГДА ЗначенияОперативныхПодразделения.Значение
	//
	|			КОГДА НЕ ВТПоказНИ.Значение ЕСТЬ NULL 
	|				ТОГДА ВТПоказНИ.Значение
	//
	|			ИНАЧЕ 0
	|		КОНЕЦ) КАК Значение,
	|	ВЫБОР
	|		КОГДА ЗначенияПериодическихПоказателейСотрудников.Значение ЕСТЬ NULL 
	|				И ЗначенияПериодическихПоказателейПодразделений.Значение ЕСТЬ NULL 
	|				И ЗначенияПериодическихПоказателейОрганизаций.Значение ЕСТЬ NULL 
	|				И ЗначенияРазовыхСотрудники.Значение ЕСТЬ NULL 
	|				И ЗначенияРазовыхПодразделения.Значение ЕСТЬ NULL 
	|				И ЗначенияРазовыхОрганизации.Значение ЕСТЬ NULL 
	|				И ЗначенияОперативныхСотрудники.Значение ЕСТЬ NULL 
	|				И ЗначенияОперативныхПодразделения.Значение ЕСТЬ NULL 
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ЗначениеОпределено,
	|	Начисления.ОчередностьРасчета,
	|	Начисления.РеквизитДопУпорядочивания,
	|	НачисленияПоказатели.НомерСтроки
	|ИЗ
	|	ВТИнтервалыИДатыСрезов КАК Интервалы
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК Подразделения
	|		ПО Интервалы.Подразделение = Подразделения.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГрафикиРаботыСотрудников КАК ГрафикиРаботыСотрудников
	|			ПО (ГрафикиРаботыСотрудников.Ссылка = КадровыеДанныеСотрудников.ГрафикРаботы)
	|		ПО (КадровыеДанныеСотрудников.Сотрудник = Интервалы.Сотрудник)
	|			И (КадровыеДанныеСотрудников.Период = Интервалы.ДатаНачала)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисленияПоказатели КАК НачисленияПоказатели
	|		ПО (НачисленияПоказатели.Начисление = Интервалы.Начисление)
	|			И (НачисленияПоказатели.Показатель = Интервалы.Показатель)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления КАК Начисления
	|		ПО Интервалы.Начисление = Начисления.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТСпособыОплатыПраздничныхДней КАК СпособыОплатыПраздничныхДней
	|		ПО (СпособыОплатыПраздничныхДней.Сотрудник = Интервалы.Сотрудник)
	|			И (СпособыОплатыПраздничныхДней.ДатаНачала = Интервалы.ДатаНачала)
	|			И (СпособыОплатыПраздничныхДней.Начисление = Интервалы.Начисление)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТПочасоваяОплатаТруда КАК ПочасоваяОплатаТруда
	|		ПО (ПочасоваяОплатаТруда.Сотрудник = Интервалы.Сотрудник)
	|			И (ПочасоваяОплатаТруда.ДатаНачала = Интервалы.ДатаНачала)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПериодическихПоказателейСотрудниковСрезИДвижения КАК ЗначенияПериодическихПоказателейСотрудников
	|		ПО Интервалы.Сотрудник = ЗначенияПериодическихПоказателейСотрудников.Сотрудник
	|			И (НЕ Интервалы.ЗапрашиватьПриВводе
	|				ИЛИ Интервалы.ДокументОснование = ЗначенияПериодическихПоказателейСотрудников.ДокументОснование)
	|			И (НачисленияПоказатели.Показатель = ЗначенияПериодическихПоказателейСотрудников.Показатель)
	|			И Интервалы.ЗначенияПериодическихПоказателейСотрудниковПериод = ЗначенияПериодическихПоказателейСотрудников.Период
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПериодическихПоказателейПодразделенийСрезИДвижения­ КАК ЗначенияПериодическихПоказателейПодразделений
	|		ПО Интервалы.Подразделение = ЗначенияПериодическихПоказателейПодразделений.Подразделение
	|			И (НачисленияПоказатели.Показатель = ЗначенияПериодическихПоказателейПодразделений.Показатель)
	|			И Интервалы.ЗначенияПериодическихПоказателейПодразделенийПериод = ЗначенияПериодическихПоказателейПодразделений.Период
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПериодическихПоказателейОрганизацийСрезИДвижения КАК ЗначенияПериодическихПоказателейОрганизаций
	|		ПО Интервалы.Организация = ЗначенияПериодическихПоказателейОрганизаций.Организация
	|			И (НачисленияПоказатели.Показатель = ЗначенияПериодическихПоказателейОрганизаций.Показатель)
	|			И Интервалы.ЗначенияПериодическихПоказателейОрганизацийПериод = ЗначенияПериодическихПоказателейОрганизаций.Период
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияРазовыхСотрудники КАК ЗначенияРазовыхСотрудники
	|		ПО (ЗначенияРазовыхСотрудники.ПериодДействия = Интервалы.Месяц)
	|			И (ЗначенияРазовыхСотрудники.Сотрудник = Интервалы.Сотрудник)
	|			И (ЗначенияРазовыхСотрудники.Показатель = НачисленияПоказатели.Показатель)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияРазовыхПодразделения КАК ЗначенияРазовыхПодразделения
	|		ПО (ЗначенияРазовыхПодразделения.ПериодДействия = Интервалы.Месяц)
	|			И (ЗначенияРазовыхПодразделения.Подразделение = Интервалы.Подразделение)
	|			И (ЗначенияРазовыхПодразделения.Показатель = НачисленияПоказатели.Показатель)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияРазовыхОрганизации КАК ЗначенияРазовыхОрганизации
	|		ПО (ЗначенияРазовыхОрганизации.ПериодДействия = Интервалы.Месяц)
	|			И (ЗначенияРазовыхОрганизации.Организация = Интервалы.Организация)
	|			И (ЗначенияРазовыхОрганизации.Показатель = НачисленияПоказатели.Показатель)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияОперативныхСотрудники КАК ЗначенияОперативныхСотрудники
	|		ПО (ЗначенияОперативныхСотрудники.Сотрудник = Интервалы.Сотрудник)
	|			И (ЗначенияОперативныхСотрудники.ДатаНачала = Интервалы.ДатаНачала)
	|			И (ЗначенияОперативныхСотрудники.ДатаОкончания = Интервалы.ДатаОкончания)
	|			И (ЗначенияОперативныхСотрудники.Начисление = Интервалы.Начисление)
	|			И (ЗначенияОперативныхСотрудники.Показатель = НачисленияПоказатели.Показатель)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияОперативныхПодразделения КАК ЗначенияОперативныхПодразделения
	|		ПО (ЗначенияОперативныхПодразделения.Подразделение = Интервалы.Подразделение)
	|			И (ЗначенияОперативныхПодразделения.Сотрудник = Интервалы.Сотрудник)
	|			И (ЗначенияОперативныхПодразделения.ДатаНачала = Интервалы.ДатаНачала)
	|			И (ЗначенияОперативныхПодразделения.ДатаОкончания = Интервалы.ДатаОкончания)
	|			И (ЗначенияОперативныхПодразделения.Начисление = Интервалы.Начисление)
	|			И (ЗначенияОперативныхПодразделения.Показатель = НачисленияПоказатели.Показатель)
	//вставка начало
	| Левое Соединение ВТПоказНИ
	| по ВТПоказНИ.Сотрудник = Интервалы.Сотрудник
	| и  ВТПоказНИ.Организация = Интервалы.Организация
	| и  ВТПоказНИ.Показатель = Интервалы.Показатель
	| и  ВТПоказНИ.ПериодДействия = НачалоПериода(Интервалы.ДатаНачала, Месяц)
	//вставка окончание
	|
	|СГРУППИРОВАТЬ ПО
	|	Интервалы.Организация,
	|	Интервалы.Сотрудник,
	|	Интервалы.Подразделение,
	|	Интервалы.ДатаНачала,
	|	Интервалы.ДатаОкончания,
	|	Интервалы.Начисление,
	|	Интервалы.ДокументОснование,
	|	НачисленияПоказатели.Показатель,
	|	ВЫБОР
	|		КОГДА НачисленияПоказатели.Показатель.СпособВводаЗначений = ЗНАЧЕНИЕ(Перечисление.СпособыВводаЗначенийПоказателейРасчетаЗарплаты.ВводитсяПриРасчете)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА Начисления.УчетВремениВЧасах
	|			ТОГДА ИСТИНА
	|		КОГДА Начисления.УчетВремениВДняхЧасах
	|			ТОГДА ВЫБОР
	|					КОГДА Начисления.ИспользуетСреднийЗаработокОбщий = ИСТИНА
	|						ТОГДА КадровыеДанныеСотрудников.СуммированныйУчетРабочегоВремени
	|					КОГДА Начисления.СпособВыполненияНачисления = ЗНАЧЕНИЕ(Перечисление.СпособыВыполненияНачислений.ЗаПраздничныеДниПриОкончательномРасчете)
	|						ТОГДА ПочасоваяОплатаТруда.УчетВремениВЧасах
	|					КОГДА СпособыОплатыПраздничныхДней.ВремяВЧасах ЕСТЬ НЕ NULL 
	|						ТОГДА СпособыОплатыПраздничныхДней.ВремяВЧасах
	|					ИНАЧЕ ПочасоваяОплатаТруда.УчетВремениВЧасах
	|				КОНЕЦ
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ,
	|	Начисления.ВидВремени,
	|	Начисления.ИспользованиеПериода,
	|	ВЫБОР
	|		КОГДА ЗначенияПериодическихПоказателейСотрудников.Значение ЕСТЬ NULL 
	|				И ЗначенияПериодическихПоказателейПодразделений.Значение ЕСТЬ NULL 
	|				И ЗначенияПериодическихПоказателейОрганизаций.Значение ЕСТЬ NULL 
	|				И ЗначенияРазовыхСотрудники.Значение ЕСТЬ NULL 
	|				И ЗначенияРазовыхПодразделения.Значение ЕСТЬ NULL 
	|				И ЗначенияРазовыхОрганизации.Значение ЕСТЬ NULL 
	|				И ЗначенияОперативныхСотрудники.Значение ЕСТЬ NULL 
	|				И ЗначенияОперативныхПодразделения.Значение ЕСТЬ NULL 
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ,
	|	НачисленияПоказатели.НомерСтроки,
	|	Начисления.КоличествоПоказателейИспользуемыхПриРасчете,
	|	Начисления.ОчередностьРасчета,
	|	Начисления.РеквизитДопУпорядочивания
	|
	|УПОРЯДОЧИТЬ ПО
	|	Интервалы.Сотрудник,
	|	Начисления.ОчередностьРасчета,
	|	Начисления.РеквизитДопУпорядочивания,
	|	Интервалы.Начисление,
	|	Интервалы.ДокументОснование,
	|	Интервалы.ДатаНачала,
	|	Интервалы.Подразделение,
	|	НачисленияПоказатели.НомерСтроки";
Показать


Интересен ваш алгоритм решения 1 билета)))
6. maxdmt 28 09.06.18 16:39 Сейчас в теме
мда... в 3.1 уже так просто показатели не добавляются
7. Stref75 27.06.18 14:03 Сейчас в теме
Вот снова сталкиваюсь с Представлениями, но так и не могу понять что к чему. Суть механизма ясна, но вот как это все заставить работать?
Собственные ковыряния в конфигурации продвигаются крайне медленно и не эффективно.
Может найдутся добрые люди, кто подскажет где можно подробно почитать по этому механизму?
гуглить не предлагать :-) - уже испробовано. Предлагает опять же Представления в запросах. ЗУП и Введение в механизм представлений в ЗУП ред. 3
а это, я бы сказал, не для слабонервных.
8. user620235_m_ginger 29.01.19 12:55 Сейчас в теме
Всем доброго дня.

У меня ЗУП 3.1.5.99.
Документы "Расчет лимитов" и "Данные для расчета зарплаты" вносят данные в РС "ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников". Почему же в начислении зарплаты данные "Данных..." док видит, а мои из "Расчета лимитов" - нет? Это я что-то не так делаю, или программа в принципе не воспринимает данные в этого РС, веденные не "Данными..."? Как вы решили этот момент?
Кстати, функции "ЗначенияПоказателейНачислений" тут нет.

Спасибо.
9. user620235_m_ginger 29.01.19 13:19 Сейчас в теме
Вопрос снят ))) Запись в РС была не на начало месяца.
Для отправки сообщения требуется регистрация/авторизация