|
Конвертация данных. Прошу совета. | ☑ | ||
---|---|---|---|---|
0
Пендальф Серый
25.09.08
✎
12:41
|
В конфе приемнике есть справочник, которого нет в источнике. Этот справочник реально заполнить на основании разных объектов в источнике. Создаю правило конвертации объектов ПКО. Не указываю источник - только приемник. Создаю правило выгрузки объектов. Способ заполнения - произвольный алгоритм. Перед обработкой пишу
Выполнить(Алгоритмы.ЗаполнениеСотрудников) Пишу алгоритм в котором задействую запрос. В результате запроса получаю таблицу из всех сотрудников. Дальше её перебирать циклом? Куда её помещать? Где-то смотрел, что создаётся таблица значений и в первую строку в ячейку помещается весь результат выборки. Или как? Имена полей в запросе должны совпадать с свойствами приемника или не обязательно, и как тогда соответствия проставлять? Когда выгружаю по созданному правилу - выходит ошибка: Начало выгрузки: 25.09.2008 14:29:07 Начало обработки правила выгрузки данных: СотрудникиОрганизаций (СотрудникиОрганизаций) Выгрузка объекта выборки: СтрокаТаблицыЗначений (Строка таблицы значений) Конвертация объекта или получение ссылки: СтрокаТаблицыЗначений (Строка таблицы значений) ПКО = СотрудникиОрганизаций ( --> СправочникСсылка.СотрудникиОрганизаций) Ошибка получения свойства объекта из входящих данных ПКО = СотрудникиОрганизаций ( --> СправочникСсылка.СотрудникиОрганизаций) ПКС = 1 ( --> Код) Объект = СтрокаТаблицыЗначений (Строка таблицы значений) СвойствоПриемника = Код (Строка) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML(5487) КодСообщения = 68 Ошибка получения свойства объекта из входящих данных ПКО = СотрудникиОрганизаций ( --> СправочникСсылка.СотрудникиОрганизаций) ПКС = 2 ( --> ЭтоГруппа) Объект = СтрокаТаблицыЗначений (Строка таблицы значений) СвойствоПриемника = ЭтоГруппа (Булево) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML(5487) КодСообщения = 68 Окончание выгрузки: 25.09.2008 14:40:21 Выгружено объектов: 1 Вобщем я в этом балбес. Может кто поможет? Спасибо. |
|||
1
ТелепатБот
гуру
25.09.08
✎
12:41
|
||||
2
Пендальф Серый
25.09.08
✎
12:54
|
(1) не помогло
|
|||
3
Ashtray
25.09.08
✎
12:59
|
Имена полей должны совпадать обязательно. Все запихивать в переменную "ВыборкаДанных" В ПВД надо указать "Произвольный алгоритм"
|
|||
4
Черный всадник
25.09.08
✎
13:00
|
(2)Отправь в правило строку ТЗ, при этом сними галочку запоминать объекты в свойствах правила.
|
|||
5
Пендальф Серый
25.09.08
✎
13:47
|
В алгоритме прописал следующее
Запросы.ЗапросПоСотрудникам.УстановитьПараметр("ДатаСреза",РабочаяДата); Запросы.ЗапросПоСотрудникам.УстановитьПараметр("ПустаяДолжность",Справочники.ДолжностиОрганизаций.ПустаяСсылка()); Результат=Запросы.ЗапросПоСотрудникам.Выполнить(); ВыборкаДанных=Новый ТаблицаЗначений; ВыборкаДанных.Колонки.Добавить("Сотрудники"); Стр=ВыборкаДанных.Добавить(); Стр.Сотрудники=Результат.Выгрузить(); то есть Стр это строка, где в колонке Сотрудники сидит результат выборки. Вот вопрос: название колонки я брал произвольно. может быть надо также как правило??? |
|||
6
Пендальф Серый
25.09.08
✎
14:27
|
{Обработка.УниверсальныйОбменДаннымиXML(5567)}: Поле объекта не обнаружено (Код)
Значение = Источник[ПКС.Приемник]; В приемнике Справочник.СотрудникиОрганизаций поле Код есть. Почему такая ошибка выходит? |
|||
7
hulio_ekb
25.09.08
✎
15:11
|
Непонятно, что автору непонятно. По идее, все делается элементарно:
1. Создать правило конвертации объекта (пустой источник, заполненный приемник) 2. Создать правила конвертации свойств этого объекта 3. Создать правило выгрузки данных со способом выгрузки "Произвольный алгоритм". 4. В данном правиле прописать алгоритм "ПередОбработкой". Данный алгоритм должен сделать следующее: параметру "ВыборкаДанных" присвоить значение типа "ТаблицаЗначений". У этой таблицы сделать колонки с такими же именами, как и имена правил конвертации свойств объекта. Заполнить эту таблицу Все. После этого все работает. Что делаете вы: первые три пункта правильные. 4-й пункт неверен (неверен сам алгоритм). Надо примерно так: Запросы.ЗапросПоСотрудникам.УстановитьПараметр("ДатаСреза",РабочаяДата); Запросы.ЗапросПоСотрудникам.УстановитьПараметр("ПустаяДолжность",Справочники.ДолжностиОрганизаций.ПустаяСсылка()); Результат=Запросы.ЗапросПоСотрудникам.Выполнить(); ВыборкаДанных = Результат.Выгрузить(); // этот метод сам сформирует тебе таблицу значений с колонками, имена колонок которой будут совпадать с именами полей запроса |
|||
8
hulio_ekb
25.09.08
✎
15:19
|
Добавлю в качестве примера:
Допустим, в приемнике имеется справочник "ИмяСправочника" с реквизитами "Реквизит1" и "Реквизит2". В источнике такого справочника нет, но необходимые данные для его заполнения имеются. Тогда делаем так: 1. Создаем ПКО "ИмяСправочника" 2. Для этого ПКО создаем два ПКС: "Реквизит1" и "Реквизит2" 3. Создаем ПВД "ИмяСправочника" 4. Прописываем такой алгоритм, который создаст и заполнит таблицу значений с колонками "Реквизит1" и "Реквизит2" |
|||
9
Пендальф Серый
25.09.08
✎
15:40
|
(8) Можно ещё вопрос: в источнике есть свойство ФизЛицо (справочник.ФизЛица), в приемнике есть свойство ФизЛицо(справочник.ФизЛица) и свойство Сотрудник (тип справочник.Сотрудники). Как заполнить реквизит Сотрудник, если известно, что это сотрудник у которого реквизит ФизЛицо=ФизЛицо-источник. Где это прописать и как?
|
|||
10
Пендальф Серый
25.09.08
✎
15:42
|
Я понимаю, что надо найти запросом сотрудника с соответствующим ФизЛицом
Сотрудник.ФизЛицо=Источник.ФизЛицо, но где это прописать в каком обработчике? |
|||
11
Пендальф Серый
25.09.08
✎
15:56
|
Простите за назойливость, но как написать, что при загрузке необходимо в базе-приемнике найти сотрудника с реквизитом = передаваемое ФизЛицо и заполнить свойство Сотрудник. В ПКС только три обработчика ПередВыгрузкой ПриВыгрузке ПослеВыгрузки. А как описать событие ПослеЗагрузки?
|
|||
12
v_rtex
25.09.08
✎
16:02
|
самопроизвольная конвертация данных
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |