|
Ищу примеры реализации обмена с Диадок с помощью COM-библиотеки | ☑ | ||
---|---|---|---|---|
0
Evgenius
18.06.21
✎
08:51
|
Мне нужно реализовать обмен нескольких разных самописных конфигураций с системой ЭДО Диадок (Контур).
Для практика там ничего сложного не должно быть, но. Из-за оторванности в последние годы от настоящей практики явно отстаю от сроков. Документация Контура есть, но по-моему достаточно куцая - м.б., это моя упавшая квалификация уже не позволяет быстро в ней освоиться. Так что, вынужденно ищу примеры реализации - именно с помощью COM-библиотеки Диадок! - следующих алгоритмов: 1) заполнение и корректировка типового документа ПоступлениеТоваровУслуг или аналогичного (возможно, у вас есть пример для НЕ-типовой конфигурации) по данным объекта UniversalTransferDocument 2) подписание и отказ в подписании документа UniversalTransferDocument - т.е., создание и заполнение данными объекта PackageContentItem с типом AcceptDocument в PackageSendTask2 3) заполнение данными объекта UniversalTransferDocument на основании какого-либо документа передачи товаров 1С (ПоступлениеТоваровУслуг или аналогичного) и отправка документа в Диадок. 4) создание и отправка корректировочного документа (UCD) по имеющемуся UniversalTransferDocument. Готов рассмотреть возможность вознаграждения (называйте условия). Спасибо за любую информацию и предложения по делу. |
|||
1
butterbean
18.06.21
✎
09:09
|
(0)
1. В результате должно быть несколько обработок на каждую конфу? Или ты пилишь одну обработку сразу на несколько баз? 2. Если обработка должна по функционалу и интерфейсу быть как типовая диадоковская, то почему бы ее не переделать? |
|||
2
Evgenius
18.06.21
✎
09:14
|
(1) Да, в результате будет несколько обработок и один общий модуль для работы с Диадоковской COM-dll. Вот для него и нужны развернутые примеры реализации, в документации большую часть занимает длинный перечень объектов, из которых не всегда понятно, какие юзать и как, примеры куцые.
|
|||
3
Evgenius
18.06.21
✎
09:27
|
(1) Насчет типовой Диадоковской: потому что она (ИМХО) написана чудовищно. И я просто заманался её разбирать, честно говоря.
Примерная архитектура: 1) Основной файл обработки содержит с десяток доп. модулей в двоичном виде 2) все эти модули (1) загружаются в хранилище и уже оттуда в память - у меня отладчик с ними не работает 3) все эти модули (1) вызывают друг друга и подключаемые модули для типовых конфиг, подключаемые модули для типовых конфиг вызывают обратно модули, которые запущены из обработки, а к некоторым из тех присоединены и загружаются (как в (1)) еще модули и - самое забавное - там в какой-то момент обнаруживается еще один слой прикладных модулей для типовых конфиг, присоединенный к другим обработкам. |
|||
4
kobzon2
18.06.21
✎
09:44
|
(3) Да, Да. Всё реализовано через Вычислить и Выполнить.Хрен отладишь. Но разработчики же как то отлаживают свои модули?
|
|||
5
Evgenius
18.06.21
✎
09:47
|
(4) Ну, они наверняка многое просто знают на память, а во вторых, может, автотестами или модульными тестами всё покрывают...
В общем, для меня типовая обработка представляет трудность. |
|||
6
rozer76
18.06.21
✎
10:09
|
(5) диадокстандарт - макеты выгружаются в файлы - все норм отлаживается. Можете глянуть диадокпро как вариант. Писать через нативапи или ком такую глыбу такой себе вариант )
|
|||
7
Evgenius
18.06.21
✎
10:13
|
(6) Они там не выгружаются в файлы, они там через помещение в хранилище и последующее указание адреса в хранилище загружаются. У меня отладчик так не работает. А выгружать самому каждый файл (т.е., сначала переписать где-то тот код, который подключает обработку) - тоже так себе вариант.
Короче, я прошу советов и примеров именно и только по COM-библиотеке. По типовым обработкам - считайте, что этот вариант уже обсудили и закрыли тему ). |
|||
8
Zapal
18.06.21
✎
10:28
|
(7) поищи в настройках флажок "отладка"
тогда оно предложит выгрузить все обработки и будет их вызывать. Отлаживается нормально |
|||
9
rozer76
18.06.21
✎
10:30
|
(7) ну примеры https://infostart.ru/1c/articles/840032/ а вообще смотри все в обработке - там как раз все через DiadocComApi и работает. Контуровцы видимо и делали обертку "DiadocComApi" чтобы свою 1с-обработку пилить. Так проще нежели через API видимо им )
|
|||
10
rozer76
18.06.21
✎
10:31
|
(8) +1
|
|||
11
rozer76
18.06.21
✎
10:33
|
Сейчас чот и сам задумался - диадокСтандарт настолько раскрячил + ПМ что даже и не знаю стоит может на диадокПРО перейти. Может кто знает чем отличается ПРО ? У Контура не нашел инфы (
|
|||
12
Evgenius
18.06.21
✎
10:38
|
(8) Да, вот это я сам упустил, это бы помогло. Но и помимо этого там черт ногу сломит
(9) Спасибо, сейчас прочитаю это всё (11) ПРО - это "независимое" от конфигурации решение, вот с той самой архитектурой, которая описана в (3). Т.е., независимость очень относительная, если для "функциональных" вложенных модулей требуются еще вложенные модули для отдельных конфиг. |
|||
13
ssh2006
18.06.21
✎
11:51
|
(12) переходи на модуль ПРО. Это самый разумный вариант. Я вот недавно закочил внедрение. В подключаемом модуле полностью самописное заполнение списка на отправку, формирование пакетов и заполнение контента UniversalTransferDocument
Документации достаточно. |
|||
14
ssh2006
18.06.21
✎
11:53
|
(3) с отладкой что стандарта, что про придется поковырятся, но все отлаживается. В этом смысле ПРО гораздо проще внедрять
|
|||
15
ssh2006
18.06.21
✎
11:58
|
(11) ПРО работает через вызов HTTP api, его гораздо проще кастомизировать, добавлять регламентные задания, автоматические действия при изменении статусов документов и т.д. Также там есть вариант хранения - на отдельной подсистеме - в конфу на поддержку добавляются несколько справочников и регистров сведений и суть работы идет от периодической синхронизации 1С с сервером.
|
|||
16
ssh2006
18.06.21
✎
12:01
|
(12) добавляешшь в свою конфу объекты диадока - cfu идет в комплекте с модуле ПРО и дальше по документации начинаешь писать процедуры подключаемомго модуля:
https://1c-pro-docs.diadoc.ru/ru/latest/proc/pm/Podgotovka_Paketa_Dlya_Otpravki.html |
|||
17
ssh2006
18.06.21
✎
12:04
|
Орати внимание на событие ОпределитьТипЗначенияОбъекта
https://1c-pro-docs.diadoc.ru/ru/latest/func/pm/Opredelit'_Tip_Znacheniya_Obyekta.html Позволяет определить тип используемых справочников Организации и Контрагенты. как раз для самописных конфигураций |
|||
18
ssh2006
18.06.21
✎
12:07
|
Также советую выгрузить из обработки какой-нибудь типовой подключаемый модуль, например для УТ 10.3 или БП 3, и брать его как пример , смотреть как там наполнены процедуры событий.
Посмотреть заполнение контента по типовым процедурам как пример - смотри вложенную обработку ТиповойМодульДиадок.epf выгружается при включении отладки |
|||
19
Evgenius
18.06.21
✎
12:19
|
(13) Спасибо, но я же предложил считать, что эту тему обсудили. Если нужно еще объяснений: я не практик, который 7 дней в неделю занимается кодированием и чтением чужого кода, для меня это нечитаемая вещь. Чтобы посмотреть пример заполнения документа во вложенном модуле модуля ПРО, к примеру, для УТ, необходимо частично разобрать:
ПМ_УТ_11.epf, Ядро.epf, ТиповойМодульДиадокУФ.epf, ТиповойМодульДиадок.epf (одно из приложений - на обычных формах; даже если встроить обработку в конфигу - всё равно не работает), Модуль_ИнтеграцияУниверсальный.epf, Модуль_ИнтеграцияУниверсальнаяЛогика.epf, Модуль_ИнтеграцияУТ103.epf Ради одного примера. И это не полный список. Спасибо, но смысл моей просьбы, как раз, помочь обойтись без этого. В (9) годный пример, может, и другие найдутся. |
|||
20
ssh2006
18.06.21
✎
12:22
|
(19) закажи тогда у них внедрение целиком, они это делают. Иначе наделаешь костылей, если не готов разбираться сам
|
|||
21
ssh2006
18.06.21
✎
12:23
|
Напишут подключаемый модуль для твоей конфы
|
|||
22
Evgenius
18.06.21
✎
12:29
|
(21)
а) Они не обещают внедрение меньше, чем за 2-3 месяца еще. Поэтому и решили попытаться сами. б) Это разные лицензии, COM-Api и модуль ПРО. Мы уже приобрели именно последний вариант. Костыли - ИМХО, это, как раз то, что у нас получится при попытке внедрить модуль ПРО при такой документации (ну недостаточно мне её для понимания, хоть тресни, возможно, я очень туп), и при нашей системе согласования документов. |
|||
23
Evgenius
18.06.21
✎
12:32
|
(22)+
"при нашей системе согласования документов" - Имеется в виду, что нам надо цеплять к этому нашу систему согласования. Вот для этого нужно точно знать, как работает чужой модуль. А в диадоковском модуле разбирать-не разобрать, как оно работает. |
|||
24
ssh2006
18.06.21
✎
12:34
|
Подумай, зачем тебе брать на себя такие вещи как авторизация, получения списков, отправка, подписание. Пускай этой остается на поддержке поставщика, чтобы это все не ломалось при обновлениях api и т.д. А вот если разобраться с подключаемым модулем - то решится основная задача подготовить данные для отправки в нужном формате, а даль модуль уже сам все сделает.
> ТиповойМодульДиадок.epf (одно из приложений - на обычных формах; даже если встроить обработку в конфигу - всё равно не работает), ее не надо встраивать. Запускать нужно только сам главный модуль. (23) в определенном месте ты пишешь запрос который выбирает нужные тебе документы готовые для отправки по вашей внутренней логике |
|||
25
Evgenius
18.06.21
✎
12:41
|
(24)
> ее не надо встраивать. Запускать нужно только сам главный модуль. Я выразился не совсем ясно. Вот его - главного модуля - управляемая форма не запустится, если оставить его внешней обработкой, а обычная его форма не работает, сразу не стали разбираться, почему. Поэтому я упоминал о встраивании. Com-Api - это тоже обновляемый поставщиком модуль-обертка, там есть методы авторизации, и в основном он тоже всё делает. |
|||
26
Evgenius
18.06.21
✎
12:42
|
(25)+
не дописал: и в основном он тоже всё делает сам ) |
|||
27
ssh2006
18.06.21
✎
12:43
|
(25) у меня обе формы без проблем из внешей обработки запускались
|
|||
28
Evgenius
18.06.21
✎
12:44
|
(24)
> в определенном месте ты пишешь запрос который выбирает нужные тебе документы готовые для отправки по вашей внутренней логике Там этого будет мало: нужно согласовывать входящие по многоэтажной схеме перед их подписанием |
|||
29
Evgenius
18.06.21
✎
12:47
|
(27) Ну, сразу не стали разбираться, что там за проблема. Вполне допускаю, что решаемая.
Но теперь направление уже выбрано - COM-API |
|||
30
ssh2006
18.06.21
✎
12:50
|
(25) ну в общем я тебе, как человек пиливший и стандарт с 2015 года (а там куча обновлений прошло и форматы документов и api) и ПРО совет дал.
с пол пинка тут не получится.. (28) согласование через диадок должно быть ? или ваша внутренняя система. |
|||
31
Evgenius
18.06.21
✎
12:52
|
(30) Согласование через нашу систему. ПОСЛЕ получения и ДО подписания
|
|||
32
Garykom
гуру
18.06.21
✎
12:53
|
||||
33
Garykom
гуру
18.06.21
✎
12:54
|
(29) >Но теперь направление уже выбрано - COM-API
лечиться кому то пора на устаревшую хрень заморачиваться чтобы потом словить |
|||
34
ptiz
18.06.21
✎
12:54
|
||||
35
Double_Medved
18.06.21
✎
12:56
|
Кто пользуется диадоком, расскажите в чем фишка. Они почти самые дорогие, техподдержка была отвратная, многие ошибки не расшифровывались. Типа в честный знак документ передан с ошибками. Все. Обработка для 1с у них такая себе, формы отрисовываются долго, тормозят, в коде я находил комментарии типа "пока так, потом нормально надо сделать", "если дата такая-то, то вывести картинку "поздравление для начальника"", куча запросов которые формируются кусками, хрен отладишь. и т.д.
Ушел от них год назад, чему очень рад и всем советую уйти |
|||
36
Garykom
гуру
18.06.21
✎
12:57
|
(35) Диадок это СКБ Контур
У них тарифы единые и они вполне себе на уровне, успевают за прогрессом Одни из немногих кто позволяют физикам ЭДО юзать |
|||
37
Double_Medved
18.06.21
✎
12:58
|
Особенно хреновый порядок оплаты - типа купи на месяц пакет 5000 документов. Если израсходуешь 4000, то 1000 сгорит. Если израсходуешь 5200 - после 5000 покупай еще пакет, а то отрубят.
Прям 90-ми веет такое наебательство |
|||
38
Double_Medved
18.06.21
✎
12:59
|
(36) Типа плюс именно для физ лиц? Которые даже не ИП?
ХЗ, у меня между ООО и ИП куча доков гоняется, зачем физлицу ЭДО? |
|||
39
Garykom
гуру
18.06.21
✎
12:59
|
(37) покажи где ту увидел пакет на 5000 тут https://www.diadoc.ru/price ?
|
|||
40
ssh2006
18.06.21
✎
12:59
|
(35) крупняк весь в Диадоке есть, на моей выборке
|
|||
41
Garykom
гуру
18.06.21
✎
13:00
|
(38) Удаленные сотрудники
|
|||
42
Double_Medved
18.06.21
✎
13:01
|
(36) и в чем плюс "единства тарифов", если они дорогие и надо блт знать сколько тебе доков надо в месяц или квартал, а остатки сгорят, что делает их как бы еще дороже?
|
|||
43
ptiz
18.06.21
✎
13:01
|
(35) Зависит от ваших контрагентов. Например, большинство наших клиентов - это Сбис и Диадок. Поэтому приходится поддерживать интеграцию с двумя операторами (слава богу, не больше).
|
|||
44
ssh2006
18.06.21
✎
13:02
|
(31) входящие доки у тебя сохраняются с Справочник ДиадокДокументы. Дальше крутишь их внутри 1С как хочешь до подписания
Если же хочешь все полностью на себя брать , тогда через API делай. У них есть услуга, можно покупать часы консультаций именно по работе с API |
|||
45
Garykom
гуру
18.06.21
✎
13:03
|
(42) Тебя кто заставлял покупать большой пакет? Купи меньше а как кончится докупи еще
|
|||
46
Double_Medved
18.06.21
✎
13:04
|
(39) ну 3000 или 6000, какая разница.
Каким хреном вообще фирма должна посчитать сколько им надо документов в месяц, квартал, год? Ну типа если ты дочка Газпрома, и 3 реализации в день и так 10 лет, то наверно можно, да. А если бизнес реальный? Где торговые звонят гоняют и втюхивают другим твои товары, стырые отваливаются и т.д., кто за будущий год может посчитать что документов будет 8000 или 13000? |
|||
47
Double_Medved
18.06.21
✎
13:06
|
(45)И купить маленький пакет подороже (за каждый документ), и заставить бухгалтера каждое утро проверять сколько осталось? И если отгрузок в день 20-70, а осталось 47 документов, ей начинать орать и бежать срочно платить?
Ну, такой скоткий тариф наверно работает если ты на рынке уникален и монополен. Слава богу я ушел к другому оператору, где оплата постфактум за квартал. |
|||
48
Garykom
гуру
18.06.21
✎
13:08
|
(47) там разница минимальна за документ, придираешься
|
|||
49
Garykom
гуру
18.06.21
✎
13:08
|
(48)+ кто мешает договориться об индивидуальных условиях постоплаты?
|
|||
50
Double_Medved
18.06.21
✎
13:13
|
(49)А кто диадоку мешает самим сделать по-человечески? И да, у них в любом пакете сильно дороже чем у многих других (за документ)
Нафига им настолько переплачивать, еще и с неудобным графиком оплат - я так и не понял |
|||
51
Garykom
гуру
18.06.21
✎
13:22
|
(50) У них уже сделано. Ты просто не умеешь общаться с менеджерами их
|
|||
52
Garykom
гуру
18.06.21
✎
13:25
|
(50) >у них в любом пакете сильно дороже чем у многих других (за документ)
сравни сам https://taxcom.ru/dokumentooborot/fajler/ и https://www.diadoc.ru/price 6.5 р за документ только 1000 и 1200 доков и небольшая разница |
|||
53
Double_Medved
18.06.21
✎
13:36
|
(51)Во-во, подход из 90-х. Типа не менеджер должен мне объяснить, почему надо у них услугу покупать. (хотя кроме них вариантов куча) А я должен клянчить нормальные условия оплаты, а не указанные на сайте.
Короче хорошо что сейчас есть выбор, и год сижу на операторе гораздо дешевле диадока. Но сейчас думаю переходить на Docrobot, там чем техподдержка шикарная, все поля у документов расписаны, и т д и тп. И внезапно график оплат сразу предложили адекватный (постфактум) |
|||
54
Evgenius
18.06.21
✎
14:15
|
(34) Это общедоступная дока - мне её как раз не хватило (
|
|||
55
Evgenius
19.06.21
✎
19:23
|
Так и не нашел толком примеров по подписанию документа - кроме того, что в документации, где фактически есть только комментарий
"// Предполагаем, что есть функции заполнения контента второго титула формализованных документов" Очень доступно, блин. М.б., у кого-то есть представление об объектной модели, позволяющей подписывать документы? |
|||
56
ptiz
19.06.21
✎
19:45
|
(55) УПД я подписываю так. Про это речь?
Если документ не в закрытом пакете: ReplySendTask = ДокументДиадок.CreateReplySendTask2("AcceptDocument"); Reflector = Новый ComОбъект("AddIn.Diadoc.Reflector"); МассивItem = ПолучитьМассивИзКоллекции(ReplySendTask.ContentItems); Для каждого Item Из МассивItem Цикл Content = Item.Content; TypeDesc = Reflector.Describe(Content); МассивСвойств = TypeDesc.GetPropertiesNames(); ИмяСвойства = МассивСвойств.GetItem(0); Doc = Content[ИмяСвойства]; Doc.DocumentCreator = Организация.НаименованиеПолное; Doc.OperationContent = "Реализация"; Signers = Doc.Signers; Signers.AddItems(); SignerReference = Signers.items.GetItem(0).SignerReference; SignerReference.BoxId = ОрганизацияДиадок.Id; SignerReference.CertificateThumbprint = ОрганизацияДиадок.Certificate.Thumbprint; ReplySendTask.Send(); Если закрытый пакет: ПакетДиадок = ДокументДиадок.GetDocumentPackage(); ReplySendTask = ПакетДиадок.CreateReplySendTask2("AcceptDocument"); Reflector = Новый ComОбъект("AddIn.Diadoc.Reflector"); МассивItem = ПолучитьМассивИзКоллекции(ReplySendTask.ContentItems); Для каждого Item Из МассивItem Цикл Content = Item.Content; TypeDesc = Reflector.Describe(Content); МассивСвойств = TypeDesc.GetPropertiesNames(); ИмяСвойства = МассивСвойств.GetItem(0); Если ИмяСвойства = "Type" Тогда Продолжить; КонецЕсли; Doc = Content[ИмяСвойства]; Doc.DocumentCreator = Организация.НаименованиеПолное; Doc.OperationContent = "Реализация"; Signers = Doc.Signers; Signers.AddItems(); SignerReference = Signers.items.GetItem(0).SignerReference; SignerReference.BoxId = ОрганизацияДиадок.Id; SignerReference.CertificateThumbprint = ОрганизацияДиадок.Certificate.Thumbprint; ReplySendTask.Send(); |
|||
57
Evgenius
20.06.21
✎
20:37
|
(56) Да, именно оно, спасибо!
А с помощью каких источников разбирались с этим? Откуда сам перечень необходимых действий знаете? ) |
|||
58
ptiz
21.06.21
✎
09:01
|
(57) Разбирался методом чтения ошибок и тыка в отладчик.
|
|||
59
Evgenius
21.06.21
✎
15:32
|
(58) Круто
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |