ЭСЧФ Беларусь

1. Slypower 2 19.04.16 12:44 Сейчас в теме
Всем привет. Не секрет, в Беларуси с 1 июля 2016 должна подаваться ЭСЧФ. Кто-нибудь уже работает с ней? Ведь там, вроде, уже 60 компаний Беларуси работает в тестовом режиме.
Сделал я по инструкциям, что на их сайте, но столько вопросов к их информации осталось.

Очень много полезного нам дали разработчики. Внимательно читайте их документацию в eInvVat, которую скачиваете, а так же примерами для 1С служат bat файлы из папки eInvVat\simpleapp\vbs\src\. Не поленитесь и посетить их сайт vat.gov.by. На основании этих знаний все пишут обработки. Если что не понятно, то можно прибегнуть к данной теме.
Важные и полезные ссылки на сайты и на сообщения темы.

Ссылки на сайт портала

Обработки с данной темы

Полезные сообщения темы

Коды процедур для 1С

Вопрос-Ответ

Дополняется со временем
KatrinNight; Pavl0; kar911; Золушка 007; iZhenius; xav; svilsa; Mustard; Gluk_1C; jeniks; 1v7; BotMan4; OSA3; MaskO_rimi; Ni4ka; Igor Igorevich; osharov_d; shiko; merlin1975; cssnavi; Krasowskiy; YegorK; KhomDV; +23 Ответить
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
174. Gladkov_Anton 06.05.16 23:08 Сейчас в теме
(157) pasha_2001, публикацию смотрели?
Там есть картинки к публикации. Посмотрите на них - должно быть понятно.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
624. shiko 31.05.16 15:23 Сейчас в теме
(606) Nykos, Обработка мне говорит что все ОК, но ЭСЧФ так и висит в выставленных.......
626. Nykos 31.05.16 15:33 Сейчас в теме
(624) shiko, ну так он у тебя и будет висеть в выставленных, потому что я его не подписал. Я его забрал батником с портала и положил себе на комп, но он имеет имя такое как я тебе в том посте указал. С ошибкой видимо. А как принимать и подписывать из 1с я пока не знаю, у меня от GetList крошится 1с.
632. shiko 31.05.16 16:53 Сейчас в теме
(626) Nykos, Если не подписал, значит ее не будет у меня в выставленных.
В выставленные попадают только подписанные продавцом.
578. bobrhleb 31.05.16 10:12 Сейчас в теме
Подскажите, в чем может быть ошибка?

InvList = EVatService.GetList(НужнаяДата);
Значение не является значением объектного типа(GetList)
1cv8
oksanka11041992@mail.ru; +1 Ответить
581. bobrhleb 31.05.16 10:33 Сейчас в теме
(578) bobrhleb, Сам затупил, сам нашел.
584. pasha_2001 31.05.16 11:03 Сейчас в теме
Кто как заполняет поле units (единицы измерения) 6го раздела. Согласно xsd это integer. Как мне их заполнить если у меня единица измерения шт, экземпляр и пр
585. eshtrey 31.05.16 11:05 Сейчас в теме
(584) pasha_2001, скачай справочник единиц измерения (на портале есть) и подставляй сюда код
587. Nykos 31.05.16 11:08 Сейчас в теме
(585) eshtrey, а у вас как это реализовано? У нас есть свой справочник единиц измерения, но у нас например "Шт", а на портале "Штука". Вы перебирали свой существующий и добавляли поле с кодом или выгрузили весь справочник в 1с и используете его отдельно только для формирвания счетов? Или вы вообще руками прописали? Или как?


П.С. Опять походу лагает портал - все упало. А я только собрался разбираться с подписанием выставленных. Кстати, неловко просить, но может поделитесь основополагающими кусками для получения входящих. В ветке все отрывочно, так не хочется изобретать велосипед заново. Заранее спасибо!
589. eshtrey 31.05.16 11:23 Сейчас в теме
(587) Nykos, пока никак, но думаю руками будет не сложно перебить пару кодов. У нас ЕИ не очень много
590. bobrhleb 31.05.16 11:28 Сейчас в теме
(587) Nykos, штука - код 796, килограмм - 166
Заполните вручную на портале с нужными ед изм, выгрузите в xml и увидите нужные вам коды, потом в 1с в справочнике ед изм (или у кого классификатор ед изм) исправить код.
591. Nykos 31.05.16 11:30 Сейчас в теме
(590) bobrhleb, точно, впринципе у нас единиц измерения не больше десятка, можно и вручную поправить
586. Nykos 31.05.16 11:05 Сейчас в теме
(584) pasha_2001, На портале выложен справочник Единицы Измерения. Каждое наименование единицы в нем соответствует цифровому коду. По логике вещей справочник нужно загрузить в 1с и подтягивать этот числовой код из него в units.
593. bobrhleb 31.05.16 11:35 Сейчас в теме
InvList = EVatService.GetList(НужнаяДата);
ЧислоЭСЧФ=InvList.Count;
Формат даты 2016-05-31T10:30:50+03:00

Выдает "0", хотя входящие есть, что не так?
595. dim_1c 31.05.16 11:38 Сейчас в теме
(593) bobrhleb, ищет С этой даты и до текущей. Возьмите на пару месяцев назад.
599. Slypower 2 31.05.16 12:17 Сейчас в теме
(593) bobrhleb, То что в конце даты должно стоять Z. Ранее уже это подымалось в теме.
СокрЛП(Год)+"-"+СокрЛП(Месяц)+"-"+СокрЛП(День)+"T"+СокрЛП(час)+":"+СокрЛП(Минут)+":"+СокрЛП(Секунд)+"Z";

И как уже писалось, возможно нужно брать вчерашнюю дату
Если прочесть всю тему, то можно найти ответ на все вопросы даже с примерами для 1С7.7
597. pasha_2001 31.05.16 11:51 Сейчас в теме
Если в организации несколько ключей - можно ли как то определить кем подписан ЭСЧФ?
598. bobrhleb 31.05.16 11:58 Сейчас в теме
Загрузите пожалуйста на 700169315 ЭСЧФ
600. oksanka11041992@mail.ru 31.05.16 12:26 Сейчас в теме
Проблема с GetList решилась обновлением EInvVatService
602. seryz 8 31.05.16 12:34 Сейчас в теме
Будьте добры, скиньте тестовые счета на 192356904. Спасибо
604. bobrhleb 31.05.16 12:51 Сейчас в теме
Загрузите пожалуйста счет на 700169315
605. Nykos 31.05.16 13:14 Сейчас в теме
(604) bobrhleb, закинул
Выставьте и мне пожалуйста кому не сложно.
607. bobrhleb 31.05.16 13:20 Сейчас в теме
608. Алексеевич 31.05.16 13:30 Сейчас в теме
Подскажите, никак не соображу, не работает вот эта штука

res = InvVatTicket.SaveToFile( fn );

Пишет "Метод не найден"
Когда это касалось квитанций я закрыл глаза и оставил до лучших времен, теперь же этот метод должен сохранить входящую счет фактуру и опять тоже - "Метод не найден".
610. Slypower 2 31.05.16 13:46 Сейчас в теме
(608) Алексеевич,InvVatXml.SaveToFile, а не InvVatTicket
InvVatXml = EVatService.CreateEDoc;

или же у вас?
InvVatTicket = EVatService.CreateEDoc;
611. Алексеевич 31.05.16 13:56 Сейчас в теме
(610) Slypower, Нет, беда не там. XML сохраняю, подписываю, отправляю, получаю квитанцию и положительный ответ, а вот сохранить квитанцию не могу. Вот там именно InvVatTicket

InvVatTicket = EVatService.Ticket;
612. Nykos 31.05.16 14:02 Сейчас в теме
(611) Алексеевич,
InvVatTicket = EVatService.Ticket;		
		res = InvVatTicket.SaveToFile(fn);
		
613. Slypower 2 31.05.16 14:02 Сейчас в теме
(611) Алексеевич,
		InvVatTicket = EVatService.Ticket;
			if InvVatTicket.Accepted <> 0 then
				Сообщить( "Ответ сервиса: документ не принят по причине " + InvVatTicket.Message);
				
				res = InvVatTicket.SaveToFile( fn + ".ticket.error.xml" );
				if res = 0 then
					Сообщить( "Ошибка сохранения квитанции: " + EVatService.LastError );
					Возврат;
				endif;
				
			else
				Сообщить( "Ответ сервиса: документ принят"	);
				
				res = InvVatTicket.SaveToFile( fn + ".ticket.xml" );
				if res <> 0 then //В случае успешного выполнения возвращается 0, иначе возвращается код ошибки. 
					Сообщить( "Ошибка сохранения квитанции: " + EVatService.LastError );
					Возврат;
				endif;
				
			endif;
Показать
614. Nykos 31.05.16 14:03 Сейчас в теме
(613) Slypower, а fn у вас объявлен?
615. Slypower 2 31.05.16 14:07 Сейчас в теме
(614) Nykos, конечно))
fn = oFSO.BuildPath(inFolder, "invoice-" + InvVatNumber);
616. Nykos 31.05.16 14:11 Сейчас в теме
(615) Slypower, а я это не вам, я промазал)) Я Алексеевичу))
622. kiser 31.05.16 15:00 Сейчас в теме
617. Алексеевич 31.05.16 14:12 Сейчас в теме
Может я ослеп. Кто найдет ошибку - расцелую!

	ПорталФайл    = ПорталСервис.CreateEDoc;            // Чтение файла
	Результат     = Ложь;
	Если      ПорталФайл.Document.LoadFromFile(Константы.ПапкаXML.Получить()+СчетФактура.ПолныйНомер+".xml")<>0 Тогда
    	Сообщение = "Ошибка чтения: "    +ПорталСервис.LastError
	ИначеЕсли ПорталФайл.Document.ValidateXML(СчетФактура.ТипСчетаФактуры.Схема,0)<>0 Тогда
    	Сообщение = "Ошибка схемы xsd: " +ПорталСервис.LastError
	ИначеЕсли ПорталФайл.Sign(0)<>0 Тогда                 // Подпись файла
    	Сообщение = "Ошибка подписи: "   +ПорталСервис.LastError
	ИначеЕсли ПорталФайл.SaveToFile(СокрЛП(Константы.ПапкаПописанныхXML.Получить())+СчетФактура.ПолныйНомер+".edoc.xml")<>0 Тогда
		Сообщение = "Ошибка сохранения: "+ПорталСервис.LastError
	ИначеЕсли ПорталСервис.SendEDoc(ПорталФайл)<>0 Тогда  // Отправка подписанного документа на портал ЭСФЧ
		Сообщение = "Ошибка отправки: "   +ПорталСервис.LastError;
	Иначе	
		ПорталКвитанция = ПорталСервис.Ticket;
		Если ПорталКвитанция.Accepted<>0 Тогда            // Получение квитанции
			Сообщение = "Документ не принят: "+ПорталКвитанция.Message
		Иначе
			ПорталКвитанция.SaveToFile(Константы.ПапкаКвитанций.Получить()+СчетФактура.ПолныйНомер+".ticket.xml");
			Сообщение = "ДОКУМЕНТ ПРИНЯТ";
			Результат = Истина;
		КонецЕсли;	
	КонецЕсли;

Функция ПорталВход( ПорталСервис,Сообщения ) Экспорт
	Попытка
		ПорталСервис = Новый COMОбъект("EInvVatService.Connector");
	Исключение
		Сообщения.Добавить("Ошибка запуска модуля ЭСЧФ");
		Возврат Ложь;
	КонецПопытки;
	Если ПорталСервис.Login("PASSWORD_KEY="+Константы.ПарольККлючу.Получить(),0)<>0 Тогда
		Сообщения.Добавить("Ошибка авторизации: "+ПорталСервис.LastError);
		Возврат Ложь;
	КонецЕсли;
	Если ПорталСервис.Connect(Константы.АдресПортала.Получить())<>0 Тогда
	   	Сообщения.Добавить("Ошибка подключения: "+ПорталСервис.LastError);
		Возврат Ложь;
	КонецЕсли;
   	Сообщения.Добавить(    "Вход выполнен успешно");
	Возврат Истина;
КонецФункции


Показать
619. Nykos 31.05.16 14:41 Сейчас в теме
(617) Алексеевич, посмотрите (379)
627. shiko 31.05.16 15:33 Сейчас в теме
(617) Алексеевич,

Если EVatService.Login("PUB_KEY_ID=ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ;PASSWORD_KEY=123456789", 0) = 0 then



"ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ" тут твой ID сертификата


Целоваться не будем
Алексеевич; +1 Ответить
629. Алексеевич 31.05.16 15:50 Сейчас в теме
(627) shiko, Еще проще. Очень удивился. Хотя я новичок в 1с и может чего не понимаю
// Это не работает
           ПорталКвитанция.SaveToFile(Константы.ПапкаКвитанций.Получить()+СчетФактура.ПолныйНомер+".ticket.xml");
// А вот это работает
           МнеОноНеНужно = ПорталКвитанция.SaveToFile(Константы.ПапкаКвитанций.Получить()+СчетФактура.ПолныйНомер+".ticket.xml");
 


Теперь у меня и квитанции записываются и счета входящие в папку складываются.
630. bobrhleb 31.05.16 16:25 Сейчас в теме
(629) Алексеевич, А из этих счетов входящих можно что-либо вытянуть?
А то я только номер ЭСЧФ могу получить методом getList.
Вообще GetList кроме номера выдает другие реквизиты?
631. Алексеевич 31.05.16 16:34 Сейчас в теме
(630) bobrhleb, Я узнаю об этом завтра, а пока надеюсь что все получится. Немного выше был пример, где входящие счета раскладывались "на лопатки", будем его изучать.
633. eshtrey 31.05.16 17:07 Сейчас в теме
(630) bobrhleb, getlist возвращает номера ЭСЧФ
номер ЭСЧФ передаешь в GetEDoc - получаешь саму ЭСЧФ и дальше уже работаешь с эл.документом.
Выше были примеры
637. Slypower 2 01.06.16 09:36 Сейчас в теме
(633) eshtrey, а разве GetItemAttribute в методе getList не работает с доками? Можно так перебрать все данные и сформировать док
618. xamss 31.05.16 14:38 Сейчас в теме
Здравствуйте
Кажется я пришел к беспробудному отчаянью ((
Портал наотрез отказывается принимать сформированную xml
Пробовал сформировать счет-фактуру на vat.gav.by, сверил каждую буковку
Безрезультатно
Где ошибка ? Решительно не понимаю
Прикрепленные файлы:
600123341-2016-0000000008.xml
600123341-2016-0000000009.xml
620. Nykos 31.05.16 14:48 Сейчас в теме
(618) xamss, <number>121 от 10.06.2015</number>
это че?)
<date>30.05.16</date>
и это)
621. Slypower 2 31.05.16 14:53 Сейчас в теме
(618) xamss, первое, что приходит - это не нужен параметр:<dateIssuance></dateIssuance>
второе - возможно шапка отличается
3) -<deliveryCondition>/-<contract>-<documents>-<document><date>30.05.16</date>
вот дата и не правильно 100%
(620) там где "это че" - это название договора и портал в таком состоянии его возьмет
623. Nykos 31.05.16 15:13 Сейчас в теме
(621) Slypower, да? я как-то пробовал у меня не получалось. Извиняюсь тогда.
625. shiko 31.05.16 15:28 Сейчас в теме
(618) xamss,
Должна быть самая первая строка

<?xml version="1.0" encoding="UTF-8" ?>
У тебя ее нет

Тег
<dateIssuance>2016-05-30</dateIssuance>
не нужен его портал сам добавит когда будешь грузить
635. Kyzmina2 01.06.16 09:21 Сейчас в теме
(618).xamss , Проверить хмл с схемой -->> utilities-online.info
634. VitaliyZdanovich 01.06.16 00:56 Сейчас в теме
Подскажите, плиззз, на машинах Win2008R2 при входе на портал
Включите SSL 3.0, TLS 1.0, TLS 1.1 и TLS 1.2
С Семерки все в норме, хотя делалось все по мануалам идентично одними и теми же ровными руками
636. Slypower 2 01.06.16 09:27 Сейчас в теме
(634) VitaliyZdanovich, прочтите (502)
638. AlexRau1 01.06.16 09:54 Сейчас в теме
(636) Slypower,
на машинах Win2008R2 работает и без прав администратора.
639. AlexRau1 01.06.16 09:55 Сейчас в теме
(634) VitaliyZdanovich,

Для серверной винды есть нюанс. Измените в реестре парамерт
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\RequireSignedAppInit_DLLs (поменять на 0 )
После перезапустите ие и попробуйте отгрузить ссылку по https протоколу
Parazyte; Gladkov_Anton; +2 Ответить
4424. prog_ivory 13.10.16 11:51 Сейчас в теме
InvList = EVatService.GetList(НужнаяДата);
{D:\BASE1C\OVTC-2010NEW\EXTFORMS\ВЫГРУЗКАЗАГРУЗКАЭЛСЧЕТФАКТУР_TEST_0.ERT(639)}: Плохой тип переменной

Дата вроде как и у всех
   Год=ДатаГод((ВыбДата));
    Месяц=Формат(ДатаМесяц(ВыбДата),"Ч(0)2.0");
    День=Формат(ДатаЧисло(ВыбДата),"Ч(0)2.0");
	Час=Формат(0,"Ч(0)2.0");
	Минут=Формат(0,"Ч(0)2.0");
	Секунд=Формат(0,"Ч(0)2.0");
    СтрДата=СокрЛП(Год)+"-"+СокрЛП(Месяц)+"-"+СокрЛП(День)+"T"+СокрЛП(час)+":"+СокрЛП(Минут)+":"+СокрЛП(Секунд)+"Z";
    Возврат СтрДата;
Показать
4425. Slypower 2 13.10.16 11:56 Сейчас в теме
(4424) prog_ivory, сделайте так и узнаете почему
	Попытка
		InvList = EVatService.GetList(НужнаяДата);
	Исключение
		Предупреждение("Ошибка получения списка ЭСЧФ: " + EVatService.LastError);
		Возврат;		
	КонецПопытки;
4427. ASDCXZ 13.10.16 12:03 Сейчас в теме
(4424) prog_ivory, Про плохой тип переменной пишет, когда не может отдать список. Если хотя бы иногда срабатывает - то дело не строке, а в сервисе.
100% рабочий код:
стрДата = Строка("" + ДатаГод(ДатаС) + "-" + Формат(ДатаМесяц(ДатаС),"Ч(0)2.0. ") + "-" + Формат(ДатаЧисло(ДатаС),"Ч(0)2.0. ") + "T00:01:00Z");
4428. Slypower 2 13.10.16 12:05 Сейчас в теме
(4427) ASDCXZ, тут достаточно вначале "" + , или Строка(), а все вместе это уж еперестаховка))))
4434. ASDCXZ 13.10.16 12:17 Сейчас в теме
(4428) Slypower, Да. Но как заработало, то больше и не лазил - других разборок хватает.
640. an2007 01.06.16 10:37 Сейчас в теме
Всем добрый день,
пробую выгрузку счет-фактур, взял пример на сайте VAT...
web-сервис установлен, Windows Server 2003 R2, 1c v7.7 SQL
Проверка соответствия xml-документа схеме:

InvVatXml = EVatService.CreateEDoc;
Если InvVatXml.Document.LoadFromFile(ИмяФайла) <> 0 Тогда
Сообщить( "Ошибка чтения файла: " + EVatService.LastError);
возврат;
КонецЕсли;

На строке загрузки 1c-ка вылетает.
что не так?
641. Slypower 2 01.06.16 10:38 Сейчас в теме
(640) an2007, ИмяФайла - у вас точно соответствует путь до файла? Возможно доступа нет для этого файла. Попробуйте отладчиком посмотреть, в каком месте вылетает
642. an2007 01.06.16 10:52 Сейчас в теме
Имя вроде бы корректно:
Вот результат в отладчике:

ИмяФайла = "D:\xml\210_13.05.16.xml"
ФС.СуществуетФайл(ИмяФайла) = 1

Хотя, имя файла произвольное или должно содержать УНП и т.д.?
643. Slypower 2 01.06.16 10:54 Сейчас в теме
(642) an2007, откуда у вас код? Скиньте его больше, чтобы проследить. В этой темы есть примеры 1С на 7.7 с выгрузкой, проверкой, подписью
Имя произвольное
644. an2007 01.06.16 11:01 Сейчас в теме
(643) Slypower,
Пример брал с сайта: Процедуры ЭСФЧ для 1с8(+1с7).docx
Вот начал писать обработку: ВыгрузкаСчетФактур.ert
Прикрепленные файлы:
Процедуры ЭСФЧ для 1с8(+1с7).docx
ВыгрузкаСчетФактур.ert
646. Slypower 2 01.06.16 11:10 Сейчас в теме
(644) an2007, пробуй перебор так:
   ФС.УстТекКаталог(СокрЛП(хмлКаталогВыгрузки));
        ИмяФайла = СокрЛП(ФС.НайтиПервыйФайл("*.*"));
        Пока ИмяФайла <> "" Цикл
            Если (ИмяФайла=".") или (ИмяФайла="..") Тогда
                ИмяФайла=ФС.НайтиСледующийФайл();
                Продолжить;
            КонецЕсли;
.....
            ИмяФайла=ФС.НайтиСледующийФайл();
        КонецЦикла; 	 
Показать

Дополнено
647. an2007 01.06.16 11:20 Сейчас в теме
(646) Slypower,
Пробовал явно:
ИмяФайла = "d:\xml\210.xml";
		//Чтение файла
		InvVatXml = EVatService.CreateEDoc;
		Если InvVatXml.Document.LoadFromFile(ИмяФайла) <> 0 Тогда
			Сообщить( "Ошибка чтения файла: " + EVatService.LastError);
			возврат;
		КонецЕсли;


то, же самое. Может что-нибудь в системе, или права доступа, хотя учетная запись <Администратор>.
649. Slypower 2 01.06.16 11:25 Сейчас в теме
(647) an2007, у вас EInvVatService от 20 мая? Или ранее, тогда нужно обновиться
651. Nykos 01.06.16 11:28 Сейчас в теме
(649) Slypower, мне кажется это проблемы не решит, у меня тоже 1с крошится на некоторые запросы к порталу, хотя все самое свежее
653. an2007 01.06.16 11:36 Сейчас в теме
(649) Slypower,
проверил версию, установлена последняя: 1.2.1 от 18/05/2016
645. dealko 01.06.16 11:09 Сейчас в теме
(642) Имя файла произвольное. Я вообще использую ПолучитьИмяВременногоФайла("xml") и все работает.
660. Slypower 2 01.06.16 13:08 Сейчас в теме
(642) an2007, на имени у меня ложится 1С если я работаю не авторизовавшись на портале через ключ
661. an2007 01.06.16 13:17 Сейчас в теме
(660) Slypower,
т.е. похоже на то, что просто выполнить проверку на соответствие схемы не получится без авторизации?
662. Slypower 2 01.06.16 13:37 Сейчас в теме
(661) an2007, проверял раньше. Сейчас обновился до самой последней версии, теперь вообще ни..ра не работает, сижу разбираюсь
665. Slypower 2 01.06.16 13:52 Сейчас в теме
(661) an2007, да, получается так. Без авторизации он не может создавать методы и работать с ними, поэтому и проверять не может на 1С7.7. Для этого и авторизуемся. В 8 версии уже в самой программу встраиваются схемы, так там возможность такая должна быть
674. an2007 01.06.16 15:38 Сейчас в теме
(665) Slypower,
ВСЕ, разобрался, все работает, всем спасибо.
4439. prog_ivory 13.10.16 12:45 Сейчас в теме
теперь уже другая беда.
InvVatXml = EVatService.GetEDoc(InvVatNumber);
{D:\BASE1C\OVTC-2010NEW\EXTFORMS\ВЫГРУЗКАЗАГРУЗКАЭЛСЧЕТФАКТУР_TEST_0.ERT(665)}: Плохой тип переменной
	for i = 0 to ЧислоЭСЧФ-1 do 
		InvVatNumber = InvList.GetItemAttribute(i, "document/number");
		Сообщить(InvVatNumber);
			InvVatXml = EVatService.GetEDoc(InvVatNumber);
			Сообщить(InvVatXml);
			//Проверить ЭЦП
			res = VerifyAllSigns(InvVatXml);
			if res = 0 then			   
				Сообщить( "Ошибка проверки ЭЦП полученного документа: " + EVatService.LastError );
			endif;				
	 	InvVatStatus = EVatService.GetStatus(InvVatNumber);
		res = InvVatStatus.Verify();
Показать
4440. Slypower 2 13.10.16 12:55 Сейчас в теме
(4439) prog_ivory, 20-й раз повторюсь, допишите везде такое:
Попытка
InvList = EVatService.GetList(НужнаяДата);
Исключение
Предупреждение("Ошибка получения списка ЭСЧФ: " + EVatService.LastError);
Возврат;
КонецПопытки;

отличие одно: GetList(НужнаяДата), EVatService.GetEDoc(InvVatNumber); Вы будете знать ошибку, почему эта ошибка возникает.
4443. 1c77minsk 13.10.16 13:10 Сейчас в теме
(4439) prog_ivory, у меня тоже писало "Плохой тип переменной", в итогге оказалось что глючил портал.
Я в таких случаях делал перед вызовом
Сообщить(InvVatNumber); - если выдавало нормальный номер - 100% глюки портала.
4446. prog_ivory 13.10.16 13:16 Сейчас в теме
(4443) 1c77minsk, Да! именно это и происходит. номер вижу.
Так а что тогда с этим делать?
4447. 1c77minsk 13.10.16 13:20 Сейчас в теме
(4446) prog_ivory, ждать когда отлагает портал. У меня тоже сейчас валится эта ошибка, причем один и тот же номер проходит, а потом не проходит.
4448. Slypower 2 13.10.16 13:22 Сейчас в теме
(4446) prog_ivory, вот вам решение ваше
Перем dom,ТекУзел, obj2;

Функция ДанныеАтрибута(Узел,Атрибут)
	
		Попытка
			если Узел=ТекУзел Тогда
				Данные=СокрЛП(ТекУзел.selectSingleNode(Атрибут).text);
			ИначеЕсли Узел=dom Тогда
				Данные=СокрЛП(dom.documentElement.selectNodes(Атрибут).item(0).text); 
			ИначеЕсли Узел=obj2 Тогда
				Данные=СокрЛП(obj2.getAttribute(Атрибут));
			//Иначе
			//	Предупреждение("Не найден узел "+Атрибут );
			КонецЕсли;
		Исключение
			Данные="";
		КонецПопытки; 
		Возврат Данные;
КонецФункции // ДанныеАтрибута

Процедура СкачкаВФайл()	//после введения однократного обращения на портал в течении суток
	Перем InvVatNumber;
	
	FSO=СоздатьОбъект("Scripting.FileSystemObject");
	
	Если FSO.FolderExists(ВыбМеста)=0 Тогда
		xml_Folder=FSO.CreateFolder(ВыбМеста); //создать папку, если ее нет.
	КонецЕсли;
	
	//fn = ВыбМеста+".xml";
	НужнаяДата=ФорматДатыВх(НачДата);// Сообщить(НужнаяДата);
	ListDocuments = 1;
	
	ПопыкаGetList=0;
	~ПроверкаДаты:
	Попытка
		Состояние("Получаем список ЭСЧФ на портале");
		InvList = EVatService.GetList(НужнаяДата);
	Исключение
		ПопыкаGetList=ПопыкаGetList+1;
		Если ПопыкаGetList=4 Тогда
			Предупреждение("Ошибка получения списка ЭСЧФ: " + EVatService.LastError + " И это после 4-х попыток...");
			Возврат;
		КонецЕсли;
		Перейти ~ПроверкаДаты;
	КонецПопытки;
	if InvList =  0 then
		Сообщить( "Ошибка получения списка ЭСЧФ: " + EVatService.LastError);
		возврат;
	endif; 
	
	ЧислоЭСЧФ=InvList.Count;
	if ЧислоЭСЧФ = 0 then
		Сообщить( "Нет поступивших документов на сервере");
		ListDocuments = 1;
		возврат;
	endif;
	
	номер=0;
	for i = 0 to ЧислоЭСЧФ-1 do 
		Состояние("Ищем входящие ЭСЧФ на портале...");
		InvVatNumber = InvList.GetItemAttribute(i, "document/number");	//Сообщить(InvVatNumber);
		
		файл=ВыбМеста+"\sgn_"+InvVatNumber+".xml";
		файлXML=ВыбМеста+"\file_"+InvVatNumber+".xml";
		
		
		КоличествоРаз=0;
		~ПовторитьПопытку:
		Попытка
			InvVatXml = EVatService.GetEDoc(InvVatNumber);	
		Исключение
			КоличествоРаз=КоличествоРаз+1; //Сообщить(КоличествоРаз);
			Если КоличествоРаз=4 Тогда 
				Предупреждение(EVatService.LastError);
				Прервать;
			КонецЕсли;
			Сообщить(EVatService.LastError);
			ListDocuments = 2;//
			
			res = VerifyAllSigns(InvVatXml);
			if res = 0 then			   
				Сообщить( "Ошибка проверки ЭЦП полученного документа: " + EVatService.LastError );
			else
				res = InvVatXml.SaveToFile( файл );
				res = InvVatXml.Document.SaveToFile	(файлXML);			
			endif;
			
		КонецПопытки;
		
	EndDo;
	
КонецПроцедуры

Процедура СозданиеДока()
	
	Попытка
		dom = СоздатьОбъект("MSXML2.DOMDocument");
	Исключение
		Сообщить("Не удалось создать объект MSXML2.DOMDocument");
		Возврат;
	КонецПопытки;
	
	ФС.УстТекКаталог(ВыбМеста);
	Если ФС.СуществуетФайл(ВыбМеста+"\file_"+ТаблЗнач.ПолучитьЗначение(ТаблЗнач.ТекущаяСтрока(),"InvVatNumber")+".xml")=1 тогда //Сообщить(файл))
		файл=ВыбМеста+"\file_"+ТаблЗнач.ПолучитьЗначение(ТаблЗнач.ТекущаяСтрока(),"InvVatNumber")+".xml";// ТаблЗнач.ПолучитьЗначение(ТаблЗнач.ТекущаяСтрока(),"InvVatNumber") - это из таблицы моей. Тут нужен ваш номер эсчф
	иначе
		предупреждение("Нет файла для чтения");
		Возврат;
	конецЕсли;
	
dom.load(файл); //Сообщить(файл);

	документЭСЧФ=СоздатьОбъект("Документ.ВходящаяЭСЧФ");
	СпрКонтр=СоздатьОбъект("Справочник.Контрагенты");
	
	документЭСЧФ.Новый();
	документЭСЧФ.Контрагент=ДанныеАтрибута(dom,"provider/name");
	документЭСЧФ.Договор=ДанныеАтрибута(dom,"deliveryCondition/contract/number")+" от "+ДанныеАтрибута(dom,"deliveryCondition/contract/date");
	
	Строки=dom.documentElement.selectSingleNode("roster");
	
	Кол=Строки.childNodes.length;
	Для Счетчик=0 По Кол-1 Цикл
		документЭСЧФ.НоваяСтрока();

		ТекУзел=Строки.childNodes.item(Счетчик);
		документЭСЧФ.Услуга=ДанныеАтрибута(ТекУзел,"name"); 
		документЭСЧФ.Количество= Число(ДанныеАтрибута(ТекУзел,"count"));
		документЭСЧФ.Цена= Число(ДанныеАтрибута(ТекУзел,"price"));
		документЭСЧФ.Сумма= Число(ДанныеАтрибута(ТекУзел,"cost"));
		документЭСЧФ.НП= Число(ДанныеАтрибута(ТекУзел,"summaExcise"));
		документЭСЧФ.НДС=Число( ДанныеАтрибута(ТекУзел,"vat/summaVat"));
		документЭСЧФ.Всего=Число(ДанныеАтрибута(ТекУзел,"costVat"));
	КонецЦикла;
	
	документЭСЧФ.Записать(); //запись без проведения

	
	
КонецПроцедуры // СозданиеДока
Показать


печатаю по умственному представлению вашего дока)
volfochka; +1 Ответить
4449. prog_ivory 13.10.16 14:38 Сейчас в теме
(4448) Slypower, по этому коду на soap соединение вылетает
648. shiko 01.06.16 11:23 Сейчас в теме
Доброго дня.
Кому то удалось получить расшифровку принятых тикетов?
650. Slypower 2 01.06.16 11:27 Сейчас в теме
(648) shiko, как я понимаю, они временные, несут инфо о доках. Есть выше ссылка, где их можно расшифровать. Либо же обращаясь к ним можно выходить на док-родитель и брать всю инфу оттуда путем перебора атрибутов
659. dealko 01.06.16 13:03 Сейчас в теме
(648) Какая проблема в чтении тикетов? Там все зашифровано base64. При расшифровке получаешь обычный xml. Расшифровываются точно так же, как и ответ портала на GetEDoc

Nykos, я тебе там еще накидал. Подпиши парочку, хочу обновление статусов проверить. И ответных скинь, если не сложно.
664. Nykos 01.06.16 13:49 Сейчас в теме
652. an2007 01.06.16 11:30 Сейчас в теме
На сайте обновление от 30 мая, сейчас обновлю и попробую...
654. Slypower 2 01.06.16 11:57 Сейчас в теме
(652) an2007, смущает их путь к порталу в этой обнове: https://ws.vat.gov.by:443/InvoicesWS/services/InvoicesPort. С этим путем не подключается к ним. Поменял на привычный https://vat.gov.by:4443/InvoicesWS/services/InvoicesPort - заработало. Ач то в их новой обнове нового? я не нашел разницы еще, как b-document не работали так и не работают
655. shiko 01.06.16 12:15 Сейчас в теме
(654) Slypower, отправил парочку ЭСЧФ
656. Slypower 2 01.06.16 12:22 Сейчас в теме
(655) shiko, опять b-document((( Интересно, как портал их вообще определяет, как создавать? Закончились номера для e-document? Потом перейдут на какой-нибудь c-document?
657. shiko 01.06.16 12:54 Сейчас в теме
(656) Slypower, Я создавал на сайте ЭСЧФ.
658. shiko 01.06.16 12:58 Сейчас в теме
(656) Slypower, Обработку доделаю выставлю из 1С Посмотрим результат
1056. Slypower 2 14.06.16 12:17 Сейчас в теме
Ахахахах, вспомнил свой пост (654), где они в обнове не тот адрес скинули)))) ахахаха, так зато теперь он работает через 1с, подключается и выставляет. Получается, была тогда утечка инфы)) "Не благодарите", работайте дальше)) и да, выставьте пару ЭСЧФ на 190258843
shiko; vsinyavkin; Gladkov_Anton; +3 Ответить
1058. pasha_2001 14.06.16 13:08 Сейчас в теме
(1056) Slypower, что из 1С уже отправляется и принимается?
У меня Ошибка HTTP
Socket Error # 10060
Connection timed out.
Зы. на 443 порту тоже самое
1059. Slypower 2 14.06.16 13:22 Сейчас в теме
(1058) pasha_2001, работает. Внимательно читай пост (1056). ВНИМАТЕЛЬНО!!!!
1060. pasha_2001 14.06.16 13:29 Сейчас в теме
1064. pasha_2001 14.06.16 13:42 Сейчас в теме
663. bobrhleb 01.06.16 13:40 Сейчас в теме
У меня в 8.0 нету "ПостроительDOM" (или я плохо искал), поэтому вытянул реквизиты входящего без него.
Может кому пригодится.
Процедура Раскодировать()

НайденныеФайлы = НайтиФайлы("c:\","*-*-??????????.xml");

Для Каждого Стр Из НайденныеФайлы Цикл 
		XMLTMP = Новый ЧтениеXML();
		XMLTMP.ОткрытьФайл(Стр.ПолноеИмя);
		Пока XMLTMP.Прочитать() Цикл
			Если XMLTMP.ТипУзла = ТипУзлаXML.НачалоЭлемента И XMLTMP.Имя = "document" Тогда
				XMLTMP.Прочитать();
				ВремФайл = ПолучитьИмяВременногоФайла("xml");
				ДВ = Base64Значение(XMLTMP.Значение);
				ДВ.Записать(ВремФайл);
         	КонецЕсли;
        КонецЦикла;
       	XMLTMP.Закрыть();		       
			
		XML = Новый ЧтениеXML();
		XML.ОткрытьФайл(ВремФайл);
		Пока XML.Прочитать() Цикл
			Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента  Тогда
				 ИмяУзла = XML.Имя;
				 XML.Прочитать();
				 Сообщить(ИмяУзла + "=" + XML.Значение); 
			КонецЕсли;
		КонецЦикла;
		XML.Закрыть();
КонецЦикла;
КонецПроцедуры
Показать
668. pasha_2001 01.06.16 14:05 Сейчас в теме
(663) bobrhleb, и какой реквизит выудили этой процедурой? У меня вытянуло value=lBZTv31ZpRFxpD+VBIyyZnW7UnIPoaScFrdhnghnvHs= и дату из файла-тикета
670. bobrhleb 01.06.16 14:22 Сейчас в теме
(668) pasha_2001, Насчет тикетов не знаю, еще не пробовал. Это для Входящего ЭСЧФ.
671. dealko 01.06.16 14:44 Сейчас в теме
(668) Что вы хотите увидеть в этих тикетах? Там информации 0. Вот пример расшифрованного тикета:
<quote>
<ticket><issuer URI="https://vat.gov.by/einvoice"><reference URI="document_id:304E25A02877A0C65921EB830BFB258BBFAEB651C7D6786916BB425F513D­245A"><digest><method algId="1.2.112.0.2.0.34.101.31.81"/><value>e3evpAJuXCGL7nUocan6B2mShuLtdRmdPYTh+p+K9tU=</va­lue></digest><ob jectIdentifier path="/issuance/general/number"><value>400095469-2016-0000000002</value></objectIdentifier></reference><receipt accepted="true"><message>Документ принят в обработку.</message><date>2016-06-01T02:38:10Z</date></receipt></ticket>
</quote>
672. AlexRau1 01.06.16 15:20 Сейчас в теме
(671) dealko,
Согласен. При чем эти тикеты отправляются и на счтеа, которые по каким-либо причинам не принял портал.
673. pasha_2001 01.06.16 15:36 Сейчас в теме
(671) dealko, вот и интересно - на кой черт эти тикеты дались? возможно допилят попозже
675. dealko 01.06.16 16:43 Сейчас в теме
(673) pasha_2001, не думаю. Скорее всего, по задумке, тикет - это просто ответ портала "Принято". Пришел тикет - все ОК, на портал ушло, проверяй судьбу ЭСЧФ по номеру через GetEDoc и GetStatus.
pasha_2001; shiko; +2 Ответить
676. Slypower 2 01.06.16 17:27 Сейчас в теме
(675) dealko, нужно у них просить, чтобы метод этот GetStatus делали по датам, с такой даты поп такой
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот