Доступ к МедКу через объекты
Re: Доступ к МедКу через объекты
Как раз пробую сделать такой функционал у себя. Напишу как только что-то будет известно.
П.С. если работает через попытку, - может так и оставить? Или боретесь за чистоту кода?
П.С. если работает через попытку, - может так и оставить? Или боретесь за чистоту кода?
Re: Доступ к МедКу через объекты
Скорее последнее.
К тому же из-за проблем с документацией, думал, может у меня пробел в понимании данных методов...
К тому же из-за проблем с документацией, думал, может у меня пробел в понимании данных методов...
Re: Доступ к МедКу через объекты
Не происходит получения сообщений методом "ReceiveCorrespondence()" - выполняется быстро и возвращает ложь. Интерактивно (F9) сообщения получаются.
Код:
Что упустил?
Код:
Код: Виділити все
App = Новый COMОбъект("MEDOC.ZApplication");
sign = App.GetDocSigning();
rez = sign.CertToCache("*", "*", "*");
Если rez <> 0 Тогда
ВызватьИсключение("Помилка підпису: " + rez);
Иначе
ЄНовіПовідомлення = App.ReceiveCorrespondence();
Сообщить(?(ЄНовіПовідомлення, "Є нові повідомлення!", "Немає нових повідомлень!"));
КонецЕсли;
Re: Доступ к МедКу через объекты
Перепроверьте пути и пароли. Полгода назад проверял, работало. Правда, может уже и не работает... Перепроверю в ближайшее время, напишу.
Re: Доступ к МедКу через объекты
Проверил. Не работает.
Использовались действующий сертификат и ключ сотрудника. Находятся в сети.
П.С. при указании неправильного пароля все равно пробует принять почту. Ранее вроде проверка была на его корректность
Использовались действующий сертификат и ключ сотрудника. Находятся в сети.
П.С. при указании неправильного пароля все равно пробует принять почту. Ранее вроде проверка была на его корректность
- Простой код из инструкции | Показать
Re: Доступ к МедКу через объекты
Если бы проблема была в путях или паролях, rez был бы иной.
Буду благодарен, если протестируете у себя.
Буду благодарен, если протестируете у себя.
Re: Доступ к МедКу через объекты
Все верно. Вы же не проверяете результат помещения в кеш.Inkognito писав:П.С. при указании неправильного пароля все равно пробует принять почту. Ранее вроде проверка была на его корректность
Re: Доступ к МедКу через объекты
Да, кстати. Для получения, как я понимаю, нужен же ключ печати шифрования, а не сотрудника...Inkognito писав:Использовались действующий сертификат и ключ сотрудника.
Re: Доступ к МедКу через объекты
Перепроверил ключем шифрования. Те же яйца.
П.С. вроде в инструкции ограничений на тип используемого сертификата нет, но может просто недоработка инструкции.
П.С. вроде в инструкции ограничений на тип используемого сертификата нет, но может просто недоработка инструкции.
Re: Доступ к МедКу через объекты
Выходит, это уже не первый поломанный метод , и ждать покращення не приходится.
Re: Доступ к МедКу через объекты
Предположим, мы получили документ в Медке методом "OpenDocumentByCode". Как нам узнать "EXDOCID" этого документа (если он есть)?
Re: Доступ к МедКу через объекты
док =App.OpenDocumentByCode(...);
дс = док.DataSets("MAIN");
ExDocID=Строка(дс.FldVal("ExDocID"));
Сообщить(?(ЗначениеЗаполнено(ExDocID)), "Есть внешний ИД=" + ExDocID, "Нет внешнего ИД");
дс = док.DataSets("MAIN");
ExDocID=Строка(дс.FldVal("ExDocID"));
Сообщить(?(ЗначениеЗаполнено(ExDocID)), "Есть внешний ИД=" + ExDocID, "Нет внешнего ИД");
Re: Доступ к МедКу через объекты
Код: Виділити все
.FldVal("ExDocID");
Re: Доступ к МедКу через объекты
Супер! Снова надо в попытку...
Re: Доступ к МедКу через объекты
Не могу из 1с сформировать "Запит по контрагентам" P2000201 пишу такой код:
и на строке rsMain=Doc.DataSets("TAB1"); ругается из-за ошибки:
Код: Виділити все
Doc = App.CreateGovQryByCharCode("P2000201");
rsMain=Doc.DataSets("TAB1");
....
что я делаю не так?{ВнешняяОбработка.ME1С.Форма.Форма.Форма(11226)}: Ошибка при вызове метода контекста (DataSets)
rsMain=Doc.DataSets("TAB1");
по причине:
Неизвестная ошибка
Re: Доступ к МедКу через объекты
Приветствую всех. Помоги с проблемой. Стоит задача получить самый последний документ Акцизная накладная в Медке. Сейчас это планируется сделать так:
Код рабочий и нашел его несколькими страницами ранее, но он кажется очень не эффективным. Возможно есть какой-нибудь метод GetLast() или что то в этом роде, что бы не делать запрос ко всем документам за период, а сразу получить последний документ определенного вида, в моем случае 'J1203001' – Акцизная накладная.
Код: Виділити все
Попытка
App = Новый COMОбъект("MEDOC.ZApplication");
НачПериода = ДобавитьМесяц(ТекущаяДата(), -1);
ТекГод = Формат(НачПериода, "ДФ=гггг");
ТекМесяц = Формат(НачПериода, "ДФ=М");
ТекЧисло = Формат(НачПериода, "ДФ=д");
НачПериода = Строка(ТекГод + ","+ ТекМесяц + ","+ ТекЧисло);
СтрокаЗапроса=Строка("CharCode='J1203001' AND PerDate>='") + Строка(НачПериода) + Строка("'");
ТаблицаДоков = App.DocumentsDataSet(СтрокаЗапроса);
Сообщить("Всього знайдено документів: "+ТаблицаДоков.RecordCount);
Пока НЕ ТаблицаДоков.EOF Цикл
КодДокумента = Число(ТаблицаДоков.FldVal("Code"));
Если ЗначениеЗаполнено(КодДокумента) тогда
Документ = App.OpenDocumentByCode(КодДокумента);
main = Документ.DataSets("MAIN");
Сообщить("Дата="+main.Fields.Item("N2").value);
Сообщить("Номер="+main.Fields.Item("N3").value);
КонецЕслИ;
ТаблицаДоков.Next();
КонецЦикла;
Исключение
Сообщить("Ошибка выполнения метода", СтатусСообщения.Важное);
Возврат;
КонецПопытки;
Re: Доступ к МедКу через объекты
ODINES
Попробуйте через OpenOrCreateByExDocID.
vatikan
SELECT card.code
FROM card
WHERE code=(SELECT MAX(card.code) FROM card) and card.form='12740'
Попробуйте через OpenOrCreateByExDocID.
vatikan
SELECT card.code
FROM card
WHERE code=(SELECT MAX(card.code) FROM card) and card.form='12740'
Re: Доступ к МедКу через объекты
To Inkognito
Большое спасибо, на 99,9% процентов то, что мне нужно, а можно как то достать код именно из поля DOCNAME? Например Акцизна накладна №XXXX / від 21.11.2016, интересует код XXXX. Конечно можно разобрать поле DOCNAME, но это не очень красиво, я думаю что код XXXX все таки есть но где то в другой таблице, но я пока не нашел.
Большое спасибо, на 99,9% процентов то, что мне нужно, а можно как то достать код именно из поля DOCNAME? Например Акцизна накладна №XXXX / від 21.11.2016, интересует код XXXX. Конечно можно разобрать поле DOCNAME, но это не очень красиво, я думаю что код XXXX все таки есть но где то в другой таблице, но я пока не нашел.
Re: Доступ к МедКу через объекты
Т.е. достать номер из документа, имея его CODE? (из кода выше)?
Просто не совсем понятно, - то ли Вы хотите получить номер документа, то ли его код из системы. Имея код из системы, можно получить что угодно, например вызвав метод GetPrimaryReestr() с фильтром по CODE. Получите датасет с единственной записью, в которой будет и дата, и номер, и другие поля.
Просто не совсем понятно, - то ли Вы хотите получить номер документа, то ли его код из системы. Имея код из системы, можно получить что угодно, например вызвав метод GetPrimaryReestr() с фильтром по CODE. Получите датасет с единственной записью, в которой будет и дата, и номер, и другие поля.
Re: Доступ к МедКу через объекты
Мне нужен максимальный номер документа(определенного вида в моем случае Акцизная накладная) чтобы самому нумеровать документы из 1С. Подключаюсь к медку или напрямую к базе, получаю максимальный номер и потом формирую в 1С xml файл для загрузки в медок, в котором проставляю параметр номер документа на 1 больше чем вернул медок.
Недостаток предыдущего запроса в том что не факт что последний документ(документ с самым большим ID), будет иметь самый большой номер
Недостаток предыдущего запроса в том что не факт что последний документ(документ с самым большим ID), будет иметь самый большой номер