Имя: Пароль:
1C
1С v8
Конвертация данных. Поставление значения в базе-приемнике.
0 breakthrough
 
18.02.16
12:37
Здравствуйте.
При конвертации необходимо, чтобы в базе-приемнике у перегруженных объектов проставлялась организация, которой нет в базе-источнике.
Сделал ПКО для поиска по ИНН и КПП и проставил его для свойства организация в другом.
Загвоздка в том, что если мы не заполняем это свойство совсем, то возникает ошибка во время выгрузки. Но к сожалению, не всегда есть возможность заполнить это свойство даже "левой" организацией из базы-источника.
Пробовал заполнять свойство объекта в обработчике для ПКО "после загрузки"  результат никакой. Тем более что выгружаю регистры и проставлять организацию в каждой записи.
Подскажите решение. Заранее спасибо!
1 Spieluhr
 
18.02.16
12:51
Передавать в Параметры каждого объекта ИНН и КПП искомой организации.
Искать ПослеЗагрузки по Параметры.ИНН + Параметры.КПП
2 mikecool
 
18.02.16
12:54
послезагрузки найти организацию и прописать
3 breakthrough
 
18.02.16
12:56
(1) Сейчас так и сделано. Параметры заполнены. Делаю запросом поиск по справочнику и заполняю объект:
// Если НЕ ОбъектНайден Тогда
         Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Организации.Ссылка
        |ИЗ
        |    Справочник.Организации КАК Организации
        |ГДЕ
        |    Организации.ИНН = &ИНН
        |    И Организации.КПП = &КПП";

    Запрос.УстановитьПараметр("ИНН", Параметры.ИНН);
    Запрос.УстановитьПараметр("КПП", Параметры.КПП_Головная);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

     ВыборкаДетальныеЗаписи.Следующий();
     Объект =ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
     Объект.Записать();
// КонецЕсли;

Все равно пусто.
4 Alex S D
 
18.02.16
13:00
"Но к сожалению, не всегда есть возможность заполнить это свойство даже "левой" организацией из базы-источника." А что в этом случае должно заполниться?
5 Alex S D
 
18.02.16
13:00
ты же в параметры передаешь что-то. не понимаю ..
6 los_hooliganos
 
18.02.16
13:03
(0) Давай код из ПКО
И вопрос: ПКО на реквизит или на весь объект?
7 breakthrough
 
18.02.16
13:03
(4) Ну, я имею в виду, если использовать для свойства "Организация" отдельное ПКО, где идет поиск по двум полям вида
Для ПКС ИНН: Значение = Параметры.ИНН;
Для ПКС КПП: Значение = Параметры.КПП_Головная;
8 los_hooliganos
 
18.02.16
13:04
При выгрузки ставь пустую ссылку на Организацию
9 los_hooliganos
 
18.02.16
13:04
(7) Што ето за изврат?
10 breakthrough
 
18.02.16
13:09
(8) Пробовал. Пустая ссылка не канает.
(9) Пардоньте, о каком изврате идете речь? Вполне нормальное решение явно указать значения свойств, тем более они не ссылочного типа и по ним двум осуществляется поиск объекта. "Поиск по ссылке" разумеется выключен.
11 Ma3eIIa
 
18.02.16
13:11
12 breakthrough
 
18.02.16
13:12
(11) Спасибо. Читал и то и другое. Там не совсем про это.
13 Ma3eIIa
 
18.02.16
13:14
Почему же ? после загрузки берешь свой параметр организация и поиск в приемнике. Разве не то ?
14 Ma3eIIa
 
18.02.16
13:15
(13) делаешь алгоритм. и просто делаешь его вызов. где тебе нужно поменять организацию. все.
15 Spieluhr
 
18.02.16
13:15
(3) Объект.Организация = ВыборкаДетальныеЗаписи.Ссылка
16 breakthrough
 
18.02.16
13:15
(13) Все верно. Я так и делаю. Но в результате получаю незаполненный реквизит. Вот и пытаюсь понять что я делаю не так.
17 Ma3eIIa
 
18.02.16
13:16
(16) Точно в обработчике после загрузки ?
18 breakthrough
 
18.02.16
13:16
(15) Да, так и есть. Я просто скинул код из ПКО для Организаций. Спасибо.
19 breakthrough
 
18.02.16
13:16
(17) Клянусь)
20 Ma3eIIa
 
18.02.16
13:20
Вообще не где или только в регистре пусто ?
21 breakthrough
 
18.02.16
13:20
Ладно, понимаю, что где-то тупанул. Буду разбираться.
Всем большое спасибо!
Просто еще трудность в том, что если заполнять не одиночный объект, а я получаю данные из ПВД как ВходящиеДанные и загружаю их в регистр через Документ "Перенос данных", то как поставлять значение свойства для записей регистра?
22 Ma3eIIa
 
18.02.16
13:22
23 Ma3eIIa
 
18.02.16
13:22
(21) правило создай отдельное. где источник пуст. тогда будет коллекция. если он указан будет 1 обхект
24 Ma3eIIa
 
18.02.16
13:24
(21) я вечером залезу к клиенту гляну правила которые делал. у меня обмен не с типовой базой. что то вроде этого делал. напишу сюда
25 breakthrough
 
18.02.16
13:25
(24) Спасибо! Буду очень признателен.
26 Boroda
 
18.02.16
13:30
В (3) передаваемые параметры не те же что параметры объекта.
К параметрам объекта необходимо обращаться через "ПараметрыОбъекта".
27 breakthrough
 
18.02.16
13:32
(26) Ну это я знаю. Вопрос, зачем мне обращаться к ПараметрамОбъекта? Я использую глобальные параметры конвертации.
28 NicolayNN
 
18.02.16
13:39
В обработчике "После загрузки" подставлять нужное значение, типа Объект.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН","4217137777");
Не подходит?
29 breakthrough
 
18.02.16
13:41
(28) Подходит. Но почему-то не срабатывает. Вот почему не могу понять.
30 NicolayNN
 
18.02.16
13:42
Может не то ПКО срабатывает
31 Alex S D
 
18.02.16
13:44
(29) Настало время открыть для себя отладку обработчиков
32 breakthrough
 
18.02.16
13:46
(31) И вправду.
33 Boroda
 
18.02.16
13:48
Как вариант:
Создай правило, например "ОрганизацияПоУмолчанию".
Поля поиска ИНН и КПП.
Для ИНН и КПП пропиши явные значения организации по умолчанию:
типа: Значение = "0002223330";
И при выгрузке, если организация не задана меняй имя правила
ИмяПКО = "ОрганизацияПоУмолчанию";
34 breakthrough
 
18.02.16
13:51
(31) Обработчик: "ПослеЗагрузкиПравилОбмена": Отладка обработчика "После загрузки правил обмена" не поддерживается.
35 breakthrough
 
18.02.16
13:53
(33) Спасибо. Дело в том, что сейчас так и сделано. Но когда организация не указана, то все равно реквизит не заполняется.
36 Ma3eIIa
 
18.02.16
13:54
(29) может у тебя какой то обработчик подключен. и поэтому твоя организация затирается.
37 breakthrough
 
18.02.16
13:56
(36) ХЗ. Уже мозг сломал. Сложные правила все работают, а такое простое, но важное нет.