Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Вопрос по конвертации

Вопрос по конвертации
Я
   serg-lom89
 
17.01.18 - 10:49
добрый день
Вопрос по конвертации
В базе источник есть реквизит у документа ПКО контрагент(составной тип)
В базе приемник добавил реквизит  Касса_ККМ.(типы естественно не совпадают).

будьте добры подскажите как конвертации указать что бы подставлялось определенно значение в базе приемник? (слабо "шарю" по конвертации поэтому прошу помощи).
 
 
   Рэйв
 
1 - 17.01.18 - 10:53
В ПослеЗагрузки анализируй Объект и заполняй как надо
   Рэйв
 
2 - 17.01.18 - 10:53
или ты просто из Контрагента в Кассы гонишь данные что ли?
   serg-lom89
 
3 - 17.01.18 - 11:01
(2) ну что то типо того)
там составной тип.
Я хочу что бы этот реквизит при заполнении в базе источника и при "переброске" в базу приемник подставлялось значение определенное.
   serg-lom89
 
4 - 17.01.18 - 11:03
Контрагента это название реквизита просто.)
   thobise
 
5 - 17.01.18 - 11:06
Явно указать правила конвертации свойств для каждого типа.
Читать справку
   Мандалай
 
6 - 17.01.18 - 11:22
Если заранее значение извествно, то ПослеЗагрузки пишешь: Объект.НужныйРеквизит = НужноеЗначение.
Возможно еще и Объект.Записать() потребуется.
   serg-lom89
 
7 - 17.01.18 - 11:31
(6) а как указать это значение при выгрузке из источника?
   serg-lom89
 
8 - 17.01.18 - 11:35
вопрос такой еще
если в ПКО ,перед выгрузкой ВходящиеДанные есть структура
Как мне ее потом прочитать при загрузке в базу приемник?
   serg-lom89
 
9 - 17.01.18 - 11:38
(8)если бы можно было прочитать структуру тогда может и получилось ..
   Zakarum
 
10 - 17.01.18 - 12:07
(8) Этого сделать нельзя. При загрузке ты имеешь дело с готовым XML-файлом с выгруженными данными. В нем содержатся твои объекты в виде их моделей XML, так сказать, а также алгоритмы обработчиков ПередЗагрузкой(), ПриЗагрузке(), ПослеЗагрузки(), если ты их используешь конечно.
Если в загружаемом объекте тебе нужно изменить значение реквизита у объекта найденного или создаваемого, делаешь это как в (6).
Чтобы получить это значение при выгрузке из источника, как вариант можно в обработчике ПриВыгрузке() проделать нужные манипуляции с данными. Посмотри для этого справку - есть хорошая кнопка в самом верху окна КД, "Информация по обработчикам". Становишься на нужный обработчик, нажимаешь эту кнопку и читаешь что тебе доступно в данном обработчике.
 
 Рекламное место пустует
   serg-lom89
 
11 - 17.01.18 - 12:25
почитал справку

Есть
ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры переденные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено.



получается если я перед выгрузкой передам какое значение параметра потом смогу его после загрузки прочитать.
а как указать этот параметр при выгрузке?
   Zakarum
 
12 - 17.01.18 - 12:42
(11)Да, действительно, дополнительные данные по объекту можно передать в обработчике "После Выгрузки В Файл":

"Событие выполняется после выгрузки объекта в файл обмена. Может быть использован для выгрузки дополнительной информации по выгруженному объекту в файл обмена. При этом информация будет записана в файл обмена после выгруженного объекта."

смотри здесь: v8: Конвертация данных - ПКО - ПослеЗагрузки - переменная ПараметрыОбъекта
   mistеr
 
13 - 17.01.18 - 12:47
(3) Если значение предопределенное, то в ПКС пишешь строку с именем. Если нет, то можно так:

  Выражение = "Справочники.КассыОрганизации.НайтиПоКоду("КОД")"
   serg-lom89
 
14 - 17.01.18 - 13:08
(12)
а можно чуть по подбробнее
я в ПКО вставил код 
События = Новый Соответствие;
События.вставить("КодКассы","А00000092");


И в ПКО добавил загрузки добавил 

Если  ПараметрыОбъекта <>неопределено тогда
    Объект.касса_ККМ =справочники.кассы.найтиПоКоду("А00000092");
    Объект.записать();
конецЕсли; 

Но ничего не поменялось(
   serg-lom89
 
15 - 17.01.18 - 13:11
что я делаю не так?
   serg-lom89
 
16 - 17.01.18 - 13:11
я добавил в ПКО только это больше ничего не добавлял
   mistеr
 
17 - 17.01.18 - 13:13
(14) КодКассы сделай параметром.

В ПКС ПередВыгрузкой пиши:

  Выражение = "Справочники.Кассы.НайтиПоКоду(" + Параметры.КодКассы +")"
   mistеr
 
18 - 17.01.18 - 13:13
(16) Внимательно читай, что тебе пишут.
   serg-lom89
 
19 - 17.01.18 - 13:33
(18) сорри за назойливость просто 2 -ой раз только с конвертацией сталкиваюсь.
ПКО
https://ibb.co/m9ybCR
ПКС
https://ibb.co/frG2mm

все равно прошу помощи
   serg-lom89
 
20 - 17.01.18 - 13:40
что я все таки делаю не так в конвертации?
извините за назойливость!)
   youalex
 
21 - 17.01.18 - 13:44
(11) В ПКС - есть галка Передавать в Параметр. И поле ИмяПараметра.
   serg-lom89
 
22 - 17.01.18 - 13:46
передавать даные в параметр я указал
имя задал События
   serg-lom89
 
23 - 17.01.18 - 13:52
(22) но почему то все равно не работает.
   youalex
 
24 - 17.01.18 - 13:53
Теперь можешь ловить его в ПКО, событие ПослеЗагрузкиОбъекта.
   Мандалай
 
25 - 17.01.18 - 13:53
Ищи Бояркина - мануал по конвертации. там все описано.
   youalex
 
26 - 17.01.18 - 13:56
(19) тебе здесь не Выражение нужно, а "Значение = ", если через Параметр делаешь.
   serg-lom89
 
27 - 17.01.18 - 13:57
(25) да,надо..кинули в бой без подготовки)
   Skylark
 
28 - 17.01.18 - 15:13
Для составного типа надо что-то вроде вот этого в событии "ПередВыгрузкой" в правиле конвертации свойства которое имеет составной тип:

Если ОбъектКоллекции.СубконтоДт1 = "По всем работникам" Тогда
    ИмяПКО = "ПоВсемРаботникам";
ИначеЕсли ТипЗнч(ОбъектКоллекции.СубконтоДт1) = Тип("СправочникСсылка.ФизическиеЛица") Тогда
    ИмяПКО = "ФизическиеЛица";
ИначеЕсли ТипЗнч(ОбъектКоллекции.СубконтоДт1) = Тип("СправочникСсылка.Контрагенты") Тогда
    ИмяПКО = "Контрагенты";
ИначеЕсли ТипЗнч(ОбъектКоллекции.СубконтоДт1) = Тип("СправочникСсылка.Субконто") Тогда
    // отдельная обработка справочника субконто

    Если ЗначениеЗаполнено(ОбъектКоллекции.СчетДт) Тогда
        ВидыСубконто = ОбъектКоллекции.СчетДт.ВидыСубконто;
        Если ВидыСубконто.Количество() >= 1 Тогда
            ВремИмяПКО = Данные.СоответствиеПравилКонвертацииВидовСубконто.Получить(ВидыСубконто[0].ВидСубконто);
            Если ЗначениеЗаполнено(ВремИмяПКО) Тогда
                ИмяПКО = ВремИмяПКО;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецЕсли;
   Skylark
 
29 - 17.01.18 - 15:14
Ну и соответственно для каждого типа создать правила конвертации


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует