ЗУП 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С Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

27900 руб.

01.04.2020    147103    649    360    

235

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

48000 руб.

24.04.2017    51028    101    165    

89

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    25036    23    1    

25

Зарплата Производство готовой продукции (работ, услуг) Учет рабочего времени Рабочее место Бизнес-аналитик Пользователь Руководитель проекта Платформа 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С» позволяет принимать в ремонт оборудование (компьютеры, бытовая техника и т.п.), оформлять заявки инженеров на посещение клиентов и вести начисление заработной платы для сотрудников. Позволяет наладить автоматизированный учет в сервисном центре на уже существующей базе.

14800 руб.

01.11.2012    94138    115    1    

117

SALE! 20%

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

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

5940 4752 руб.

27.05.2021    37570    264    92    

205

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

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

12000 руб.

28.07.2016    60710    153    141    

129

SALE! 30%

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

При заполнении ведомости на выплату зарплаты вылазят задолженности прошлых периодов, которых быть не должно? Наша обработка позволяется убрать эти доходы прошлых периодов за пару секунд. Больше не нужно тратить часы на анализ каждого такого случая.

33600 23520 руб.

14.09.2022    15740    70    26    

72
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 275 02.11.15 13:03 Сейчас в теме
(0) Не хватает условий билета, не понятно что решали. Хотя общее описание какая цель была у данного решения.
и отладка ОбщийМодуль1.просмотрВт(запрос,"") как работает ?
4. maxdmt 28 05.11.15 16:23 Сейчас в теме
Добавил ссылку на страницу с билетами, видео с отладкой, пункт "5. Дополнительно".
5. mitia.mackarevich 75 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 Сейчас в теме
Вопрос снят ))) Запись в РС была не на начало месяца.
Оставьте свое сообщение