Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 4
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Як в запросі деталізувати період по рокам          
mvo2008 Подменю пользователя
сообщение 27.11.24, 10:31
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 45
Из: г. Черкасcы
Спасибо сказали: 14 раз
Рейтинг: 9.3

Доброго дня... Шановні знатоки 1С кода, допоможіть вирішити наступну проблему...
Ситуація наступна
Є запрос, який формує таблицю по працівникам, і їхнім датам прийому та звільнення.

ПРАЦІВНИК | Дата прийому | Дата звільнення
Іванов.О.О. | 01.02.2020 | 15.10.2024..............................................
Як зробити так щоб цей запрос виводив інформацію в розрізі років? По типу,
ПРАЦІВНИК | Рік | Дата початок | Дата кінець
Іванов.О.О. | 2020 | 01.02.2020 | 31.12.2020
Іванов.О.О. | 2021 | 01.01.2021 | 31.12.2021
Іванов.О.О. | 2022 | 01.01.2022 | 31.12.2022
Іванов.О.О. | 2023 | 01.01.2023 | 31.12.2023
Іванов.О.О. | 2024 | 01.01.2024 | 15.10.2023
аж до дати звільнення......

Сообщение отредактировал Vofka - 27.11.24, 11:26

Vofka Подменю пользователя
сообщение 27.11.24, 11:25
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13993
Из: Киев
Спасибо сказали: 4568 раз
Рейтинг: 3697.7

Додайте в запит РікПрийому = Год(ДатаПрийому) і зробіть підсумки по Рік

Мабуть, шось типу такого:

ИТОГИ ПО
   Рік,
   ОБЩИЕ

Спасибо сказали: mvo2008,

mvo2008 Подменю пользователя
сообщение 27.11.24, 13:04
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 45
Из: г. Черкасcы
Спасибо сказали: 14 раз
Рейтинг: 9.3

Vofka @ Сегодня, 11:25 * ,
Дякую, але не зовсім підходить.По факту потрібно 1 рядок (з періодом) розбити на 5 (по рокам цього періоду)

Vofka Подменю пользователя
сообщение 27.11.24, 13:22
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13993
Из: Киев
Спасибо сказали: 4568 раз
Рейтинг: 3697.7

Якщо у вас в БД зберігається умовно 2 строки виду:
Іванов, 01.01.2020, Прийнятий
Іванов, 15.11.2024, Звільнений

То на швидкоруч я не знаю, чи взагалі це можна зробити запитом. Я би робив це кодом.

andrew76 Подменю пользователя
сообщение 27.11.24, 16:01
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 480
Из: Казахстан
Спасибо сказали: 49 раз
Рейтинг: 49

Vofka @ Сегодня, 16:22 * ,

Извините,что вмешиваюсь,а может результат запроса выгрузить в Таблицу Значений ?
Таблицу Значений отсортировать в нужном порядке по датам.И далее- вывод данных из ТЗ.

alex1c Подменю пользователя
сообщение 27.11.24, 16:48
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 239
Спасибо сказали: 49 раз
Рейтинг: 44

Доброго дня! Є такий варіант:
в мене вийшло те що потрібно
ВЫБРАТЬ
    0 КАК n
ПОМЕСТИТЬ Т_Цифри

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&Дата1, ГОД, а_Одиниці.n + б_Десятки.n * 10 + в_Сотні.n * 100 + г_Тисячі.n * 1000) КАК Дата
ПОМЕСТИТЬ Т_Дат
ИЗ
    Т_Цифри КАК а_Одиниці
        ЛЕВОЕ СОЕДИНЕНИЕ Т_Цифри КАК б_Десятки
        ПО (ИСТИНА)
        ЛЕВОЕ СОЕДИНЕНИЕ Т_Цифри КАК в_Сотні
        ПО (ИСТИНА)
        ЛЕВОЕ СОЕДИНЕНИЕ Т_Цифри КАК г_Тисячі
        ПО (ИСТИНА)
ГДЕ
    а_Одиниці.n + б_Десятки.n * 10 + в_Сотні.n * 100 + г_Тисячі.n * 1000 <= РАЗНОСТЬДАТ(&Дата1, &Дата2, ГОД)
;

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

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т_Робітників.Робітник,
    ГОД(Т_Дат.Дата) КАК Рік,
    ВЫБОР
        КОГДА Т_Робітників.ДатаПрийому МЕЖДУ НАЧАЛОПЕРИОДА(Т_Дат.Дата, ГОД) И КОНЕЦПЕРИОДА(Т_Дат.Дата, ГОД)
            ТОГДА Т_Робітників.ДатаПрийому
        ИНАЧЕ Т_Дат.Дата
    КОНЕЦ КАК ДатаПочаток,
    ВЫБОР
        КОГДА Т_Робітників.ДатаЗвільнення МЕЖДУ НАЧАЛОПЕРИОДА(Т_Дат.Дата, ГОД) И КОНЕЦПЕРИОДА(Т_Дат.Дата, ГОД)
            ТОГДА Т_Робітників.ДатаЗвільнення
        ИНАЧЕ КОНЕЦПЕРИОДА(Т_Дат.Дата, ГОД)
    КОНЕЦ КАК ДатаКінець
ИЗ
    Т_Робітників КАК Т_Робітників,
    Т_Дат КАК Т_Дат


Сообщение отредактировал alex1c - 27.11.24, 16:50

Спасибо сказали: mvo2008,

Vofka Подменю пользователя
сообщение 27.11.24, 17:21
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13993
Из: Киев
Спасибо сказали: 4568 раз
Рейтинг: 3697.7

Цитата(andrew76 @ 27.11.24, 16:01) *
а может результат запроса выгрузить в Таблицу Значений ?

Может, почему нету. Моя основная мысль была в том, что только запросом я бы это, скорее всего, не делал бы. Я не знаю делает ли то что надо запрос выше, который alex1c написал, но понять, что там происходит мне лично сложно. Я бы избегал таких запросов там, где это можно.

Сообщение отредактировал Vofka - 27.11.24, 17:22

andrew76 Подменю пользователя
сообщение 27.11.24, 17:35
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 480
Из: Казахстан
Спасибо сказали: 49 раз
Рейтинг: 49

Vofka @ Сегодня, 20:21 * ,
Если нужен срочно этот отчет и сверху команды от руководящих -"Давай быстрее ! Когда будет готово ?!",
то проще мне кажется через ТЗ это решить.А если времени достаточно и без нервозности,то можно и запросами.

alex1c Подменю пользователя
сообщение 27.11.24, 20:02
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 239
Спасибо сказали: 49 раз
Рейтинг: 44

№ Робітник Рік ДатаПочаток ДатаКінець
1 Наташа 2 016 21.06.2016 0:00:00 31.12.2016 23:59:59
2 Наташа 2 017 01.01.2017 0:00:00 31.12.2017 23:59:59
3 Наташа 2 018 01.01.2018 0:00:00 31.12.2018 23:59:59
4 Наташа 2 019 01.01.2019 0:00:00 31.12.2019 23:59:59
5 Наташа 2 020 01.01.2020 0:00:00 31.12.2020 23:59:59
6 Наташа 2 021 01.01.2021 0:00:00 31.12.2021 23:59:59
7 Наташа 2 022 01.01.2022 0:00:00 31.12.2022 23:59:59
8 Наташа 2 023 01.01.2023 0:00:00 31.12.2023 23:59:59
9 Наташа 2 024 01.01.2024 0:00:00 10.08.2024 0:00:00

Це результат реальної бази, 10-15 хв. витратив на запит.
я просто показав, що можна і запитом

Сообщение отредактировал alex1c - 27.11.24, 20:04

Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 08.12.24, 0:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!