Как узнать сколько раз сотруднику устанавливали оклад по должности в 1С?

Пытаюсь освоить 1С. Хочу знать, сколько раз сотруднику устанавливался оклад по должности.

Процедура ОбработкаПроведения(Отказ, Режим)

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

Выгрузил результат запроса, чтобы посмотреть что там:

РезультатЗапроса.Выгрузить()

Там такой результат: введите сюда описание изображения

И теперь у меня возникло 2 мысли:

  1. Переделать запрос и вызывать его в цикле, чтобы возвращал количество записей сотрудника по должности

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

Сам вопрос: каким путем правильнее будет идти 1 или 2? Или может, можно было сделать вообще все одним запросом?


Ответы (1 шт):

Автор решения: Алексей Белкин

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

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

Вот что будет:

введите сюда описание изображения

→ Ссылка