Запрос для отчета (СКД) по количеству сотрудников по месяцам рождения и по возрасту.
Всем здравствуйте, есть отчет на СКД, подскажите пожалуйста, как сделать чтобы возраст сотрудника анализировался на конец каждого месяца в выбранном периоде, а не на конец выбранного периода?
ВЫБРАТЬ
Сотрудники.Наименование КАК Наименование,
Сотрудники.ДатаРождения КАК ДатаРождения,
ГОД(&ТекущаяДата) — ГОД(Сотрудники.ДатаРождения) — ВЫБОР
КОГДА МЕСЯЦ(&ТекущаяДата) < МЕСЯЦ(Сотрудники.ДатаРождения)
ТОГДА 1
ИНАЧЕ ВЫБОР
КОГДА МЕСЯЦ(&ТекущаяДата) = МЕСЯЦ(Сотрудники.ДатаРождения)
И ДЕНЬ(&ТекущаяДата) < ДЕНЬ(Сотрудники.ДатаРождения)
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ КАК Возраст
ПОМЕСТИТЬ ВТ_Информация
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
ВЫБОР
КОГДА ГОД(&ДатаНачала) = ГОД(&ТекущаяДата)
ТОГДА МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(&ДатаНачала) И МЕСЯЦ(&ТекущаяДата)
ИНАЧЕ МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(&ДатаНачала) И МЕСЯЦ(КОНЕЦПЕРИОДА(&ДатаНачала, ГОД))
ИЛИ МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(НАЧАЛОПЕРИОДА(&ДатаНачала, ГОД)) И МЕСЯЦ(&ТекущаяДата)
КОНЕЦ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА ВТ_Информация.Возраст < 20
ТОГДА "возраст менее 20"
КОГДА ВТ_Информация.Возраст >= 20
И ВТ_Информация.Возраст <= 30
ТОГДА "возраст от 20 до 30"
КОГДА ВТ_Информация.Возраст >= 31
И ВТ_Информация.Возраст <= 40
ТОГДА "возраст от 31 до 40"
КОГДА ВТ_Информация.Возраст >= 41
И ВТ_Информация.Возраст <= 50
ТОГДА "возраст от 41 до 50"
ИНАЧЕ "возраст от 50"
КОНЕЦ КАК Диапозон,
ВТ_Информация.ДатаРождения КАК ДатаРождения,
ВТ_Информация.Наименование КАК Сотрудник
ПОМЕСТИТЬ ВТ_Заключение
ИЗ
ВТ_Информация КАК ВТ_Информация
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Заключение.Сотрудник КАК Сотрудник,
ВТ_Заключение.Диапозон КАК Диапозон,
МЕСЯЦ(ВТ_Заключение.ДатаРождения) КАК МесяцРождения,
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Заключение.ДатаРождения, ГОД, -ГОД(ДОБАВИТЬКДАТЕ(ВТ_Заключение.ДатаРождения, ГОД, -10))), МЕСЯЦ) КАК Период,
КОЛИЧЕСТВО(ВТ_Заключение.Сотрудник) КАК Количество
ИЗ
ВТ_Заключение КАК ВТ_Заключение
СГРУППИРОВАТЬ ПО
ВТ_Заключение.Сотрудник,
ВТ_Заключение.Диапозон,
МЕСЯЦ(ВТ_Заключение.ДатаРождения),
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Заключение.ДатаРождения, ГОД, -ГОД(ДОБАВИТЬКДАТЕ(ВТ_Заключение.ДатаРождения, ГОД, -10))), МЕСЯЦ)
«1С:Зарплата и управление персоналом 8».(ред. 3.0). Как сформировать отчет со списком сотрудников, их возрастом и полом (+ видео)?
Чтобы изменить состав выводимых для просмотра данных нужно по кнопке Настройки – Вид: Расширенный на закладке Поля сначала отключить лишние, а затем Добавить недостающие сведения (в примере «Возраст» и «Пол»).
Этот вариант отчета можно сохранить, озаглавив его, к примеру «пол+возраст».
Следует указать, кому Доступен этот вариант отчета (Только для автора или Всем пользователям) и будет ли он По умолчанию виден в панелях отчетов.
По кнопке Далее следует указать, в каких панелях отчетов нужно разместить этот отчет и Сохранить вариант отчета.
Если вариант отчета сохранен, то в следующий раз уже не придется выполнять настройки, а можно будет воспользоваться готовым отчетом.
Подробнее смотрите видео (видеоролик выполнен в программе «1С:Зарплата и управление персоналом 8» релиз 3.0.22.214).
Програма Формирования-выборки сотрудников по возрасту

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "///// echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1.
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.
Собственно сам скрипт:
<?php // Полная загрузка сервисных книжек, создан 2023-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once ‘connection.php’; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
<
///// echo ‘<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>’;
$failure=TRUE;
wp_die( $wpdb2->error );
>
$m_size_file=0;
$m_mtime_file=0;
$m_comment=»;
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.’/_1c_alfa_exchange/AA_hist.csv’;
if (!file_exists($file_hist))
<
///// echo ‘<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>’;
$m_comment=’Файл обмена с сервисными книжками не существует’;
$failure=TRUE;
>
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure) <
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET[‘foo’]
///// echo ‘<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>’;
$insert_fail_zapros=$wpdb2->insert(‘vin_logs’, array(‘time_stamp’=>time(),’last_mtime_upload’=>$m_mtime_file,’last_size_upload’=>$m_size_file,’comment’=>$m_comment));
wp_die();
///// echo ‘<H2><b>Возврат в начало.</b></H2><br>’;
return $failure;
>
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo ‘<H2><b>Размер файла: ‘.$m_size_file.'</b></H2><br>’;
///// echo ‘<H2><b>Штамп времени файла: ‘.$m_mtime_file.'</b></H2><br>’;
///// echo ‘<H2><b>Формирование запроса на выборку из лога</b></H2><br>’;
////препарируем запрос
$text_zaprosa=$wpdb2->prepare(«SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s», $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
< foreach ( $results as $r)
<
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
///echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert(‘vin_logs’, array(‘time_stamp’=>time(),’last_mtime_upload’=>$m_mtime_file,’last_size_upload’=>$m_size_file,’comment’=>’Загрузка отменена, новых данных нет, т.к. найдена запись в логе.’));
wp_die();
return $failure;
>
>
>
////если данные новые, пишем в лог запись о начале загрузки
/////echo ‘<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>’;
$insert_fail_zapros=$wpdb2->insert(‘vin_logs’, array(‘time_stamp’=>time(),’last_mtime_upload’=>0, ‘last_size_upload’=>$m_size_file, ‘comment’=>’Начало загрузки’));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare(«TRUNCATE TABLE %s», ‘vin_history’);
$clear_tbl_zap_repl=str_replace(«‘»,»`»,$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo ‘<H2><b>Очистка таблицы сервисных книжек</b></H2><br>’;
if (empty($results))
<
///// echo ‘<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>’;
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
>
////загружаем данные
$table=’vin_history’; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=’;’; // Разделитель полей в CSV файле
$enclosed='»‘; // Кавычки для содержимого полей
$escaped=’\
Как в 1с сделать выборку по возрасту
«1С:Зарплата и управление персоналом 8».(ред. 3.0). Как сформировать отчет со списком сотрудников, их возрастом и полом (+ видео)?
Чтобы изменить состав выводимых для просмотра данных нужно по кнопке Настройки – Вид: Расширенный на закладке Поля сначала отключить лишние, а затем Добавить недостающие сведения (в примере «Возраст» и «Пол»).
Этот вариант отчета можно сохранить, озаглавив его, к примеру «пол+возраст».
Следует указать, кому Доступен этот вариант отчета (Только для автора или Всем пользователям) и будет ли он По умолчанию виден в панелях отчетов.
По кнопке Далее следует указать, в каких панелях отчетов нужно разместить этот отчет и Сохранить вариант отчета.
Если вариант отчета сохранен, то в следующий раз уже не придется выполнять настройки, а можно будет воспользоваться готовым отчетом.
Подробнее смотрите видео (видеоролик выполнен в программе «1С:Зарплата и управление персоналом 8» релиз 3.0.22.214).
v7: Как выбрать сотрудников с возрастами от 20 до 25 лет
Есть справочник «Сотрудники». Там есть поле «ДатаРождения». Как написать запрос, чтобы он выбрал всех сотрудников в указанном диапазоне возрастов на текущую дату?
Свои варианты есть, например грубо:
ВЫБРАТЬ Сотрудники.Ссылка
ИЗ Сотрудники
ГДЕ (ДатаГод(&НаДату)-ДатаГод(Сотрудники.ДатаРождения)) МЕЖДУ 20 и 25;
но поскольку задача околоклассическая — может кто-то уже ее решил идально и красиво?:) С учетом дня рождения и месяца.
По этому поводу анекдот:
Начальник отдела кадров приказывает менеджеру взять личные дела сотрудников от сюда и до сюда (указывает пальцем) и . УВОЛИТЬ НАФИГ. На недоуменный вопрос, почему этих, следует ответ: «Не люблю неудачников!»
Еще помнится делал очет чтоб юбилейников отдельно выводить
Там просто кратность от деления на 5 без остатка проверял.
Как в ЗУП 3.1 настроить отчет по дням рождения сотрудников

В статье представлена подробная инструкция по настройке отчета от специалиста-консультанта 1С Макридиной Юлии. Отчет поможет не забыть о поздравлении именниника и заранее спланировать затраты на подарки.
Практически все сотрудники кадровой службы сталкиваются с необходимостью вести учет по дням рождения сотрудников. Зачастую для этого используются различные таблицы в формате Excel, которые необходимо регулярно проверять и обновлять данные. Например, в случае кадрового перевода, увольнения или принятия новых сотрудников нужно оперативно вносить изменения и контролировать своевременную отправку этих таблиц руководителям подразделений, заранее отслеживать юбилеи сотрудников, контролировать наличие ошибок и так далее. все это довольно трудоемкий процесс.
В программе 1С:ЗУП 3.1 в помощь пользователям создано много кадровых отчетов, в том числе и отчет, который содержит информацию по дням рождения сотрудников. Он находится в разделе Кадры – Кадровые отчеты – Личные данные сотрудников.

Рис. 1 (нажмите, чтобы увеличить)
Данный отчет выглядит вот так:

Рис. 2 (нажмите, чтобы увеличить)
Но в таком виде отчет не очень информативен для учета информации по дням рождения:
- не отображается возраст сотрудников;
данные в графе «День рождения» сформированы не в хронологическом порядке. Чтобы понять дни рождения каких сотрудников будут в ближайшие даты – необходимо проанализировать всю таблицу;
не отображаются сотрудники с юбилейными датами;
в отчете есть «лишняя» информация, которая не всегда нужна (ИНН, СНИЛС и пр.).
Для того, чтобы сделать этот отчет более наглядным, внесем в его настройки некоторые изменения:
Шаг 1 . Откроем настройки отчета и перейдем на вкладку «Отбор».

Рис. 3 (нажмите, чтобы увеличить)
Далее установим расширенный вид настроек и по кнопке «Добавить отбор» добавим пользовательское поле «День рождения».

Рис. 4 (нажмите, чтобы увеличить)
После этого для поля «День рождения» зададим условие «меньше» и в качестве значения установим дату «01.09.2019». Таким образом мы сформируем список сотрудников, у которых дни рождения наступят до 01.09.2019. Эту дату пользователь может выбирать на свое усмотрение для того, чтобы посмотреть тех сотрудников, у которых день рождения в конкретном месяце. Если установить звездочку рядом с датой, то отбор по дате появится непосредственно в шапке отчета.

Рис. 5 (нажмите, чтобы увеличить)
Шаг 2 . Перейдем на вкладку «Поля и сортировки» и перенесем поля «Дата рождения» и «День рождения» из левого окна в правое при помощи синих стрелок. Также при помощи синих стрелок сверху в правом окне установим порядок сортировки: День рождения – Дата рождения – Физическое лицо. Имя.

Рис. 6 (нажмите, чтобы увеличить)
По кнопке «Добавить» добавим в отчет поле «Возраст» , а «лишние» поля удалим или отключим.

Рис. 7 (нажмите, чтобы увеличить)
Шаг 3 . Перейдем на вкладку «Оформление» и по кнопке «Добавить» укажем вариант нужного нам оформления. Например, сотрудники с юбилейной датой дня рождения должны быть выделены в отчете особым фоном. В открывшемся окне на вкладке «Оформление» зададим нужный цвет фона, после этого на вкладке «Условие» установим, что этот цвет фона будет только у строк с заполненной юбилейной датой.

Рис. 8 (нажмите, чтобы увеличить)

Рис. 9 (нажмите, чтобы увеличить)

Рис. 10 (нажмите, чтобы увеличить)
После выполнения настроек нажимаем кнопку «Закрыть и сформировать» и получаем отчет в таком виде:

Рис. 11 (нажмите, чтобы увеличить)
Данный вариант отчета можно сохранить, присвоив нужное наименование – например, «Дни рождения сотрудников». В дальнейшем отчет сохранится в кадровых отчетах и будет доступен для использования с учетом уже выполненных настроек.
Подсчет возраста
И снова здравствуйте, смотрите у меня в документе есть поле "возраст" и поле "фио владельца", которое ссылается на справочник "физические лица". можно ли как-нибудь чтобы поле возраст определялся исходя из справочника "ФизическиеЛица", в котором имеется дата рождения?
Поле "возраст" 2-х значений: до 22 лет и более 22
Добавлено через 23 секунды
Автоматический расчет возраста
Здравствуйте уважаемые эксперты! Являюсь новичком в программирование на 1с и при создание.
Как вывести информацию о продавцах моложе заданного возраста?
Допустим, есть справочник где есть данные о продавце, и дата рождения, как вывести в отчете где.
Написать программу вычисления возраста
С датами у меня совсем беда в 1С, прошу помощи у специалистов. Задание: Указать на форме дату.
Подсчет возраста
Здравствуйте, собственно такой вопрос. Есть Input, в который при помощи метода datepicker jquery.