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