Имя: Пароль:
1C
1С v8
Отбор в обработке УниверсальныйОбменДаннымиXML
,
0 AceVi
 
31.03.17
12:27
Делаю перенос данных из ЗУП 2.5 в ЗУП 3.0.(правила взял из конфигуратора ЗУП 3.0)  Мне например нужны только данные по физ лицам, но не по всем а по выбранным. Казалось бы в обработке есть отбор - но он не работает, не доступен для физ лиц в этих правилах, хотя в то же время этот отбор доступен например для БухучетЗарплатыПодразделений(просто для примера привел, что отбор в принципе не сломан в обработке). Подскажите куда копать и как включит отбор для физ лиц. Я могу редактировать правила в КД2, но просто не знаю, как сделать что бы отбор работал.
1 RomaH
 
naïve
31.03.17
12:45
способ выборки - для физ лиц у тебя похоже не стандартная выборка
2 AceVi
 
31.03.17
12:51
(1) Да я там посмотрел  - там в правиле выгрузки ссылается на Алгоритмы/Запросы - там есть алгоритм выборки физ лиц, в этом алгоритме указан запрос по которому выбирается физ лица. Это ок. Но как вы это запрос тогда передать список сотрудников? Просто в самом запросе доступны только параметры Правил выгрузки - а тип параметра можно указать только справочник или простые типы, массив или список нельзя. Получается можно только самому кодом создать список в алгоритме и передавать его в запрос?
3 RomaH
 
naïve
31.03.17
12:56
сделать ПВД со стандартной выборкой - и его результат уже в параметр ?
4 Ministr
 
31.03.17
12:59
Ты можешь в ПКО засунуть проверку "перед выгрузкой".

1. Получить список сотрудников в обработчике ПВД, засунуть их в "ИсходящиеПараметры"(структуру) в виде массива (список сотрудников физ.лиц)

2. В ПКО Физ.лица написать в перед выгрузкой написать:
Если ВходящиеДаныне.Свойство("ФизЛица") И ВходящиеДанные.ФизЛица.Найти(Источник) = Неопределено Тогда
Отказ = Истина;
КонецЕсли


P/S/ не совсем помню как там наследуются входящие и исходящие данные, в какой обработчик надо их задать, но это очень легко находится если взглянуть код самой обработки.
5 Ministr
 
31.03.17
13:01
Конечно это не оптимально, потому что хорошо бы на уровне выборке получать сразу необходимые данные.
Зато более универсально.

Также можно сделать глобальный параметр, заполнять его в обработчике открытия обработки "ПризагрузкиПараметров" как то так и проверять уже на вхождение сотрудника в этот параметр.
6 AceVi
 
31.03.17
13:03
(4) 1. Получить список сотрудников в обработчике ПВД - я понял - но как этот самый список получить? мне нужна "ручная выборка" там нет каких уникальных признаков для нужных мне сотров. Отбор в обработке мне очень подходит, он универсальный и там можно задавать список, если только конечно не заставить сделать папку в справочнике источнике и заставить кадровика всех нужных ей сотрув туда перенести? тогда можно будет выбрать все запросом по папке. как думаете?
7 Вафель
 
31.03.17
13:04
добавить параметр в КД, в запросе учитывать этот праметр
8 AceVi
 
31.03.17
13:08
(7) Параметр кд - только справочник(т.е. один элемент) или простой тип(строка там булево и т.д.) список или массив нельзя задать. А мне нужен список физ лиц) пока вижу вариант положить их в отдельную папку.
9 RomaH
 
naïve
31.03.17
13:14
зделать ПВД со стандартной выборкой - и его результат уже в параметр ?
10 AceVi
 
31.03.17
13:26
(9) Ну нет же - мне нужен список физ лиц - допустим из 50 мне надо выбрать 10 - которые не обладают уникальными признаками кроме кода - ручной выбор идеально подошел бы. а так либо в коде прописывать формирование этого списка(перенос то разовый) или поместить  физ лиц в отдельную папку и просто сделать запрос с отбором по родителю.
11 FIXXXL
 
31.03.17
13:31
(10) для разовой делай как быстрее
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший