|   |   | 
| 
 | Конвертация данных - два способа получения данных | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Наверное, все таки только ВыборкаДанных
 ну что ж, сойдемся на этом )) | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |