8.х УТ: СоздатьЗадачиПоздравленияСДнемРождения

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем yourname, 12 янв 2009.

  1. TopicStarter Overlay
    yourname
    Offline

    yourname Опытный в 1С

    Регистрация:
    15 июл 2007
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Привет всем.
    Стал разбирать в УТ механизм формирования напоминаний о днях рождения контактных лиц и личных контактов. Наткнулся на регламентное задание ФормированиеПоздравленийСДнемРождения.
    В процедуре, которая привязана к данному заданию, запрос.
    Никак не могу понять смысл связи таблиц "КонтактныеЛица" и "Задачи" по условию:

    Задачи.СрокИсполнения > ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД,
    РАЗНОСТЬДАТ(Контакты.КонтактноеЛицо.ДатаРождения, ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ,
    Контакты.КонтактноеЛицо.КоличествоДнейДоНапоминания), МЕСЯЦ) / 12 - 1)


    и вторую половину условия:

    ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) >=
    &ТекДата И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ДЕНЬ, -
    Контакты.КонтактноеЛицо.КоличествоДнейДоНапоминания), ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) <= &ТекДата
    ИЛИ ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) >=
    ДОБАВИТЬКДАТЕ(&ТекДата, ГОД, -1) И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ДЕНЬ, -
    Контакты.КонтактноеЛицо.КоличествоДнейДоНапоминания), ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) <=
    ДОБАВИТЬКДАТЕ(&ТекДата, ГОД, -1)

    Может кто знает?
  2. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Навскидку, первая часть условия задает с одной стороны, а вторая с другой ограничение, когда выдать напоминание - в периоде не раньше чем за количество дней до напоминания по отношению к текущейдате и не позже непосредственно дня рождения по отношению к текущей дате
  3. TopicStarter Overlay
    yourname
    Offline

    yourname Опытный в 1С

    Регистрация:
    15 июл 2007
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) >=
    &ТекДата И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ДЕНЬ, -
    Контакты.КонтактноеЛицо.КоличествоДнейДоНапоминания), ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) <= &ТекДата
    ИЛИ ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) >=
    ДОБАВИТЬКДАТЕ(&ТекДата, ГОД, -1) И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ДЕНЬ, -
    Контакты.КонтактноеЛицо.КоличествоДнейДоНапоминания), ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) <=
    ДОБАВИТЬКДАТЕ(&ТекДата, ГОД, -1)

    Условие типа ((1) и (2)) или ((3) и (4))
    ((1) и (2)) означает что ТекДата должна находиться между ДатойНапоминания и ДнемРождения в этом году. Это я понял.
    ((3) и (4)) - то же самое, только речь идет о ТекДате прошлого года. Только зачем это?
  4. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    А это, похоже для случая, если день рождения, к примеру, 10 января, а напомнить о поздравлении надо за 15 дней. Т.е. 26 декабря.
  5. TopicStarter Overlay
    yourname
    Offline

    yourname Опытный в 1С

    Регистрация:
    15 июл 2007
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    В принципе, с трудом осилил вторую часть условия: это когда большой период между напоминанием и ДР (чуть меньше года) и ДР в этом году уже прошло. Т.е. когда перевалили через ДР, вдруг уже надо напомнить о следующем.

    Осталось разобраться только с условием связи таблиц:

    Задачи.СрокИсполнения > ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД,
    РАЗНОСТЬДАТ(Контакты.КонтактноеЛицо.ДатаРождения, ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ,
    Контакты.КонтактноеЛицо.КоличествоДнейДоНапоминания), МЕСЯЦ) / 12 - 1)

Поделиться этой страницей