Имя: Пароль:
1C
1С v8
как определить через сколько дней день рождения
0 МарияМС
 
31.12.15
08:47
Добрый день! Подскажите, пожалуйста, как через разностьдат() можно подсчитать сколько дней, месяцев лет осталось до юбилея у каждого из сотрудников(известна дата рождения)
1 lxndr
 
31.12.15
08:48
Сегодня 31.12.2015.
У меня день рождения 01.01.2016.
Это через сколько месяцев? Или может быть даже через год?
2 Лефмихалыч
 
31.12.15
08:58
(0) что считается юбилеем?
3 2S
 
31.12.15
09:10
77?
В ЗиКе есть функция подсчета дней
напиши сама, будь мужиком блеат
4 b_ru
 
31.12.15
09:15
РазностьДат(ДобавитьМесяц(ДатаРождения, 50 * 12), ТекущаяДата)
5 NcSteel
 
31.12.15
09:18
Позвать Деда Мороза!
6 Лефмихалыч
 
31.12.15
09:23
Вот это получает всех юбиляров 2016-го. Юбиляр - это, которому 30,40,50,60 или 70 приключилось. Количество дней и ночей считай самостоятельно

ВЫБРАТЬ
    30 КАК Поле
ПОМЕСТИТЬ Числа
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ    40
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ    50
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ    60
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ    70
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ФизическиеЛица.Ссылка КАК Ссылка,
    ДОБАВИТЬКДАТЕ(ФизическиеЛица.ДатаРождения, ГОД, Числа.Поле) КАК ДатаЮбилея,
    Числа.Поле КАК Юбилей
ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица,
    Числа КАК Числа
ГДЕ
    ФизическиеЛица.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1)
    И ДОБАВИТЬКДАТЕ(ФизическиеЛица.ДатаРождения, ГОД, Числа.Поле) между ДАТАВРЕМЯ(2016, 1, 1) и ДАТАВРЕМЯ(2016, 12, 31)
7 ИС-2
 
naïve
31.12.15
09:24
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ФизическиеЛица.Ссылка КАК ФизЛицо,
    ФизическиеЛица.ДатаРождения,
    ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ, ДЕНЬ(ФизическиеЛица.ДатаРождения) - 1), МЕСЯЦ, МЕСЯЦ(ФизическиеЛица.ДатаРождения) - 1) КАК ДеньМесяцРождения,
    МАКСИМУМ(РаботникиСрезПоследних.Должность) КАК Должность,
    МАКСИМУМ(РаботникиСрезПоследних.Подразделение) КАК ПодразделениеОрганизации,
    Пользователи.Ссылка КАК Пользователь,
    ГОД(&ДатаРасчета) - ГОД(ФизическиеЛица.ДатаРождения) КАК Возраст
ПОМЕСТИТЬ ВТ_Данные
ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Работники.СрезПоследних(&ДатаРасчета, ) КАК РаботникиСрезПоследних
        ПО ФизическиеЛица.Ссылка = РаботникиСрезПоследних.ФизЛицо
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
        ПО ФизическиеЛица.Ссылка = Пользователи.ФизЛицо
            И (НЕ Пользователи.ПометкаУдаления)
ГДЕ
    НЕ ФизическиеЛица.ДатаРождения = ДАТАВРЕМЯ(1, 1, 1)
    И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ, ДЕНЬ(ФизическиеЛица.ДатаРождения) - 1), МЕСЯЦ, МЕСЯЦ(ФизическиеЛица.ДатаРождения) - 1) МЕЖДУ &ДатаНач И &ДатаКон
    И НЕ РаботникиСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)

СГРУППИРОВАТЬ ПО
    ФизическиеЛица.Ссылка,
    ФизическиеЛица.ДатаРождения,
    Пользователи.Ссылка,
    ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ, ДЕНЬ(ФизическиеЛица.ДатаРождения) - 1), МЕСЯЦ, МЕСЯЦ(ФизическиеЛица.ДатаРождения) - 1)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Данные.ФизЛицо,
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА РАЗНОСТЬДАТ(&ДеньМесяцРасчета, ВТ_Данные.ДеньМесяцРождения, ДЕНЬ) = 0
                ТОГДА "сегодня "
            КОГДА РАЗНОСТЬДАТ(&ДеньМесяцРасчета, ВТ_Данные.ДеньМесяцРождения, ДЕНЬ) = 1
                ТОГДА "завтра "
            КОГДА РАЗНОСТЬДАТ(&ДеньМесяцРасчета, ВТ_Данные.ДеньМесяцРождения, ДЕНЬ) = 2
                ТОГДА "послезавтра "
            КОГДА РАЗНОСТЬДАТ(&ДеньМесяцРасчета, ВТ_Данные.ДеньМесяцРождения, ДЕНЬ) = -1
                ТОГДА "вчера "
            КОГДА РАЗНОСТЬДАТ(&ДеньМесяцРасчета, ВТ_Данные.ДеньМесяцРождения, ДЕНЬ) = -2
                ТОГДА "позавчера "
            ИНАЧЕ ""
        КОНЕЦ КАК СТРОКА(100)) КАК Статус,
    ВТ_Данные.Возраст КАК Возраст,
    ВТ_Данные.ДатаРождения,
    ВТ_Данные.ДеньМесяцРождения,
    ВТ_Данные.Должность,
    ВТ_Данные.ПодразделениеОрганизации,
    ВТ_Данные.Пользователь,
    ВЫБОР
        КОГДА ВТ_Данные.Возраст / 5 - (ВЫРАЗИТЬ(ВТ_Данные.Возраст / 5 КАК ЧИСЛО(3, 0))) = 0
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК Юбилей,
    РАЗНОСТЬДАТ(&ДеньМесяцРасчета, ВТ_Данные.ДеньМесяцРождения, ДЕНЬ) КАК ПрошлоДней
ИЗ
    ВТ_Данные КАК ВТ_Данные

УПОРЯДОЧИТЬ ПО
    ПрошлоДней
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.