gifts2017

Загрузка данных из программы Trade House 14.1 в 1С:Бухгалтерия

Опубликовал olga izr (olgaizr) в раздел Обмен - Обмен с другими системами

Загрузка данных в формате *.xml из программы Trade House 14.1 в 1С:Бухгалтерия 2.0

Загрузку данных из программы торговли Трейд Хаус (ТХ) в программу 1С: Бухгалтерия. При загрузке использовать условия, изложенные ниже.

1. По учетной политике все покупка сырья на производства оформляется поступлением и списанием сырья в производство

2. Соответствие данных по справочникам 1с и ТХ указывается в РС "Соответствие внешних объектов объектам базы"

3. При выборе соответствия договора 1с и ТХ, в РС "Соответствие внешних объектов объектам базы", указывается договор для определенного контрагента, определенного объекта (магазина), или группы объектов

4. Вид номенклатуры определять по полю комментарий

ТОВАР – не заполнено или кроме «продукция»
ПРОДУКЦИЯ - заполнено «продукция»

5. Перед созданием документа в 1С проверять на уже созданный.

 

Для работы обработок необходимо:

-выгрузить данные из Трейд Хауса в формате *.xml

-создать РегистрСведений "СоответствиеВнешнихОбъектовОбъектамБазы",

-после первой выгрузки настроить соответствия объектов ТрейдХауса,

             -магазин---это склад розничного типа,

             -объекты, где производится продукция (цех) ---это склад оптового типа,

-для настройки соответсвия Контрагентов и Договоров ---обработка "Синхронизация контрагентов и договоров"

-при загрузке данных заполнить настройки в обработке в соотвествии с рисунком

 

Загрузка производится по блок-схемам, представленным в рисунках

РегистрСведений "СоответствиеВнешнихОбъектовОбъектамБазы" - тип каждого измерения/ресурса:

-ВнешнийОбъект----------------------ЛюбаяСсылка, Булево, Строка, Дата, Число

-ТипДанныхОбъектаБазы-----------Строка

-ОбъектБазы----------------------------ЛюбаяСсылка, Булево, Строка, Дата, Число

-Синхронизирован --------------------Булево

-АнализДоговоров---------------------Булево (когда договор не один для всех магазинов или комиссионного договора)

 

Создать общийМодуль МАВСинхронизацияОбъектов, где прописаны функции для обработки. Его модуль:

Функция ПолучитьСоответствующийОбъектИБ(ЗначениеИсточника, ТипОбъектаИБ) Экспорт

    //стрОтбор = Новый Структура("ВнешнийОбъект,ТипДанныхОбъектаБазы,Синхронизирован");
    стрОтбор = Новый Структура("ВнешнийОбъект,ТипДанныхОбъектаБазы");
    стрОтбор.ВнешнийОбъект = ЗначениеИсточника;
    стрОтбор.ТипДанныхОбъектаБазы = ТипОбъектаИБ;
    //стрОтбор.Синхронизирован = Ложь;
    
    Ответ = РегистрыСведений.МАВСоответствиеВнешнихОбъектовОбъектамБазы.Получить(стрОтбор);    
    Ответ.Вставить("ОбъектНайден", ?(Ответ.ОбъектБазы=Неопределено,Ложь,Истина));
    
    Возврат  Ответ;

КонецФункции // ПолучитьСоответствующийОбъект()()

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

    Ответ = Неопределено;
    Если СтрЧислоВхождений(ТипОбъектаИБ, "Справочник") Тогда
        ГруппаХраненияНовых = Неопределено;
        НовыйОбъект = Новый(ТипОбъектаИБ);
        Ответ       = НовыйОбъект.СоздатьЭлемент();
        Ответ.Наименование = "#TRADE_HOUSE Код: "  + ЗначениеИсточника + " (" + СокрЛП(Ответ.Метаданные().Представление()) + ")";
        Ответ.ОбменДанными.Загрузка = Истина;
        Ответ.УстановитьНовыйКод();
        
        //ЕСЛИ СПРАВОЧНИК ИЕРАРХИЧЕСКИЙ, ТО ИЩЕМ ИЛИ СОЗДАЕМ ГРУППУ ДЛЯ ХРАНЕНИЯ НОВЫХ ОБЪЕКТОВ ПОДЛЕЖАЩИХ СИНХРОНИЗАЦИИ
        Если Ответ.Метаданные().Иерархический Тогда
            ГруппаХраненияНовых = НовыйОбъект.НайтиПоНаименованию("НОВЫЕ ОБЪЕКТЫ (ОБМЕН)");
            Если ГруппаХраненияНовых = НовыйОбъект.ПустаяСсылка() Тогда
                Если СокрЛП(Ответ.Метаданные().ВидИерархии) = "ИерархияГруппИЭлементов" Тогда
                    ГруппаХраненияНовых = НовыйОбъект.СоздатьГруппу();
                    ГруппаХраненияНовых.Наименование = "НОВЫЕ ОБЪЕКТЫ (ОБМЕН)";
                    ГруппаХраненияНовых.ОбменДанными.Загрузка = Истина;
                    ГруппаХраненияНовых.УстановитьНовыйКод();
                ИначеЕсли СокрЛП(Ответ.Метаданные().ВидИерархии) = "ИерархияЭлементов" Тогда
                    ГруппаХраненияНовых = НовыйОбъект.СоздатьЭлемент();
                    ГруппаХраненияНовых.Наименование = "НОВЫЕ ОБЪЕКТЫ (ОБМЕН)";
                    ГруппаХраненияНовых.ОбменДанными.Загрузка = Истина;
                    ГруппаХраненияНовых.УстановитьНовыйКод();
                КонецЕсли;
                ГруппаХраненияНовых.Записать();
            КонецЕсли; 
            Ответ.Родитель = ГруппаХраненияНовых.Ссылка;
        КонецЕсли; 
        
        Ответ.Записать();
        Ответ = Ответ.Ссылка;
    ИначеЕсли СтрЧислоВхождений(ТипОбъектаИБ, "Перечисление") Тогда
        НовыйОбъект = Новый(ТипОбъектаИБ);
        //ДЛЯ ПЕРЕЧИСЛЕНИЙ ПОКА ВОЗВРАЩАЕМ ПЕРВОЕ ЗНАЧЕНИЕ
        //В ДАЛЬНЕЙШЕМ МОЖНО ПРЕДУСМОТРЕТЬ ПАРАМЕТР ВЫЗОВА,
        //КОТОРЫЙ БЫ ОПИСЫВАЛ ЗНАЧЕНИЕ ПЕРЕЧИСЛЕНИЯ КОТОРОЕ ХОТЕЛИ БЫ ПОЛУЧИТЬ
        Ответ = НовыйОбъект[0];
    Иначе
        Возврат Ответ;
    КонецЕсли; 
    
    //ЗАПИСЫВАЕМ В РЕГИСТР СИНХРОНИЗАЦИИ ЗДЕСЬ??
    НаборЗаписейСинхронизации = РегистрыСведений.МАВСоответствиеВнешнихОбъектовОбъектамБазы.СоздатьНаборЗаписей();
    ЗаписьСинхронизации = НаборЗаписейСинхронизации.Добавить();
    //!!!!!!ДЛЯ ЭКОНОМИИ ПАМЯТИ МОЖНО ПОПРОБОВАТЬ РАСКОММЕНТИРОВАТЬ!!!!!!!!!!!!!!!
    //Если ТипЗнч(ЗначениеИсточника) = Тип("Строка") Тогда
    //    КС = Новый КвалификаторыСтроки(СтрДлина(ЗначениеИсточника));
    //    Массив = Новый Массив;
    //    Массив.Добавить(Тип("Строка"));
    //    ОписаниеСтроки = Новый ОписаниеТипов(Массив, , КС);
    //    ЗаписьСинхронизации.ВнешнийОбъект = ЗначениеИсточника;
    //    ОписаниеСтроки.ПривестиЗначение(ЗаписьСинхронизации.ВнешнийОбъект);
    //    //ЗаписьСинхронизации.ВнешнийОбъект = Новый ОписаниеТипов(Массив, , КС);
    //КонецЕсли;
    ЗаписьСинхронизации.ВнешнийОбъект = ЗначениеИсточника;
    
    ЗаписьСинхронизации.ТипДанныхОбъектаБазы = ТипОбъектаИБ;
    ЗаписьСинхронизации.ОбъектБазы = НовыйОбъект.ПустаяСсылка();         
    ЗаписьСинхронизации.ОбъектБазы = Ответ;
    ЗаписьСинхронизации.Синхронизирован = Ложь;
    НаборЗаписейСинхронизации.Записать(Ложь);
    
    Возврат Ответ;

КонецФункции // ()
 

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

    Возврат  Ответ;

КонецФункции // ()

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Загрузка ОБЩАЯ ТХ в БУ.rar
.rar 49,09Kb
18.03.13
19
.rar 49,09Kb 19 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. AlStorm (N0Brakes) 25.03.13 17:15
Благодарю!
А можно конкретно расписать по регистру сведений, какой тип каждого измерения/ресурса?
2. Alexei (Alexei_fox) 16.12.13 02:52
Добрый день, можно выложить конфигурацию с образцом регистра и его заполнением ?
3. Alexei (Alexei_fox) 16.12.13 02:53
4. Alexei (Alexei_fox) 16.12.13 03:12
{Форма.Форма.Форма(753,28)}: Переменная не определена (МАВСинхронизацияОбъектов)
НоменклатураПоСтроке = <<?>>МАВСинхронизацияОбъектов.СинхронизироватьОбъекты(КодКомитента + "_комиссия", "СправочникМенеджер.Номенклатура").ОбъектБазы;

МАВСинхронизацияОбъектов --- где откопать ?
5. Alexei (Alexei_fox) 16.12.13 07:40
Еще вопрос ... каким образом можно остатки перекинуть ? Не пробовали ? Может грузануть инвентаризацию и из нее создать оприходование номенклатуры ?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа