Имя: Пароль:
1C
1С v8
При попытке перенести контрагента из одной базы в другую обменом - создаётся пустая ссылка
,
0 Егор123
 
17.04.18
16:25
Добрый день! Вопрос по обменам между базами:

Управление производственным предприятием, редакция 1.3 (1.3.96.1)

и

PDM Управление инженерными данными, редакция 2.8 (2.8.2.6)

Платформа одинаковая: 8.3 (8.3.10.2667)

При попытке перенести контрагента из одной базы в другую - вместо желаемого создаётся пустая ссылка.

Контрагент должен регистрироваться для обмена, если пользователь указал его в номенклатуре, затем записал. Регистрация происходит, но вот в базу приёмник почему-то попадают пустые ссылки.

Скорее всего что-то в правилах конвертации. Подскажите - возможно кто сталкивался или куда смотреть и как?)

Конвертация данных.

Модуль обработчиков выгрузки:

////////////////////////////////////////////////////////////////////////////////
// Обработчики выгрузки конвертации ERP --> PDM новая {5522a719-3f17-11e8-ab13-00155d6a4d01}                                                                                                        
//
// Данный модуль содержит экспортные процедуры обработчиков событий конвертации
// и предназначен для отладки правил обмена. После отладки рекомендуется
// скопировать текст модуля в буфер обмена и импортировать его в базу
// "Конвертация данных".
//
////////////////////////////////////////////////////////////////////////////////
// ИСПОЛЬЗУЕМЫЕ СОКРАЩЕНИЯ ИМЕН ПЕРЕМЕННЫХ (АББРЕВИАТУРЫ)
//
//  ПКО  - правило конвертации объектов
//  ПКС  - правило конвертации свойств объектов
//  ПКГС - правило конвертации группы свойств объектов
//  ПВД  - правило выгрузки данных
//  ПОД  - правило очистки данных

////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ ОБРАБОТКИ
// Данный раздел изменять запрещено.

Перем Параметры;
Перем Алгоритмы;
Перем Запросы;
Перем УзелДляОбмена;
Перем ОбщиеПроцедурыФункции;

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОНВЕРТАЦИИ (ГЛОБАЛЬНЫЕ)
// В данном разделе разрешено изменять реализацию процедур.

Процедура Конвертация_ПослеЗагрузкиПравилОбмена() Экспорт

    

КонецПроцедуры

Процедура Конвертация_ПередВыгрузкойДанных(ФайлОбмена, Отказ) Экспорт

    //Уз = УзелДляОбмена;//ПланыОбмена.Полный.НайтиПоКоду("PDM");
    
    Уз = ПланыОбмена.Полный.НайтиПоКоду("PDM");
    
    Для Каждого об ИЗ Уз.Метаданные().Состав Цикл
        Если об.Метаданные = Метаданные.Справочники.СтатьиЗатрат Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.КлассификаторЕдиницИзмерения Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.ЕдиницыИзмерения Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.ВидыНоменклатуры Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.СпецификацииНоменклатуры Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.Номенклатура Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.ТехнологическиеОперации Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.НоменклатурныеГруппы Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.Подразделения Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.эмиМодификации Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.эмиТипыПродукции Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Документы.ЗаказПокупателя Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Документы.ЗаказПоставщику Тогда
            Продолжить;
        КонецЕсли;                
        Если об.Метаданные = Метаданные.РегистрыСведений.РегламентированныйПроизводственныйКалендарь Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.ЗначенияСвойствОбъектов Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.РегистрыСведений.НазначенияСвойствОбъектов Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.РегистрыСведений.ЗначенияСвойствОбъектов Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.ПланыВидовХарактеристик.СвойстваОбъектов Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов Тогда
            Продолжить;
        КонецЕсли;
        ПланыОбмена.УдалитьРегистрациюИзменений(Уз, об.Метаданные);
        
    КонецЦикла;

КонецПроцедуры

Процедура Конвертация_ПередПолучениемИзмененныхОбъектов(Получатель, УзелДляФоновогоОбмена) Экспорт

    

КонецПроцедуры

Процедура Конвертация_ПослеВыгрузкиДанных(ФайлОбмена) Экспорт

    

КонецПроцедуры

Процедура Конвертация_ПередВыгрузкойОбъекта(ФайлОбмена, Отказ, ИмяПКО, Правило, ВходящиеДанные, ИсходящиеДанные, Объект) Экспорт

    

КонецПроцедуры

Процедура Конвертация_ПослеВыгрузкиОбъекта(ФайлОбмена, Объект, ИмяПКО, ВходящиеДанные, ИсходящиеДанные, УзелСсылки) Экспорт

    

КонецПроцедуры

Процедура Конвертация_ПередКонвертациейОбъекта(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, ПКО,
    ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные,
    НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены,ТолькоПолучитьУзелСсылки,
    Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден) Экспорт

    

КонецПроцедуры

Процедура Конвертация_ПередОтправкойИнформацииОбУдалении(Ссылка, Отказ) Экспорт

    

КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// АЛГОРИТМЫ
// Данный раздел разрешено изменять.
// Также допустимо размещать процедуры с алгоритмами в любом из разделов выше.

////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
// Данный раздел изменять запрещено.

// Устанавливает значение параметра "Загрузка" для свойства объекта "ОбменДанными".
//
// Параметры:
//  Объект   - объект, для которого устанавливается свойство
//  Значение - значение устанавливаемого свойства "Загрузка"
//
Процедура УстановитьОбменДаннымиЗагрузка(Объект, Значение = Истина, Знач ОтправкаНазад = Ложь)

    ОбщиеПроцедурыФункции.УстановитьОбменДаннымиЗагрузка(Объект, Значение, ОтправкаНазад);
    
КонецПроцедуры

// Записывает объект в информационную базу.
//
// Параметры:
//    Объект - Записываемый объект.
//    Тип - Строка - Тип объекта строкой.
//
Процедура ЗаписатьОбъектВИБ(Объект, Тип, ЗаписатьОбъект = Ложь, Знач ОтправкаНазад = Ложь)

    ОбщиеПроцедурыФункции.ЗаписатьОбъектВИБ(Объект, Тип, ЗаписатьОбъект, ОтправкаНазад);
    
КонецПроцедуры

// Отменяет проведение объекта в информационной базе.
//
// Параметры:
//    Объект - Объект для отмены проведения.
//    Тип - Строка - Тип объекта строкой.
//
Процедура ОтменитьПроведениеОбъектаВИБ(Объект, Тип, ЗаписатьОбъект = Ложь)

    ОбщиеПроцедурыФункции.ОтменитьПроведениеОбъектаВИБ(Объект, Тип, ЗаписатьОбъект);
    
КонецПроцедуры

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

КонецПроцедуры

// Устанавливает пометку удаления.
//
// Параметры:
//    Объект - Объект для установки пометки.
//    ПометкаУдаления - Булево - Флаг пометки удаления.
//    ИмяТипаОбъекта - Строка - Тип объекта строкой.
//
Процедура УстановитьПометкуУдаленияУОбъекта(Объект, ПометкаУдаления, ИмяТипаОбъекта)
    
    ОбщиеПроцедурыФункции.УстановитьПометкуУдаленияУОбъекта(Объект, ПометкаУдаления, ИмяТипаОбъекта);
    
КонецПроцедуры

// Создает в файле обмена запись об удалении объекта.
//
// Параметры:
//    Ссылка - Ссылка на удаляемый объект.
//    ТипПриемника - Строка - Содрежит строковое представление типа приемника.
//    ТипИсточника - Строка - Содрежит строковое представление типа источника.
//
Процедура ЗаписатьВФайлУдалениеОбъекта(Ссылка, Знач ТипПриемника, Знач ТипИсточника)
    
    ОбщиеПроцедурыФункции.ЗаписатьВФайлУдалениеОбъекта(Ссылка, ТипПриемника, ТипИсточника);
    
КонецПроцедуры

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

// Регистрирует объект, созданный при выгрузке.
//
// Параметры:
//    Ссылка - Ссылка на регистрируемый объект.
//
Процедура ЗарегистрироватьОбъектСозданныйПриВыгрузке(Ссылка)
    
    ОбщиеПроцедурыФункции.ЗарегистрироватьОбъектСозданныйПриВыгрузке(Ссылка);
    
КонецПроцедуры

// Регистрирует предупреждение в журнале регистрации.
// Если в процессе обмена данными было обращение к этой процедуре, то обмен данными остановлен не будет.
// После завершения обмена статус выполнения обмена в мониторе для пользователя будет иметь значение "Предупреждение", если не было ошибок.
//
// Параметры:
//  Предупреждение - Строка. Текст предупреждения, который надо зарегистрировать.
// Информация, предупреждения и ошибки, возникающие в процессе обмена данными регистрируются в журнале регистрации.
//
Процедура ЗарегистрироватьПредупреждение(Предупреждение)
    
    ОбщиеПроцедурыФункции.ЗарегистрироватьПредупреждение(Предупреждение);
    
КонецПроцедуры

// Служебная. Инициализирует переменные, необходимые для отладки
//
// Параметры:
//  Владелец - Обработка КонвертацияОбъектовИнформационныхБаз
//
Процедура ПодключитьОбработкуДляОтладки(Владелец) Экспорт

    Параметры                 = Владелец.Параметры;
    ОбщиеПроцедурыФункции     = Владелец;
    Запросы                   = Владелец.Запросы;
    УзелДляОбмена              = Владелец.УзелДляОбмена;

КонецПроцедуры

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

КонецФункции

// Признак того, что это загрузка в информационную базу.
//
// Возвращаемое значение:
//    Булево - Признак режима загрузки данных
//
Функция РежимЗагрузкиДанныхВИнформационнуюБазу()
    
    Возврат ОбщиеПроцедурыФункции.РежимЗагрузкиДанныхВИнформационнуюБазу();
    
КонецФункции
1 Мандалай
 
17.04.18
16:28
Силен, а слабо модуль обработки УниверсальныйОбменДаннымиXML?
2 Мандалай
 
17.04.18
16:30
Загрузи правила обмена в Конвертацию, и скинь скриншот закладки настроек справочника Контрагенты.
3 Мандалай
 
17.04.18
16:31
И проверь что именно у тебя зарегистрировалось для Плана обмена.
4 Егор123
 
17.04.18
16:32
(1) Скорее слаб)



////////////////////////////////////////////////////////////////////////////////
//
// Данный модуль содержит экспортные процедуры обработчиков событий конвертации
// и предназначен для отладки правил обмена.
// После отладки рекомендуется внести соответствующие исправления обработчиков
// в базе «Конвертация данных 2.0» и заново сформировать файл правил.
//
////////////////////////////////////////////////////////////////////////////////
// ИСПОЛЬЗУЕМЫЕ СОКРАЩЕНИЯ ИМЕН ПЕРЕМЕННЫХ (АББРЕВИАТУРЫ)
//
//  ПКО  - правило конвертации объектов
//  ПКС  - правило конвертации свойств объектов
//  ПКГС - правило конвертации группы свойств объектов
//  ПКЗ  - правило конвертации значений объектов
//  ПВД  - правило выгрузки данных
//  ПОД  - правило очистки данных


////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ ОБРАБОТКИ


////////////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПЕРЕМЕННЫЕ МОДУЛЯ ДЛЯ НАПИСАНИЯ АЛГОРИТМОВ (ОБЩИЕ ДЛЯ ВЫГРУЗКИ И ЗАГРУЗКИ)

Перем Параметры;
Перем Правила;
Перем Алгоритмы;
Перем Запросы;
Перем УзелДляОбмена; // только для on-line обмена
Перем ОбщиеПроцедурыФункции;
Перем ДатаНачала;
Перем ДатаОкончания;
Перем ДатаВыгрузкиДанных; // только для on-line обмена
Перем КомментарийПриВыгрузкеДанных;
Перем КомментарийПриЗагрузкеДанных;


////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ ОБРАБОТОК ОБМЕНА (ОБЩИЕ ДЛЯ ВЫГРУЗКИ И ЗАГРУЗКИ)

Перем одТипСтрока;                // Тип("Строка")
Перем одТипБулево;                // Тип("Булево")
Перем одТипЧисло;                 // Тип("Число")
Перем одТипДата;                  // Тип("Дата")
Перем одТипХранилищеЗначения;     // Тип("ХранилищеЗначения")
Перем одТипДвоичныеДанные;        // Тип("ДвоичныеДанные")
Перем одТипВидДвиженияНакопления; // Тип("ВидДвиженияНакопления")
Перем одТипУдалениеОбъекта;       // Тип("УдалениеОбъекта")
Перем одТипВидСчета;              // Тип("ВидСчета")
Перем одТипТип;                        // Тип("Тип")
Перем одТипСоответствие;          // Тип("Соответствие")

Перем одТипУзлаXML_КонецЭлемента;
Перем одТипУзлаXML_НачалоЭлемента;
Перем одТипУзлаXML_Текст;

Перем ЗначениеПустаяДата;


////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОНВЕРТАЦИИ (ГЛОБАЛЬНЫЕ)

Процедура Конвертация_ПередВыгрузкойДанных(ФайлОбмена, Отказ) Экспорт

    //Уз = УзелДляОбмена;//ПланыОбмена.Полный.НайтиПоКоду("PDM");
    
    Уз = ПланыОбмена.Полный.НайтиПоКоду("PDM");
    
    Для Каждого об ИЗ Уз.Метаданные().Состав Цикл
        Если об.Метаданные = Метаданные.Справочники.СтатьиЗатрат Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.КлассификаторЕдиницИзмерения Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.ЕдиницыИзмерения Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.ВидыНоменклатуры Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.СпецификацииНоменклатуры Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.Номенклатура Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.ТехнологическиеОперации Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.НоменклатурныеГруппы Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.Подразделения Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.эмиМодификации Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.эмиТипыПродукции Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Документы.ЗаказПокупателя Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Документы.ЗаказПоставщику Тогда
            Продолжить;
        КонецЕсли;                
        Если об.Метаданные = Метаданные.РегистрыСведений.РегламентированныйПроизводственныйКалендарь Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.Справочники.ЗначенияСвойствОбъектов Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.РегистрыСведений.НазначенияСвойствОбъектов Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.РегистрыСведений.ЗначенияСвойствОбъектов Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.ПланыВидовХарактеристик.СвойстваОбъектов Тогда
            Продолжить;
        КонецЕсли;
        Если об.Метаданные = Метаданные.ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов Тогда
            Продолжить;
        КонецЕсли;
        ПланыОбмена.УдалитьРегистрациюИзменений(Уз, об.Метаданные);
        
    КонецЦикла;

КонецПроцедуры


////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ ВЫГРУЗКИ ДАННЫХ


////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОНВЕРТАЦИИ ОБЪЕКТОВ

Процедура ПКО_ПередВыгрузкой_ЗначенияСвойствОбъектов(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО,
                                           ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные,
                                           НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены, ТолькоПолучитьУзелСсылки,
                                           Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден) Экспорт

    Если Источник.Свойство.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура
        И Источник.Свойство.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документ_ЗаказПокупателя
        И Источник.Свойство.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы Тогда
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры

Процедура ПКО_ПередВыгрузкой_НазначенияСвойствОбъектов(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО,
                                           ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные,
                                           НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены, ТолькоПолучитьУзелСсылки,
                                           Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден) Экспорт

    Если Источник.Свойство.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура
        И Источник.Свойство.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документ_ЗаказПокупателя
        И Источник.Свойство.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы Тогда
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры

Процедура ПКО_ПередВыгрузкой_СпецификацииНоменклатуры(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО,
                                           ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные,
                                           НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены, ТолькоПолучитьУзелСсылки,
                                           Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден) Экспорт

    Если НЕ Источник.ЭтоГруппа Тогда
        ВыгрузитьПоПравилу(Источник.Ответственный,,,,"Пользователи");
    КонецЕсли;

КонецПроцедуры

Процедура ПКО_ПередВыгрузкой_ЗначенияСвойствОбъектов00001(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО,
                                           ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные,
                                           НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены, ТолькоПолучитьУзелСсылки,
                                           Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден) Экспорт

    Если Источник.Владелец.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура
        И Источник.Владелец.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документ_ЗаказПокупателя
        И Источник.Владелец.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы Тогда
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры

Процедура ПКО_ПередВыгрузкой_СвойстваОбъектов(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО,
                                           ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные,
                                           НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены, ТолькоПолучитьУзелСсылки,
                                           Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден) Экспорт

    Если Источник.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура
        И Источник.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документ_ЗаказПокупателя
        И Источник.НазначениеСвойства <> ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы Тогда
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры

Процедура ПКО_ПриВыгрузке_СвойстваОбъектов(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО,
                                           ПКО, ВыгруженныеОбъекты, КлючВыгружаемыхДанных, Отказ, СтандартнаяОбработка,
                                           Приемник, УзелСсылки) Экспорт

    ОписаниеТипов = Источник.ТипЗначения;
    УзелТиповXML = одПолучитьXMLПредставлениеОписанияТипов(ОписаниеТипов);
    ДобавитьПодчиненный(Приемник, УзелТиповXML);

КонецПроцедуры


////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОНВЕРТАЦИИ СВОЙСТВ И ГРУПП СВОЙСТВ ОБЪЕКТОВ

Процедура ПКС_ПередВыгрузкой_ЗначенияСвойствОбъектов_Объект_Измерение3(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные,
                                           ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, ТипПриемника, ИмяПКО,
                                           ИмяПКОВидСубконто, Пусто, Выражение, УзелКоллекцииСвойств,
                                           НеЗамещать) Экспорт

    Если ЗначениеЗаполнено(Источник.Объект) Тогда
        Если ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.Номенклатура") Тогда
            ИмяПКО = "Номенклатура";
        ИначеЕсли ТипЗнч(Источник.Объект) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            ИмяПКО = "эмиНомераЗаказов";
        ИначеЕсли ТипЗнч(Источник.Объект) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
            ИмяПКО = "ЗаказПоставщику";
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры

Процедура ПКС_ПередВыгрузкой_НазначенияСвойствОбъектов_Объект_Измерение2(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные,
                                           ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, ТипПриемника, ИмяПКО,
                                           ИмяПКОВидСубконто, Пусто, Выражение, УзелКоллекцииСвойств,
                                           НеЗамещать) Экспорт

    Если ЗначениеЗаполнено(Источник.Объект) Тогда
        Если ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.Номенклатура") Тогда
            ИмяПКО = "Номенклатура";
        ИначеЕсли ТипЗнч(Источник.Объект) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            ИмяПКО = "эмиНомераЗаказов";
        ИначеЕсли ТипЗнч(Источник.Объект) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
            ИмяПКО = "ЗаказПоставщику";
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры

Процедура ПКС_ПередВыгрузкой_эмиНомераЗаказов_Наименование_Свойство6(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные,
                                           ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, ТипПриемника, ИмяПКО,
                                           ИмяПКОВидСубконто, Пусто, Выражение, УзелКоллекцииСвойств,
                                           НеЗамещать) Экспорт

    Значение = ОбщегоНазначения.ПолучитьНомерНаПечать(Источник.Ссылка);

КонецПроцедуры


////////////////////////////////////////////////////////////////////////////////
//                          !!!ВНИМАНИЕ!!!
//            ИЗМЕНЯТЬ КОД В ЭТОМ БЛОКЕ (НИЖЕ) ЗАПРЕЩЕНО!
////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
// ВЫЗОВ ОБЩИХ ПРОЦЕДУР И ФУНКЦИЙ


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

// Создает новый xml-узел
// Функция может быть использована в обработчиках событий, программный код
// которых хранится в правила обмена данными. Вызывается методом Выполнить()
//
// Параметры:
//  Имя            - Имя узла
//
// Возвращаемое значение:
//  Объект нового xml-узла
//
Функция СоздатьУзел(Имя)

    Возврат ОбщиеПроцедурыФункции.СоздатьУзел(Имя);

КонецФункции

// Добавляет новый xml-узел к указанному узлу-родителю
// Функция может быть использована в обработчиках событий, программный код
// которых хранится в правила обмена данными. Вызывается методом Выполнить()
// Сообщение "Не обнаружено ссылок на функцию" при проверке конфигурации
// не является ошибкой проверки конфигурации
//
// Параметры:
//  УзелРодитель   - xml-узел-родитель
//  Имя            - имя добавляемого узла
//
// Возвращаемое значение:
//  Новый xml-узел, добавленный к указанному узлу-родителю
//
Функция ДобавитьУзел(УзелРодитель, Имя)

    Возврат ОбщиеПроцедурыФункции.ДобавитьУзел(УзелРодитель, Имя);

КонецФункции

// Копирует указанный xml-узел
// Функция может быть использована в обработчиках событий, программный код
// которых хранится в правила обмена данными. Вызывается методом Выполнить()
// Сообщение "Не обнаружено ссылок на функцию" при проверке конфигурации
// не является ошибкой проверки конфигурации
//
// Параметры:
//  Узел           - копируемый узел
//
// Возвращаемое значение:
//  Новый xml - копия указанного узла
//
Функция КопироватьУзел(Узел)

    Возврат ОбщиеПроцедурыФункции.КопироватьУзел(Узел);
    
КонецФункции

// Устанавливает значение параметра "Загрузка" для свойства объекта "ОбменДанными".
//
// Параметры:
//  Объект   - объект, для которого устанавливается свойство
//  Значение - значение устанавливаемого свойства "Загрузка"
//
Процедура УстановитьОбменДаннымиЗагрузка(Объект, Значение = Истина)

    ОбщиеПроцедурыФункции.УстановитьОбменДаннымиЗагрузка(Объект, Значение);
    
КонецПроцедуры

// Устанавливает атрибут указанного xml-узла
//
// Параметры:
//  Узел           - xml-узел
//  Имя            - имя атрибута
//  Значение       - устанавливаемое значение
//
Процедура УстановитьАтрибут(Узел, Имя, Значение)
    
    ОбщиеПроцедурыФункции.УстановитьАтрибут(Узел, Имя, Значение);
    
КонецПроцедуры

// Подчиняет xml-узел указанному узлу-родителю
//
// Параметры:
//  УзелРодитель   - xml-узел-родитель
//  Узел           - подчиняемый узел
//
Процедура ДобавитьПодчиненный(УзелРодитель, Узел)

    ОбщиеПроцедурыФункции.ДобавитьПодчиненный(УзелРодитель, Узел);
        
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ОБЪЕКТОМ XMLЧтение

// Осуществляет запись элемента и его значения в указанный объект
//
// Параметры:
//  Объект         - объект типа XMLЗапись
//  Имя            - Строка. Имя элемента
//  Значение       - Значение элемента
//
Процедура одЗаписатьЭлемент(Объект, Имя, Значение="")

    ОбщиеПроцедурыФункции.одЗаписатьЭлемент(Объект, Имя, Значение);    
    
КонецПроцедуры

// Читает значение атрибута по имени из указанного объекта, приводит значение
// к указанному примитивному типу
//
// Параметры:
//  Объект      - объект типа XMLЧтение, спозиционированный на начале элемента,
//                атрибут которого требуется получить
//  Тип         - Значение типа Тип. Тип атрибута
//  Имя         - Строка. Имя атрибута
//
// Возвращаемое значение:
//  Значение атрибута полученное по имени и приведенное к указанному типу
//
Функция одАтрибут(Объект, Тип, Имя)
    
    Возврат ОбщиеПроцедурыФункции.одАтрибут(Объект, Тип, Имя);
        
КонецФункции

// Пропускает узлы xml до конца указанного элемента (по умолчанию текущего)
//
// Параметры:
//  Объект   - объект типа XMLЧтение
//  Имя      - имя узла, до конца которого пропускаем элементы
//
Процедура одПропустить(Объект, Имя = "")
    
    ОбщиеПроцедурыФункции.одПропустить(Объект, Имя);
    
КонецПроцедуры // одПропустить()

// Читает текст элемента и приводит значение к указанному типу
//
// Параметры:
//  Объект           - объект типа XMLЧтение, из которого осуществлется чтение
//  Тип              - тип получаемого значения
//  ИскатьПоСвойству - для ссылочных типов может быть указано свойство, по которому
//                     следует искать объект: "Код", "Наименование", <ИмяРеквизита>, "Имя" (предопределенного значения)
//
// Возвращаемое значение:
//  Значение xml-элемента, приведенное к соответствующему типу
//
Функция одЗначениеЭлемента(Объект, Тип, ИскатьПоСвойству = "", ОбрезатьСтрокуСправа = Истина)

    Возврат ОбщиеПроцедурыФункции.одЗначениеЭлемента(Объект, Тип, ИскатьПоСвойству, ОбрезатьСтрокуСправа);

КонецФункции // одЗначениеЭлемента()

////////////////////////////////////////////////////////////////////////////////
// РАБОТА С ДАННЫМИ

// Возвращает строку - имя переданного значения перечисления.
// Функция может быть использована в обработчиках событий, программный код
// которых хранится в правила обмена данными. Вызывается методом Выполнить()
// Сообщение "Не обнаружено ссылок на функцию" при проверке конфигурации
// не является ошибкой проверки конфигурации
//
// Параметры:
//  Значение     - значение перечисления
//
// Возвращаемое значение:
//  Строка       - имя переданного значения перечисления.
//
Функция одИмяЗначенияПеречисления(Значение)

    Возврат ОбщиеПроцедурыФункции.одИмяЗначенияПеречисления(Значение);
    
КонецФункции // одИмяЗначенияПеречисления()

// Определяет заполнено ли переданное значение
//
// Параметры:
//  Значение       - значение, заполенение которого надо проверить
//
// Возвращаемое значение:
//  Истина         - значение не заполнено, ложь - иначе.
//
Функция одПустое(Значение, ЭтоNULL=Ложь)
    
    Возврат ОбщиеПроцедурыФункции.одПустое(Значение, ЭтоNULL);
    
КонецФункции // одПустое()

// Возвращает объект ОписаниеТипов, содержащий указанный тип.
//
// Параметры:
//  ЗначениеТипа - строка с именем типа или значение типа Тип.
//  
// Возвращаемое значение:
//  ОписаниеТипов
//
Функция одОписаниеТипа(ЗначениеТипа)
    
    Возврат ОбщиеПроцедурыФункции.одОписаниеТипа(ЗначениеТипа);

КонецФункции // одОписаниеТипа()

// Возвращает пустое (дефолтное) значение указанного типа
//
// Параметры:
//  Тип          - строка с именем типа или значение типа Тип.
//
// Возвращаемое значение:
//  Пустое значение указанного типа.
//
Функция одПолучитьПустоеЗначение(Тип)

    Возврат ОбщиеПроцедурыФункции.одПолучитьПустоеЗначение(Тип);
    
КонецФункции // ПолучитьПустоеЗначение()

// Осуществляет простой поиск объекта информационной базы по указанному свойству.
//
// Параметры:
//  Менеджер       - менеджер искомого объекта;
//  Свойство       - свойство, по которому осуществляем поиск: Имя, Код,
//                   Наименование или Имя индексируемого реквизита;
//  Значение       - значение свойства, по которому ищем объект.
//
// Возвращаемое значение:
//  Найденный объект информационной базы.
//
Функция одНайтиОбъектПоСвойству(Менеджер, Свойство, Значение,
                            НайденныйОбъектПоУникальномуИдентификатору = Неопределено,
                            ОбщаяСтруктураСвойств = Неопределено, ОбщиеСвойстваПоиска = Неопределено,
                            РежимПоискаОсновногоОбъекта = Истина, СтрокаЗапросаПоискаПоУникальномуИдентификатору = "")

    Возврат ОбщиеПроцедурыФункции.одНайтиОбъектПоСвойству(Менеджер, Свойство, Значение,
                                                   НайденныйОбъектПоУникальномуИдентификатору,    
                                                   ОбщаяСтруктураСвойств, ОбщиеСвойстваПоиска,
                                                   РежимПоискаОсновногоОбъекта, СтрокаЗапросаПоискаПоУникальномуИдентификатору);
    
КонецФункции // одНайтиОбъектПоСвойству()

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

    Возврат ОбщиеПроцедурыФункции.одПолучитьЗначениеПоСтроке(Стр, Тип, Свойство);

КонецФункции // одПолучитьЗначениеПоСтроке()

// Возвращает строковое представление типа значения
//
// Параметры:
//  ЗначениеИлиТип - произвольное значение или значение типа тип
//
// Возвращаемое значение:
//  Строка - строковое представление типа значения
//
Функция одТипЗначенияСтрокой(ЗначениеИлиТип)

    Возврат ОбщиеПроцедурыФункции.одТипЗначенияСтрокой(ЗначениеИлиТип);
    
КонецФункции // одТипЗначенияСтрокой()

// Возвращает XML представление объекта ОписаниеТипов
// Функция может быть использована в обработчиках событий, программный код
// которых хранится в правила обмена данными. Вызывается методом Выполнить()
// Сообщение "Не обнаружено ссылок на функцию" при проверке конфигурации
// не является ошибкой проверки конфигурации
//
// Параметры:
//  ОписаниеТипов  - объект ОписаниеТипов, XML представление которого требуется получить
//
// Возвращаемое значение:
//  Строка - XML представление переданного объекта ОписаниеТипов
//
Функция одПолучитьXMLПредставлениеОписанияТипов(ОписаниеТипов)

    Возврат ОбщиеПроцедурыФункции.одПолучитьXMLПредставлениеОписанияТипов(ОписаниеТипов);
    
КонецФункции // одПолучитьXMLПредставлениеОписанияТипов()

////////////////////////////////////////////////////////////////////////////////
// РАБОТА СО СТРОКАМИ

// Разбирает строку на две части: до подстроки разделителя и после.
//
// Параметры:
//  Стр          - разбираемая строка;
//  Разделитель  - подстрока-разделитель:
//  Режим        - 0 - разделитель в возвращаемые подстроки не включается;
//                 1 - разделитель включается в левую подстроку;
//                 2 - разделитель включается в правую подстроку.
//
// Возвращаемое значение:
//  Правая часть строки - до символа-разделителя.
//
Функция ОтделитьРазделителем(Стр, Знач Разделитель, Режим=0)

    Возврат ОбщиеПроцедурыФункции.ОтделитьРазделителем(Стр, Разделитель, Режим);
    
КонецФункции // ОтделитьРазделителем()

// Преобразует значения из строки в массив, используя указанный разделитель
//
// Параметры:
//  Стр            - Разбираемая строка
//  Разделитель    - подстрока разделитель
//
// Возвращаемое значение:
//  Массив значений
//
Функция МассивИзСтроки(Знач Стр, Разделитель=",")

    Возврат ОбщиеПроцедурыФункции.МассивИзСтроки(Стр, Разделитель);

КонецФункции // МассивИзСтроки()

Функция ПолучитьСтроковыйНомерБезПрефиксов(Номер)
    
    Возврат ОбщиеПроцедурыФункции.ПолучитьСтроковыйНомерБезПрефиксов(Номер);
    
КонецФункции

// Разбирает строку, выделяя из нее префикс и числовую часть.
//
// Параметры:
//  Стр            - Строка. Разбираемая строка;
//  ЧисловаяЧасть  - Число. Переменная, в которую возвратится числовая часть строки;
//  Режим          - Строка. Если "Число", то возвратит числовую часть, иначе - префикс.
//
// Возвращаемое значение:
//  Префикс строки
//
Функция ПолучитьПрефиксЧислоНомера(Знач Стр, ЧисловаяЧасть = "", Режим = "")

    Возврат ОбщиеПроцедурыФункции.ПолучитьПрефиксЧислоНомера(Стр, ЧисловаяЧасть, Режим);

КонецФункции

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

    Возврат ОбщиеПроцедурыФункции.ПривестиНомерКДлине(Стр, Длина, ДобавлятьНулиЕслиДлинаНеМеньшеТекущейДлиныНомера, Префикс);

КонецФункции // ПривестиНомерКДлине()

// Добавляет к префиксу номера или кода подстроку
// Функция может быть использована в обработчиках событий, программный код
// которых хранится в правила обмена данными. Вызывается методом Выполнить()
// Сообщение "Не обнаружено ссылок на функцию" при проверке конфигурации
// не является ошибкой проверки конфигурации
//
// Параметры:
//  Стр          - Строка. Номер или код;
//  Добавок      - добаляемая к префиксу подстрока;
//  Длина        - требуемая результрирующая длина строки;
//  Режим        - "Слева" - подстрока добавляется слева к префиксу, иначе - справа.
//
// Возвращаемое значение:
//  Строка       - номер или код, к префиксу которого добавлена указанная подстрока.
//
Функция ДобавитьКПрефиксу(Знач Стр, Добавок = "", Длина = "", Режим = "Слева")

    Возврат ОбщиеПроцедурыФункции.ДобавитьКПрефиксу(Стр, Добавок, Длина, Режим);

КонецФункции // ДобавитьКПрефиксу()

// Дополняет строку указанным символом до указанной длины.
//
// Параметры:
//  Стр          - дополняемая строка;
//  Длина        - требуемая длина результирующей строки;
//  Чем          - символ, которым дополняется строка.
//
// Возвращаемое значение:
//  Строка, дополненная указанным символом до указанной длины.
//
Функция одДополнитьСтроку(Стр, Длина, Чем = " ")
    
    Возврат ОбщиеПроцедурыФункции.одДополнитьСтроку(Стр, Длина, Чем);

КонецФункции // одДополнитьСтроку()

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ФАЙЛОМ ОБМЕНА

// Сохраняет в файл указанный xml-узел
//
// Параметры:
//  Узел           - xml-узел, сохранямый в файл
//
Процедура ЗаписатьВФайл(Узел)

    ОбщиеПроцедурыФункции.ЗаписатьВФайл(Узел);

КонецПроцедуры // ЗаписатьВФайл()

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ПРАВИЛАМИ ОБМЕНА

// Осуществляет поиск правила конвертации по имени или в соответствии с типом
// переданного объекта
//
// Параметры:
//  Объект         - Объект-источник, для которого ищем правило конвертации
//  ИмяПравила     - имя правила конвертации
//
// Возвращаемое значение:
//  Ссылка на правило конвертации (строка в таблице правил)
//
Функция НайтиПравило(Объект, ИмяПравила="")

    Возврат ОбщиеПроцедурыФункции.НайтиПравило(Объект, ИмяПравила);

КонецФункции


////////////////////////////////////////////////////////////////////////////////
//

Процедура ПередатьИнформациюОЗаписиВПриемник(ИнформацияДляЗаписиВФайл, СтрокаОшибкиВБазеПриемнике = "")
    
    ОбщиеПроцедурыФункции.ПередатьИнформациюОЗаписиВПриемник(ИнформацияДляЗаписиВФайл, СтрокаОшибкиВБазеПриемнике);
    
КонецПроцедуры

Процедура ПередатьОдинПараметрВПриемник(Имя, ИсходноеЗначениеПараметра, ПравилоКонвертации = "")
    
    ОбщиеПроцедурыФункции.ПередатьОдинПараметрВПриемник(Имя, ИсходноеЗначениеПараметра, ПравилоКонвертации);
    
КонецПроцедуры

Процедура ПередатьДополнительныеПараметрыВПриемник()
    
    ОбщиеПроцедурыФункции.ПередатьДополнительныеПараметрыВПриемник();
    
КонецПроцедуры


////////////////////////////////////////////////////////////////////////////////
// КОНСТРУКТОР И ДЕСТРУКТОР ОБРАБОТКИ

Процедура Конструктор(Владелец) Экспорт

    Параметры             = Владелец.Параметры;
    ОбщиеПроцедурыФункции = Владелец;
    Запросы               = Владелец.Запросы;
    Правила               = Владелец.Правила;
    
    КомментарийПриВыгрузкеДанных = Владелец.КомментарийПриВыгрузкеДанных;
    КомментарийПриЗагрузкеДанных = Владелец.КомментарийПриЗагрузкеДанных;
    
    
    //переменная для универсального обмена
    Попытка
        ДатаНачала = Владелец.ДатаНачала;
    Исключение
    КонецПопытки;
    
    //переменная для универсального
5 Егор123
 
17.04.18
16:33
(2) Тут вроде нельзя скрины. Стоят галки:

-Искать объект по внутреннему идентификатору объекта источника
-Автоматически генерировать номер или код, если он не задан
6 Егор123
 
17.04.18
16:37
(3) В плане обмена регистрируется номенклатура. Контрагент не регистрируется. Но если его провести - зарегистрируется, хотя в правилах отключен обмен контрагентами при регистрации (галка Отключен стоит на вкладке Правила выгрузки данных). Пробовал и так и эдак.
7 cw014
 
17.04.18
16:39
(6) Так, вот теперь соберись и поподробнее. А то получается, что Контрагент не регистрируется, но если провести - регистрируется. И кого проводишь? Контрагента?
8 Егор123
 
17.04.18
16:47
(7) Если провожу Номенклатуру - регистрируется номенклатура.
Контрагент не регистрируется, при этом в базе приёмнике появляется пустая ссылка в номенклатуре в поле, где указывается контрагент и в справочнике создаётся пустой контрагент.

Если провожу контрагента - контрагент регистрируется, но в базу не переносится.

Хочу настроить так, чтобы контрагент регистрировался только при регистрации Номенклатуры, если в поле он указан, то добавить его в обмен.
9 cw014
 
17.04.18
16:49
(8) Провести можно документ. Справочники не проводятся (хотя есть умельцы). Тебе нужно "подсунуть" кусочек кода, который регистрирует контрагента при записи справочника. В правилах конвертации прописать поля у контрагента, которые необходимо переносить. Ну и добавить его в ПВД
10 Егор123
 
17.04.18
16:50
(9) "Записываю элемент справочника"* )
11 cw014
 
17.04.18
16:51
(10) Я тебе совет дал, в какую сторону копать
12 Егор123
 
17.04.18
16:53
(9) я понял, спасибо. Хотелось бы без "подсовывания" решить. Возможно галку какую-то не ту нажал или есть настройка какая-то?
13 cw014
 
17.04.18
16:55
(10) Погоди, а как ты создал контрагента, что он изначально в выгрузку не попал?
14 Егор123
 
17.04.18
16:55
(11) к тому же такой метод - если мне понадобится  передача других объектов? опять в код лезть? например, захочу, чтобы контрагент передавался при проведении документа. Мне кажется галками всё управляется. Или я не прав?
15 cw014
 
17.04.18
16:56
(14) Тут по другому работает. Создал контрагента - он зарегистрировался. Улетел в другую базу. Создал номенклатуру - она зарегистрировалась, улетела в другую базу. Контрагент подсунулся по ссылке, так как он уже есть в удаленной базе
16 Егор123
 
17.04.18
16:57
(13)В конвертации данных напротив справочника Контрагенты галка Отключен стоит на вкладке Правила выгрузки данных.
17 cw014
 
17.04.18
16:58
Может попробовать её включить?
18 Егор123
 
17.04.18
16:58
(15) Контрагенты не переносятся при записи. Потому что все они в базе-приёмнике нафиг не нужны. Нужны только определённые, которые связаны с номенклатурной.
19 cw014
 
17.04.18
16:59
(18) Тогда делай как в (9)
20 Егор123
 
17.04.18
17:08
(19) так дело в том, что контрагент создаётся. даже по guid смотрел - что в одной базе, что в другой он идентичный. свойства просто не заполняются по нему. хотя ссылка на него есть (смотрел с программистом).
21 cw014
 
17.04.18
17:27
(20) Зарегистрируй контрагента и заставь его выгрузиться
22 Mankubus
 
18.04.18
06:24
(20) правила конвертации свойств настроены?
(5) Скрины тут вставляются ссылками на файлообменники
23 Mankubus
 
18.04.18
06:25
В правилах выгрузки номенклатуры напиши:Выгрузить поправил укажи имя ПКО и ссылку на контрагента
24 Егор123
 
18.04.18
11:29
(22) где можно посмотреть настройку "Правила конвертации свойств"?
25 Егор123
 
18.04.18
11:34
(24) Понял о чём речь. Да, вроде, настроены. Есть то, на что обратить внимание в настройке?
26 Cyberhawk
 
18.04.18
11:44
Скока платят за решение вопроса?
27 Егор123
 
18.04.18
12:13
(26) а это тут к чему?
28 Mankubus
 
18.04.18
12:15
(25) если настроены то норм. у тебя отключено правило выгрузки справочника Контрагенты, значит нужно выгрузку прописывать принудительно. см (23)
29 Егор123
 
18.04.18
16:29
(23) А можете пример кода скинуть?
30 Мандалай
 
18.04.18
17:33
Гугли выгрузитьпоправилу.
А вообще Бояркин тебе в помощь (книга крутая по КД).
31 Cyberhawk
 
18.04.18
18:47
(27) Ну ты же задаешь тут вопросы, вот и Я задаю
32 Егор123
 
19.04.18
13:14
(30) спасибо, буду копать