Имя: Пароль:
1C
1C 7.7
v7: Конвертация Данных: передача значений для полей поиска в ПКО
0 PiotrLoginov
 
01.11.12
16:05
Не смог найти информацию: как-то можно передать Исходящие данные для нескольких полей поиска ПКО прямо из ПВД? (В ПВД формирую ТаблицуЗначений.) Синтаксис такой же, как если бы я передавал Исходящие данные из обработчика Перед выгрузкой для ПКС ссылочного типа?

Заранее спасибо за подсказки.
1 leonidkorolev
 
01.11.12
16:11
(0) Вроде как эта формируемая ТЗ и является типа Исходящими данными. Напрашивается просто добавить в нее колонки с нужными данные.

Можно подробнее, в какой объект загружатся данные и зачем входящие данные?
2 PiotrLoginov
 
01.11.12
16:17
Переношу договора. То есть один справочник в один справочник (ПКО ДоговорыКонтрагентов) Не справляюсь. На днях консультировался по произвольному алгоритму в ПВД, сейчас вот проблема с ПКС для реквизитов ссылочного типа.

Вот например надо, чтобы в формируемом в приемнике справочнике "Договоры контрагентов" у каждого элемента был заполнен реквизит Партнер - ссылка на элемент справочника Партнеры.
3 acsent
 
01.11.12
16:19
Сделай правило Контрагент > Партнер
4 PiotrLoginov
 
01.11.12
16:20
Уже сделал.  В нем ПКС Наименование. Это поле, по которому будет производится поиск.
5 PiotrLoginov
 
01.11.12
16:25
(4) Отбой. Не то написал.  Вы предлагаете Создать ПКС Контрагент - > Партнер? Так у меня же значения в ПКО ДоговорыКонтрагентов берутся не из источника, а из ТаблицыЗначений, формируемой в ПВД. Источника у ПКО ДоговорыКонтрагентов нету.
6 acsent
 
01.11.12
16:31
В таблице же поле контрагент ну или владелец есть?
7 PiotrLoginov
 
01.11.12
16:33
В таблице есть колонка Партнер. Значение "Партнер" для каждой строки таблицы формируется произвольным алгоритмом обработчика ПВД "Перед обработкой"
8 PiotrLoginov
 
01.11.12
16:35
Бог с ними, с несколькими полями поиска. Для начала понять бы, как передать значение в одно поле поиска. Еще раз: есть ПКО ДоговорыКонтрагентов . В нем ПКС для реквизита Партнер (реквизит - ссылочного типа). Для этого ПКС указано правило конвертации (отдельное ПКО) Партнеры, в котором создано ПКС Наименование (по нему должен производится поиск). Как же мне передать значение реквизита источника Контрагент в это поле поиска?
9 leonidkorolev
 
01.11.12
16:39
(8) В ПКС Партнер добавь в обработчик ПередВыгрузкой

ИсходящиеДанные = Новый Структура();
ИсходящиеДанные.Вставить("Наименование",Источник.Партнер);

p.s. Мне интересно если в ПВД в колонку Партнер запихивать ТЗ с колонками прокатит нет?
10 PiotrLoginov
 
01.11.12
16:43
Только наверное

ИсходящиеДанные.Вставить(Источник.Владелец,"Наименование");


Обычно сначала указывал в параметрах функции что вставлять, а потом уже - куда вставлять.

Пробую...
11 leonidkorolev
 
01.11.12
16:45
(10) Это структура


Структура (Structure)
Вставить (Insert)
Синтаксис:

Вставить(<Ключ>, <Значение>)
Параметры:

<Ключ> (обязательный)

Тип: Строка.
Ключ устанавливаемого элемента.
<Значение> (необязательный)

Тип: Произвольный.
Значение устанавливаемого элемента.
Описание:

Устанавливает значение элемента структуры по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

Отбор = Новый Структура("Дата, Клиент");
Отбор.Вставить("Клиент", ТекКлиент);
Отбор.Вставить("Дата", РабочаяДата);
12 PiotrLoginov
 
01.11.12
16:50
err
ИсходящиеДанные = Новый <<?>>Структура();
Переменная не определена (Структура)

Вспомнил: обычно для семерки писал

ИсходящиеДанные = СоздатьОбъект("СписокЗначений");

Пробую...  Тока сомневаюсь - источника-то как такого нету.
13 PiotrLoginov
 
01.11.12
16:51
* как такового
14 PiotrLoginov
 
01.11.12
16:54
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.ДобавитьЗначение(Источник.Владелец,"Наименование");



Ошибка исполнения обработчика:  ПКС_ПередВыгрузкой_ДоговорыКонтрагентов_Партнер_Реквизит9
 - Поле агрегатного объекта не обнаружено (Владелец)
15 PiotrLoginov
 
01.11.12
16:59
Попробую теперь в алгоритме создания ТаблицыЗначений попытаться засунуть в "Партнер" специальное ТЗ, как написано в (9)

Так или иначе спасибо за участие. Жаль, что формирование ИсходящихДанных прямо из ПВД не упомянуто ни у Бояркина, ни в справке в конфе.
16 PiotrLoginov
 
01.11.12
16:59
* к конфе
17 acsent
 
01.11.12
17:00
Обработчики "Правила выгрузки данных"
Перед выгрузкой объекта
Условия возникновения события
Событие выполняется при получении очередного объекта из выборки, до передачи этого объекта правилу конвертации.

Параметры:
ВходящиеДанные - произвольные вспомогательные данные, инициализированные в обработчике «Перед обработкой» правила выгрузки данных как ИсходящиеДанные.
18 acsent
 
01.11.12
17:01
В ПКО
ИсходящиеДанные = ВходящиеДанные
19 PiotrLoginov
 
01.11.12
17:04
Ну допустим, создам я в ПВД ИсходящиеДанные.  И в ПКО они придут как ВходящиеДанные... *пытаясь сообразить, чешу лоб"  Что мне там с ними делать?
20 PiotrLoginov
 
01.11.12
17:06
я хоть правильно понял (17) ? я могу в обработчике ПКО засунуть в ИсходящиеДанные для ПКС поля поиска те значения, что пришли ко мне из ПВД в виде ВходящихДанных?
21 PiotrLoginov
 
01.11.12
17:15
Так. Спасибо за наводку. Почитал соответствующее место у Бояркина.  Получается,
1) в ПВД "Перед обработкой" создаю ИсходящиеДанные.
2) В "Перед выгрузкой" принимаю ВходящиеДанные, преобразую в ИсходящиеДанные.
3) В ПКО получаю ВходящиеДанные, преобразую в ИсходящиеДанные
4) В ПКС поля поиска получаю ВходящиеДанные - использую их.

Мягко говоря, витиевато.. ну да лишь бы сработало.

Если я что-то не так понял, поправьте меня заранее, гуру, ибо писать эту цепочку я буду до-олго.
22 Йохохо
 
01.11.12
17:23
ПВД Стандартная выборка
ПКО
ПКС Партнер: Источник пусто
ПередВыгрузкой
Значение = СоздатьОбъект("СписокЗначений");
Значение.Установить("Номер", Источник.РеквизитПартнет.Код);
Значение.Установить("Наименование", Источник.РеквизитПартнет.Наименование);
Значение.Установить("ПолеПоиска", Источник.РеквизитПартнет.ПолеПоиска);
23 PiotrLoginov
 
01.11.12
17:29
(22) В ПКС Партнер формировать Значение? А не ИсходящиеДанные?
24 Йохохо
 
01.11.12
17:38
(23) на 1 галку меньше ставить
25 PiotrLoginov
 
01.11.12
17:48
Аа-а.. дошло.. сформировать Значение, чтобы потом его использовать в полях поиска...  А можно в Значение вставлять информацию из ВходящихДанных?  Меня просто смущает тот факт, что у ПКО ДоговорыКонтрагентов будет несколько ПКС ссылочного типа... Как бы не запутать ситуацию еще больше...
26 PiotrLoginov
 
01.11.12
17:49
В любом случае буду помнить всегда, что можно сразу сформировать Значение.  Спасибо большое, ценная информация.
27 PiotrLoginov
 
01.11.12
17:55
Так. Алгоритм (21) не сработал: ссылка на элемент справочника Контрагенты выгружается, так что выгружаемых объектов стало в 2 раза больше, но в реквизит Партнер в приемнике ссылка не попадает, он по-прежнему пуст в приемнике. Пробую (22)
28 PiotrLoginov
 
01.11.12
18:10
Ошибка исполнения обработчика:  ПКС_ПередВыгрузкой_ДоговорыКонтрагентов_Партнер_Реквизит9
 - Поле агрегатного объекта не обнаружено (РеквизитПартнер)

Изменил РеквизитПартнер на Партнер. Тогда выгружается без ошибок и - о, чудо! - в файле обмена у Свойства "Партнер" появилось "Наименование" , но оно пустое :(

Покумекаю еще...
29 Йохохо
 
01.11.12
18:14
(25) "Как бы не запутать ситуацию еще больше..." укажи явно ПКО для ПКС
30 PiotrLoginov
 
01.11.12
18:14
Разобрался: надо было у ПКС поля поиска снять галку "получать из входящих данных".  Заработало наконец, фу-ух. Получается, передавать значения в поля поиска можно без использования Входящих-Исходящих данных... хотя конечно возможны исключения, посмотрим..
31 PiotrLoginov
 
01.11.12
18:17
(29) ПКО для всех ПКС ссылочного типа всегда указываю явно.

Йохохо, спасибо за помощь. Странно, что передача значений в поля поиска до сих пор не освещена было подробна на мисте.. Или это только мне кажется сложным...  Еще раз всем за помощь Большое Человеческое спасибо.
32 acsent
 
01.11.12
18:23
(31) так там ничего и нет такого, просто галочки ставишь "Поиск" и все
33 Йохохо
 
01.11.12
18:25
можешь произвольной выборкой формировать ТЗ и в ней хоть вложенными ТЗ формировать ТЧ, хоть структурами "объекты"
34 PiotrLoginov
 
01.11.12
18:26
Ну да, когда разберешься, уже не так все страшно :)  Хотя до конца я еще не въехал - использовать информацию, помещаемую в ПВД в ИсходящиеДанные так и не смог.
35 Йохохо
 
01.11.12
18:51
справку кнопни
"ИсходящиеДанные - Произвольный. Произвольные вспомогательные данные, доступные при выгрузке объектов выборки"
36 PiotrLoginov
 
01.11.12
22:39
да, конечно, обязательно копну