Разрезы в запросах к регистрам расчетов

13.11.12

Учетные задачи - Зарплата

При решении расчетных задач для подготовки к аттестации на специалиста по платформе 8.2 нередко приходится использовать разрезы при получении базы. Этот вопрос и постараюсь осветить.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ИспользованиеРазрезов.dt
.dt 27,46Kb
29
29 Скачать (1 SM) Купить за 1 850 руб.

В процессе подготовки к экзамену пришлось перелопатить немало книг, кучу ресурсов Интернета, но нигде не нашел внятного объяснения что такое "Разрезы" и с чем его едят. О примерах использования вообще умолчу...

Если бы мне в свое время попалась на глаза подобная статья, экзамен на специалиста был бы сдан намного раньше :)

Надеюсь, кому-то данная информация будет полезной.

Итак, рассмотрим два варианта задачи (сама задача максимально упрощена, условие приводится только для иллюстрации работы с разрезами).

Условие задачи:

Сотрудники получают надбавку, которая рассчитывается как некая сумма умноженная на процент. Сумма и процент для расчета надбавки указываются пользователем в документе "Начисление зарплаты".

Дополнительно руководителям подразделений выплачивается премия, которая рассчитывается как:

1. Сумма всех надбавок сотрудников подразделения, начисленных в этом же расчетном периоде, умноженная на процент. Надбавка руководителя при этом не учитывается.

2. Максимальная сумма надбавки, начисленная любому сотруднику подразделения в этом же расчетном периоде, умноженная на процент.

Процент премии указывается пользователем в документе "Начисление зарплаты".

Решение

Процесс расчета надбавки рассматривать не буду, там все просто, в приложенной конфигурации можно посмотреть как она рассчитывается. Остановимся более детально на премии.

Вариант 1

Предположим, что на момент расчета премии у нас в регистре расчета существуют следующие записи (Иванов - руководитель подразделения): 

Номер строки Сотрудник Подразделение Вид расчета Результат База Процент
1 Иванов Отдел продаж Надбавка 200.00 1000.00 20
2 Петров Отдел продаж Надбавка 150.00 1000.00 15
3 Сидоров Отдел продаж  Надбавка 100.00 1000.00 10
4 Иванов Отдел продаж Премия     20

Для расчета премии Иванову нам необходимо просуммировать результат по Петрову, Сидорову и умножить на некий процент. Результат самого Иванова в расчет браться не должен. Посмотрим, что можно сделать:

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

   
Измерения = Новый Массив(1);
   
Измерения[0] = "Подразделение";

   
Разрезы = Новый Массив(1);
   
Разрезы[0] = "Сотрудник";

   
Запрос.УстановитьПараметр("Регистратор" ,Регистратор);
   
Запрос.УстановитьПараметр("ВидРасчета"  ,ПланыВидовРасчета.ДополнительныеНачисления.Премия);
   
Запрос.УстановитьПараметр("Измерения"   ,Измерения);
   
Запрос.УстановитьПараметр("Разрезы"     ,Разрезы);

   
Выборка = Запрос.Выполнить().Выбрать();
    Для Каждого
Запись Из НаборДвижений Цикл

       
Отбор.НомерСтроки = Запись.НомерСтроки;
       
Выборка.Сбросить();
        Если
Выборка.НайтиСледующий(Отбор) Тогда

           
Запись.База         = Выборка.База;
           
Запись.Результат    = Выборка.Результат;

        КонецЕсли;

    КонецЦикла;

Взглянем на временную таблицу "ВТРазрез":

НомерСтроки СотрудникРазрез База Процент
4 Иванов 0.00 20
4 Петров 150.00 20
4 Сидоров 100.00 20

Как мы видим, мы получили базу по каждому сотруднику в отдельности. Теперь можно, свернув эту таблицу по номеру строки и проценту без учета сотрудника, получить сумму надбавок всех сотрудников:

НомерСтроки База Процент
4 250.00 20

Вычислить результат, я думаю, теперь не составит труда.

 

Вариант 2

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

Пусть в регистре расчета на момент расчета премии существуют такие записи:

Номер строки Сотрудник Подразделение Вид расчета Результат База Процент
1 Иванов Отдел продаж Надбавка 100.00 1000.00 10
2 Петров Отдел продаж Надбавка 150.00 1000.00 15
3 Сидоров Отдел продаж Надбавка 200.00 1000.00 20
4 Иванов Отдел продаж Премия     20

Исходя из условия задачи, видим, что базой для расчета премии Иванова в данном случае должна стать сумма 200.00 - надбавка Сидорова.

Запрос тогда примет следующий вид: 

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

   
Измерения = Новый Массив(1);
   
Измерения[0] = "Подразделение";

   
Разрезы = Новый Массив(1);
   
Разрезы[0] = "Сотрудник";

   
Запрос.УстановитьПараметр("Регистратор" ,Регистратор);
   
Запрос.УстановитьПараметр("ВидРасчета"  ,ПланыВидовРасчета.ДополнительныеНачисления.Премия);
   
Запрос.УстановитьПараметр("Измерения"   ,Измерения);
   
Запрос.УстановитьПараметр("Разрезы"     ,Разрезы);

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

Временная таблица "ВТРазрез" практически ничем не отличается от аналогичной в первом варианте:

НомерСтроки СотрудникРазрез База Процент
4 Иванов 100.00 20
4 Петров 150.00 20
4 Сидоров 200.00 20

Во временную таблицу "ВТБаза" мы помещаем только одну подходящую нам запись: по товарищу Сидорову, так как ему начислена максимальная надбавка:

НомерСтроки База Процент
4 200.00 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    149080    533    381    

240

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

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

84000 руб.

24.04.2017    51807    104    165    

91

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

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

120000 руб.

19.08.2020    25639    25    1    

27

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

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

5940 руб.

27.05.2021    38876    278    98    

213

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

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

12000 руб.

28.07.2016    61343    159    141    

133

Зарплата Производство готовой продукции (работ, услуг) Учет рабочего времени Рабочее место Бизнес-аналитик Пользователь Руководитель проекта Платформа 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    95045    111    1    

119

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

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

33600 руб.

14.09.2022    16312    73    26    

74

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

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

28800 руб.

06.10.2023    4308    36    18    

44
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. fr.myha 14.11.12 10:25 Сейчас в теме
Спасибо большое за статью. Теперь будет более понятно что это такое разрез и как им пользоваться.
2. Kryakovkin 07.01.13 15:39 Сейчас в теме
Спасибо за публикацию. Статья очень помогла в подготовке к специалисту. Из задач которые я прорешивал, разрезы потребовались в задаче 3.49.
3. BorisSpB 13.01.15 16:48 Сейчас в теме
Здравствуйте.

Спасибо за подробную статью. У вас все написано понятно и по существу.

Возник следующий вопрос. Зачем в варианте 2 (расчет премии руководителю исходя из максимальной надбавки сотрудника) вы берете данные из реальной таблицы "Дополнительные начисления"?

Почему бы номер строки и процент не брать из вирт. таблицы "ДополнительныеНачисленияБазаДополнительныеНачисления"? В таком случае не было бы необходимости делать лишнее ЛЕВОЕ СОЕДИНЕНИЕ.
4. CeHbKA 305 30.01.17 16:01 Сейчас в теме
Статья отличная! Но я так и не могу допетрить, как из условия задачи понять, что нужны разрезы?
И если у меня в регистре расчета 2 измерения - сотрудник и подразделение, разве я не получу один и тот же результат, что при получении базы и указании параметра "Измерения", что при получении базы и указания параметра "Разрезы" ?!
9. AndrewM 08.12.20 23:31 Сейчас в теме
(4) да, можно было бы и не использовать разрезы, но только если не нужно исключать из базы надбавку самого руководителя. Но в условии задачи написано: "Надбавка руководителя при этом не учитывается". И вот чтобы её исключить, без разреза уже не обойтись.
5. shoy 19 06.03.18 11:07 Сейчас в теме
Хорошо написано!
Про левое соединение правильное замечание.
А ещё, нужен разрез по должности сотрудника, особенно когда в один месяц перекидывают больше двух раз.
6. KonstIV 12.12.18 20:43 Сейчас в теме
А зачем подтягивать основную таблицу? Номер строки и в доп. таблице такой же.
"ВЫБРАТЬ
		|	ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки,
		|	СУММА(ДополнительныеНачисленияБазаОсновныеНачисления.РезультатБаза) КАК РезультатБаза
		|ИЗ
		|	РегистрРасчета.ДополнительныеНачисления.БазаОсновныеНачисления(
		|			&Измерения,
		|			&Измерения,
		|			&Разрезы,
		|			Регистратор = &Регистратор
		|				И ВидРасчета = &ВидРасчета) КАК ДополнительныеНачисленияБазаОсновныеНачисления
		|ГДЕ
		|	ДополнительныеНачисленияБазаОсновныеНачисления.Сотрудник <> ДополнительныеНачисленияБазаОсновныеНачисления.СотрудникРазрез
		|
		|СГРУППИРОВАТЬ ПО
		|	ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки";
Показать
7. milov.aleksey 405 10.09.20 14:16 Сейчас в теме
На онлайн курсе Белоусова "Подготовка к спецу" с 13.07.2020 в задаче ПР_4 "Премия руководителю" процентом от суммы начислений по ДневномуТарифу сотрудников его Подразделения за прошлый месяц, кроме него самого. "Руководителям подразделений дополнительно выплачивается премия в виде процента от суммы начислений по тарифу за предыдущий месяц сотрудников их подразделения. С начисления по тарифу самого руководителя премия не начисляется. Процент премии в течение периода начисления не меняется и задается в документе «Начисление зарплаты»." И вдобавок требуется отчет вида:
Подразделение Руководитель Процен премии Сумма премии

ИТОГО:
Поэтому я не просто исключаю из дохода прошлого месяца всех руководителей. У меня СотрудникРуководитель - реквизит справочника Подразделения. Явно привязываю руководителя к подразделению.
Получился такой запрос:
//2) ПРЕМИЯ РУКОВОДИТЕЛЯ
ДополнительныеНачисления = Движения.ДополнительныеНачисления;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДополнительныеНачисления.НомерСтроки КАК НомерСтроки,
| ДополнительныеНачисленияБазаОсновныеНачисления.СотрудникРазрез КАК СотрудникРазрез,
| ВЫБОР
| КОГДА ДополнительныеНачисленияБазаОсновныеНачисления.Подразделение.СотрудникРуководитель = ДополнительныеНачисленияБазаОсновныеНачисления.СотрудникРазрез
| ТОГДА 0
| ИНАЧЕ ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.РезультатБаза, 0)
| КОНЕЦ КАК База,
| ДополнительныеНачисления.Размер КАК Размер
|ПОМЕСТИТЬ ВТРазрез
|ИЗ
| РегистрРасчета.ДополнительныеНачисления КАК ДополнительныеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисления.БазаОсновныеНачисления(
| &Измерения,
| &Измерения,
| &Разрезы,
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчета) КАК ДополнительныеНачисленияБазаОсновныеНачисления
| ПО ДополнительныеНачисления.НомерСтроки = ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки
|ГДЕ
| ДополнительныеНачисления.Регистратор = &Регистратор
| И ДополнительныеНачисления.ВидРасчета = &ВидРасчета
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ
| ВТРазрез.НомерСтроки КАК НомерСтроки,
| СУММА(ВТРазрез.База) КАК База,
| СУММА(ВТРазрез.База * ВТРазрез.Размер / 100) КАК Результат
|ИЗ
| ВТРазрез КАК ВТРазрез
|
|СГРУППИРОВАТЬ ПО
| ВТРазрез.НомерСтроки";
Измерения = Новый Массив();
Измерения.Добавить("Подразделение");
Запрос.УстановитьПараметр("Измерения", Измерения);

Разрезы = Новый Массив();
Разрезы.Добавить("Сотрудник");
Запрос.УстановитьПараметр("Разрезы", Разрезы);

Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.ДополнительныеНачисления.ПремияРуководителя);

Выборка = Запрос.Выполнить().Выбрать();

Для Каждого Движение Из ДополнительныеНачисления Цикл
Если Движение.ВидРасчета <> ПланыВидовРасчета.ДополнительныеНачисления.ПремияРуководителя ТОгда
Продолжить;
КонецЕсли;

Выборка.Сбросить();

Если Выборка.НайтиСледующий(Движение.НомерСтроки,"НомерСтроки") Тогда
Движение.Результат = Выборка.Результат;
Движение.База = Выборка.База;
КонецЕсли;

КонецЦикла;
ДополнительныеНачисления.Записать(, истина);
Показать
8. milov.aleksey 405 21.09.20 16:30 Сейчас в теме
(6) Согласен, оптимизнул, вышло компактно и результат расчета и вцелом проведения тот же:
//2) ПРЕМИЯ РУКОВОДИТЕЛЯ
ДополнительныеНачисления = Движения.ДополнительныеНачисления;

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

Разрезы = Новый Массив();
Разрезы.Добавить("Сотрудник");
Запрос.УстановитьПараметр("Разрезы", Разрезы);

Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.ДополнительныеНачисления.ПремияРуководителя);

Выборка = Запрос.Выполнить().Выбрать();

Для Каждого Движение Из ДополнительныеНачисления Цикл
Если Движение.ВидРасчета <> ПланыВидовРасчета.ДополнительныеНачисления.ПремияРуководителя ТОгда
Продолжить;
КонецЕсли;

Выборка.Сбросить();

Если Выборка.НайтиСледующий(Движение.НомерСтроки,"НомерСтроки") Тогда
Движение.База = Выборка.База;
Движение.Результат = Выборка.База * Движение.Размер/100;
КонецЕсли;

КонецЦикла;
ДополнительныеНачисления.Записать();
10. Vogde 18 08.09.21 09:31 Сейчас в теме
Спасибо автору, всё изложено доступно и действительно статья помогла сэкономить много время.
Оставьте свое сообщение