Получить CARDCODE после создания документа

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Получить CARDCODE после создания документа

Повідомлення PetroP » 16 грудня 2019, 13:49

Как получить CARDCODE после программного создания документа (при программном создании документа ExDocID не используется)?

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 16 грудня 2019, 14:46

PetroP писав:
16 грудня 2019, 13:49
Как получить CARDCODE после программного создания документа (при программном создании документа ExDocID не используется)?
GetPrimaryReestr()?
Правда, если речь только о первичных документах.
Человек-волшебник
Людина-чарівник
Wizard man

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Получить CARDCODE после создания документа

Повідомлення PetroP » 16 грудня 2019, 14:55

Речь о первичных.
Как я могу с помощью GetPrimaryReestr() получить именно тот документ, который создал, а не его дубль, например? Ведь документ с такими же реквизитами (номер, дата, сумма, контрагент) могут присутствовать?
Есть ли возможность считать CARDCODE имея IZDocument?

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 16 грудня 2019, 15:14

PetroP писав:
16 грудня 2019, 14:55
Речь о первичных.
Как я могу с помощью GetPrimaryReestr() получить именно тот документ, который создал, а не его дубль, например? Ведь документ с такими же реквизитами (номер, дата, сумма, контрагент) могут присутствовать?
Есть ли возможность считать CARDCODE имея IZDocument?
Зачем, извините, геморрой с IZDocument? Да и я, если честно, в IZDocument CardCode не видел.

Можно же так:
GetPrimaryReestr(ВашТипДокумента, 1, ДатаДокумента, ДатаДокумента) (или ДатаНачалаИнтервала, ДатаКонцаИнтервала, если несколько документов за период).
В результате, согласно инструкции, получите таблицу, в которой будет CardCode.
Помимо CardCode там будет ExDocID, который Вы знаете.

Ну а дальше просто:
...

Код: Виділити все

ДокиСМедка = GetPrimaryReestr(ВашТипДокумента, 1, ДатаДока, ДатаДока);

Для каждого Док из ДокиСМедка Цикл
     Если Док.ExDocID = ВашДокументВ1с.УникальныйИдентификатор() Тогда
          КардКод = Док.CardCode;
     КонецЕсли;
КонецЦикла;
Дальше с КардКод делайте что хотите.
Человек-волшебник
Людина-чарівник
Wizard man

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Получить CARDCODE после создания документа

Повідомлення PetroP » 16 грудня 2019, 15:17

Я не использую ExDocID. В том то и дело.

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 16 грудня 2019, 15:25

PetroP писав:
16 грудня 2019, 15:17
Я не использую ExDocID. В том то и дело.
Если Вы создали документ "со стороны" без указания ExDocID - то это то же самое, что Вы создали его вручную в M.E.Doc.
Другого признака, что он был создан извне или не в самом M.E.Doc - нету.
Если в M.E.Doc есть 2 документа, например Акт №1 от 01.12.2019 г. и Акт №1 от 01.12.2019 г., и ни один документ не имеет ExDocID - Вы никак их не различите. CardCod'ы у них будут разные при том, что реквизиты - одинаковые. И понять, какой из них Вы создали вручную в M.E.Doc, а какой извне - не выйдет.
Человек-волшебник
Людина-чарівник
Wizard man

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Получить CARDCODE после создания документа

Повідомлення PetroP » 16 грудня 2019, 15:56

Мне не надо разделять на те, что созданы вручную, или те, что загружены программно.
Все что мне надо - задать соответствие документов в медке документам в моей учетной системе.
И именно по той причине, что документы в медок могут и создаваться вручную, и загружаться программно, я не могу этого сделать из-за недостатков как CARDCODE, так и EXDOCID.

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 16 грудня 2019, 16:55

PetroP писав:
16 грудня 2019, 15:56
Мне не надо разделять на те, что созданы вручную, или те, что загружены программно.
Все что мне надо - задать соответствие документов в медке документам в моей учетной системе.
И именно по той причине, что документы в медок могут и создаваться вручную, и загружаться программно, я не могу этого сделать из-за недостатков как CARDCODE, так и EXDOCID.
У документа есть признак внешнего - EXDOCID.
Он пуст.
Чего же Вы хотите? Второй признак? ZapasnoiEXDOCID? Или EtotDokNeMedkomSozdanID?
Человек-волшебник
Людина-чарівник
Wizard man

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Получить CARDCODE после создания документа

Повідомлення PetroP » 16 грудня 2019, 17:23

Считаю, что EXDOCID - вообще не нужен. Достаточно добавить метод получения CARDCODE для объекта IZDocument. Это решит все проблемы.
Т. е. создаем программно документ, записываем его (Save), при этом, как я понимаю, после удачной записи документа появляется этот CARDCODE. Именно в этот момент, пока еще есть "в руках" объект, необходимо получить CARDCODE.

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 16 грудня 2019, 20:00

PetroP писав:
16 грудня 2019, 17:23
Считаю, что EXDOCID - вообще не нужен. Достаточно добавить метод получения CARDCODE для объекта IZDocument. Это решит все проблемы.
Т. е. создаем программно документ, записываем его (Save), при этом, как я понимаю, после удачной записи документа появляется этот CARDCODE. Именно в этот момент, пока еще есть "в руках" объект, необходимо получить CARDCODE.
Что мешает программно засунуть в документ ExDocID?
Человек-волшебник
Людина-чарівник
Wizard man

Orest
Повідомлень: 2
З нами з: 16 грудня 2019, 21:28

Re: Получить CARDCODE после создания документа

Повідомлення Orest » 16 грудня 2019, 21:34

Підкажіть будь ласка,як страктура таблиці має бути для GetPrimaryReestr? Який саме метод повертає таблицю? GetPrimaryReestr має тільки тільки вхідні параметри. чи не так?

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 16 грудня 2019, 22:45

Orest писав:
16 грудня 2019, 21:34
Підкажіть будь ласка,як страктура таблиці має бути для GetPrimaryReestr? Який саме метод повертає таблицю? GetPrimaryReestr має тільки тільки вхідні параметри. чи не так?
Структура описана в Инструкции по COM-методам M.E.Doc. Там много колонок.
Метод GetPrimaryReestr - и есть способ получения таблицы данных о документах. Таблицу Вы не передаете в метод, а получаете с его помощью. Указав, да, определённые аргументы (тип документов, направление и интервал дат (выписки)).
Т.е. указав, к примеру, GetPrimaryReestr(10100, 2, 01.11.2019, 30.11.2019) Вы получите таблицу с данными по ВСЕМ Налоговым накладным (их код типа документов - 10100), которые были Получены (т.е. имеют направление "Входящий", код типа направления - 2), которые были выписаны за ноябрь (в промежутке между 01.11.2019 и 30.11.2019).
Там же, в Инструкции, описаны все доступные коды типов документов, типов направлений и описание той или иной колонки.
Человек-волшебник
Людина-чарівник
Wizard man

Orest
Повідомлень: 2
З нами з: 16 грудня 2019, 21:28

Re: Получить CARDCODE после создания документа

Повідомлення Orest » 17 грудня 2019, 09:34

Medoc Man писав:
16 грудня 2019, 22:45
Orest писав:
16 грудня 2019, 21:34
Підкажіть будь ласка,як страктура таблиці має бути для GetPrimaryReestr? Який саме метод повертає таблицю? GetPrimaryReestr має тільки тільки вхідні параметри. чи не так?
Структура описана в Инструкции по COM-методам M.E.Doc. Там много колонок.
Метод GetPrimaryReestr - и есть способ получения таблицы данных о документах. Таблицу Вы не передаете в метод, а получаете с его помощью. Указав, да, определённые аргументы (тип документов, направление и интервал дат (выписки)).
Т.е. указав, к примеру, GetPrimaryReestr(10100, 2, 01.11.2019, 30.11.2019) Вы получите таблицу с данными по ВСЕМ Налоговым накладным (их код типа документов - 10100), которые были Получены (т.е. имеют направление "Входящий", код типа направления - 2), которые были выписаны за ноябрь (в промежутке между 01.11.2019 и 30.11.2019).
Там же, в Инструкции, описаны все доступные коды типов документов, типов направлений и описание той или иной колонки.
В інструкції є перелік полів таблиці, але намає течнічоного опису цих полів(довжини поля та типу даних). Чи можете навести приклад наповнення таблиці з допомогою цього методу? а також технічний опис полів таблиці?

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Получить CARDCODE после создания документа

Повідомлення PetroP » 17 грудня 2019, 10:16

Medoc Man писав:
16 грудня 2019, 20:00
Что мешает программно засунуть в документ ExDocID?
Подскажите, можно ли в созданный вручную в медке документ, подписанный, отправленный и утвержденный программно засунуть ExDocID?
Как во входящий документ программно засунуть ExDocID?

Яркий пример. Делаю сейчас функционал актов сверки с контрагентами. По сути, акт сверки сложно отнести ко входящему / исходящему по сути - только по признаку "кто первый сделал" - мы или контрагент. Я не могу привязать к учетной системе акты сверки, созданные контрагентами, и акты сверки, созданные нами в медке (а не в учетной системе).

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 17 грудня 2019, 10:38

Orest писав:
17 грудня 2019, 09:34
В інструкції є перелік полів таблиці, але намає течнічоного опису цих полів(довжини поля та типу даних). Чи можете навести приклад наповнення таблиці з допомогою цього методу? а також технічний опис полів таблиці?
Ну если только для Вас...
Типы значений | Показать
1.jpg
1.jpg (442.74 Кіб) Переглянуто 2697 разів
Размерности полей не знаю.
Человек-волшебник
Людина-чарівник
Wizard man

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 17 грудня 2019, 10:54

PetroP писав:
17 грудня 2019, 10:16
Подскажите, можно ли в созданный вручную в медке документ, подписанный, отправленный и утвержденный программно засунуть ExDocID?
Как во входящий документ программно засунуть ExDocID?
Верно, никак, но речь-то не об этом.
Вы говорили о программном создании документа, а не ручном:
PetroP писав:
16 грудня 2019, 13:49
Как получить CARDCODE после программного создания документа (при программном создании документа ExDocID не используется)?
Я объяснял уже, что если создали вручную - то сможете получить только его CardCode через GetPrimaryReestr для работы с ним.
При этом доступа к полям как через IZDataSets не будет.
PetroP писав:
17 грудня 2019, 10:16
Я не могу привязать к учетной системе акты сверки, созданные контрагентами, и акты сверки, созданные нами в медке (а не в учетной системе).
Можете.
Просто не знаете как ;)
Человек-волшебник
Людина-чарівник
Wizard man

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Получить CARDCODE после создания документа

Повідомлення PetroP » 17 грудня 2019, 11:52

Medoc Man писав:
17 грудня 2019, 10:54
Верно, никак, но речь-то не об этом.
Вы говорили о программном создании документа, а не ручном:
Речь о том, что необходимо получить уникальный идентификатор для всех возможных вариантов: создание программно, создание вручную, получение контрагентом. Для всех этих случаев у медка есть CARDCODE - ничего нового выдумывать не надо.
Но! В варианте программного создания нет возможности получить CARDCODE созданного объекта IZDocument. Есть только безумно "кривой" вариант - создавать документ с ExDocID, а после по этому ExDocID искать документ через GetPrimaryReestr и, наконец, получать CARDCODE.

Раз не существует возможности получить CARDCODE имея IZDocument, прошу разработчиков создать такой метод (для справочников, например, что-то подобное есть для поля CODE, называется GetGenID). И в таком случае можно в принципе отказаться от ExDocID.

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Получить CARDCODE после создания документа

Повідомлення Medoc Man » 17 грудня 2019, 14:31

PetroP писав:
17 грудня 2019, 11:52
Речь о том, что необходимо получить уникальный идентификатор для всех возможных вариантов: создание программно, создание вручную, получение контрагентом. Для всех этих случаев у медка есть CARDCODE - ничего нового выдумывать не надо.
Но! В варианте программного создания нет возможности получить CARDCODE созданного объекта IZDocument. Есть только безумно "кривой" вариант - создавать документ с ExDocID, а после по этому ExDocID искать документ через GetPrimaryReestr и, наконец, получать CARDCODE.

Раз не существует возможности получить CARDCODE имея IZDocument, прошу разработчиков создать такой метод (для справочников, например, что-то подобное есть для поля CODE, называется GetGenID). И в таком случае можно в принципе отказаться от ExDocID.
Честно, не понял ничего.
Рас | Показать

Код: Виділити все

MedocCOM = Новый COMОбъект("Medoc.ZApplication");
ПервичныеДокументы = MedocCOM.GetPrimaryDocs();
РеестрПД = ПервичныеДокументы.GetPrimaryReestr(10104, -1, ВашаДата1, ВашаДата2);
РеестрПД.First();
Количество = РеестрПД.RecordCount;

МассивКардКодов = Новый Массив;     //Или СписокЗначений, как хотите

Пока Количество <> 0 Цикл
     Если РеестрПД.Fields.Item("CharCode").Value = "1C82АЗ" Тогда     //Или какой у Вас там чаркод Акта сверки
          МассивКардКодов.Добавить(РеестрПД.Fields.Item("CardCode").Value);     //Забираете КардКод Акта сверки в массив
     КонецЕсли;
     Количество = Количество - 1;
КонецЦикла;

Возврат МассивКардКодов;
Дальше:
Двас | Показать

Код: Виділити все

MedocCOM = Новый COMОбъект("Medoc.ZApplication");
	
Для каждого КардКод из МассивКардКодов Цикл
     Док = MedocCOM.OpenDocumentByCode(КардКод);
     СтруктураДока = Док.DataSets("MAIN");
     //Тут начинаете забирать нужные себе поля Акта сверки, например, Дату выписки
     ДатаАктаСверки = СтруктураДока.Fields.Item("DOCDATE").Value;
     //...
КонецЦикла;
GetPrimaryReestr даёт мне список документов в БД по CardCode.
OpenDocumentByCode виртуально открытает мне документ по CardCode, давая доступ к структуре и полям.
Что Вы пытаетесь сделать и что у Вас не получается - непонятно.
Зачем Вы упёрлись в IZDocument - тоже неясно.

Создавайте документы как угодно, хоть бубном - способ выше вернёт их Вам.
Если документы были созданы вручную - Вы их увидите и заберёте к себе в УС. Как там уже Вы будете выстраивать логику соответствия - это дело Ваше.
Если документы создаёте программно - то или указывайте ExDocID и не мучьте людей, или сразу после программного создания бегите за новосозданным CardCode.
Человек-волшебник
Людина-чарівник
Wizard man

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Получить CARDCODE после создания документа

Повідомлення PetroP » 17 грудня 2019, 15:40

Чтобы понять, попробуйте ответить на простой вопрос: Как получить CARDCODE при программном создании первичного документа без использования ExDocID?

PetroP
Повідомлень: 714
З нами з: 22 січня 2015, 18:50

Re: Получить CARDCODE после создания документа

Повідомлення PetroP » 17 грудня 2019, 15:42

Medoc Man писав:
17 грудня 2019, 14:31
... или сразу после программного создания бегите за новосозданным CardCode.
Каким образом найти именно тот новосозданный, если может существовать в медке несколько дублей?

Відповісти

Повернутись до “Модуль «Інтеграція»”