Выборка дней рождения

26.06.19

Разработка - Запросы

Выборка позволяет создать таблицу значений из справочника (или из чего-то подобного) с днями рождения с наперед заданными условиями.

Добрый день, на просторах интернета что-то не нашел простого и удобоваримого примера для выборки из справочника записей с днями рождения (ДР), которые подпадают под определенные условия, например, ДР, которые начинаются через неделю от тек.даты и продолжаются неделю. В результате пришлось написать самому... Может, кому пригодится, чтобы не тратить время. Использован релиз 8.3.13.1809.

Есть Справочник "Физические лица", есть реквизит "ДатаРождения"

       

Запрос = Новый Запрос;
        Запрос.Текст =
         "ВЫБРАТЬ
         |    ФизическиеЛица.Фамилия КАК Фамилия,
         |    ФизическиеЛица.Имя КАК Имя,
         |    ФизическиеЛица.Отчество КАК Отчество,
         |    ФизическиеЛица.ДатаРождения КАК ДатаРождения,
         |ИЗ
         |        Справочник.ФизическиеЛица КАК ФизическиеЛица
         |ГДЕ
         |    ФизическиеЛица.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	 |	И ВЫБОР
	 |	    КОГДА МЕСЯЦ(ФизическиеЛица.ДатаРождения) - МЕСЯЦ(&ТекДата) >= 0
	 |	    ТОГДА ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) - ДЕНЬГОДА(&ТекДата) < 14
	 |	    КОГДА МЕСЯЦ(&ТекДата) = 12
	 |	    ТОГДА ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) + &ПослДень - ДЕНЬГОДА(&ТекДата) < 14
	 |	    КОНЕЦ
	 |	И ВЫБОР
	 |	    КОГДА МЕСЯЦ(ФизическиеЛица.ДатаРождения) - МЕСЯЦ(&ТекДата) >= 0
	 |	    ТОГДА ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) - ДЕНЬГОДА(&ТекДата) >= 7
	 |	    КОГДА МЕСЯЦ(&ТекДата) = 12
	 |	    ТОГДА ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) + &ПослДень - ДЕНЬГОДА(&ТекДата) >= 7
	 |	    КОНЕЦ";
	Запрос.УстановитьПараметр("ПослДень", ДеньГода(Дата(Год(ТекущаяДата()),12,31)));
        Запрос.УстановитьПараметр("ТекДата", ТекущаяДата());   
        ДниРождения = Запрос.Выполнить().Выгрузить();

Как видно из текста, запрос учитывает високосный год и переход через новый год.

Интервал выборки периода определяется цифрами 7 и 14 - естественно, они могут быть другими или определяться через параметры.

Не против, если кто-то предложит доработку для более универсального решения.

Вступайте в нашу телеграмм-группу Инфостарт

программирование выборка

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

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

16500 руб.

02.09.2020    269889    1497    422    

1180

Инструментарий разработчика Запросы Программист 1С 8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Структура запроса. Обработка визуально показывает, из какого количества подзапросов состоит запрос.

2 стартмани

06.07.2026    3633    49    XSlava    20    

45

Запросы Программист 1С 8.3 Россия Бесплатно (free)

Визуальный «Конструктор запроса» 1С, встроенный прямо в VS Code, — аналог конструктора из Конфигуратора и EDT, но без запуска платформы. Расширение читает конфигурацию, выгруженную в файлы, позволяет собрать запрос мышью и генерирует корректный текст на языке запросов 1С (SDBL). Открывает уже существующий текст запроса из кода для правки и — что особенно ценно — сохраняет комментарии при цикле «открыть - править - сохранить». Подходит тем, кто пишет код 1С в VS Code, держит под рукой множество проектов и не хочет ради одного запроса запускать тяжёлый Конфигуратор или EDT.

26.06.2026    8135    Alex_YAM    5    

33

WEB-интеграция Запросы Программист 1С 8.3 Абонемент ($m)

Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.

1 стартмани

02.04.2026    3134    84    priem_nv    25    

66

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    12229    155    zup_dev    32    

86

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

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

2 стартмани

05.03.2025    6930    24    XilDen    12    

29

Обновление 1С Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

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

3 стартмани

06.02.2025    6195    38    XilDen    26    

42
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AlekseiAdamov 200 26.06.19 21:45 Сейчас в теме
Попробуйте использовать функцию языка запросов ДЕНЬГОДА().
С ней текст запроса должен получиться намного проще.
Проверку на високосный год можно сделать там же, в запросе, если сравнивать день года для конца периода.
2. Fox-trot 166 26.06.19 23:49 Сейчас в теме
имхо выражение ФизическиеЛица.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
можно заменить на чтонить типа Год(ФизическиеЛица.ДатаРождения) > 1917
5. DwellerNet 3 27.06.19 11:12 Сейчас в теме
(2) По собственному опыту знаю, что дату рождения нужно проверять на NULL и давать жесткий втык кадровикам, иначе будут качели со сдачей в ПФР. А не использовать "ГДЕ".
3. user654641_yaga_m 17 27.06.19 10:21 Сейчас в теме
Сегодня, благодаря мысли Lolipoka )), упростил...
4. user654641_yaga_m 17 27.06.19 10:22 Сейчас в теме
Выражение ФизическиеЛица.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) проверяет заполняемость реквизита...
6. Fox-trot 166 27.06.19 15:59 Сейчас в теме
(4)сравнение <> пожалуй самое тормознутое
я гарантирую это
Для отправки сообщения требуется регистрация/авторизация