| 
    
            
         
         | 
    
  | 
Конвертация данных - два способа получения данных | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        VladSt    
     14.05.15 
            ✎
    10:35 
 | 
         
        Сделал два способа для переноса справочника Сотрудники. Треуется перенести сотров вместе с физюлицами только тех, кто работает сейчас или уволен после 20150101.
 
        1-й способ. Создал ПКО Сотрудники, настроил ПКС. Создал ПВД СотрудникиОрганизаций, в обработчике ПередВыгрузкой написал код: Если ЗначениеЗаполнено(Объект.ДатаУвольнения) И Объект.ДатаУвольнения < Дата("20150101") Тогда Отказ = Истина; КонецЕсли; все работает. 2-й способ (хотел попробовать передавать результат запроса). Вместо обработчика в ПВД сделал обработчик в ПКО ПередВыгрузкой такой код: Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | СотрудникиОрганизаций.ПометкаУдаления, | СотрудникиОрганизаций.ЭтоГруппа, | СотрудникиОрганизаций.Родитель, | СотрудникиОрганизаций.Код, | СотрудникиОрганизаций.Наименование, | СотрудникиОрганизаций.Физлицо |ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций |ГДЕ | (СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1) | ИЛИ СотрудникиОрганизаций.ДатаУвольнения < ДАТАВРЕМЯ(2015, 1, 1))"; РезультатЗапроса = Запрос.Выполнить(); ИсходящиеДанные = РезультатЗапроса.Выгрузить(); запустил выгружать данные. Уже 2 часа выгружает, очень медленно. Количество выгруженных пока объектов немного 14 000 примерно. Но по времени!!! Что-то здесь не так, да и результат я предполагаю может оказаться неизвестно каким. Подскажите что не так  | 
|||
| 
    1
    
        TStan    
     14.05.15 
            ✎
    10:42 
 | 
         
        А не запрос в цикле ты случайно получил?)     
         | 
|||
| 
    2
    
        VladSt    
     14.05.15 
            ✎
    10:48 
 | 
         
        (1) так вот я и боюсь, что неправильно в принципе что-то сделал
 
        нашел ошибку в запросе | ИЛИ СотрудникиОрганизаций.ДатаУвольнения < ДАТАВРЕМЯ(2015, 1, 1))"; сейчас поменял "<" на ">=", выгрузка, правда, быстрее пошла, посмотрим  | 
|||
| 
    3
    
        tznimble    
     14.05.15 
            ✎
    10:48 
 | 
         
        Ну конечно он получил запрос в цикле!
 
        Если в ПВД нет ограничений, то ПО вызывается для каждого элемента (справочника в данном случае). Интересно посмотреть что навыгружает  | 
|||
| 
    4
    
        VladSt    
     14.05.15 
            ✎
    10:51 
 | 
         
        (3) так, значит, ПКО касается только одной выгружаемой строки?     
         | 
|||
| 
    5
    
        TStan    
     14.05.15 
            ✎
    10:53 
 | 
         
        (3) интересно дождется ли))     
         | 
|||
| 
    6
    
        VladSt    
     14.05.15 
            ✎
    10:56 
 | 
         
        (5) я понял )), переделываю, я же поэтому и второй способ запустил, что хочу разобраться в деталях     
         | 
|||
| 
    7
    
        VladSt    
     14.05.15 
            ✎
    15:05 
 | 
         
        Подскажите, не все понимаю:
 
        есть запрос, выполняю его в консоли - результат 3 970 записей, когда выгружаю данные в обработчике ПВД ПередОбработкой - Выгружено объектов: 27 325. Воот код: Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | СотрудникиОрганизаций.Ссылка |ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций |ГДЕ | (СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1) | ИЛИ СотрудникиОрганизаций.ДатаУвольнения > ДАТАВРЕМЯ(2015, 1, 1))"; РезультатЗапроса = Запрос.Выполнить(); //ИсходящиеДанные = РезультатЗапроса.Выгрузить(); ВыборкаДанных = РезультатЗапроса.Выгрузить();  | 
|||
| 
    8
    
        VladSt    
     14.05.15 
            ✎
    15:13 
 | 
         
        и еще вопрос: 
 
        как правильно ИсходящиеДанные = или ВыборкаДанных = чтобы получить данные при загрузке?  | 
|||
| 
    9
    
        azt-yur    
     14.05.15 
            ✎
    15:24 
 | 
         
        (7) помимо самого справочника Сотрудников у тебя выгружаются и подчиненные объекты по ссылкам. Поэтому общее количество выгруженных объектов больше. 
 
        (8) правильно ВыборкаДанных  | 
|||
| 
    10
    
        VladSt    
     14.05.15 
            ✎
    15:31 
 | 
         
        и еще одна непонятка:
 
        в результате загрузки загрузились и те данные, которы при выполнении запроса не подали из-за того что в запросе условие: |ГДЕ | (СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1) | ИЛИ СотрудникиОрганизаций.ДатаУвольнения > ДАТАВРЕМЯ(2015, 1, 1))"; т.е. попали все сотры вместе с физ.лицами, вот и набежало 27 тысяч ((( Так в чем я не прав?  | 
|||
| 
    11
    
        azt-yur    
     14.05.15 
            ✎
    15:39 
 | 
         
        (10) способ выборки в ПВД должен стоять Произвольный алгоритм     
         | 
|||
| 
    12
    
        VladSt    
     14.05.15 
            ✎
    16:17 
 | 
         
        (11) да, сработало, еще немного пришлось переделать запрос (установить поля в запросе как в ПКС и 
 
        Важно: Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты".  | 
|||
| 
    13
    
        VladSt    
     14.05.15 
            ✎
    16:22 
 | 
         
        еще вопрос про этот же обработчик. у нег в параметрах есть такой параметр ИсходящиеДанные:
 
        ИсходящиеДанные - Произвольный. Произвольные вспомогательные данные, доступные при выгрузке объектов выборки можно было бы его использовать вместо ВыборкаДанных?  | 
|||
| 
    14
    
        VladSt    
     14.05.15 
            ✎
    16:49 
 | 
         
        Наверное, все таки только ВыборкаДанных
 
        ну что ж, сойдемся на этом ))  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |