Появилась такая задача. Из самодельной учётной системы, надо организовать экспорт некоторых документов в 1с (самописная конфигурация, основанная на 1с:Бухгалтерия 7.7). Т.е. я могу чётко определить соответствие каждого документа в моей системе с документом в 1с (то же и с полями).
После не слишком длительного изучения 1с вроде как понял, что для этого подходит XML. Так же, где-то что-то читал про поддержку некоего стандарта commerceML в 1с.
И теперь вопрос: стоит ли мне из своей программы экспортировать документы по схеме commerceML.
Eсли да, то какое преимущество (типа "вообще под 1с ничего писать не придётся") мне это даст.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, ivanpupok, Вы писали:
I>>И теперь вопрос: стоит ли мне из своей программы экспортировать документы по схеме commerceML.
AVK>Не стоит. ПРоще экспортировать в произвольном xml. CommerceML это прежде всего обмен финансовыми транзакциями.
AVK>
Спасибо.
Тогда ещё вопрос, а вообще оправдано ли здесь использование XML ? какие ещё есть способы импорта в 1с ? Чем чревато писать нужную информацию напрямую в базу ?
Где можно скачать/посмотреть примеры xml'ного импорта для 1с ?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, ivanpupok, Вы писали:
I>>И теперь вопрос: стоит ли мне из своей программы экспортировать документы по схеме commerceML.
AVK>Не стоит. ПРоще экспортировать в произвольном xml. CommerceML это прежде всего обмен финансовыми транзакциями.
AVK>
Спасибо.
После недолгого раздумья у меня получилась такая схема:
1. В некоей программе человек ставит в соответствие реквизит нужного документа в 1с атрибуту в XML файле, документу из 1с значение соответствующего атрибута (или элемент XML'ного файла). Где-то всё это запоминается.
2. В 1С написана некая универсальная процедура, которая работает не с одним типом документов, а может обработать любой, которая после преобразования (из пункта 1 понятно что чему соответствует), кладёт его в базу 1с.
Желательно, чтобы при установки этого механизма пользователю не приходилось лазить в конфигуратор.
В связи с этим возникают такие вопросы:
1) Как добавить к документу 1С реквизит (поле, атрибут) _програмно_? Это нужно для добавления к нужным полям уникальных идентификаторов (GUID).
2) По связи Документов/реквизитов из 1С с атрибутами/элементами XML: К чему собственно привязываться — имя документа/реквизита, его ID какой-нибудь уникальный (если есть такой)? Если ID'ы у документа и его элементов всё-таки есть, то как его достать ?
3) По поводу процедуры в 1с: делать её на скриптах 1С или лучше использовать OLE. И при её написании, не возникнет ли каких-нибудь непреодолимых трудностей.
4) Можно ли где-нибудь в интернете посмотреть/скачать подобные утилитки (если и не подобные, то хотя бы очень похожие).
5)Возможно ли это сделать, или в моей схеме есть какие-то трудности, которые в силу структуры 1С преодолеть невозможно.
6) Где взять объектную схему 1с, чтобы использовать при доступе через OLE.
Здравствуйте, ivanpupok, Вы писали:
I>В связи с этим возникают такие вопросы: I>1) Как добавить к документу 1С реквизит (поле, атрибут) _програмно_? Это нужно для добавления к нужным полям уникальных идентификаторов (GUID).
Никак. Уникальный идентификатор поля это ИмяОбъекта.ИмяПоля.
I>2) По связи Документов/реквизитов из 1С с атрибутами/элементами XML: К чему собственно привязываться — имя документа/реквизита, его ID какой-нибудь уникальный (если есть такой)?
ИМХО лучше имя
I>Если ID'ы у документа и его элементов всё-таки есть, то как его достать ?
1cv7.dd
I>3) По поводу процедуры в 1с: делать её на скриптах 1С или лучше использовать OLE. И при её написании, не возникнет ли каких-нибудь непреодолимых трудностей.
Ни разу не видел внятного описания OLE интерфейсов 1С, хотя по слухам такой вроде бы есть. tlb отсутствует. ИМХО лучше все таки скриптами.
I>4) Можно ли где-нибудь в интернете посмотреть/скачать подобные утилитки (если и не подобные, то хотя бы очень похожие).
В стандартной поставке 9-й торговли и 4 бух-ии есть универсальная загрузка/выгрузка данных — CDImport.ert/CDExport.ert.
I>5)Возможно ли это сделать, или в моей схеме есть какие-то трудности, которые в силу структуры 1С преодолеть невозможно.
Плохая документированность объекта Метаданные и скудость 1Сного RTTI.
I>6) Где взять объектную схему 1с, чтобы использовать при доступе через OLE.
I>>И теперь вопрос: стоит ли мне из своей программы экспортировать документы по схеме commerceML.
AVK>Не стоит. ПРоще экспортировать в произвольном xml. CommerceML это прежде всего обмен финансовыми транзакциями.
почему же не стоит?
как раз наооборот — стоит.. Если документы торговые..
Эта спецификация не только для финасовых транзакций нужна (вообще зачем парить такими умными фразами парня?)
Единственная проблема — синхронизировать твои и 1С номенклатуры.. В типовых 1С для этого используется GUID можно слизать оттуда генерацию.. Загрузка XML данных тоже есть.. так что думаю тебе надо будет только 1С-ые GUID к себе синхронизировать и правильный документ обмена мочкануть.. здесь стандарт
ЗЫ: я 1С не занимаюсь, поэтому под рукой нет этих обработок.. обратись к 1С-ам на их местах обитания
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, ivanpupok, Вы писали:
I>>В связи с этим возникают такие вопросы: I>>1) Как добавить к документу 1С реквизит (поле, атрибут) _програмно_? Это нужно для добавления к нужным полям уникальных идентификаторов (GUID).
AVK>Никак. Уникальный идентификатор поля это ИмяОбъекта.ИмяПоля.
Я тут неправильно вопрос задал. У меня есть в 1с некий документ со своими реквизитами шапки (номер документа, дата создания и проч.), то же и со справочником. Для синхронизации документов/справочников 1с'а и моей программы нужно добавить в мою программу GUID'ы к каждому объекту и в 1с тоже самое, чтобы понимать добавлять ли мне данный объект (документ, товар, и проч) в 1С или он уже там есть.
В общем можно ли добавить к документу 1с реквизит програмно (не из конфигуратора) ?
Прошу прощения за невнятность вопросов, т.к. терминология 1с'а мне пока не совсем знакома.
Здравствуйте, dad, Вы писали:
I>>>И теперь вопрос: стоит ли мне из своей программы экспортировать документы по схеме commerceML.
AVK>>Не стоит. ПРоще экспортировать в произвольном xml. CommerceML это прежде всего обмен финансовыми транзакциями.
dad>почему же не стоит? dad>как раз наооборот — стоит.. Если документы торговые..
dad>Эта спецификация не только для финасовых транзакций нужна (вообще зачем парить такими умными фразами парня?)
dad>Единственная проблема — синхронизировать твои и 1С номенклатуры.. В типовых 1С для этого используется GUID можно слизать оттуда генерацию.. Загрузка XML данных тоже есть.. так что думаю тебе надо будет только 1С-ые GUID к себе синхронизировать и правильный документ обмена мочкануть.. dad>здесь стандарт
dad>ЗЫ: я 1С не занимаюсь, поэтому под рукой нет этих обработок.. обратись к 1С-ам на их местах обитания
Таким образом получается, что для того, чтобы использовать импорт документов по данной схеме, я должен выдрать из типовой конфигурации куски, отвечающие собственно за этот импорт и проч.
Но если моя конфигурация (т.е. та, в которую мне и надо документы отправлять) не типовая, некоторые типы документов по схеме CommerceML описать нельзя, и некоторые реквизиты тоже не "влезают" в эту схему, то насколько оправдано использование CommerceML ?
Ведь во первых, мне придётся довольно сильно расширить эту схему.
Во вторых написать ещё кучу скриптов, которые будут обрабатывать мои "особенные" документы
И потом, ведь commerceML стандарт для обмена док-тами между предприятиями (т.н. b2b), что, в общем то поддаётся стандартизации, а в моём случае документ и его реквизиты могут быть произвольными.
Главный вопрос, из-за которого я всё это затеял, это оценка трудозатрат (может и деньгозатрат) на эту работу. То есть, что касается выгрузки документовиз моей системы, тут проблем вообще никаких нет, их я могу выгрузить в абсолютно любом виде. Мне же хотелось бы минимизировать объем работ, которые надо сделать в 1с.
I>>В общем можно ли добавить к документу 1с реквизит програмно (не из конфигуратора) ? AVK>ИМХО нельзя
ole только на доступ к данным предоставляются..
Узнать структру метаданных (но не изменять) ты можешь..
Есть возможность расширения функционала.. т.е. в принципе — ты можешь сделать наоборот — написать модуль который из 1С будет лазить к твоей программе(базе), а не из твоей программы к 1С..в этом случае (да теоретически и в обратном) тебе вообще не нужны промежуточные обменные файлы..
могу выслать самплы (давай и-мэйел) по написанию расширений к 1С , описание тоже есть — но не у меня — повторюсь — обратись к 1С-ам..
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Здравствуйте, dad, Вы писали:
I>>>В общем можно ли добавить к документу 1с реквизит програмно (не из конфигуратора) ? AVK>>ИМХО нельзя
dad>ole только на доступ к данным предоставляются.. dad>Узнать структру метаданных (но не изменять) ты можешь.. dad>Есть возможность расширения функционала.. т.е. в принципе — ты можешь сделать наоборот — написать модуль который из 1С будет лазить к твоей программе(базе), а не из твоей программы к 1С..в этом случае (да теоретически и в обратном) тебе вообще не нужны промежуточные обменные файлы.. dad>могу выслать самплы (давай и-мэйел) по написанию расширений к 1С , описание тоже есть — но не у меня — повторюсь — обратись к 1С-ам..
В принципе задумка-то была (как всегда) сделать некий универсальный механизм обмена. Т.е. пользователь ставит программу, проставляет соответствия некие, и потом качает из XML'я данные.
Но это как раз и подразумевает изменение структуры метаданных 1с'a програмно.
То есть ты считаешь, что проще из 1с через ado вытянуть из моей базы инф-ю, и для каждого типа док-та написать на 1с процедурку, которая будет эти самые док-ты преобразовывать и записывать ?
I>То есть ты считаешь, что проще из 1с через ado вытянуть из моей базы инф-ю, и для каждого типа док-та написать на 1с процедурку, которая будет эти самые док-ты преобразовывать и записывать ?
Это архитектурные решения. Смотри сам. Псотавь 1С покрути ее то се..
Там есть универсальный импорт и схема импорта настраивается..
Главное попроси нужные обработки у 1С-ов..
I>Расширение функционала пришли пож-та .
на с++ послал
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)