|
КД | ☑ | ||
---|---|---|---|---|
0
MadHead
17.01.12
✎
18:06
|
Требуется заполнить реквизит приемника на основании данных из источника.
Обычно в таких случаях я заполняю значение в исходящих данных в ПВД и ставлю галочку "Получать из входящих данных", но столкнулся с ситуацией когда объект выгружается по ссылке не явно(с другим объектом) тогда правила выгрузки не отрабатывают и соответственно нечего не работает. Я в частности я переношу сотрудников из базы где данные о увольнении хранятся в регистре сведений в базе приемнике. Как в таком случае правильно переносить объект по ссылке? |
|||
1
cw014
17.01.12
✎
18:07
|
Эммм, не совсем понял. А зачем ты входящие и исходящие данные трогаешь?
|
|||
2
Rie
17.01.12
✎
18:09
|
(0) В соответствующем ПКС соответствующего правила программно сформировать Значение - не оно?
|
|||
3
cw014
17.01.12
✎
18:10
|
Смотри, ты выгружаешь регистр сведений.
В ПКС для данного ПКО ты ставишь соответствия полей, и для ПКС Сотрудник->Сотрудник ставишь свое правило "Сотрудники". Нафиг тебе входящие и исходящие дынные? |
|||
4
echo77
17.01.12
✎
18:11
|
В ПВД что-то переопределять - это не то.
|
|||
5
cw014
17.01.12
✎
18:12
|
(4) Зачем в ПВД что то переопределять? У тебя ПВД должен быть "РегистрСведений.ХХХ->РегистрСведений.ХХХ"
|
|||
6
MadHead
17.01.12
✎
18:18
|
(3) В Источнике имеется Справочник "Сотрудники", оттуда тяну реквизиты код и наименование и есть регистр сведений "РаботникиОрганизаций" оттуда тяну признак "уволен(актуальность)".
В приемнике есть справочник "Сотрудники" с 3-мя реквизитами "код, наименование, уволен(актуальность)". В приемнике нету регистра соответствующего регистру "РаботникиОрганизаций" приемника. (4)(5) Вот такой код Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВЫБОР | КОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК Актуальность |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(, Сотрудник = &Сотрудник) КАК РаботникиОрганизацийСрезПоследних"; Запрос.УстановитьПараметр("Сотрудник", Объект); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Актуальность = Выборка.Актуальность; Иначе Актуальность = Ложь; КонецЕсли; ИсходящиеДанные = Новый Структура("Актуальность",Актуальность); |
|||
7
Rie
17.01.12
✎
18:21
|
(6) Создать ПКС для реквизита Актуальность.
Получить значение тем запросом, который приведен, только вместо Запрос.УстановитьПараметр("Сотрудник",Объект); написать Запрос.УстановитьПараметр("Сотрудник",Источник); и затем Значение = ?(Выборка.Следующий(),Выборка.Актуальность,Ложь); |
|||
8
cw014
17.01.12
✎
18:23
|
Погоди, ты сотрудников тянешь из регистра сведений в справочник?
|
|||
9
cw014
17.01.12
✎
18:24
|
Или все таки ты справочник сотрудников в справочник сотрудников грузишь?
|
|||
10
MadHead
17.01.12
✎
18:28
|
(8) я гружу справочник сотрудников в справочник сотрудников, только дополняю это все данными из регистра который есть только в источнике
|
|||
11
MadHead
17.01.12
✎
18:28
|
(7) Сейчас попробую
|
|||
12
cw014
17.01.12
✎
18:28
|
Если все таки (9) тогда убирай первый код у ПКО, отрубай "Получить из входящих данных" у свойства "Активность" а в ПКС прописать:
Срез = РегистрыСведений.РаботникиОрганизаций.СрезПоследних(, Новый Структура("Сотрудник", Источник.Ссылка); Значение = ?(Срез.Количество()>0,Срез[0].ПричинаИзмененияСостояния = Перечислениz.ПричиныИзмененияСостояния.Увольнение,Ложь); |
|||
13
cw014
17.01.12
✎
18:29
|
(11) делай как я говорю
|
|||
14
cw014
17.01.12
✎
18:29
|
(11) и будет тебе счастье
|
|||
15
cw014
17.01.12
✎
18:29
|
(12) ПеречислениЯ
|
|||
16
MadHead
17.01.12
✎
18:42
|
(12) в (7) примерно тоже самое и написано. Всем спасибо разобрался как в таком случае поступать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |