Загрузка из Медка документов
Загрузка из Медка документов
Как выполнить с помощью COM- технологии, загрузку налоговой накладной(которую прислал контрагент на утверждение) во внешнюю учетную систему?
-
- Повідомлень: 24
- З нами з: 28 травня 2014, 11:53
Re: Загрузка из Медка документов
Вам необходимо:
1) Найти документ.
2) Зачитать его поля.
Все методы, которые нужно использовать описаны в инструкции по COM-объектам (интеграция с учетными системами), которая есть в корне M.E.Doc (help-manuals-Инструкция по COM-объектам)
1) Найти документ.
2) Зачитать его поля.
Все методы, которые нужно использовать описаны в инструкции по COM-объектам (интеграция с учетными системами), которая есть в корне M.E.Doc (help-manuals-Инструкция по COM-объектам)
Re: Загрузка из Медка документов
Извините, за настойчивость. Алексей ( aleksiychuk) а Вы инструкцию сами читали то?
Я например перечитал несколько раз и не увидел. Как я могу из "реестра первичных документов" в МЕДКЕ прочитать только налоговые накладные, например за 01/07/2014 и загрузить их в свою учетную систему.
Мне как минимум надо получить массив со следующими данными.
- номер налоговой накладной
- номер ЕДРПОУ контрагента или налоговый номер
- суммы итоговые (20%, 0% и т.д. колонки в НН) для без НДС - Усього за розділом I в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для НДС - Податок на додану вартість - розділ III в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для ИТОГО. - Загальна сума з ПДВ - розділ IV в НН
Я например перечитал несколько раз и не увидел. Как я могу из "реестра первичных документов" в МЕДКЕ прочитать только налоговые накладные, например за 01/07/2014 и загрузить их в свою учетную систему.
Мне как минимум надо получить массив со следующими данными.
- номер налоговой накладной
- номер ЕДРПОУ контрагента или налоговый номер
- суммы итоговые (20%, 0% и т.д. колонки в НН) для без НДС - Усього за розділом I в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для НДС - Податок на додану вартість - розділ III в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для ИТОГО. - Загальна сума з ПДВ - розділ IV в НН
Re: Загрузка из Медка документов
Может в инструкции по СОМ-объектам (интеграция с учетными системами) это раздел 2.4 ?
Вроде как ф-я DocumentsDataSet . Но я не понял что я получу за "Объект таблица документов по условию". Как данные вытаскивать из этого обьекта?
>Получить список документов по условию
>Параметры:
>String CondString – строка условия поиска. Должна иметь
>стандартный синтаксис оператора SQL WHERE.
>Возвращает:
>Объект таблица документов по условию .
Вроде как ф-я DocumentsDataSet . Но я не понял что я получу за "Объект таблица документов по условию". Как данные вытаскивать из этого обьекта?
>Получить список документов по условию
>Параметры:
>String CondString – строка условия поиска. Должна иметь
>стандартный синтаксис оператора SQL WHERE.
>Возвращает:
>Объект таблица документов по условию .
Re: Загрузка из Медка документов
Уважаемые программисты! Я получу ответ на свой вопрос?
Как данные вытаскивать из этого обьекта DocumentsDataSet ?
Как данные вытаскивать из этого обьекта DocumentsDataSet ?
Re: Загрузка из Медка документов
Кроме всего прочего программа не понимает строку
filterTbl:Fields:Item("STAN")
filterTbl:Fields:Item("STAN")
Re: Загрузка из Медка документов
Может вообще нельзя из МЕДКА прочитать данные о полученных налоговых накладных от контрагента из модуля "Реестр первичных документов"?
Так скажите, а то я уже второй день мучаюсь.
Так скажите, а то я уже второй день мучаюсь.
Re: Загрузка из Медка документов
И как-то "STAN " - абсолютно не ассоциируется с направлением.
Из инструкции
-----------------------------
Для новой первички, STAN может принимать значения:
-15 Всі
1 Вхідний
2 Вихідний
-2 Архів
1 Корзина
---------------------------------------------
Ведь в модуле "реестр первичных документов" в Медке СТАН - это (всі, на опрацюванні, архів, корзина) ,
а НАПРЯМОК (всі, вхідні,вихідні).
Что-то логика хромает.
Из инструкции
-----------------------------
Для новой первички, STAN может принимать значения:
-15 Всі
1 Вхідний
2 Вихідний
-2 Архів
1 Корзина
---------------------------------------------
Ведь в модуле "реестр первичных документов" в Медке СТАН - это (всі, на опрацюванні, архів, корзина) ,
а НАПРЯМОК (всі, вхідні,вихідні).
Что-то логика хромает.
Re: Загрузка из Медка документов
filterTbl.Fields.Item("DOCTYPE").Value = 0; //тип документа
filterTbl.Fields.Item("PERFROM").Value = "01.01.2012"; //период с
filterTbl.Fields.Item("PERTO").Value = "01.01.2013"; //период по
filterTbl.Fields.Item("PARTNEREDRPOU").Value = "9912312611"; //ЕДРПОУ контрагента
filterTbl.Fields.Item("PARTNERDEPT").Value = ""; //Код филиала контрагента
filterTbl.Fields.Item("STAN").Value = 2; //1 - входящие 2 - исходящие
reestrFil.ApplyFilter();
Где взять перечень Item. Так как вижу что нет Item, который переключает дату с позиции "За период" на "Интервал".
Так как установка PERFROM и PERTO ничего не дает, если не переключить в позицию "Интервал".
filterTbl.Fields.Item("PERFROM").Value = "01.01.2012"; //период с
filterTbl.Fields.Item("PERTO").Value = "01.01.2013"; //период по
filterTbl.Fields.Item("PARTNEREDRPOU").Value = "9912312611"; //ЕДРПОУ контрагента
filterTbl.Fields.Item("PARTNERDEPT").Value = ""; //Код филиала контрагента
filterTbl.Fields.Item("STAN").Value = 2; //1 - входящие 2 - исходящие
reestrFil.ApplyFilter();
Где взять перечень Item. Так как вижу что нет Item, который переключает дату с позиции "За период" на "Интервал".
Так как установка PERFROM и PERTO ничего не дает, если не переключить в позицию "Интервал".
-
- Универсал (склонность - системные вопросы)
- Повідомлень: 10116
- З нами з: 13 січня 2012, 11:21
Re: Загрузка из Медка документов
OlegBom
Здравствуйте!
Ваш вопрос передан в отдел разработки. После проверки, специалисты данного направления предоставят соответствующий ответ
Здравствуйте!
Ваш вопрос передан в отдел разработки. После проверки, специалисты данного направления предоставят соответствующий ответ
Re: Загрузка из Медка документов
Я надеюсь переданы два вопроса.
1)Как данные вытаскивать из этого обьекта DocumentsDataSet ?
2)Где взять перечень Item (filterTbl.Fields.Item("PARTNEREDRPOU").Value = "9912312611"; //ЕДРПОУ контрагента ) для обьекта filterTbl.
И как мне решить задачу.
Как я могу из "реестра первичных документов" в МЕДКЕ прочитать только налоговые накладные, например за 01/07/2014 и загрузить их в свою учетную систему.
Мне как минимум надо получить массив со следующими данными.
- номер налоговой накладной
- номер ЕДРПОУ контрагента или налоговый номер
- суммы итоговые (20%, 0% и т.д. колонки в НН) для без НДС - Усього за розділом I в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для НДС - Податок на додану вартість - розділ III в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для ИТОГО. - Загальна сума з ПДВ - розділ IV в НН
1)Как данные вытаскивать из этого обьекта DocumentsDataSet ?
2)Где взять перечень Item (filterTbl.Fields.Item("PARTNEREDRPOU").Value = "9912312611"; //ЕДРПОУ контрагента ) для обьекта filterTbl.
И как мне решить задачу.
Как я могу из "реестра первичных документов" в МЕДКЕ прочитать только налоговые накладные, например за 01/07/2014 и загрузить их в свою учетную систему.
Мне как минимум надо получить массив со следующими данными.
- номер налоговой накладной
- номер ЕДРПОУ контрагента или налоговый номер
- суммы итоговые (20%, 0% и т.д. колонки в НН) для без НДС - Усього за розділом I в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для НДС - Податок на додану вартість - розділ III в НН
- суммы итоговые (20%, 0% и т.д. колонки в НН) для ИТОГО. - Загальна сума з ПДВ - розділ IV в НН
-
- Повідомлень: 24
- З нами з: 28 травня 2014, 11:53
Re: Загрузка из Медка документов
'Получение документа по чаркоду
'SENDSTT 14 Получено
'STATUS 14 Импортовано
Cnd = "CharCode = 'J1201005' AND PerDate >= '01.07.2014' and PerDate < '01.08.2014' and SENDSTT = 14 and STATUS = 4"
DocCode = 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
rsSomeDoc.First
DocCode = rsDocs.FldVal("Code")'уникальный код документа
if DocCode > 0 then
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
'SomeDoc.GblVal("имя поля") получение значение из документа
end if
rsSomeDoc.next
Wend
'SENDSTT 14 Получено
'STATUS 14 Импортовано
Cnd = "CharCode = 'J1201005' AND PerDate >= '01.07.2014' and PerDate < '01.08.2014' and SENDSTT = 14 and STATUS = 4"
DocCode = 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
rsSomeDoc.First
DocCode = rsDocs.FldVal("Code")'уникальный код документа
if DocCode > 0 then
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
'SomeDoc.GblVal("имя поля") получение значение из документа
end if
rsSomeDoc.next
Wend
Re: Загрузка из Медка документов
Добрый день!
Извините меня за мою настойчивость. Но то что Вы прислали, как-то непонятно.
Начинаем анализировать. После символов ------------ мой комментарий к строке выше.
'SENDSTT 14 Получено
--------------(это комментарий) если это поле =14, то это полученные документы
'STATUS 14 Импортовано
--------------(это комментарий) если это поле =14, то это импортированные документы. Хотя зачем мне импортированные, меня интересуют присланные в Медок моими клиентами.
Cnd = "CharCode = 'J1201005' AND PerDate >= '01.07.2014' and PerDate < '01.08.2014' and SENDSTT = 14 and STATUS = 4"
--------------переменной Cnd присвоили строку фильтр для SELECT и здесь уже проблема . ПОЧЕМУ STATUS =4 , и что такое 4.Вверху написано 14.
--------------ГДЕ ПРАВДА?
DocCode = 0
--------------переменной DocCode присвоили 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
--------------переменная rsDocs указывает на обьект с массивом документов выбранных SELECT при помощи фильтра Cnd методом DocumentsDataSet.
rsSomeDoc.First
-------------- А ЧТО ЭТО ЗА обьект rsSomeDoc??? Смысл то вроде понятен, мы стаем на первую запись в таблице. Но при реализации в моей учетной системе не получается.
-------------- Я НЕ ЗНАЮ ЧТО ЭТО ЗА ОБЬЕКТ rsSomeDoc??? Замена его на rsDocs непомогает.
DocCode = rsDocs.FldVal("Code")'уникальный код документа
-------------- чтение уникального кода документа.
if DocCode > 0 then
-------------- если код документа > 0
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
-------------- то с помощью метода OpenDocumentByCode открываем его.
-------------- И ГДЕ ОПИСАНИЕ ЭТОГО МЕТОДА OpenDocumentByCode??? В инструкции его нет
'SomeDoc.GblVal("имя поля") получение значение из документа
-------------- и радостно получаем значения полей из этого документа
-------------- я то здесь догадываюся, что мне надо пойти в Медок посмотреть електронный вид налоговой накладной
-------------- и там прописаны поля документа.И если я не ошибся то возможно прочитаю их значение.
end if
-------------- конец условия
rsSomeDoc.next
-------------- передвигаемся дальше по таблице, которая представлена обьектом rsSomeDoc, КОТОРЫЙ НИГДЕ НЕ ОПИСАН И НЕ ОПРЕДЕЛЁН???!!!
Wend
-------------- конец цикла. Интересно А ГДЕ ЕГО НАЧАЛО??? Где WHILE??? Может если б Вы прислалили весь цикл, то часть вопросов отпала бы сама собой.
С уважением жду ответа.
Извините меня за мою настойчивость. Но то что Вы прислали, как-то непонятно.
Начинаем анализировать. После символов ------------ мой комментарий к строке выше.
'SENDSTT 14 Получено
--------------(это комментарий) если это поле =14, то это полученные документы
'STATUS 14 Импортовано
--------------(это комментарий) если это поле =14, то это импортированные документы. Хотя зачем мне импортированные, меня интересуют присланные в Медок моими клиентами.
Cnd = "CharCode = 'J1201005' AND PerDate >= '01.07.2014' and PerDate < '01.08.2014' and SENDSTT = 14 and STATUS = 4"
--------------переменной Cnd присвоили строку фильтр для SELECT и здесь уже проблема . ПОЧЕМУ STATUS =4 , и что такое 4.Вверху написано 14.
--------------ГДЕ ПРАВДА?
DocCode = 0
--------------переменной DocCode присвоили 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
--------------переменная rsDocs указывает на обьект с массивом документов выбранных SELECT при помощи фильтра Cnd методом DocumentsDataSet.
rsSomeDoc.First
-------------- А ЧТО ЭТО ЗА обьект rsSomeDoc??? Смысл то вроде понятен, мы стаем на первую запись в таблице. Но при реализации в моей учетной системе не получается.
-------------- Я НЕ ЗНАЮ ЧТО ЭТО ЗА ОБЬЕКТ rsSomeDoc??? Замена его на rsDocs непомогает.
DocCode = rsDocs.FldVal("Code")'уникальный код документа
-------------- чтение уникального кода документа.
if DocCode > 0 then
-------------- если код документа > 0
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
-------------- то с помощью метода OpenDocumentByCode открываем его.
-------------- И ГДЕ ОПИСАНИЕ ЭТОГО МЕТОДА OpenDocumentByCode??? В инструкции его нет
'SomeDoc.GblVal("имя поля") получение значение из документа
-------------- и радостно получаем значения полей из этого документа
-------------- я то здесь догадываюся, что мне надо пойти в Медок посмотреть електронный вид налоговой накладной
-------------- и там прописаны поля документа.И если я не ошибся то возможно прочитаю их значение.
end if
-------------- конец условия
rsSomeDoc.next
-------------- передвигаемся дальше по таблице, которая представлена обьектом rsSomeDoc, КОТОРЫЙ НИГДЕ НЕ ОПИСАН И НЕ ОПРЕДЕЛЁН???!!!
Wend
-------------- конец цикла. Интересно А ГДЕ ЕГО НАЧАЛО??? Где WHILE??? Может если б Вы прислалили весь цикл, то часть вопросов отпала бы сама собой.
С уважением жду ответа.
-
- Повідомлень: 24
- З нами з: 28 травня 2014, 11:53
Re: Загрузка из Медка документов
Добрый день.
Вот скрипт,который Вам надо:
On Error Resume Next
set App = CreateObject("Medoc.ZApplication")
Cnd = "CharCode = 'J1201005' AND PerDate >= '26.07.2013' and PerDate < '01.11.2014' and SENDSTT = 14"
DocCode = 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
rsDocs.First
While Not rsDocs.EOF
DocCode = rsDocs.FldVal("Code")'уникальный код документа
if DocCode > 0 then
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
SomeDoc.GblVal("имя поля") получение значение из документа
end if
rsDocs.next
Wend
Вот скрипт,который Вам надо:
On Error Resume Next
set App = CreateObject("Medoc.ZApplication")
Cnd = "CharCode = 'J1201005' AND PerDate >= '26.07.2013' and PerDate < '01.11.2014' and SENDSTT = 14"
DocCode = 0
Set rsDocs = App.DocumentsDataSet(Cnd) 'массив документов
rsDocs.First
While Not rsDocs.EOF
DocCode = rsDocs.FldVal("Code")'уникальный код документа
if DocCode > 0 then
Set SomeDoc = App.OpenDocumentByCode(DocCode)'открываем документ по коду
SomeDoc.GblVal("имя поля") получение значение из документа
end if
rsDocs.next
Wend
Re: Загрузка из Медка документов
Добрый день! Спасибо за скрипт.
rsDocs.EOF - эта строка, переведённая для моей учетной системы
rsDocs:EOF() - вызывает ошибку
-----------------------------------------------------------------------------------
Член группы не найден. Object has no member with this name EOF
Аргумент[1] = EOF
Run FEVAL : MEMOEVAL
line : 10
string: oTablDocs:Eof()
-----------------------------------------------------------------------------------
МОжет этот метод не доступен?
rsDocs.EOF - эта строка, переведённая для моей учетной системы
rsDocs:EOF() - вызывает ошибку
-----------------------------------------------------------------------------------
Член группы не найден. Object has no member with this name EOF
Аргумент[1] = EOF
Run FEVAL : MEMOEVAL
line : 10
string: oTablDocs:Eof()
-----------------------------------------------------------------------------------
МОжет этот метод не доступен?
-
- Повідомлень: 24
- З нами з: 28 травня 2014, 11:53
Re: Загрузка из Медка документов
Для этого необходимо, чтобы был запущен медок и выполнен вход в предприятие.
Re: Загрузка из Медка документов
Все так и сделано
с помощью этой строки
-user Admin -org 13961362','D:\ProgramData\Medoc\Medoc\ezvit.exe
с помощью этой строки
-user Admin -org 13961362','D:\ProgramData\Medoc\Medoc\ezvit.exe
Re: Загрузка из Медка документов
rsDocs := oMedokApp:DocumentsDataSet(cSql)
обьект rsDocs - прекрасно создается. ТОлько работать с ним не получается.
ВОт что вижу
rsDocs:SysObject (N) 163 370 928
rsDocs:License (C)
rsDocs:CLSID (C)
rsDocs:owner (O) ActiveXObject
rsDocs:Server (C)
rsDocs:Interface (N) 185 701 940
rsDocs:__resource
rsDocs:Cargo (U) NIL
rsDocs:__noivar (U) NIL
rsDocs:InterfaceName (C) IPrimaryDocs
rsDocs:UseMarshalling (L) .T.
rsDocs:EventHandlers (A) {}
У меня создается такое вечатление, что с обьектом DocumentsDataSet - невозможно работать через MEDOC.ZApplication.
Вы там где-то чего-то блокируете.
обьект rsDocs - прекрасно создается. ТОлько работать с ним не получается.
ВОт что вижу
rsDocs:SysObject (N) 163 370 928
rsDocs:License (C)
rsDocs:CLSID (C)
rsDocs:owner (O) ActiveXObject
rsDocs:Server (C)
rsDocs:Interface (N) 185 701 940
rsDocs:__resource
rsDocs:Cargo (U) NIL
rsDocs:__noivar (U) NIL
rsDocs:InterfaceName (C) IPrimaryDocs
rsDocs:UseMarshalling (L) .T.
rsDocs:EventHandlers (A) {}
У меня создается такое вечатление, что с обьектом DocumentsDataSet - невозможно работать через MEDOC.ZApplication.
Вы там где-то чего-то блокируете.
Re: Загрузка из Медка документов
"Член группы не найден".
Как я понимаю, происходит обращение к несуществующему методу/свойству.
При этом вот такие вещи работают на ура.
..............................................................
omedok := CreateObject("MEDOC.ZApplication")
...
odoc:=omedok:CreateDocumentByParam("J1201005",0,DTOC(dDate),1)
omain:=odoc:DataSets("MAIN")
osod:=odoc:DataSets("TAB1")
odoc:UpdateSysFields()
omain:Edit()
и т.д
Это запись налоговой накладной напрямую в Медок.
Аж обидно, записать могу, а прочитать нет.
Как я понимаю, происходит обращение к несуществующему методу/свойству.
При этом вот такие вещи работают на ура.
..............................................................
omedok := CreateObject("MEDOC.ZApplication")
...
odoc:=omedok:CreateDocumentByParam("J1201005",0,DTOC(dDate),1)
omain:=odoc:DataSets("MAIN")
osod:=odoc:DataSets("TAB1")
odoc:UpdateSysFields()
omain:Edit()
и т.д
Это запись налоговой накладной напрямую в Медок.
Аж обидно, записать могу, а прочитать нет.
-
- Повідомлень: 24
- З нами з: 28 травня 2014, 11:53
Re: Загрузка из Медка документов
По скрипту проверили, запись файл и чтение работают.
Сохраните, пожалуйста, текст программы в файл с расширением vbs и выполните еще раз.
Сохраните, пожалуйста, текст программы в файл с расширением vbs и выполните еще раз.