Примеры загрузки документов из Медок в 1С

Відповісти
Taras_Bond
Повідомлень: 11
З нами з: 22 січня 2012, 15:33

Примеры загрузки документов из Медок в 1С

Повідомлення Taras_Bond » 24 грудня 2014, 20:11

Может уже где то была информация, тогда ткните пожалуйста...
В общем, интересуют примеры получения информации о документах из медка. Вопросом этим только сегодня озаботился, поэтому многих очевидных вещей не знаю.

Вот как меня сегодня озадачили бухгалтера:
1. как получить все входящие налоговые документы от контрагентов и связать их с приходными накладными в 1С?
2. как получить отметку о регистрации документа ранее выгруженного из 1С в Медок?
3. как программно переслать зарегистрированный документ контрагенту (подразумеваем что у контрагента тоже Медок)?

если есть готовые примеры обработок для любой конфигурации (хотя конечно лучше для Бухи 8), то думаю многие будут благодарны.

ну и от себя вопрос задам - есть ли возможность подключиться через интернет (может есть API)?

Белокопытов Геннадий
Универсал (склонность - системные вопросы)
Повідомлень: 10116
З нами з: 13 січня 2012, 11:21

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Белокопытов Геннадий » 25 грудня 2014, 10:07

Taras_Bond
Здравствуйте!
Для передачи первичных документов из 1С в M.E.DocIS есть возможность использовать стыковку с 1С, которую Вы можете получить написав запрос на почтовый ящик [email protected]. (Для 1С 7.7 передача только из 1С в M.E.DocIS, для 1С 8.2 полноценный обмен в обе стороны).
как программно переслать зарегистрированный документ контрагенту (подразумеваем что у контрагента тоже Медок)?
Для отправки зарегистрированных НН контрагентам Вы можете использовать автоматическую обработку в программе M.E.DocIS (Первинні документи - Автоматична обробка), а также вручную отправлять НН и Дод.2 из меню "Первинні документи". Для отправки первичных документов контрагентам необходимо предварительно выбрать необходимый маршрут в меню "Первинні документи - Налаштування обміну документами".
Инструкция по использованию модуля ЭДО по ссылке http://me-doc.com.ua/upload_images/file ... uc_edo.pdf

Taras_Bond
Повідомлень: 11
З нами з: 22 січня 2012, 15:33

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Taras_Bond » 10 лютого 2015, 19:36

скажите, с какой процедуры в вашей обработке можно начать трассировку загрузки документов в 1С?

пардон, сам нашел.

Taras_Bond
Повідомлень: 11
З нами з: 22 січня 2012, 15:33

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Taras_Bond » 11 лютого 2015, 01:13

Скажите, а можно ли из 1С подключиться к Медку и прочитать реестр входящих НН иП2 за период? Если можно, то подкажите, пожалуйста, в какую сторону копать. "медовую стыковку" вроде уже просмотрел - там документ передается на вход как внешнее событие и требуется действие в медке (нажать "выгрузить в 1С"). Может дадите кусок кода или пример работы по такому алгоритму:
1. подключаемся из 1С к Медку
2. какой то командой открываем выборку документов за период
3. в цикле перебираем документы
4. расшифровываем документ по тому же принципу, что и в "медовой стыковке" и загружаем в базу.

FatherFury
Повідомлень: 5
З нами з: 05 грудня 2012, 12:43

Re: Примеры загрузки документов из Медок в 1С

Повідомлення FatherFury » 11 лютого 2015, 10:59

// сначала проверяем медок
Функция ИнициализацияМедок()
Попытка
App=СоздатьОбъект("MEDOC.ZApplication");
Исключение
Предупреждение(ОписаниеОшибки()+РазделительСтрок+"Возможно не запущен Медок.");
Возврат 0;
КонецПопытки;

// Установка предприятия в медок
Филиал="";
ОпределимПредприятие = App.SelectFirm(НашЕДРПОУ, Филиал);
Если ОпределимПредприятие<>1 Тогда
Предупреждение("Не найден Медок предприятия с кодом ЕГРПОУ:"+НашЕДРПОУ);
Возврат 0;
КонецЕсли;
Возврат 1;
КонецФункции // ИнициализацияМедок

// считываем реестр
docType=-1; // все типы (ПН и РК)
docMove=2; // входящие

prim = App.GetPrimaryDocs();
Reestr = prim.GetPrimaryReestr(docType, docMove, НачДата, КонДата);
КолДоков=Reestr.RecordCount();
сч=0;
Reestr.First();

Пока Reestr.EOF()=0 Цикл
сч=сч+1;
Состояние("Обработка: "+Строка(сч)+" из "+Строка(КолДоков));
Если СокрЛП(Reestr.Fields.Item("Firm_EDRPOU").Value)<>НашЕДРПОУ Тогда
Сообщить("В реестр попал чужой документ! Сообщите программисту","!");
Reestr.Next();
Продолжить;
КонецЕсли;

Если ПустоеЗначение(Reestr.Fields.Item("Doc_id").Value)=1 Тогда
Сообщить("Пустой ID! Сообщите программисту");
Reestr.Next();
Продолжить;
КонецЕсли;

Если ПустоеЗначение(Reestr.Fields.Item("CardCode").Value)=1 Тогда
Сообщить("Пустой Код! Сообщите программисту");
Reestr.Next();
Продолжить;
КонецЕсли;

Doc=App.OpenDocumentByCode(Reestr.Fields.Item("CardCode").Value);
Шапка=Doc.DataSets("MAIN");

Фирма=Шапка.Fields.Item("FIRM_NAME").Value; // и т.д.

Reestr.Next();
КонецЦикла;

Zvezda
Повідомлень: 19
З нами з: 23 січня 2015, 14:24

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Zvezda » 11 лютого 2015, 12:05

Учтите только, что функция GetPrimaryReestr выберет все документы в том числе и хлам находящийся в Корзине (а отправленные документы из Корзины не удаляются).
Определить находится ли документ в корзине возможно только в том случае если он загружен в МЕДок из внешней системы и при загрузке вы задали значение ExDocId.
Если документ входящий или при загрузке не задан ExDocId, то определить нахождение в Корзине невозможно.
Хотел бы я ошибаться, но техподдержка МЕДка уже две недели не может ответить, как определить, что документ находится в Корзине, если у документа нет ExDocId.

Taras_Bond
Повідомлень: 11
З нами з: 22 січня 2012, 15:33

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Taras_Bond » 11 лютого 2015, 15:59

FatherFury писав:
.........................................................................................
Если ПустоеЗначение(Reestr.Fields.Item("CardCode").Value)=1 Тогда
Сообщить("Пустой Код! Сообщите программисту");
Reestr.Next();
Продолжить;
КонецЕсли;

Doc=App.OpenDocumentByCode(Reestr.Fields.Item("CardCode").Value);
Шапка=Doc.DataSets("MAIN");

Фирма=Шапка.Fields.Item("FIRM_NAME").Value; // и т.д.

Reestr.Next();
КонецЦикла;
я так понимаю, это для семерки...

и такой вопрос - как перебрать строки документа?


строка Doc=App.OpenDocumentByCode(Reestr.Fields.Item("CardCode").Value);
не срабатывает - через отладчик выдает ошибку что такого метода не существет.
Востаннє редагувалось 11 лютого 2015, 16:28 користувачем Taras_Bond, всього редагувалось 1 раз.

FatherFury
Повідомлень: 5
З нами з: 05 грудня 2012, 12:43

Re: Примеры загрузки документов из Медок в 1С

Повідомлення FatherFury » 11 лютого 2015, 16:25

Для семерки. Вот перебор строк:

Стр=Doc.DataSets("TAB1");
Стр.First(); сч=0;
Пока Стр.EOF()=0 Цикл
сч=сч+1;
Если сч=1 Тогда
Раздел=СокрЛП(Стр.Fields.Item("TAB1_A1").Value);
КонецЕсли;
ДатаОтгрузки=Формат(Дата(Стр.Fields.Item("TAB1_A12").Value),"ДДДММГГГГ");
ИмяТовара=СокрЛП(Стр.Fields.Item("TAB1_A13").Value);
КодУКТВЭД=СокрЛП(Стр.Fields.Item("TAB1_A131").Value);
ЕдИзмер=СокрЛП(Стр.Fields.Item("TAB1_A14").Value);
ЕдИзмерКод=СокрЛП(Стр.Fields.Item("TAB1_A141").Value);
Колво=Число(Стр.Fields.Item("TAB1_A15").Value);
Цена=Число(Стр.Fields.Item("TAB1_A16").Value);
СуммаНДС20=Число(Стр.Fields.Item("TAB1_A17").Value);
СуммаНДС7=Число(Стр.Fields.Item("TAB1_A171").Value);
СуммаНДС0Украина=Число(Стр.Fields.Item("TAB1_A18").Value);
СуммаНДС0Экспорт=Число(Стр.Fields.Item("TAB1_A19").Value);
СуммаБезНДС1=Число(Стр.Fields.Item("TAB1_A110").Value);
Стр.Next();
КонецЦикла;

Inkognito
Повідомлень: 1070
З нами з: 14 січня 2012, 14:26

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Inkognito » 11 лютого 2015, 22:17

Zvezda писав:Учтите только, что функция GetPrimaryReestr выберет все документы в том числе и хлам находящийся в Корзине (а отправленные документы из Корзины не удаляются).
Определить находится ли документ в корзине возможно только в том случае если он загружен в МЕДок из внешней системы и при загрузке вы задали значение ExDocId.
Если документ входящий или при загрузке не задан ExDocId, то определить нахождение в Корзине невозможно.
Хотел бы я ошибаться, но техподдержка МЕДка уже две недели не может ответить, как определить, что документ находится в Корзине, если у документа нет ExDocId.
Попробуйте чтение таблицы CARD с фильтром по номеру (DOCNUM). Можно и другие параметры фильтрации подключить.
CARD.INTRASH - поле, отвечающее за нахождение документа в Корзине (1/0).
Dict = App.GetDictionary();
tabl = DictGRP.Open("CARD");
tabl.Filter=Строка("DOCNUM=" + СокрЛП(КакойТоНомерДокумента));
tabl.Filter=Строка("DOCID=" + СокрЛП(КакойТоIDДокумента)); //фильтрацией может выступать любое поле таблицы CARD
Если tabl.RecordCount()=1 Тогда
Сообщить("Документ " + КакойТоНомерДокумента+ " в Корзине? " + tabl.Fields.Item("INTRASH ").Value);
//далее фантазия может разыграться до удаления строки + удаления связанных строк другой таблицы (с квитанциями) по внешнему ИД :)

КонецЕсли;
П.С. с удивлением обнаружил, что объединить два фильтра проблематично. Пробовал AND, "," , &&? - неработает. Фильтрую двумя-тремя фильтрами. Может кто то знает как обїединить два и более фильтра?

Auworker
Повідомлень: 7
З нами з: 03 червня 2016, 11:23

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Auworker » 07 червня 2016, 18:21

Спасибо всем, очень интересная тема.
Рисую передачу в Медок налоговых накладных (НН), и обнаружил, что при повторной передаче многострочной НН в Медке строки документа не обновляются, а добавляются (за исключением первой).
А подскажите, какой командой из 1с 77 удалить строку или все строки в документе, переданном ранее в Медок (исходящая налоговая накладная)?

Auworker
Повідомлень: 7
З нами з: 03 червня 2016, 11:23

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Auworker » 08 червня 2016, 00:46

Сам спросил, сам ответил. Может кому надо очищать табличную часть налоговой накладной в Медке, вот:

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

			Стр=Doc.DataSets("TAB1");
			Стр.First(); 
			Пока Стр.EOF()=0 Цикл 
				Стр.Delete();  
				Стр.Next();
			КонецЦикла;	  

Inkognito
Повідомлень: 1070
З нами з: 14 січня 2012, 14:26

Re: Примеры загрузки документов из Медок в 1С

Повідомлення Inkognito » 22 червня 2016, 09:17

Проще так:
Стр=Doc.DataSets("TAB1");
Стр.Clear(true);
И только потом передавать данные. Примечание: желательно такую же строку добавить после инициализации головной части (main)

Відповісти

Повернутись до “1C”