А зачем вообще Вам DocID , как вы его используете?Zvezda писав:Пока техподдержка 6-й день собирается с мыслями задам еще один убойный вопрос: как можно зная DocID узнать ExDocID ?
Поверьте, не праздного любопытства ради спрашиваю.
Загрузка из Медка документов
Re: Загрузка из Медка документов
Re: Загрузка из Медка документов
Мне требуется получить список документов из медка. Если не ошибаюсь, то иного способа, кроме как с помощью DocumentsDataSet(...) нет.vademchuk писав:А зачем вообще Вам DocID , как вы его используете?
Если я не прав - поправьте.
Кстати, видел в где-то в примерах вызовы DocumentsDataSet(...) со вторым параметром типа boolean, который не документирован. Что это за параметр ?
Так вот, я так понимаю, что в DataSet получаемом в результате выполнения DocumentsDataSet(...) поле CODE как раз и является тем самым IdDoc.
Вот только проблема в том, что почти все функции оперируют не IdDoc, а ExIdDoc, например, та же функция GetInTrashStatus.
Кстати, как быть если мы не грузим в медок код документа во внешней системе ? Ну не нужен он нам а если бы и грузили, то бухгалтерская система ничего не знает о коде из управленческой.
Re: Загрузка из Медка документов
Перебрать список документов с реквизитами можно ещё так:
Поле CARDCODE содержит нечто похожее на IdDoc
Код: Виділити все
prim = App.GetPrimaryDocs();
tabl = prim.GetPrimaryReestr ( -1, -1, Дата(2015, 1, 1), Дата(2016, 1, 1)); // Первичка за 2015-й год
tabl.First();
//СчетчикКолонок = tabl.Fields.Count();
//Для Инд = 0 ПО (СчетчикКолонок - 1) Цикл
// Сообщить ( "Колонка " + Строка (Инд) + " " + tabl.Fields.item(Инд).name + " = " + tabl.Fields.item(Инд).Value );
//КонецЦикла;
Пока НЕ tabl.EOF Цикл
doc = App.OpenDocumentByCode(tabl .Fields.Item("CARDCODE").Value);
main = doc.DataSets("MAIN");
Сообщить ("Идём в документ!");
СчетчикКолонок1 = main.Fields.Count();
Для Инд1 = 0 ПО (СчетчикКолонок1 - 1) Цикл
Сообщить ( "Колонка " + Строка (Инд1) + " " + main.Fields.item(Инд1).name + " = " + main.Fields.item(Инд1).Value );
КонецЦикла;
main = doc.DataSets("TAB1");
Сообщить ("Идём в Таблицу 1!");
СчетчикКолонок1 = main.Fields.Count();
Для Инд1 = 0 ПО (СчетчикКолонок1 - 1) Цикл
Сообщить ( "Колонка " + Строка (Инд1) + " " + main.Fields.item(Инд1).name + " = " + main.Fields.item(Инд1).Value );
КонецЦикла;
Прервать;
tabl.Next();
КонецЦикла;
Re: Загрузка из Медка документов
Спасибо за информацию расширяющую сознание
Посмотрел на функцию GetPrimaryReestr(), проанализировал возвращаемые ей данные, но, к сожалению, в моем случае она так же бесполезна, как и DocumentsDataSet():
- функция ничего не сообщает о том находится ли документ в Корзине
- функция возвращает код EXDOC_ID, но в моем случае он всегда пуст
снова тупик.
Из положительных, если так можно выразиться, моментов можно отметить, что возвращаемое DocumentsDataSet() значение CODE походу не есть DocID, как я предполагал ранее.
GetPrimaryReestr() возвращает значение CARDCODE соответствующее CODE из DocumentsDataSet() и еще возвращает значение DOC_ID.
Таким образом, даже если бы функция GetInTrashStatus() умела оперировать DocID мне это не помогло бы, т.к. DocumentsDataSet() не возвращает ни DOC_ID ни ExDocID.
Посмотрел на функцию GetPrimaryReestr(), проанализировал возвращаемые ей данные, но, к сожалению, в моем случае она так же бесполезна, как и DocumentsDataSet():
- функция ничего не сообщает о том находится ли документ в Корзине
- функция возвращает код EXDOC_ID, но в моем случае он всегда пуст
снова тупик.
Из положительных, если так можно выразиться, моментов можно отметить, что возвращаемое DocumentsDataSet() значение CODE походу не есть DocID, как я предполагал ранее.
GetPrimaryReestr() возвращает значение CARDCODE соответствующее CODE из DocumentsDataSet() и еще возвращает значение DOC_ID.
Таким образом, даже если бы функция GetInTrashStatus() умела оперировать DocID мне это не помогло бы, т.к. DocumentsDataSet() не возвращает ни DOC_ID ни ExDocID.
Re: Загрузка из Медка документов
Как бы Да и как бы Нет.....ignorant писав:Перебрать список документов с реквизитами можно ещё так:Поле CARDCODE содержит нечто похожее на IdDocКод: Виділити все
prim = App.GetPrimaryDocs(); tabl = prim.GetPrimaryReestr ( -1, -1, Дата(2015, 1, 1), Дата(2016, 1, 1)); // Первичка за 2015-й год
Когда берем список через Реестр (для исходящего):
CardCode=474974
doc_id=32F1D3A0-01BB-4648-8445-498C9358F2D4
EXDOC_ID=f80e96a0-9d88-11e4-a8e0-1cc1de27bc45
STATUS=4
DOC_NUM=1913
DOC_DATE=03.01.2015 0:00:00
DOC_TYPE=1
DOC_MOVE=1
FIRM_EDRPOU=24824828
PATRNER_IPN=100000000000
OSOBFIO=І.М. Некто
Здесь CardCode и doc_id - совсем разные значения, ну и понятно что у входящего документа EXDOC_ID будет пустой.
DOC_MOVE - 1 = исходящие, 2 = входящие.
Плохо другое. У нас уже с год входящие НН привязаны в учетной системе по CardCode (Code при получении через DataSet), сейчас обнаружилось, что в каких-то случаях при получении повторного Вытяга из реестра с галкой импорт - существующие документы перезаписываются и меняется CardCode..... получается ,что не получается.... хотя, когда импорт НН из реестра заработал - такого не было.... блин.....
Re: Загрузка из Медка документов
Всецело и категорически с Вами согласенvademchuk писав:Здесь CardCode и doc_id - совсем разные значения, ну и понятно что у входящего документа EXDOC_ID будет пустой.ignorant писав:Поле CARDCODE содержит нечто похожее на IdDoc
Но мануэль говорит:
Что имели ввиду разработчики ?Список полів у таблиці
CardCode – ідентифікатор документа в Медку,
...
Doc_id – ідентифікатор документа
Re: Загрузка из Медка документов
Эх..... вот знать бы, что они дальше имеют ввиду....ignorant писав: Что имели ввиду разработчики ?
Re: Загрузка из Медка документов
Через вебформу на сайте отправил разработчикам "Предложение":
Просьба доработать COM-функцию DocumentsDataSet(): добавить параметр позволяющий отбирать документы находящиеся не в Корзине, в Корзине или все; в результат функции добавить поля DOC_ID, EXDOC_ID и признак нахождения документа в Корзине.
Просьба доработать COM-функцию GetInTrashStatus(), чтобы в качестве параметра можно было указывать DOC_ID.
Просьба доработать COM-функцию DocumentsDataSet(): добавить параметр позволяющий отбирать документы находящиеся не в Корзине, в Корзине или все; в результат функции добавить поля DOC_ID, EXDOC_ID и признак нахождения документа в Корзине.
Просьба доработать COM-функцию GetInTrashStatus(), чтобы в качестве параметра можно было указывать DOC_ID.
Re: Загрузка из Медка документов
Оставайтесь на линии, Ваш звонок очень важен для нас...
Техподдержка медка на мою просьбу отмахнулась пиcьмом с фразой "По вопросам стыковки программы обратись пожалуйста на почтовый ящик [email protected]".
Т.е. даже не удосужились передать информацию и мои контакты самостоятельно.
Ну а с этого ящика нет никакой информации вот уже неделю.
Техподдержка медка на мою просьбу отмахнулась пиcьмом с фразой "По вопросам стыковки программы обратись пожалуйста на почтовый ящик [email protected]".
Т.е. даже не удосужились передать информацию и мои контакты самостоятельно.
Ну а с этого ящика нет никакой информации вот уже неделю.
Re: Загрузка из Медка документов
При использовании функции GetPrimaryReestr () и последующей выборке нельзя отфильтровать налоговые накладные со статусом "Відхилено". Значение поля STATUS для "Відхилено" и "Отримано" одинаково и равно 4.
Это ошибка разработчиков или так задумано?
Как-то можно решить проблему другим способом?
Это ошибка разработчиков или так задумано?
Как-то можно решить проблему другим способом?
Re: Загрузка из Медка документов
Это И ошибка разработчиков И так задуманоyevgen писав:При использовании функции GetPrimaryReestr () и последующей выборке нельзя отфильтровать налоговые накладные со статусом "Відхилено". Значение поля STATUS для "Відхилено" и "Отримано" одинаково и равно 4.
Это ошибка разработчиков или так задумано?
Как-то можно решить проблему другим способом?
Что даст знание статуса "Відхилено" и "Отримано" если НН все-равно включена в РЕЕСТР ?
Re: Загрузка из Медка документов
Согласен )vademchuk писав: Что даст знание статуса "Відхилено" и "Отримано" если НН все-равно включена в РЕЕСТР ?
Просто бухгалтерия не хотела затягивать в 1С документы с этим статусом. Потом разобрались, что это не имеет смысла.
Re: Загрузка из Медка документов
Сегодня вечером буду праздновать 2 недели, как техподдержка МЕДка не может ответить на мой вопрос и даже не может ничего предложить или пообещать. Тупо молчит.Zvezda писав:В DataSet попадают абсолютно все документы, в том числе находящиеся в Архиве и Корзине.aleksiychuk писав:Здравствуйте, если все использовать, как указано выше - ошибки не будет
DataSet = MeDoc.DocumentsDataSet(...);
doc = MeDoc.OpenDocumentByCode(DataSet .Fields.Item("CODE").Value);
main = doc.DataSets("MAIN");
Firm = main.Item("Firm_Name").Value
Подскажите каким образом можно сузить область поиска: не отбирать документы из Архива и Корзины.
Если, к огромному сожалению, это невозможно (с точки зрения производительности это огромный минус), то подскажите, как можно проверить где находится текущий документ или как проверить не находится ли он в Корзине или Архиве.
Re: Загрузка из Медка документов
Корзина: добавьте фильтр INTRASH=0
Архив: попробуйте фильтр MOVETYPE, EXSTATUS, хотя тут лучше спросить andriychyk
П.С. если скините базу в личку хотя бы с 1 документом в Архиве (для примера), скажу точно какое поле отвечает за фильтр по Архиву.
Архив: попробуйте фильтр MOVETYPE, EXSTATUS, хотя тут лучше спросить andriychyk
П.С. если скините базу в личку хотя бы с 1 документом в Архиве (для примера), скажу точно какое поле отвечает за фильтр по Архиву.