Добавляем напоминание при загрузке программы

Сегодня мы рассмотрим такую задачу:
Как сделать что бы этот документ(Заявка на поставку) не потерялся в куче других. Заявок много и сроки получения у всех разные. Может есть способ поставить напоминание или что то такое?
Можно создать простой отчет, в котором будут отражаться заявки покупателя, еще не исполненные (т.е. по которым не было отгрузки) и в которых дата отгрузки стоит сегодняшним днем.  Можно так же этот отчет разнообразить и отдельно выводить заявки на сегодня и заявки на ближайшие 3-5 дней.. Кроме того, что этот отчет будет виден в отчетах, его можно поставить при загрузке программы - пользователь открывает программу и сразу же формируется отчет..
Увы, в рамках данного  блога расписывать как "нарисовать" отчет довольно затруднительно, а потому рассмотри самый простой вариант - поставим самое простое напоминание при загрузке программы.

ВАЖНО! 
Обязательно сохраняем нашу базу!!! Как это сделать смотрим тут: Сохраняем базу 1С 7.7.

Открываем программу в режиме "Конфигуратор" (это если закрыли ее после сохранения)

Если конфигурация не открылась - открываем:




На самой первой строчке "Торговля+Склад, редакция 9.2" щелкаем правой клавишей мыши - открывается меню, где выбираем "Глобальный модуль"

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


Нажимаем кнопку "Перейти" и попадаем в начало нужной нам процедуры. Перейдем в конец процедуры - спускаемся до слов : КонецПроцедуры  //ПриНачалеРаботыСистемы(). Здесь размещаем такой код:

//напомнить про заявки
Напомнить="";
Сегодня=РабочаяДата();
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса=
"//{{ЗАПРОС(Заявки)
|ЗаявкаПокупателя = Документ.ЗаявкаПокупателя.ТекущийДокумент;
|ДатаОтгрузки = Документ.ЗаявкаПокупателя.ДатаОтгрузки;
|Группировка ЗаявкаПокупателя;
|Условие(ДатаОтгрузки=Сегодня);
 |Без итогов;
|";
//}}ЗАПРОС
    Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда   
Напомнить=Напомнить+"На "+Сегодня+" к отгрузке :"+РазделительСтрок+РазделительСтрок;
Пока Запрос.Группировка()=1 цикл 
 Напомнить=Напомнить+Запрос.ЗаявкаПокупателя+" - "+СокрЛП(Запрос.ЗаявкаПокупателя.Контрагент)+РазделительСтрок;
КонецЦикла;
КонецЕсли;
    Если Напомнить<>""  Тогда
         Предупреждение(Напомнить);
    КонецЕсли;



На картинке не хватает одной строчки, а именно -  |Без итогов; - поэтому, смотрите код выше..
Что делает этот код? Он выбирает проведенные заявки покупателя с отгрузкой на текущую дату (но тут нет проверки была ли уже отгрузка по этой заявке) и сообщает о них. Нажимаем F11 (или просто закрываем конфигуратор, сохраняя наши изменения и открываем базу в режиме "Предприятие") 
Вот как наше напоминание выглядит при загрузке программы:





5 комментариев:

  1. Марина большое спасибо! Все получилось!
    А на 1-3 дня вперед чтобы предупреждал этим способом можно вывести?

    ОтветитьУдалить
  2. Анедрей, замените весь код, что написан в посте на этот

    Напомнить="";
    Сегодня=РабочаяДата();
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса=
    "//{{ЗАПРОС(Заявки)
    |ЗаявкаПокупателя = Документ.ЗаявкаПокупателя.ТекущийДокумент;
    |ДатаОтгрузки = Документ.ЗаявкаПокупателя.ДатаОтгрузки;
    |Группировка ЗаявкаПокупателя;
    |Условие(ДатаОтгрузки=Сегодня);
    |Без итогов;
    |"
    //}}ЗАПРОС
    ;
    Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда
    Напомнить=Напомнить+"На "+Сегодня+" к отгрузке :"+РазделительСтрок+РазделительСтрок;
    Пока Запрос.Группировка()=1 цикл
    Напомнить=Напомнить+Запрос.ЗаявкаПокупателя+" - "+СокрЛП(Запрос.ЗаявкаПокупателя.Контрагент)+РазделительСтрок;
    КонецЦикла;
    КонецЕсли;

    ТриДня=РабочаяДата()+3;
    Запрос1=СоздатьОбъект("Запрос");
    ТекстЗапроса=
    "//{{ЗАПРОС(Заявки1)
    |ЗаявкаПокупателя = Документ.ЗаявкаПокупателя.ТекущийДокумент;
    |ДатаОтгрузки = Документ.ЗаявкаПокупателя.ДатаОтгрузки;
    |Группировка ЗаявкаПокупателя;
    |Условие(ДатаОтгрузки > Сегодня);
    |Условие(ДатаОтгрузки <= ТриДня);
    |Без итогов;
    |"//}}ЗАПРОС
    ;
    Если Запрос1.Выполнить(ТекстЗапроса) <> 0 Тогда
    Напомнить=Напомнить+РазделительСтрок+"Далее к отгрузке :"+РазделительСтрок+РазделительСтрок;
    Пока Запрос1.Группировка()=1 цикл
    Напомнить=Напомнить+Запрос1.ДатаОтгрузки+" "+Запрос1.ЗаявкаПокупателя+" - "+СокрЛП(Запрос1.ЗаявкаПокупателя.Контрагент)+РазделительСтрок;
    КонецЦикла;
    КонецЕсли;

    Если Напомнить<>"" Тогда
    Предупреждение(Напомнить);
    КонецЕсли;

    ОтветитьУдалить
  3. Здесь добавлен второй запрос, который выбирает заявки с датой отгрузки на следующие три дня

    ОтветитьУдалить
  4. Большое спасибо вот это то что надо!!! ;)

    ОтветитьУдалить