Платформа 8.2.19.83
Конфигурация Управление производственным предприятием, редакция 1.3 (1.3.107.2)

Простой отчет на СКД, один набор данных - запрос (см. ниже)

Результат работы отчета:
№ п/п Поле1
1 Не служил
2 Отсутствие записи
3 Служил

Никак не могу понять почему при расшифровке строки 2 выводятся все строки отчета, например: Не служил - 100, Отсутствие записи - 10, Служил - 120, Итого 100 + 10 + 120 = 230. При расшифровке строки 1 и 3 всё нормально, показывает конкретных физ. лиц, а вот при расшифровке строки 2 показывает всех, всего 230 физ. лица.

Скорее всего запрос модифицируется, такое ощущение что он ставит где-то условие, и последний запрос естественно всем проставляет "Отсутствие записи", а в физической таблице нет таких строк.
В чём может быть причина?

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Заметки.Дата,
    Заметки.Объект,
    Заметки.ТипЗаписи,
    Заметки.Автор,
    Заметки.Активная,
    ВЫРАЗИТЬ(Заметки.Содержание КАК СТРОКА(100)) КАК Содержание,
    Заметки.ВидЗаметки
    ПОМЕСТИТЬ втЗаметки
    ИЗ
    РегистрСведений.Заметки КАК Заметки
    ГДЕ
    Заметки.ТипЗаписи = &ТипЗаписи
    И ТИПЗНАЧЕНИЯ(Заметки.Объект) = ТИП(Справочник.ФизическиеЛица)
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    МАКСИМУМ(втЗаметки.Дата) КАК Дата,
    втЗаметки.Объект,
    втЗаметки.ТипЗаписи
    ПОМЕСТИТЬ втСгруппированныеЗаметки
    ИЗ
    втЗаметки КАК втЗаметки

    СГРУППИРОВАТЬ ПО
    втЗаметки.Объект,
    втЗаметки.ТипЗаписи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    втСгруппированныеЗаметки.Дата,
    втСгруппированныеЗаметки.Объект,
    втСгруппированныеЗаметки.ТипЗаписи,
    втЗаметки.Содержание КАК Содержание
    ПОМЕСТИТЬ втАктуальныеЗаметки
    ИЗ
    втСгруппированныеЗаметки КАК втСгруппированныеЗаметки
    ЛЕВОЕ СОЕДИНЕНИЕ втЗаметки КАК втЗаметки
    ПО втСгруппированныеЗаметки.Дата = втЗаметки.Дата
    И втСгруппированныеЗаметки.Объект = втЗаметки.Объект
    И втСгруппированныеЗаметки.ТипЗаписи = втЗаметки.ТипЗаписи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_КадровыеДанные.Сотрудник,
    ВТ_КадровыеДанные.СотрудникФизлицо,
    ВТ_КадровыеДанные.Организация,
    ВТ_КадровыеДанные.ПодразделениеОрганизации,
    ВТ_КадровыеДанные.Должность,
    ВТ_КадровыеДанные.ЗанимаемыхСтавок,
    ВЫРАЗИТЬ(ЕСТЬNULL(втАктуальныеЗаметки.Содержание, "Отсутствие записи") КАК СТРОКА(50)) КАК Содержание
    ИЗ
    ВТ_КадровыеДанные КАК ВТ_КадровыеДанные
    ЛЕВОЕ СОЕДИНЕНИЕ втАктуальныеЗаметки КАК втАктуальныеЗаметки
    ПО ВТ_КадровыеДанные.СотрудникФизлицо = втАктуальныеЗаметки.Объект
```
---
Как было изначально понятно, дело в оптимизации запроса от СКД.

Если посмотреть на запрос в сообщении 1, то видно что результатом всегда будет список актуальных сотрудников, а поле Содержание я добавляю левым соединением. В случае если для каких-то сотрудников нет записей в регистре сведений Заметки, то поле Содержание заполнялось как "Отсутствие записи".
СКД оптимизирует запрос, например когда расшифровываю поле "Содержание", то естественно в регистре сведений нет таких записей со значением "Отсутствие записи", поэтому в расшифровку попадают все сотрудники что и верно, ведь меня судя по моему запросу интересуют актуальные сотрудники, а уж потом заметки для этих сотрудников.

В общем переписал запрос таким образом, опишу мысль:
1. Получаю всех актуальных сотрудников - ВТ_КадровыеДанные
2. Получаю все актуальные заметки в разрезе Физ.лиц. - втАктуальныеЗаметки
3. Объединяю два запроса:
3.1 Первый запрос - внутренним соединением две таблицы ВТ_КадровыеДанные, втАктуальныеЗаметки. Интересуют все сотрудники по которым есть заметки.
3.2 Второй запрос - полным соед. две таблицы ВТ_КадровыеДанные, втАктуальныеЗаметки. Интересуют только те сотрудники по которым нет заметок.
4. Вместо поля Содержание, создал поле - ОбобщенноеСодержание, просто группирую строковые значения по смыслу.
5. Вывел в настройки СКД вместо поле Содержание, поле ОбобщенноеСодержание.

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Заметки.Дата,
    Заметки.Объект,
    Заметки.ТипЗаписи,
    Заметки.Автор,
    Заметки.Активная,
    ВЫРАЗИТЬ(Заметки.Содержание КАК СТРОКА(50)) КАК Содержание,
    Заметки.ВидЗаметки
    ПОМЕСТИТЬ втЗаметки
    ИЗ
    РегистрСведений.Заметки КАК Заметки
    ГДЕ
    ТИПЗНАЧЕНИЯ(Заметки.Объект) = ТИП(Справочник.ФизическиеЛица)
    И Заметки.ТипЗаписи = &ТипЗаписи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    МАКСИМУМ(втЗаметки.Дата) КАК Дата,
    втЗаметки.Объект,
    втЗаметки.ТипЗаписи
    ПОМЕСТИТЬ втСгруппированныеЗаметки
    ИЗ
    втЗаметки КАК втЗаметки

    СГРУППИРОВАТЬ ПО
    втЗаметки.Объект,
    втЗаметки.ТипЗаписи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    втСгруппированныеЗаметки.Дата,
    втСгруппированныеЗаметки.Объект,
    втСгруппированныеЗаметки.ТипЗаписи,
    втЗаметки.Содержание КАК Содержание
    ПОМЕСТИТЬ втАктуальныеЗаметки
    ИЗ
    втСгруппированныеЗаметки КАК втСгруппированныеЗаметки
    ЛЕВОЕ СОЕДИНЕНИЕ втЗаметки КАК втЗаметки
    ПО втСгруппированныеЗаметки.Дата = втЗаметки.Дата
    И втСгруппированныеЗаметки.Объект = втЗаметки.Объект
    И втСгруппированныеЗаметки.ТипЗаписи = втЗаметки.ТипЗаписи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_КадровыеДанные.Сотрудник,
    ВТ_КадровыеДанные.Физлицо,
    ВТ_КадровыеДанные.Организация,
    ВТ_КадровыеДанные.ПодразделениеОрганизации,
    ВТ_КадровыеДанные.Должность,
    ВТ_КадровыеДанные.ЗанимаемыхСтавок,
    ВЫРАЗИТЬ(втАктуальныеЗаметки.Содержание КАК СТРОКА(50)) КАК Содержание,
    ВЫБОР
    КОГДА втАктуальныеЗаметки.Содержание ПОДОБНО "%не служил%"
    ИЛИ втАктуальныеЗаметки.Содержание ПОДОБНО "%не служил%"
    ТОГДА "Не служил"
    КОГДА втАктуальныеЗаметки.Содержание ПОДОБНО "[0-9][0-9][0-9][0-9]%"
    ТОГДА "Служил"
    КОГДА втАктуальныеЗаметки.Содержание ПОДОБНО "%[а-я]%"
    ИЛИ втАктуальныеЗаметки.Содержание ПОДОБНО "%[0-9]%"
    ИЛИ втАктуальныеЗаметки.Содержание ПОДОБНО "%[a-z]%"
    ТОГДА "Остальные"
    ИНАЧЕ "Остальные"
    КОНЕЦ КАК ОбобщенноеСодержание
    ИЗ
    ВТ_КадровыеДанные КАК ВТ_КадровыеДанные
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ втАктуальныеЗаметки КАК втАктуальныеЗаметки
    ПО ВТ_КадровыеДанные.Физлицо = втАктуальныеЗаметки.Объект

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_КадровыеДанные.Сотрудник,
    ВТ_КадровыеДанные.Физлицо,
    ВТ_КадровыеДанные.Организация,
    ВТ_КадровыеДанные.ПодразделениеОрганизации,
    ВТ_КадровыеДанные.Должность,
    ВТ_КадровыеДанные.ЗанимаемыхСтавок,
    "Отсутствие записи",
    "Отсутствие записи"
    ИЗ
    ВТ_КадровыеДанные КАК ВТ_КадровыеДанные
    ПОЛНОЕ СОЕДИНЕНИЕ втАктуальныеЗаметки КАК втАктуальныеЗаметки
    ПО ВТ_КадровыеДанные.Физлицо = втАктуальныеЗаметки.Объект
    ГДЕ
    втАктуальныеЗаметки.Объект ЕСТЬ NULL
```

Теперь расшифровка для полей X - "Отсутствие записи" Y - "Количество" равно в итоговой строке тому количеству сотрудников которые были в результате отчета
---
Запутались в описании (2 раза указали строку №2), не понятно, в какой строке (а точнее ячейке) проблема с расшифровкой, а ещё важнее - по какому именно полю.
Желательно скриншоты.
---
Неправильно расшифровывает строку 2 на картинке, попадают все строки из отчета.
---
Ещё раз - нельзя расшифровать строку, можно лишь ячейку и по какому-либо полю. Перефразируйте, на что тыкаете и по какому полю.
---
персонально для Вас, посмотрите на скриншот который я прикрепил выше отвечая на Ваш вопрос.

Вот на этом скриншоте я выделил строку желтым цветом, вот в этой строке которую я выделил желтым цветом, Есть ячейка в которой есть значение, это цифра 22, вот эту ячейку я и расшифровываю. Расшифровываю ячейку, а не строку, не руками, а стрелкой от мышки она ещё отображается лупой.

В этом предложении очень много слов для генерации вопросов, лупа, мышка, строка, скриншот, цифра... только вот у меня времени нет, отвлекаться на это.

Я выгрузил запрос из СКД, да действительно как и должно быть, запрос модифицируются при расшифровке, пока сравниваю в чем разница. Как разберусь отпишусь.
---
Раз вы не вразмумили, что есть сферический конь "расшифровка", то специально для вас - https://its.1c.ru/db/pubcomplexreports#content:100:hdoc:h97
---
Эх, жаль, но не в тему, но я обещаю вразумить сферического коня "расшифровки"
---
преобразуй NULL в 0...
---
Так а смысл, у меня нет в результате запроса полей с Null, я преобразую Null в значение "Отсутствие записи".

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

Если посмотреть на запрос в сообщении 1, то видно что результатом всегда будет список актуальных сотрудников, а поле Содержание я добавляю левым соединением. В случае если для каких-то сотрудников нет записей в регистре сведений Заметки, то поле Содержание заполнялось как "Отсутствие записи".
СКД оптимизирует запрос, например когда расшифровываю поле "Содержание", то естественно в регистре сведений нет таких записей со значением "Отсутствие записи", поэтому в расшифровку попадают все сотрудники что и верно, ведь меня судя по моему запросу интересуют актуальные сотрудники, а уж потом заметки для этих сотрудников.

В общем переписал запрос таким образом, опишу мысль:
1. Получаю всех актуальных сотрудников - ВТ_КадровыеДанные
2. Получаю все актуальные заметки в разрезе Физ.лиц. - втАктуальныеЗаметки
3. Объединяю два запроса:
3.1 Первый запрос - внутренним соединением две таблицы ВТ_КадровыеДанные, втАктуальныеЗаметки. Интересуют все сотрудники по которым есть заметки.
3.2 Второй запрос - полным соед. две таблицы ВТ_КадровыеДанные, втАктуальныеЗаметки. Интересуют только те сотрудники по которым нет заметок.
4. Вместо поля Содержание, создал поле - ОбобщенноеСодержание, просто группирую строковые значения по смыслу.
5. Вывел в настройки СКД вместо поле Содержание, поле ОбобщенноеСодержание.

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Заметки.Дата,
    Заметки.Объект,
    Заметки.ТипЗаписи,
    Заметки.Автор,
    Заметки.Активная,
    ВЫРАЗИТЬ(Заметки.Содержание КАК СТРОКА(50)) КАК Содержание,
    Заметки.ВидЗаметки
    ПОМЕСТИТЬ втЗаметки
    ИЗ
    РегистрСведений.Заметки КАК Заметки
    ГДЕ
    ТИПЗНАЧЕНИЯ(Заметки.Объект) = ТИП(Справочник.ФизическиеЛица)
    И Заметки.ТипЗаписи = &ТипЗаписи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    МАКСИМУМ(втЗаметки.Дата) КАК Дата,
    втЗаметки.Объект,
    втЗаметки.ТипЗаписи
    ПОМЕСТИТЬ втСгруппированныеЗаметки
    ИЗ
    втЗаметки КАК втЗаметки

    СГРУППИРОВАТЬ ПО
    втЗаметки.Объект,
    втЗаметки.ТипЗаписи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    втСгруппированныеЗаметки.Дата,
    втСгруппированныеЗаметки.Объект,
    втСгруппированныеЗаметки.ТипЗаписи,
    втЗаметки.Содержание КАК Содержание
    ПОМЕСТИТЬ втАктуальныеЗаметки
    ИЗ
    втСгруппированныеЗаметки КАК втСгруппированныеЗаметки
    ЛЕВОЕ СОЕДИНЕНИЕ втЗаметки КАК втЗаметки
    ПО втСгруппированныеЗаметки.Дата = втЗаметки.Дата
    И втСгруппированныеЗаметки.Объект = втЗаметки.Объект
    И втСгруппированныеЗаметки.ТипЗаписи = втЗаметки.ТипЗаписи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_КадровыеДанные.Сотрудник,
    ВТ_КадровыеДанные.Физлицо,
    ВТ_КадровыеДанные.Организация,
    ВТ_КадровыеДанные.ПодразделениеОрганизации,
    ВТ_КадровыеДанные.Должность,
    ВТ_КадровыеДанные.ЗанимаемыхСтавок,
    ВЫРАЗИТЬ(втАктуальныеЗаметки.Содержание КАК СТРОКА(50)) КАК Содержание,
    ВЫБОР
    КОГДА втАктуальныеЗаметки.Содержание ПОДОБНО "%не служил%"
    ИЛИ втАктуальныеЗаметки.Содержание ПОДОБНО "%не служил%"
    ТОГДА "Не служил"
    КОГДА втАктуальныеЗаметки.Содержание ПОДОБНО "[0-9][0-9][0-9][0-9]%"
    ТОГДА "Служил"
    КОГДА втАктуальныеЗаметки.Содержание ПОДОБНО "%[а-я]%"
    ИЛИ втАктуальныеЗаметки.Содержание ПОДОБНО "%[0-9]%"
    ИЛИ втАктуальныеЗаметки.Содержание ПОДОБНО "%[a-z]%"
    ТОГДА "Остальные"
    ИНАЧЕ "Остальные"
    КОНЕЦ КАК ОбобщенноеСодержание
    ИЗ
    ВТ_КадровыеДанные КАК ВТ_КадровыеДанные
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ втАктуальныеЗаметки КАК втАктуальныеЗаметки
    ПО ВТ_КадровыеДанные.Физлицо = втАктуальныеЗаметки.Объект

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_КадровыеДанные.Сотрудник,
    ВТ_КадровыеДанные.Физлицо,
    ВТ_КадровыеДанные.Организация,
    ВТ_КадровыеДанные.ПодразделениеОрганизации,
    ВТ_КадровыеДанные.Должность,
    ВТ_КадровыеДанные.ЗанимаемыхСтавок,
    "Отсутствие записи",
    "Отсутствие записи"
    ИЗ
    ВТ_КадровыеДанные КАК ВТ_КадровыеДанные
    ПОЛНОЕ СОЕДИНЕНИЕ втАктуальныеЗаметки КАК втАктуальныеЗаметки
    ПО ВТ_КадровыеДанные.Физлицо = втАктуальныеЗаметки.Объект
    ГДЕ
    втАктуальныеЗаметки.Объект ЕСТЬ NULL
```

Теперь расшифровка для полей X - "Отсутствие записи" Y - "Количество" равно в итоговой строке тому количеству сотрудников которые были в результате отчета
---
Сообщение было скрыто модератором.