Имя: Пароль:
1C
1С v8
Обработкой будет формироваться 5000 задач .УПП 1.3 СКЛ
0 yavasya
 
27.08.15
16:52
База не умрет ? Сколько по времени займет данная процедура ?
1 ДенисЧ
 
27.08.15
16:53
анафехоа?
2 yavasya
 
27.08.15
16:53
Процедура СоздатьЗадачиПользователям() Экспорт
    
    ГорячийТеплый=новый Массив;
    ГорячийТеплый.Добавить(Справочники.доработкаСтатусКонтрагента.НайтиПоКоду("000000009"));
    ГорячийТеплый.Добавить(Справочники.доработкаСтатусКонтрагента.НайтиПоКоду("000000010"));
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПоследниеДокументыКонтрагентов.Ссылка,
        |    ПоследниеДокументыКонтрагентов.Контрагент КАК Контрагент,
        |    ПоследниеДокументыКонтрагентов.Дата
        |ПОМЕСТИТЬ ПоследниеДокументыСобытие
        |ИЗ
        |    Документ.Событие КАК ПоследниеДокументыКонтрагентов
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            Доки.Контрагент КАК Контрагент,
        |            МАКСИМУМ(Доки.Дата) КАК ДатаПоследнегоДокумента
        |        ИЗ
        |            Документ.Событие КАК Доки
        |        
        |        СГРУППИРОВАТЬ ПО
        |            Доки.Контрагент) КАК ДатыПоследнихДокументовКонтрагентов
        |        ПО ПоследниеДокументыКонтрагентов.Контрагент = ДатыПоследнихДокументовКонтрагентов.Контрагент
        |            И ПоследниеДокументыКонтрагентов.Дата = ДатыПоследнихДокументовКонтрагентов.ДатаПоследнегоДокумента
        |ГДЕ
        |    ПоследниеДокументыКонтрагентов.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыСобытий.ТелефонныйЗвонок)
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Контрагенты.Ссылка КАК  СправочникКонтрагент,
        |    ПоследниеДокументыСобытие.Ссылка КАК ДокументКонтрагент,
        |    ПоследниеДокументыСобытие.Дата КАК Дата,
        |    РАЗНОСТЬДАТ(ПоследниеДокументыСобытие.Дата, &СегодняДень, ДЕНЬ) КАК РазностьДТ
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |        ЛЕВОЕ СОЕДИНЕНИЕ ПоследниеДокументыСобытие КАК ПоследниеДокументыСобытие
        |        ПО (ПоследниеДокументыСобытие.Контрагент = Контрагенты.Ссылка)
        |ГДЕ
        |    Контрагенты.СтатусКонтрагента В(&ГорячийТеплый)
        |    И (РАЗНОСТЬДАТ(ПоследниеДокументыСобытие.Дата, &СегодняДень, ДЕНЬ) >= 7
        |            ИЛИ ПоследниеДокументыСобытие.Ссылка ЕСТЬ NULL )
        |
        |УПОРЯДОЧИТЬ ПО
        |    СправочникКонтрагент
        |АВТОУПОРЯДОЧИВАНИЕ";
    
    Запрос.УстановитьПараметр("ГорячийТеплый", ГорячийТеплый);
    Запрос.УстановитьПараметр("СегодняДень", НачалоДня(ТекущаяДата()));
    
    
    ТЗ_Итоговая=Запрос.Выполнить().Выгрузить();
    
    
    
    ТабличнаяЧасть.Загрузить(ТЗ_Итоговая);
    ВыборкаЗапроса=Запрос.Выполнить().Выбрать();
    //
    //Пока     ВыборкаЗапроса.Следующий() цикл
    //    
        
    
    
     СоздатьЗадачиПользователям(ВыборкаЗапроса);
    
    
    
КонецПроцедуры

Процедура  СоздатьЗадачиПользователям(ВыборкаЗапроса)
    
    
    Счетчик=0;
    
    ЭтаОрганизация=Справочники.Организации.НайтиПоКоду(000000001);
    
    Пока ВыборкаЗапроса.Следующий() цикл
        
        если не значениеЗаполнено(ВыборкаЗапроса.СправочникКонтрагент.ОсновнойМенеджерПокупателя) тогда
            возврат;
        конецЕсли;
    //Счетчик=Счетчик+1;
    //Если Счетчик>10 Тогда
    //    Сообщить("10");
    //    Возврат;
    //КонецЕсли;
    СозданнаяЗадача=Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
    СозданнаяЗадача.Исполнитель=ВыборкаЗапроса.СправочникКонтрагент.ОсновнойМенеджерПокупателя;
    СозданнаяЗадача.Дата=ТекущаяДата();
    СозданнаяЗадача.ОбъектЗадачи=ВыборкаЗапроса.СправочникКонтрагент;
    СозданнаяЗадача.ВидЗадачи=Справочники.ВидыЗадачПользователей.ТелефонныйЗвонок;
    СозданнаяЗадача.Организация=ЭтаОрганизация;
    СозданнаяЗадача.Программно=Истина;
    СозданнаяЗадача.Наименование="Перезвонить клиенту   " +ВыборкаЗапроса.СправочникКонтрагент.Наименование
    + Символы.ПС+ "Последний контакт  "+ ВыборкаЗапроса.Дата+ Символы.ПС+СформироватьКОнтактнуюИнформацию(ВыборкаЗапроса.СправочникКонтрагент);
    СозданнаяЗадача.Записать();
    //СозданнаяЗадача.ПолучитьФорму("ФормаЗадачи").Открыть();
    
    КонецЦикла;
    
    
КонецПроцедуры

Функция СформироватьКОнтактнуюИнформацию(Контрагент)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КонтактнаяИнформация.Представление,
        |    КонтактнаяИнформация.Поле3
        |ИЗ
        |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |ГДЕ
        |    КонтактнаяИнформация.Объект = &Объект
        |    И КонтактнаяИнформация.Тип.Ссылка = &Телефонный";
    
    Запрос.УстановитьПараметр("Объект", Контрагент);
    Запрос.УстановитьПараметр("Телефонный", Перечисления.ТипыКонтактнойИнформации.Телефон);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Телефоны="";
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
      Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Представление) тогда
          Телефоны=Телефоны+ВыборкаДетальныеЗаписи.Представление+ " , ";
      ИначеЕсли ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Поле3)  тогда
          Телефоны=Телефоны+ВыборкаДетальныеЗаписи.Поле3;
      КонецЕсли;      
          
    КонецЦикла;
    Возврат Телефоны;
КонецФункции;

// - Василий
3 yavasya
 
27.08.15
16:53
напоминалки менагерам  пусть звонят
4 yukon
 
27.08.15
16:54
Если диск 80Gb то может и умрет. Хотя это ожидаемо вроде бы.
5 yavasya
 
27.08.15
16:55
(4)  Почему ?  Задачи будут храниться месяц
6 yavasya
 
27.08.15
16:56
в первый раз 5000 , потом по 1000 в день
7 yavasya
 
27.08.15
16:56
Диск вроде ничего
8 Бубка Гоп
 
27.08.15
16:57
(0) Запусти создание для 500 задач.
Отследи время выполнения и загрузку сервера.
Умножь на 10.
Сделай вывод.
9 yavasya
 
27.08.15
17:10
500 за 2 минуты  . 2*10 = 20 минут )
10 Бубка Гоп
 
27.08.15
17:14
(9) видишь, не трудно оказалось.

П.С. я бы все таки регламентное по ночам запускал
11 yavasya
 
27.08.15
17:18
(10)  благодарю за совет