Имя: Пароль:
1C
1С v8
Конвертация данных, редакция 3.1 (3.1.4.7)
0 Sevish
 
16.05.24
05:32
Добрый день всем!
Прошу помочь.
Есть КА две базы, конфигурации типовые, одинаковые по релизу. Возникла потребность с одной в другую просто перенести план видов характеристик "Статьи доходов".

Скачал сабж. Создал правило и возникли вопросы:
1. Почему не переносятся объекты свойств например, "Группа финансового учета" (флажок не стоит). Я когда-то делал правила еще на 2.х версии. Там не было такой проблемы. А тут что самому нужно правило добавить, просто при выгрузке не ставить флажок?
2. У ПВХ есть реквизит "ТипЗначения", в правиле он есть, но не переносится. Выглядит в файле так:
<Свойство Имя="ТипЗначения" Тип="ОпределениеТипа">
    <Пусто/>
</Свойство>
И при этом ещё ругается на "ОпределениеТипа" (не верный тип) и вылетает с ошибкой.
3. Группа создается как элемент, хотя <Свойство Имя="ЭтоГруппа" Тип="Булево">
        <Значение>true</Значение>
    </Свойство>

Прошу помочь.
1 Sevish
 
16.05.24
05:53
Да, для выгрузки по ссылкам надо было добавить ПКО, получилось.

Проблемы остались с (2) и (3).
Для (2) сделал ПКО с флажком "для группы", но не помогло.
2 rphosts
 
16.05.24
06:12
(0)3.принято делать 2 ПКО - одно для элементов, другое для групп.
2.Может проблема в том, что тип значения которые ты пытаешься выгрузить не имеет ПКО в КД?
3 Sevish
 
16.05.24
06:20
(2) сделал два правила, нашел статью https://infostart.ru/1c/articles/1154176/?ysclid=lw8nwomefh626049114 где есть код, который указывает какое ПКО выбрать, но у меня нет такого обработчика в текущей версии конвертации "ПриОбработке". Точнее вообще нет "Правило обработки данных". Есть "Правило выгрузки данных", видимо потому что я через формат XML делаю, а не через XDTO.
4 Sevish
 
16.05.24
06:41
(2) решил в ПВД "ПередВыгрузкой" написал:
Если Объект.ЭтоГруппа Тогда
        ИмяПКО = "ПланВидовХарактеристик_СтатьиДоходов_Группа"
    Иначе
        ИмяПКО = "ПланВидовХарактеристик_СтатьиДоходов"
КонецЕсли;

НО! При загрузке XML в ИБ приемника все равно создается не группа, а элемент :(
5 rphosts
 
16.05.24
06:54
(4) объекты для этих ПКО в ЕД разные?
6 Sevish
 
16.05.24
07:19
В обработке загрузки XML (которая идет в составе КД) нашел:
ЭтоГруппа = СвойстваПоиска["ЭтоГруппа"];
НО, "СвойстваПоиска" не содержит такого праметра, а где и как в ПКО добавить не могу найти :(
7 Sevish
 
16.05.24
07:20
(5) не знаю что такое ЕД, но всё одинаково: просто сохранил в XML в первой ИБ, надо загрузить во вторую ИБ.
8 Sevish
 
16.05.24
07:23
В выгруженной XML есть
        <Правило>
            <Код>ПланВидовХарактеристик_СтатьиДоходов</Код>
            <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору>
            <ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>true</ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>
            <Источник>ПланВидовХарактеристикСсылка.СтатьиДоходов</Источник>
            <Приемник>ПланВидовХарактеристикСсылка.СтатьиДоходов</Приемник>
        </Правило>

Но секции этих полей поиска в XML не нашел.
9 Sevish
 
16.05.24
07:26
У выгруженного объекта вот так:
<Объект Нпп="3" Тип="ПланВидовХарактеристикСсылка.СтатьиДоходов" ИмяПравила="ПланВидовХарактеристик_СтатьиДоходов"><Ссылка>
    <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
        <Значение>62e87dc6-5f67-11e9-80be-2cfda120f42b</Значение>
    </Свойство>
</Ссылка>

То есть вот тут должно быть что-то типа "ЭтоГруппа"...
10 Sevish
 
16.05.24
09:12
Все, победил каталоги. Просто в ПКС зашел в "ЭтоГруппа", "Наименование" и поставил флажок "Поиск при загрузке".

Осталось (2): как передать "ТипЗначения"?
11 Sevish
 
16.05.24
10:19
Удалось победить, но только с доработкой типовой обработки:

В ПКС добавил:
СписокТиповЗначений = Новый СписокЗначений;
СписокТиповЗначений.Добавить("СправочникСсылка.Организации");
СписокТиповЗначений.Добавить("СправочникСсылка.СтруктураПредприятия");
СписокТиповЗначений.Добавить("СправочникСсылка.НаправленияДеятельности");
СписокТиповЗначений.Добавить("СправочникСсылка.Партнеры");
СписокТиповЗначений.Добавить("ДокументСсылка.ЗаказПоставщику");
СписокТиповЗначений.Добавить("СправочникСсылка.ДоговорыКредитовИДепозитов");
СписокТиповЗначений.Добавить("ПеречислениеСсылка.АналитикаКурсовыхРазниц");
СписокТиповЗначений.Добавить("СправочникСсылка.ОбъектыЭксплуатации");
СписокТиповЗначений.Добавить("СправочникСсылка.НематериальныеАктивы");
СписокТиповЗначений.Добавить("СправочникСсылка.Номенклатура");
Для Каждого ЭлементСписка Из СписокТиповЗначений Цикл
    Если Источник.ТипЗначения.СодержитТип(Тип(ЭлементСписка.Значение)) Тогда
        Значение = ЭлементСписка.Значение;
        Прервать;
    КонецЕсли;
КонецЦикла;

А в обработке:

Функция ПолучитьТипСвойства()
    
    СтроковыйТипСвойства = одАтрибут(ФайлОбмена, одТипСтрока, "Тип");
    Если ПустаяСтрока(СтроковыйТипСвойства) Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    //ПВЕ
    Попытка
            Возврат Тип(СтроковыйТипСвойства);
        Исключение
            Если (СтроковыйТипСвойства = "ОпределениеТипа") Тогда
                    Возврат Новый ОписаниеТипов;
                Иначе
                    Возврат Неопределено;
            КонецЕсли;
    КонецПопытки;
КонецФункции

И в "Функция ПрочитатьОбъект()" вот тут:
            // читаем и устанавливаем значение свойства
            ТипСвойства = ПолучитьТипСвойстваПоДополнительнымДанным(ИнформацияОТипах, Имя);
            Значение    = ПрочитатьСвойство(ТипСвойства, ИмяПКО);
            //ПВЕ
            Если (ТипСвойства = Новый ОписаниеТипов) Тогда
                Значение = Новый ОписаниеТипов(Значение);
            КонецЕсли;
            
            Если ЭтоПараметрДляОбъекта Тогда
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан