Обработка формирования файлов экспорта контрагентов (DBF) для загрузки в M.E.DOC IS


Данная обработка формирует пакет файлов DBF (контрагент-Partner.dbf, адрес-Partnadr.dbf, телефон-Partntel.dbf) для возможности последующей загрузки в систему M.E.DOC IS.
Обработка работает для конфигураций "1С:Предприятия 7.7": "Бухгалтерский учет для Украины", "Производство+Услуги+Бухгалтерия для Украины", "Комплексная для Украины".

Обработка реализует возможность заполнения карточки контрагента в системе M.E.DOC IS в минимально необходимой структуре (без разбивки адреса по полям: индекс, страна, область, район, улица, тип улицы, и т.д.). Адрес и телефон импортируется в виде представления.
Для загрузки DBF файлов в систему M.E.DOC IS в M.E.DOC IS нужно открыть картотеку контрагентов (розділ — довідники — контрагенти) — файл імпорт з DBF — указать папку для обмена.

Особенностью информационной структуры контрагентов в M.E.DOC IS является структура, в которой Телефон подчинен адресу, адрес — контрагенту, изменения в карточке контрагента — подчинены таблице История. Все поля идентифицируются числовым десятизначным кодом (для каждой таблицы свой). Для простоты использования использовал код контрагента (без префикса) из справочника Контрагенты 1С (при повторной выгрузке код будет таким же). 

Описание структуры файлов обмена получен следующим способом: в системе M.E.DOC IS формируем карточку контрагента, в которой заполняем все поля. Созданную запись экспортируем в DBF. Полученные таблицы позволяют определить структуру файлов для импорта.

 При експопрте через dbf существует две сложности: 1) нужно перед 
Експортом получить последние коды классификаторов МЕДКа: контрагенты, адреса, телефоны, договора. 2) При повторном експорте объектов коды соответсвенные  желательно присвоить с предыдущей выгрузки. Данная обработка наверное временная. Для обхода этих двух условий желательно експортировать через OLE объект.

Обработка написана под свои нужды — поэтому выкладываю её в таком виде, как есть.

Кроме данной обработки ведется работа по разработке для «Бухгалтерский учет для Украины 7.7» заполнения адреса и телефона контрагента  (справочники с класификаторами и импорт в DBF) «1в1» как в M.E.DOC IS.  Если надо — пишите.

6 Comments

  1. script

    Автор исправь заголовок. «Обработка формирования файлов импорта контрагентов (DBF) для загрузки в M.E.DOC IS»

    Импортируют (загружают) «из», а не «в». Если «в» то — экспортируют.

    Reply
  2. popenko

    полезно. для борьбы бухов с медком. но не совсем понятно по — Кроме данной обработки есть в наличии разработка для «Бухгалтерский учет для Украины 7.7» заполнения адреса и телефона контрагента (справочники с класификаторами и импорт в DBF) «1в1» как в M.E.DOC IS

    Reply
  3. vdolynsky

    (2) popenko,

    В МЕДку адрес состоит из 12 полей: индекс, страна (справочник), область(справочник), район (справочник), район города (справочник), город (справочник), тип улицы (справочник), улица, № дома, дробь номера дома, корпус, тип квартиры(справочник), номер квартиры. В даный момент работаю над реализацией такой структуры в «Бух.учет для Украины».

    Reply
  4. popenko

    спасибо (3)

    по поводу обработки — есть вариант обмена в формате XML, мне кажется так проще. По поводу адреса — в «бухгалтерии» текстовое поле, но была конфигурация АБТ 3,5 — 3,6 и там эта проблема обыгрывалась — бухгалтер заполняла адрес через дополнительную обработку (получалось как шаблон), поля переводились в тестовую строку и через точку с запятой записывались в адрес.

    Reply
  5. script

    У медка есть файлик medoc1c.dll, а еще в каталоге медка есть папка с файлом Инструкция по СОМ объектам.pdf

    И если детально ознакомиться с материалом то окажеться что можно сделать вот так:

    Простым копированием код работать не будет — предоставлен как пример возможностей.

    App = Новый COMОбъект(«MEDOC.ZApplication»);

    или для 7.7

    App=СоздатьОбъект(«MEDOC.ZApplication»);

    Dict = App.GetDictionary();

    tabl = Dict.Open(«HBPARTNER»);

    tabl.Edit();

    tabl.Append();

    КлючПартнера=Dict.GetGenID(«HBPARTNER»);

    tabl.Fields.Item(«CODE»).Value = КлючПартнера;

    tabl.Fields.Item(«IDPARTNERGRP»).Value = СокрЛП(КодГруппы);

    Если СтрДлина(СокрЛП(Контр.КодПоЕдрпоу))<=10 Тогда

    tabl.Fields.Item(«NUM»).Value= СокрЛП(Контр.КодПоЕдрпоу);

    Иначе

    Предупреждение(НСтр(«ru = ‘ЕДРПОУ слишком длинное: ‘;uk = ‘ЄДРПОУ надто велике: ‘») + СтрДлина(Контр.КодПоЕдрпоу) + НСтр(«ru = ‘ символов!’;uk = ‘ символів!'»));

    Возврат;

    КонецЕсли;

    tabl.Fields.Item(«SHORTNAME»).Value= Лев(СокрЛП(Контр.Наименование), 150);

    tabl.Fields.Item(«NAME»).Value= Лев(СокрЛП(Контр.НаименованиеПолное), 250);

    tabl.Fields.Item(«INDTAXNUM»).Value= СокрЛП(Контр.ИНН);

    tabl.Fields.Item(«CODENDS»).Value= СокрЛП(Контр.НомерСвидетельства);

    tabl.Fields.Item(«NREZ»).Value = ?(Контр.НеЯвляетсяРезидентом=Истина, 1,0);

    isReadOnly = Dict.IsReadOnly();

    Если НЕ isReadOnly Тогда

    Dict.Save();

    КонецЕсли;

    Дальше записать адрес

    и готово.

    Reply
  6. vdolynsky

    (5) script, Спасибо за предложенный вариант. В моём случае так не получится — у заказчика 1с и МЕДОК через OLE не соединить.

    Reply

Leave a Comment

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