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

Хранилище

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

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



> Вопрос на конфигурирование №2          
ignsv Подменю пользователя
сообщение 11.12.12, 9:41
Сообщение #1

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

Вопрос
В качестве исходной использовать типовую конфигурацию "Управление торговлей для Украины".
Необходимо внести изменения в механизм напоминания о днях рождения.
Как в личных контактах, так и в контактах контрагентов необходимо предусмотреть возможность установки флага "Подарок". В случае если флаг для контакта отмечен, перед наступление дня рождения (заранее за указаное специально для подарка количество дней) должно формироваться дополнительное напоминание сотруднику, ответственному за подготовку подарка. Количество дней до напоминания о дне рождении и подготовке подарке могут различаться.
В разное время обязанности по подготовке подарка могут возлагаться на разных сотрудников. Напоминание должно формироваться на того сотрудника, кто на момент его формирования исполняет данные обязаности.

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

ignsv Подменю пользователя
сообщение 12.12.12, 16:20
Сообщение #2

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

Мой вариант:
1. Изменяем спр. Личные контакты и спр КонтактныеЛица Добавляем Реквизиты, выводим на форму:
НапоминатьОПодарке - булево
КоличествоДнейДоПодарка - число 2,0
ОтветственныйЗаПодарок – спр.Пользователи

2.
МодульФормы (для двух справочников):
Процедура ДоступностьДанныхНапоминанияОДнеРождения()
    Если ДатаРождения = '00010101000000' Тогда    
        ЭлементыФормы.НапоминатьОДнеРождения.Доступность      = Ложь;
        ЭлементыФормы.КоличествоДнейДоНапоминания.Доступность = Ложь;
        ЭлементыФормы.НадписьДней.Доступность                 = Ложь;
    //УТСПЕЦИАЛИСТ +
        ЭлементыФормы.НапоминатьОПодарке.Доступность           = Ложь;      
        ЭлементыФормы.КоличествоДнейДоНапоминания1.Доступность = Ложь;
        ЭлементыФормы.ОтветственныйЗаПодарок.Доступность       = Ложь;
        //УТСпециалист -
    Иначе        
        ЭлементыФормы.НапоминатьОДнеРождения.Доступность      = Истина;
        ЭлементыФормы.КоличествоДнейДоНапоминания.Доступность = НапоминатьОДнеРождения;
        ЭлементыФормы.НадписьДней.Доступность                 = НапоминатьОДнеРождения;
        
    //УТСПЕЦИАЛИСТ +
        ЭлементыФормы.НапоминатьОПодарке.Доступность           = Истина;      
        ЭлементыФормы.КоличествоДнейДоНапоминания1.Доступность = НапоминатьОПодарке;
        ЭлементыФормы.ОтветственныйЗаПодарок.Доступность       = НапоминатьОПодарке;
        //УТСпециалист -
    КонецЕсли;
КонецПроцедуры // ДоступностьДанныхНапоминанияОДнеРождения()

(Если хватает времени то можно для справочника.КонтактныеЛицаКонтрагентов форма ФормаВводаНового проделать аналогичные действия (там реквизиты формы)

3. Находим ОбщийМодуль - МодульРегламентныхЗаданий:
    
//////////После всего добавляем
    ////УТ_Специалист +
//ПОДАРКИ
        
        
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    Контакты.КонтактноеЛицо КАК КонтактноеЛицо,
                   |    Контакты.КонтактноеЛицо.ОтветственныйЗаПодарок КАК Исполнитель,
                   |    Контакты.КонтактноеЛицо.КоличествоДнейДоПодарка КАК ИнтервалДней,
                   |    Контакты.КонтактноеЛицо.ДатаРождения КАК ДатаРождения,
                   |    Задачи.СрокИсполнения КАК Срок
                   |ИЗ
                   |    Справочник.КонтактныеЛицаКонтрагентов КАК Контакты
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Задача.ЗадачиПользователя КАК Задачи
                   |        ПО (Задачи.Объект = Контакты.КонтактноеЛицо)
                   |            И (Задачи.Оповещение = ИСТИНА)
                   |            И (Задачи.ПамятнаяДата = ИСТИНА)
                   |            И (Задачи.СрокИсполнения > ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД, РАЗНОСТЬДАТ(Контакты.КонтактноеЛицо.ДатаРождения, ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ, Контакты.КонтактноеЛицо.КоличествоДнейДоПодарка), МЕСЯЦ) / 12 - 1))
                   |ГДЕ
                   |    Контакты.КонтактноеЛицо.НапоминатьОПодарке = ИСТИНА
                   |    И Контакты.КонтактноеЛицо.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1)
                   |    И Контакты.Владелец ССЫЛКА Справочник.Контрагенты
                   |    И Контакты.Владелец <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                   |    И Контакты.КонтактноеЛицо.ОтветственныйЗаПодарок <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
                   |    И (ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) >= &ТекДата
                   |                И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ДЕНЬ, -Контакты.КонтактноеЛицо.КоличествоДнейДоПодарка), ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) <= &ТекДата
                   |            ИЛИ ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) >= ДОБАВИТЬКДАТЕ(&ТекДата, ГОД, -1)
                   |                И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(Контакты.КонтактноеЛицо.ДатаРождения, ДЕНЬ, -Контакты.КонтактноеЛицо.КоличествоДнейДоПодарка), ГОД, ГОД(&ТекДата) - ГОД(Контакты.КонтактноеЛицо.ДатаРождения)) <= ДОБАВИТЬКДАТЕ(&ТекДата, ГОД, -1))
                   |    И Задачи.СрокИсполнения ЕСТЬ NULL
                   |
                   |ОБЪЕДИНИТЬ
                   |
                   |ВЫБРАТЬ
                   |    ЛичныеКонтакты.Ссылка,
                   |    ЛичныеКонтакты.ОтветственныйЗаПодарок,
                   |    ЛичныеКонтакты.КоличествоДнейДоПодарка,
                   |    ЛичныеКонтакты.ДатаРождения,
                   |    Задачи.СрокИсполнения
                   |ИЗ
                   |    Справочник.ЛичныеКонтакты КАК ЛичныеКонтакты
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Задача.ЗадачиПользователя КАК Задачи
                   |        ПО (Задачи.Объект = ЛичныеКонтакты.Ссылка)
                   |            И (Задачи.Оповещение = ИСТИНА)
                   |            И (Задачи.ПамятнаяДата = ИСТИНА)
                   |            И (Задачи.СрокИсполнения > ДОБАВИТЬКДАТЕ(ЛичныеКонтакты.ДатаРождения, ГОД, РАЗНОСТЬДАТ(ЛичныеКонтакты.ДатаРождения, ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ, ЛичныеКонтакты.КоличествоДнейДоПодарка), МЕСЯЦ) / 12 - 1))
                   |ГДЕ
                   |    ЛичныеКонтакты.НапоминатьОПодарке = ИСТИНА
                   |    И ЛичныеКонтакты.ДатаРождения <> ДАТАВРЕМЯ(1, 1, 1)
                   |    И ЛичныеКонтакты.ОтветственныйЗаПодарок <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
                   |    И (ДОБАВИТЬКДАТЕ(ЛичныеКонтакты.ДатаРождения, ГОД, ГОД(&ТекДата) - ГОД(ЛичныеКонтакты.ДатаРождения)) >= &ТекДата
                   |                И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ЛичныеКонтакты.ДатаРождения, ДЕНЬ, -ЛичныеКонтакты.КоличествоДнейДоПодарка), ГОД, ГОД(&ТекДата) - ГОД(ЛичныеКонтакты.ДатаРождения)) <= &ТекДата
                   |            ИЛИ ДОБАВИТЬКДАТЕ(ЛичныеКонтакты.ДатаРождения, ГОД, ГОД(&ТекДата) - ГОД(ЛичныеКонтакты.ДатаРождения)) >= ДОБАВИТЬКДАТЕ(&ТекДата, ГОД, -1)
                   |                И ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ЛичныеКонтакты.ДатаРождения, ДЕНЬ, -ЛичныеКонтакты.КоличествоДнейДоПодарка), ГОД, ГОД(&ТекДата) - ГОД(ЛичныеКонтакты.ДатаРождения)) <= ДОБАВИТЬКДАТЕ(&ТекДата, ГОД, -1))
                   |    И Задачи.СрокИсполнения ЕСТЬ NULL ";

    //УТ Специалист –


Запрос менялся «по аналогии».

Для проверки изменяем расписание регламентного задания ФормированиеПоздравленийСДнемРождения
Ставим каждые 60 сек например.

Из ошибок: идеально сделать пользователя, ответственного за подарки через регистр сведений. (я сдал и без этого, но правильно через регистр сведений)

Сообщение отредактировал ignsv - 12.12.12, 16:37

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

BoryaMbi Подменю пользователя
сообщение 12.07.13, 9:07
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

Вопрос: какие измерения в регистре сведений?

Hokum Подменю пользователя
сообщение 10.10.13, 0:04
Сообщение #4

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

Решение с регистром сведений:
1. Создаем регистр сведений «ОтветственныйЗаПодарок», Измерения – нет, Ресурс: Ответственный()
2. У «КонтактныеЛица» и «ЛичныеКонтакты» создаем реквизиты «НапомнитьОПодарке» и «КолвоДнейДоПодарка»
3. В ОщемМодуле «МодульРегламентныхЗаданий» правим процедуру «СоздатьЗадачиПоздравленияСДнемРождения» (точнее запрос)
4. По аналогии с напоминанием о дне рождения формируем напоминание о подарке, (запрос один с объединением)

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


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

 

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