|
Изучаю КД, помогите немного :) | ☑ | ||
---|---|---|---|---|
0
fantomrik
13.11.15
✎
11:26
|
Задача:
В Исходной базе в документе "Прием сотрудника" указывается должность сотрудника. В Конечной базе информация о должности хранится непосредственно в справочнике "Сотрудники". Необходимо при переносе данных о приеме на работу обеспечить перенос должности сотрудника. Так, чтобы значение из документа, было записано в элемент справочника "Сотрудники". Подсказка. Для того чтобы в обработчике ПКС обратиться к текущей выгружаемой строке документа, необходимо использовать параметр ОбъектКоллекции. Таким образом, чтобы получить должность сотрудника из строки табличной части, нужно использовать выражение ОбъектКоллекции.Должность. Сделал ПКО для документа. В ПКС для должности приемник пустой (в приемнике должно перенестись в справочник), источник СправочникСсылка.ДолжностиСотрудников. И создал в ПКС "Должность" ПередВыгрузкой ИсходящиеДанные = Новый Структура(); ИсходящиеДанные.Вставить("Код", ОбъектКоллекции.Должность.Код); ИсходящиеДанные.Вставить("Наименование", ОбъектКоллекции.Должность.Наименование); ИсходящиеДанные.Вставить("ПометкаУдаления", ОбъектКоллекции.Должность.ПометкаУдаления); В этом ПКС указал правило ДолжностиСотрудников (которе создал, сопоставил Код, Наименование, ПометкаУдаления) и указал флаги получать из входящих данных. Падает после загрузки первого документа и первой должности из него с ошибкой Ошибка записи объекта ИмяПКО = ТипОбъекта = Документ объект: Прием сотрудника Свойство = ДокументТабличнаяЧастьСтрока.ПриемСотрудника.Сотрудники. Значение = Сборщик мебели ТипЗначения = Должности сотрудников Объект = Прием сотрудника 000000001 от 01.02.2012 12:00:00 ОписаниеОшибки = Поле объекта не обнаружено ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6362) КодСообщения = 26 Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6376)}: Ошибка записи объекта ИмяПКО = ТипОбъекта = Документ объект: Прием сотрудника Свойство = ДокументТабличнаяЧастьСтрока.ПриемСотрудника.Сотрудники. Значение = Сборщик мебели ТипЗначения = Должности сотрудников Объект = Прием сотрудника 000000001 от 01.02.2012 12:00:00 ОписаниеОшибки = Поле объекта не обнаружено ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6362) КодСообщения = 26 Собственно видимо (я думаю) он после записи должности пытается ее в документ присобачить, а реквизита то нет такого. И почему так работает не понимаю, у меня в ПКС документа же идет для должности Должность->"" ( и описано выгружать в исх данные). |
|||
1
mikecool
13.11.15
✎
11:27
|
сделать произвольный запрос и выбрать необходимые данные
|
|||
2
fantomrik
13.11.15
✎
11:33
|
(1) Не совсем понял. Мне нужно перегружая документы, создать должности, которые попадаются в документах. И можно чуть подробнее, я 2ой день вижу КД в глаза )
|
|||
3
fantomrik
13.11.15
✎
11:35
|
(0) У меня в принципе все работает по-моему, просто после отработки ПКС для должности, он почему то пытается в документ эту должность подставить... А должен просто выгрузить должность и дальше документы обрабатывать.
|
|||
4
ViSo76
13.11.15
✎
11:58
|
В обработке V8Exchan82.epf есть возможность делать отладку как при выгрузке так и при загрузке. Используй эту возможность для выявления своих ошибок.
|
|||
5
gorakh
13.11.15
✎
12:21
|
Читал информацию по обработчикам? При отладке хорошо помогает флаг в конфигураторе "остановка по ошибке"
|
|||
6
ViSo76
13.11.15
✎
12:27
|
(5) Он вывалится в обработку V8Exchan82.epf либо в код БСП. И что он там будет делать?
|
|||
7
fantomrik
13.11.15
✎
12:54
|
(5) (4) Ну ошибка как я и предпологал выше. Я не понимаю как ее решить мне?
http://hostingkartinok.com/show-image.php?id=05d2d7642e117ca9b650efaf6eccf71c http://hostingkartinok.com/show-image.php?id=e46bf39d4ccbe0b5b5d89d81bcd105fa http://hostingkartinok.com/show-image.php?id=94b9ed4268d3189b1f135beb1b4842a1 http://hostingkartinok.com/show-image.php?id=fd29cc589da6e526d795a30d9578fe78 |
|||
8
Другая
13.11.15
✎
12:54
|
Нужно создать правило выгрузки для должностей (и правило конвертации объекта с пустым источником и указанным приемником). Далее сформировать таблицу с необходимыми для спр. должностей данными и передать ее в ПКО (помощник по обработчикам поможет в этом).
Документы выгружать без должностей (отключить или удалить это ПКС) Вроде так |
|||
9
Другая
13.11.15
✎
12:57
|
Точно не помню, но обработка, если не указан приемник, пытается найти реквизит по имени источника.
|
|||
10
fantomrik
13.11.15
✎
13:07
|
(8) Судя по задаче, выгрузить нужно именно те должности, которые есть в документе исходнике. Просто отключив ПКС для должности в документе и создав ПВО для должности - я выгружу все должности. Наверно можно ограничение в запросе выборки прописать, но это доп костыли, хотелось бы решить задачу, как в условии.
"(и правило конвертации объекта с пустым источником и указанным приемником)" не слышал о таком ( Есть где почитать об этом? |
|||
11
ViSo76
13.11.15
✎
13:08
|
1. Можно правило конвертации справочника не делать, а перед записи документа создавать элемент справочника в случае его отсутствия.
2. Можно написать конвертацию из документа сразу в справочник сотрудников. PS: Главное в справочнике чтобы были заполнены все обязательные поля. |
|||
12
ViSo76
13.11.15
✎
13:10
|
(11) по пункту 2 дополнение.
2.1. Из документа "Прием сотрудника" в справочник создать / обновить саму должность. 2.2. Из документа "Прием сотрудника" в документ в базе приёмника. |
|||
13
fantomrik
13.11.15
✎
13:13
|
(12) Не понимаю ( что мне нужно сделать конкретно по 2 пункту?
|
|||
14
ViSo76
13.11.15
✎
13:13
|
Есть TeamViewer?
|
|||
15
ViSo76
13.11.15
✎
13:16
|
Мой скайп в профиле. Есть есть TeamViewer помогу
|
|||
16
Йохохо
13.11.15
✎
13:18
|
забей на всё, и тупо в ПКО Сотрудник запросом получи должность
|
|||
17
ViSo76
13.11.15
✎
13:27
|
(16) Тогда уж в ПВД запросом получить данные для ПКО Сотрудник.
|
|||
18
fantomrik
13.11.15
✎
13:31
|
(17) Если получу данные в ПВД документа, отключу вызов ПКС в документе, как вызову ПКС Должности?
|
|||
19
icrocodile
13.11.15
✎
13:31
|
1. В ПКО ПриемСотрудника в ПКС Сотрудник заполняешь ИсходящиеДанные в обработчике ПередВыгрузкой код:
ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить(«ДолжностьСотрудника»,ОбъектКоллекции.Должность); Указываешь для этого ПКС ПКО Сотрудники 2. Создаешь в ПКО Сотрудники ПКС ДолжностьСотрудника» с флагом Получить из входящих данных и пустым источником. Все! |
|||
20
Йохохо
13.11.15
✎
13:32
|
(18) в ПВД документа достаточно в ТЧ посмотреть нет?
(19) + |
|||
21
fantomrik
13.11.15
✎
13:32
|
(19) а (7) не идентичный вариант это?
|
|||
22
Йохохо
13.11.15
✎
13:33
|
(21) нет, там ты не попал в Сотрудника
|
|||
23
ViSo76
13.11.15
✎
13:38
|
(19) И что будет если такой должности нет в справочнике?
В документе будет битая ссылка? |
|||
24
Альбатрос
13.11.15
✎
13:46
|
(23) Будет пустая ссылка
|
|||
25
icrocodile
13.11.15
✎
13:51
|
(23) ну так должности тоже нужно переносить, надо ПКО для справочника Должности
|
|||
26
ViSo76
13.11.15
✎
13:53
|
Насоветовали умники :)
1. Нужно чтобы был ПВД для сотрудника на основе документа "Прием сотрудника" запросом. 2. Мутить не нужно со всякими ПКС после этого. |
|||
27
icrocodile
13.11.15
✎
13:55
|
(26) согласен, но я так понимаю это домашнее задание из курса по КД, они еще там не дошли до произвольной выборки в ПВД )
|
|||
28
Альбатрос
13.11.15
✎
13:56
|
(26) а как работает произвольная выгрузка с зарегистрированными ссылками в плане обмена?
|
|||
29
ViSo76
13.11.15
✎
14:07
|
(28) Примерно так:
оЗапрос = Новый Запрос( "ВЫБРАТЬ спрДолжности.Ссылка, спрДолжности.Код, спрДолжности.Наименование ИЗ Документ.ПриемСотрудника.Изменения КАК тзИзменения ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемСотрудника КАК докПрием ПО докПрием.Ссылка = тзИзменения.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДолжностиСотрудника КАК спрДолжности ПО спрДолжности.Ссылка = докПрием.Должность ГДЕ тзИзменения.Узел = &Узел" ); оЗапрос.УстановитьПараметр( "Узел", Параметры[ "Узел" ] ); ВыборкаДанных = оЗапрос.Выполнить().Выгрузить(); В ПВД ставишь "Произвольный алгоритм" В ПКО Сотрудника ставишь галочку "Не запоминать выгруженные объекты" |
|||
30
fantomrik
13.11.15
✎
14:54
|
(19) Отработало :)
Спасибо всем за участие! Другие алгоритмы наверно тоже рабочие, но для меня пока слишком сложные... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |