Отчет сотрудниц в отпусках и выход на работу.

18.10.12

Разработка - Механизмы типовых конфигураций

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

Скачать файлы

Наименование Файл Версия Размер
Отчет по декретным отпускам на дату
.erf 34,54Kb
43
.erf 34,54Kb 43 Скачать

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

  Но 1С добавила ресурсы ДатаЗавершения и СостояниеЗавершения. И испортила всю малину стройность решения. Значит когда наступит ДатаЗавершения у сотрудника будет состояние СостояниеЗавершения. Так думают большинство кадровых работников, по крайней мере с которыми я встречался. Значит наш любимый СрезПоследнних не пройдет и мы вооружившись методами SQL(в запросах 1С) напишем правильный отчет.

 Придумаем простой пример:

Иванова Василиса Микулишна находится в отпуске по уходу за ребенком с 01.01.2009 по 31.12.2011.

№ п/п

Сотрудник

Период

Состояние

Период завершения

Состояние завершения

Регистратор

1

Иванова Василиса Микулишна

01.01.2009

В отпуске по уходу за ребенком

01.01.2012

Работает

Отпуска организаций 1910-ОТ от 30.12.2008 0:00:00

 Делаем просотй запрос

ВЫБРАТЬ РАЗРЕШЕННЫЕ
  СостояниеРаботниковОрганизаций.Период КАК Период,
  СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
  СостояниеРаботниковОрганизаций.Состояние КАК Состояние,
  СостояниеРаботниковОрганизаций.Регистратор,
  СостояниеРаботниковОрганизаций.ПериодЗавершения
ИЗ
   РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций

 

Объединяем с периодами после после завешения

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

ВЫБРАТЬ
    ВложенныйЗапрос.ПериодЗавершения,
    ВложенныйЗапрос.Сотрудник,
    ВложенныйЗапрос.СостояниеЗавершения,
    ВложенныйЗапрос.Регистратор,
    ВложенныйЗапрос.ПериодНовый
ИЗ
    (ВЫБРАТЬ
        СостояниеРаботниковОрганизаций.Регистратор КАК Регистратор,
        СостояниеРаботниковОрганизаций.Период КАК Период,
        СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
        МИНИМУМ(СостояниеПослеТекущего.Период) КАК ПериодНовый,
        СостояниеРаботниковОрганизаций.Состояние КАК Состояние,
        СостояниеРаботниковОрганизаций.ПериодЗавершения КАК ПериодЗавершения,
        СостояниеРаботниковОрганизаций.СостояниеЗавершения КАК СостояниеЗавершения
    ИЗ
        РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеПослеТекущего
            ПО СостояниеРаботниковОрганизаций.Организация = СостояниеПослеТекущего.Организация
                И СостояниеРаботниковОрганизаций.Сотрудник = СостояниеПослеТекущего.Сотрудник
                И СостояниеРаботниковОрганизаций.Период < СостояниеПослеТекущего.Период
    
    СГРУППИРОВАТЬ ПО
        СостояниеРаботниковОрганизаций.Сотрудник,
        СостояниеРаботниковОрганизаций.Период,
        СостояниеРаботниковОрганизаций.Регистратор,
        СостояниеРаботниковОрганизаций.Состояние,
        СостояниеРаботниковОрганизаций.ПериодЗавершения,
        СостояниеРаботниковОрганизаций.СостояниеЗавершения) КАК ВложенныйЗапрос
ГДЕ
    (ВложенныйЗапрос.ПериодЗавершения < ВложенныйЗапрос.ПериодНовый
            ИЛИ ВложенныйЗапрос.ПериодНовый ЕСТЬ NULL )
    И ВложенныйЗапрос.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)

 

И делаем правильные периоды в случае пересечения...

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

 

Получаем то, что нам надо. Последний запрос строим тот который нужен каждому и радуемся...

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

 

P.S.

По моему пониманию 1С делает неправильный шаг, когда планируемые действия в будущем(Состояние завершения) сразу выдаются за факт, а не относятся исключительно к категории планирования. Но это так и мы должны быть во всеоружии, чтобы понять как это работает и дотошно объяснять пользователям.

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119909    656    389    

701

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6089    29    mkalimulin    23    

48

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4727    mrXoxot    11    

97

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5282    user1923546    26    

43

Ключи аналитик учета в ЕРП, КА, УТ

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

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    6756    ids79    25    

72

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    15954    skovpin_sa    14    

97

Структура запроса

Инструментарий разработчика Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

21.06.2023    5131    57    obmailok    35    

56
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. petrov_al 10 20.10.12 20:50 Сейчас в теме
А помоему все правильно и логично сделано в первую очередь для удобства работы пользователям. Кстати в РаботникиОрганизации тоже используется периодзавершения. Я в свое время учился у 1с на типовых отчетах как делать специфические выборки из таких регистров.
3. sikuda 673 23.10.12 17:47 Сейчас в теме
2. Спасибо за статью. Стало больше понятна та позиция по которой именно так сделала 1С. Мы все находимся в пирамиде продаж 1С и движемся вместе с ней.
Но еще раз повторю - человеческая логика строится по другому:
1. все что произошло в прошлом - реально произошло (свершившийся факт).(даже если мы любим это изменять).
2. все что будет в будущем - только планируется.
И логика 1С подходит когда это именно уже произошло(1). А что будет с матерью через три года. Извините не свершившийся факт.
2. Gesperid 2 23.10.12 16:05 Сейчас в теме
Рекомендую ознакомиться со статьей http://its.1c.ru/db/metod81#content:2910:1, там описаны причины такого решение и ПРАВИЛЬНАЯ реализация с хорошими комментариями.
4. itromanster 01.03.13 08:58 Сейчас в теме
Я выбираю по состоянию и иключаю всех кто работает за период как думаете правильная методология ?
5. itromanster 01.03.13 09:08 Сейчас в теме
Вопрос куда сложить пересечения периодов опять в кучу в другой пакет запроса ?
6. itromanster 06.03.13 12:33 Сейчас в теме
Скажите мне пожалуйсто что имеется в виду под "пересечением периодов" каких периодов отпуска с какими ? Предпологается что отчет формируется за месяц.
Оставьте свое сообщение