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







Загрузка данных в формате *.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>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//
// Возвращаемое значение:
//   <Тип.Вид>   - <описание возвращаемого значения>
//
Функция СинхронизироватьОбъекты(ЗначениеИсточника, ТипОбъектаИБ) Экспорт

Ответ = ПолучитьСоответствующийОбъектИБ(ЗначениеИсточника, ТипОбъектаИБ);
Если НЕ Ответ.ОбъектНайден Тогда
Ответ.ОбъектБазы = СоздатьНовыйОбъектБазы(ЗначениеИсточника, ТипОбъектаИБ);
Если НЕ Ответ.ОбъектБазы = Неопределено Тогда
Ответ.ОбъектНайден = Истина;
КонецЕсли;
КонецЕсли;

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

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

5 Comments

  1. Alex181818

    Благодарю!

    А можно конкретно расписать по регистру сведений, какой тип каждого измерения/ресурса?

    Reply
  2. Alexei_fox

    Добрый день, можно выложить конфигурацию с образцом регистра и его заполнением ?

    Reply
  3. Alexei_fox

    Подпишусь на темку !

    Reply
  4. Alexei_fox

    {Форма.Форма.Форма(753,28)}: Переменная не определена (МАВСинхронизацияОбъектов)

    НоменклатураПоСтроке = <<?>>МАВСинхронизацияОбъектов.СинхронизироватьОбъекты(КодКомитента + «_комиссия», «СправочникМенеджер.Номенклатура»).ОбъектБазы;

    МАВСинхронизацияОбъектов — где откопать ?

    Reply
  5. Alexei_fox

    Еще вопрос … каким образом можно остатки перекинуть ? Не пробовали ? Может грузануть инвентаризацию и из нее создать оприходование номенклатуры ?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *