Всем привет. Не секрет, в Беларуси с 1 июля 2016 должна подаваться ЭСЧФ. Кто-нибудь уже работает с ней? Ведь там, вроде, уже 60 компаний Беларуси работает в тестовом режиме.
Сделал я по инструкциям, что на их сайте, но столько вопросов к их информации осталось.
Очень много полезного нам дали разработчики. Внимательно читайте их документацию в eInvVat, которую скачиваете, а так же примерами для 1С служат bat файлы из папки eInvVat\simpleapp\vbs\src\. Не поленитесь и посетить их сайт vat.gov.by. На основании этих знаний все пишут обработки. Если что не понятно, то можно прибегнуть к данной теме.
Важные и полезные ссылки на сайты и на сообщения темы.
Ссылки на сайт портала
Новости от разработчиков - здесь Руководства и инструкции по настройки ПК, Windows, IE - здесь Описание XML-схем и веб-сервисов - здесь Видео вебинара по ЭСЧФ, который проходил в июле - здесь
Обработки с данной темы
Обработка от BONIA Я (Bonia) - (229) и пример кода (231) и (1098) Обработка по проверке файла по схемам. Автора я не смог найти (отзовись, в историю впишем). Переделана Slypower - (308) Обработка по входящим от Slypower. До введения однократного скачивания в сутки - (2537) Обработка по входящим для 1с 7.7 и для 1с8. Рабочая от slypower - (5412). С доработками от Евгений Веренич (EvgPinsk) - (7206) Делает XML из выбранного документа от Asd Zxc (ASDCXZ) - (2823) Отправка ЭСЧФ от slypower. Очень сырая и для ТиС. Требует переделки од себя индивидуальна. Годна для черпания идей - (2950) Печать ЭСЧФ от Сергей Кириллов (Sergey_Kirillov) - (4358) Проверка УНП с сайта налоговой http://www.portal.nalog.gov.by/grp/ - от Aleksey Krasowskiy (Krasowskiy)(5026) и от Сергей Кириллов (Sergey_Kirillov)(5031) Получерие входящей ЭСЧФ по номеру от Aleksey Krasowskiy (Krasowskiy) - (5169) Обновление СОС от slypower - (5291) Будьте внимательны. В старых сообщениях в обработках стоят неправильные адреса для подключения. В первую очередь проверьте их!!!
Полезные сообщения темы
Реклама своей работы от Gladkov_Anton - (445) Реклама своей работы от Александр Самуйлов (A.E.) - (1273) Реклама своей работы от Yauhen Makei (mrDSide) - (5591), (5592) Автоматический подключение к ключу-(354) Декодирование файлов .sgn и .ticket - (448) Отправки ЭСЧФ с помощью сервиса из терминальной сесии для простого пользователя не обладающего правами Администратора. Испробовано на Сервере 2003/32 - (784) Программа, которая ключ на сервер пробрасывает - (842) , (5408),(6568) Инструкция по настройке серверных компов от Ира С (iraSys) - (844) Дополнительная настройка для серверных операционных систем - (5208) Сервис для проверки валидности xml - (871) Классификатор ТНВЭД в экселе - (790) и (885) Автоматический импорт СОС на локальную машину - (2853), (2854) и (2856), (3882) Полезная информациея тем, кто использует в работе терминальные сервера - (3044) Артур Коржан (1v7) собрал "полезные вкусняшки в куче" - (3688) Корректировка кодов справочника стран от Артур Коржан (1v7) - (5844) Образцы заполнения ЭСЧФ - (3700) На портале развернута база данных cassandra. Описание - (3908), (5459) Возможные ситуации, которые могут возникнуть с работой порталом и их решение - (4524) SlimBrowser вместо IE для работы на Вин XP - (4684) Универсальная загрузка из CSV от vvv vvv (keyn5565`): (6951). Код к ней (если кто не может скачать): (7076)
Коды процедур для 1С
Процедура работы с входящими на 1С 8.3 - (4275) Парсер csv с портала для 1С 8 - от Сергей Кириллов (Sergey_Kirillov) (4352) от Xer shi (Xershi) (4363) Скачка входящих и создание дока в 1С7.7 - (4448) Обновление статусов 1С7.7 - (4573) Читать хмл 1с7.7 от Хьюмена -(4808) Скачка входящих для 1с8 от vvv vvv (keyn5565`) - (5126) Проверка версии компоненты для 1С8 от Xer shi (Xershi) - (5186) Скачкивать входящие подписанные эсчф с портала - (5345) Создание задачи для автоматического обновления СОС, 1с8 от vvv vvv (keyn5565`) - (5350) Обновление СОС из 1С7.7 от Igor Pleskun (Igor Igorevich) - (5361) Обновление СОС из 1С8 от vvv vvv (keyn5565`) - (5423) Проверка справочника контрагентов для проверки ликвидирования контрагента для 1с8 от vvv vvv (keyn5565`) - (5419), от Xer shi (Xershi)(5437) Проверки по правилам заполненения для 1С8 от Xer shi (Xershi) - (5508), (5509) Проверка подписей эсчф на портале - от Xer shi (Xershi)(5530), от Yauhen Makei (mrDSide)(5599) Заполнение справочника ОКЭД от vvv vvv (keyn5565`) - (5565)
Вопрос-Ответ
Многие ошибки, да почти все, связаны с не стабильной работой портала, особенно во времена всеобщей выгрузки ЭСЧФ на портал. Но некоторые тут вынесем.
Какие сроки выставления ЭСЧФ?
Ответ: Министерство по налогам и сборам информирует, что в соответствии с пунктом 5 статьи 1061 Налогового кодекса Республики Беларусь с 1 января 2017 года выставление (направление) электронного счета-фактуры осуществляется по общему сроку не позднее 10-го числа месяца, следующего за месяцем дня отгрузки товаров (выполнения работ, оказания услуг), передачи имущественных прав, если иное не установлено пунктом 5 статьи указанной статьи.
В отношении товаров (работ, услуг), имущественных прав, отгруженных (выполненных, оказанных), переданных в декабре 2016 г., выставление электронного счета-фактуры также может производиться по сроку не позднее 10.01.2017.
Подскажите, плиззз, на машинах Win2008R2 при входе на портал
Включите SSL 3.0, TLS 1.0, TLS 1.1 и TLS 1.2
С Семерки все в норме, хотя делалось все по мануалам идентично одними и теми же ровными руками
Ответ: (639)
Сообщение об ошибке, которое выплевывает 1Ска при попытке законнектиться к порталу (команда "EVatService.Connect..."):
"THE CLIENT AND SERVER CANNOT COMMUNICATE BECAUSE THEY DO NOT POSSESS THE COMMON ALGORITHM"
или по-русски "КЛИЕНТ И СЕРВЕР НЕ МОГУТ ОБЩАТЬСЯ, ПОТОМУ ЧТО ОНИ НЕ ОБЛАДАЮТ ОБЩИМ АЛГОРИТМОМ."
Ответ: (2310)
Ошибка при проверке XML: Класс не зарегистрирован, ClassID: {88D96A07-F192-11D4-A65F-0040963251E5}
Ошибка возникает только на сервере 2003 сп2 32битм Java 7 79 updt
Ответ: (2365)
Отличие Исправленной от дополненной.
Ответ: (5020)
Отправили ЭСЧФ на портал, но ее там нет.
Ответ: Чтобы узнать почему, воспользуйтесь одним из способов:
1) загрузите файл xml этой ЭСЧФ на портала вручную
2) сделайте возврат статуса сразу после отправки на портал. Он вам и вернет ответ на вопрос, почему нет.
Портал вернул статус "IN_PROGRESS" или "В разработке" или "ЭСЧФ с номером 11111111-2017-0000000001 находится в обработке. Запросите статус повторно.".
Ответ: (5237). Данный статус может быть на портале до 3-х часов, но чаще всего лишь минут 30, затем становиться "Выставлен".С 1 января 2017 г наблюдается задержка до суток.
Можно ли анулировать из 1С?
Ответ: Нельзя, только на портале. Можно выставить исправленный, который анулирует исходный, но просто анулировать нельзя.
При подключении к тестовому порталу:
Ошибка авторизации на портале электронных счетов-фактур НДС Сертификат издателя не найден. [Для проверки <vat.gov.by> не найден сертификат <Удостоверяющий центр для разработчиков> (KeyID=6E28B036743B6B021B4D353E1AC51C5A204271FA)
Ответ: (5868)
Что значит UTC в строке: Ответ сервера: В последний раз ЭСЧФ под номером УНП-ГОД-НОМЕРЭСЧФ вы получали 2016-09-06 11:35:18 (UTC), в следующий раз ее можно будет получить после 2016-09-07 11:35:18 (UTC) и почему это время не совпадает с нашим?.
Ответ: UTC — это всемирное координированное время, стандарт времени, принятый на Земле. От UTC отсчитываются часовые пояса. UTC заменил устаревшее время по Гринвичу (GMT). Подробнее тут.
при попытке загрузить ЭСЧФ из xml файла пишет.
Версия анализатора = 2.0
Версия базового анализатора = 4.0
Для загрузки файлов необходима версия XML Parser 3.0
где копать?
Ответ: В ХР зарегистрирован Microsoft XML Parser 4.0, но есть там и 3.0.
Действия :
Отменяем регистрацию версии XML 4.0 :
Пуск - выполнить - копируем или набираем regsvr32 /u msxml4.dll - Ок
Затем регистрируем версию 3.0:
Пуск - выполнить - копируем regsvr32 msxml3.dll -ОК
После этого надо перезапустить 1С программу, если она была открыта.
Если ничего не помогает, качаем ниже и устанавливаем пакет MSXML3
Также ошибка MSXML может возникать и в более поздних версиях Windows 7 и 8. Для 64-битной версии устанавливаем версию соответствующую разрядности ОС x64 - msxml4-kb2721691-enu.
По итогу все равно ничего не работало, пока не закинула эти файлы msvcp71.dll, msvcr71.dll, parser3isapi.dll в папку с 1с.
Еще одно решение:
Через установку и удаление программ я удалил Parser 4 и 6-й. Зашел в 1с - все работает и загружает.
(1) Slypower, на счет семерки хз. Но я предложил коллеге через вебсервисы фигачить как 2 пальца будет. Создали документ, начали кнопку отправить, если отправилось галка отправки проставилась.
(1) раз уж есть код проверки протокола (хотя это совсем не верно, т.к. зависит от конфигурации), то пусть будет и это:
// Входит ли в перечень товаров согласно Указа Президента Республики Беларусь от 21 июня 2007 г. №287 "О налогообложении продовольственных товаров и товаров для детей"
//
// Параметры:
// Код - Строка - код ТН ВЭД ЕАЭС в формате '9999999999'
//
// Возвращаемое значение:
// Булево - результат проверки
//
Функция ВходитВПеречень287(Код) Экспорт
Первый = Лев(Код, 4);
Второй = Лев(Код, 6);
Третий = Лев(Код, 9);
Возврат Код = "0101210000"
Или Второй = "010221"
Или Код = "0103100000"
Или Код = "0104101000"
Или Код = "0104201000"
Или Первый = "0105"
Или Код = "0106141090"
Или Первый = "0201"
Или Первый = "0202"
Или Первый = "0203"
Или Первый = "0204"
И Не Второй = "020450"
Или Второй = "020500"
Или Первый = "0206"
И Не ( Код = "0206101000"
Или Код = "0206220001"
Или Код = "0206291000"
Или Код = "0206300001"
Или Код = "0206300003"
Или Код = "0206410001"
Или Код = "0206490001"
Или Второй = "020680"
Или Второй = "020690"
) Или Первый = "0207"
И Не ( Третий = "020743000"
Или Третий = "020745930"
Или Третий = "020753000"
Или Третий = "020755930"
) Или Второй = "020810"
Или Код = "0209101100"
Или Код = "0209101900"
Или Второй = "160100"
Или Второй = "160232"
Или Второй = "160239"
Или Второй = "160241"
Или Второй = "160242"
Или Второй = "160249"
Или Второй = "160250"
Или Первый = "0401"
Или Первый = "0402"
Или Первый = "0403"
Или Первый = "0404"
Или Второй = "040510"
Или Второй = "040520"
Или Второй = "040610"
Или Второй = "040630"
И Не Код = "0406301000"
Или Код = "0406906900"
Или Код = "0406908600"
Или Третий = "040690990"
Или Третий = "151211910"
Или Код = "1512199002"
Или Код = "1512199009"
Или Третий = "151411900"
Или Третий = "151419900"
Или Третий = "151491900"
Или Третий = "151499900"
Или Первый = "1517"
Или Код = "2106909804"
Или Первый = "2302"
Или Первый = "2303"
Или Второй = "230990"
Или Первый = "1201"
Или Второй = "120400"
Или Первый = "1205"
Или Второй = "120600"
Или Код = "2304000001"
Или Код = "2304000009"
Или Первый = "2306"
И Не ( Код = "2306500000"
Или Код = "2306600000"
) Или Первый = "1905"
И Не Код = "1905905500"
Или Код = "2102103100"
Или Код = "2102103900"
Или Код = "1704906100"
Или Код = "1704906500"
Или Код = "1704907100"
Или Код = "1704907500"
Или Второй = "100630"
Или Код = "1006400000"
Или Второй = "110100"
Или Первый = "1102"
Или Первый = "1103"
Или Первый = "1104"
Или Первый = "1105"
Или Код = "1106100000"
Или Код = "1107101100"
Или Код = "1107109100"
Или Первый = "1208"
Или Первый = "1902"
Или Код = "1602100010"
Или Код = "1702500000"
Или Код = "1901100000"
Или Код = "2104200010"
Или Первый = "2202"
И Не Код = "2202901001"
Или Второй = "290544"
Или Второй = "382460"
Или Первый = "0701"
Или Третий = "070200000"
Или Код = "0703101900"
Или Код = "1212210000"
Или Первый = "2001"
Или Первый = "2002"
Или Первый = "2003"
Или Первый = "2004"
Или Первый = "2005"
Или Первый = "2006"
Или Первый = "2006"
Или Первый = "2008"
Или Первый = "2009"
И Не Код = "2005202000"
Или Первый = "1701"
Или Код = "0409000000"
Или Код = "0407210000"
Или Код = "0407291000"
Или Код = "0407901000"
Или Код = "0408118000"
Или Код = "0408198100"
Или Код = "0408198900"
Или Код = "0408918000"
Или Код = "0408998000"
Или Первый = "0302"
Или Первый = "0303"
Или Первый = "0304"
Или Первый = "0305"
Или Первый = "1604"
И Не ( Код = "1604110000"
Или Код = "1604141600"
Или Код = "1604160000"
Или Код = "1604191000"
Или Код = "1604193100"
Или Код = "1604199710"
Или Код = "1604201000"
Или Код = "1604203000"
Или Код = "1604204000"
Или Код = "1604209010"
Или Код = "1604310000"
Или Код = "16043200"
) Или Код = "3407000000"
Или Код = "3922100000"
Или Код = "3926100000"
Или Первый = "4202"
Или Код = "4421909800"
Или Код = "9619002100"
Или Код = "9619003100"
Или Код = "9619003900"
Или Код = "9619005101"
Или Код = "9619005901"
Или Код = "9619009001"
Или Код = "4820105000"
Или Код = "4820200000"
Или Код = "4820300000"
Или Код = "4820900000"
Или Код = "6101209000"
Или Код = "6101309000"
Или Код = "6101908000"
Или Код = "6102109000"
Или Код = "6102209000"
Или Код = "6102309000"
Или Код = "6102909000"
Или Первый = "6103"
Или Первый = "6104"
Или Первый = "6105"
Или Первый = "6106"
Или Первый = "6107"
Или Первый = "6108"
Или Первый = "6109"
Или Первый = "6110"
Или Первый = "6111"
Или Первый = "6112"
Или Первый = "6115"
Или Первый = "6116"
Или Первый = "6201"
Или Первый = "6202"
Или Первый = "6203"
Или Первый = "6204"
Или Первый = "6205"
Или Первый = "6206"
Или Первый = "6207"
Или Первый = "6208"
Или Первый = "6209"
Или Первый = "6211"
Или Код = "6216000000"
Или Первый = "6401"
Или Первый = "6402"
И Не ( Второй = "640212"
Или Код = "6402190000"
) Или Первый = "6403"
И Не Код = "6403190000"
Или Первый = "6404"
И Не Код = "6404110000"
Или Первый = "6405"
Или Код = "6504000000"
Или Первый = "6506"
Или Второй = "871500"
Или Первый = "8716"
Или Код = "9403202009"
Или Третий = "940350000"
Или Код = "9403700009"
Или Второй = "940421"
Или Второй = "940429"
Или Второй = "950300"
Или Второй = "950490"
КонецФункции // ВходитВПеречень287()
(1) ну и можно добавить тогда проверку перед подтверждением:
////////////////////////////////////////////////////////////////////////////////
//
// Функция ЭСЧФСоответствуетПротоколуВх
//
// Описание:
// проверяет возможность подписания входящего документа согласно протокола обмена (правил)
//
// Параметры (название, тип, дифференцированное значение)
// Документ - ДокументСсылка.ЭлектронныйСчетФактураПолученный - номер входящего документа
// Отказ - Булево - значение, противоположное возвращаемому
// Ошибки - Массив, Строка - ошибки проверки
//
// Возвращаемое значение:
// Булево - результат проверки
//
Функция ЭСЧФСоответствуетПротоколуВх( Документ, Отказ = Ложь, Ошибки = Неопределено ) Экспорт
Если Документ.ТипЭСЧФ = ПредопределенноеЗначение("Перечисление.ТипыЭСЧФ.Исправленный") Тогда
// Правило-56
КвитанцияДокумента = РегистрыСведений.КвитанцииВходящих.СоздатьМенеджерЗаписи();
КвитанцияДокумента.Год = Документ.НомерГод;
КвитанцияДокумента.Объект = Документ.НомерОбъект;
КвитанцияДокумента.Номер = Документ.НомерНомер;
КвитанцияДокумента.Прочитать();
Если Не КвитанцияДокумента.Выбран() И Ошибки <> Неопределено Тогда
ОтразитьОшибку(Ошибки, "Статус не найден", "КЭСЧФ");
ИначеЕсли КвитанцияДокумента.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЭСЧФ.НаСогласовании") Тогда
// найти неаннулированные с номером в поле 11 или 12 из 5-го поля данного документа
ЗапросПоНомеруПродавцаИлиКомитента = Новый Запрос;
ЗапросПоНомеруПродавцаИлиКомитента.УстановитьПараметр("Номер", Документ.КЭСЧФ);
МассивСтатусов = Новый Массив;
МассивСтатусов.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыЭСЧФ.Аннулирован"));
МассивСтатусов.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыЭСЧФ.ВыставленАннулированПоставшиком"));
ЗапросПоНомеруПродавцаИлиКомитента.УстановитьПараметр("МассивСтатусов", МассивСтатусов);
ЗапросПоНомеруПродавцаИлиКомитента.Текст = "ВЫБРАТЬ
| ЭлектронныйСчетФактураПолученный.Номер,
| КвитанцииВходящих.Статус,
| КвитанцииВходящих.ДатаСостояния
|ИЗ
| Документ.ЭлектронныйСчетФактураПолученный КАК ЭлектронныйСчетФактураПолученный
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КвитанцииВходящих КАК КвитанцииВходящих
| ПО ЭлектронныйСчетФактураПолученный.НомерГод = КвитанцииВходящих.Год
| И ЭлектронныйСчетФактураПолученный.НомерОбъект = КвитанцииВходящих.Объект
| И ЭлектронныйСчетФактураПолученный.НомерНомер = КвитанцииВходящих.Номер
|ГДЕ
| (ЭлектронныйСчетФактураПолученный.ПоставщикНомерСчетаКомитента = &Номер
| ИЛИ ЭлектронныйСчетФактураПолученный.ПоставщикНомерСчетаПродавца = &Номер)
| И НЕ КвитанцииВходящих.Статус В (&МассивСтатусов)";
РезультатЗапросаПоНомеруПродавцаИлиКомитента = ЗапросПоНомеруПродавцаИлиКомитента.Выполнить();
Если Не РезультатЗапросаПоНомеруПродавцаИлиКомитента.Пустой() Тогда
Отказ = Истина;
Если Ошибки <> Неопределено Тогда
ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента = РезультатЗапросаПоНомеруПродавцаИлиКомитента.Выбрать();
ОтразитьОшибку(Ошибки, "Получатель может подписать исправленный со статусом ""На согласовании"" только тогда,
| когда в БД нет неаннулированных ЭСЧФ, в которых в 11 или 12 поле указан номер из 5
| поля данного исправленного ЭСЧФ со статусом ""На согласовании"".", "КЭСЧФ");
Пока ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента.Следующий() Цикл
ОтразитьОшибку(Ошибки, "Ссылается на документ № " + ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента.Номер + " со статусом " + ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента.Статус
+ " от " + ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента.ДатаСостояния, "КЭСЧФ");
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Правило-57
ЗапросИсправленныйНаСогласовании = Новый Запрос;
ЗапросИсправленныйНаСогласовании.УстановитьПараметр("КЭСЧФ", Документ.Номер);
ЗапросИсправленныйНаСогласовании.УстановитьПараметр("НаСогласовании", ПредопределенноеЗначение("Перечисление.СтатусыЭСЧФ.НаСогласовании"));
ЗапросИсправленныйНаСогласовании.Текст = "ВЫБРАТЬ
| ЭлектронныйСчетФактураПолученный.Ссылка КАК СсылкаНаИсправленныйНаСогласовании
|ИЗ
| Документ.ЭлектронныйСчетФактураПолученный КАК ЭлектронныйСчетФактураПолученный
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КвитанцииВходящих КАК КвитанцииВходящих
| ПО ЭлектронныйСчетФактураПолученный.НомерГод = КвитанцииВходящих.Год
| И ЭлектронныйСчетФактураПолученный.НомерОбъект = КвитанцииВходящих.Объект
| И ЭлектронныйСчетФактураПолученный.НомерНомер = КвитанцииВходящих.Номер
|ГДЕ
| ЭлектронныйСчетФактураПолученный.КЭСЧФ = &КЭСЧФ
| И КвитанцииВходящих.Статус = &НаСогласовании";
РезультатЗапросаИсправленногоНаСогласовании = ЗапросИсправленныйНаСогласовании.Выполнить();
Если Не РезультатЗапросаИсправленногоНаСогласовании.Пустой() Тогда
Отказ = Истина;
Если Ошибки <> Неопределено Тогда
ВыборкаИсправленногоНаСогласовании = РезультатЗапросаИсправленногоНаСогласовании.Выбрать();
ВыборкаИсправленногоНаСогласовании.Следующий();
ОтразитьОшибку(Ошибки, "Получатель не может дать согласие на аннулирование ЭСЧФ, если к данному ЭСЧФ есть исправленный ""на согласовании""
| (" + СокрЛП(ВыборкаИсправленногоНаСогласовании.СсылкаНаИсправленныйНаСогласовании) + "). При подписании получателем исправленного
| ЭСЧФ, исходный ЭСЧФ должен быть аннулирован автоматически", "КЭСЧФ");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецФункции //ЭСЧФСоответствуетПротоколуВх
На Портале в очередной раз поменяли формат файла камерального контроля, а именно в файлах csv поменяли разделитель с ";" на Символ(1) (актуально для 1С)
Информации об этом в новостях на портале как обычно не было.
(7468) Ну собственно то что они форматы меняют как им вздумается - это не есть хорошо. А вообще в первой строке файла у них сейчас специально указан разделитель
(3)Пролопатил Формат, но ничего не вышло(
(4)Так если около сотни реализаций, в каждой реализации от 20 товаров, то нужно человека садить, чтобы он эти документы на сервисе создавал и отправлял)))
Очень хорошая статейка по парсингу CSV файла. Не важно как расположены колонки и как названы они. Вот код:
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",",
Знач ПропускатьПустыеСтроки = Неопределено)
Результат = Новый Массив;
// для обеспечения обратной совместимости
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Строка) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;
//
Позиция = Найти(Строка, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Строка, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Результат.Добавить(Подстрока);
КонецЕсли;
Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
Позиция = Найти(Строка, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
Результат.Добавить(Строка);
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура СравнитьСБазойНажатие(Элемент)
перем Разделитель;
Таблица = Новый ТаблицаЗначений;
//очищаем таблицу и удаляем информацию
Таблица.Очистить();
Таблица.Колонки.Очистить();
ЭлементыФормы.Таблица.Колонки.Очистить();
// чтение
ЗагружаемыйФайл = Новый ТекстовыйДокумент;
ЗагружаемыйФайл.Прочитать(ВыбФайл);
//шапка по умолчанию третья строчка
Шапка = ЗагружаемыйФайл.ПолучитьСтроку(3);
//раскладываем строку в массив
Разделитель=";";
МассивКол = РазложитьСтрокуВМассивПодстрок(Шапка,Разделитель); // процедура из типовой конфигурации, разбивает строку в массив по разделителям
//генерируем столбцы
Для Каждого ИмяСтолбца Из МассивКол Цикл
ИмяБезПробелов = СтрЗаменить(ИмяСтолбца," ",""); // убираем из имени пробелы
Если Найти(ИмяБезПробелов,"""")<>0 Тогда
ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"""","");
КонецЕсли;
Если Найти(ИмяБезПробелов,"№")<>0 Тогда
ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"№","Номер");
КонецЕсли;
Если Найти(ИмяБезПробелов,"(")<>0 Тогда
ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"(","");
КонецЕсли;
Если Найти(ИмяБезПробелов,")")<>0 Тогда
ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,")","");
КонецЕсли;
Если Найти(ИмяБезПробелов,"–")<>0 Тогда
ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"–","");
КонецЕсли;
Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяСтолбца);
НовыйСтолбец = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяСтолбца);
НовыйСтолбец.Данные = ИмяБезПробелов;
КонецЦикла;
Для НомерСтроки=4 по ЗагружаемыйФайл.КоличествоСтрок() Цикл
Состояние("Обрабатывается "+Строка(Формат(?(ЗагружаемыйФайл.КоличествоСтрок()=0,0,((100*НомерСтроки)/ ЗагружаемыйФайл.КоличествоСтрок())),"ЧЦ=3; ЧДЦ=0"))+" %");
ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
// получить стрoку с указанным номером и преобразуем её в массив
Строка = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки);
МассивКол = РазложитьСтрокуВМассивПодстрок(Строка,Разделитель);// процедура из типовой конфигурации, разбивает строку в массив по разделителям
НоваяСтрочка= Таблица.Добавить();
Если МассивКол.Количество() <> Таблица.Колонки.Количество() Тогда
Продолжить; // скорее всего в тексте содержит разделитель
КонецЕсли;
Для НомерСтолбца= 1 по МассивКол.Количество() Цикл
//заполняем строчку значениями
ТекущееЗначение = МассивКол[НомерСтолбца-1];
ИмяКолонки = Таблица.Колонки[НомерСтолбца-1].Имя;
НоваяСтрочка[ИмяКолонки] = ТекущееЗначение;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
(5) слабо лопатили )
ДатаСтрокой = Формат(Дата, "ДФ=yyyy-MM-dd").
в конфигураторе если в модуле любом вызвать контекстное меню, то рядом с конструктором запросов будет и конструктор форматной строки - там побаловаться можно, сразу видя результат
Еще одна дилемма - вырезать номер договора из названия.
Имеется: "договор №12345 от 01.01.2015"
Как вывести номер договора: "12345", при условии, что он может быть разным по длине?
Как мог бы найти выход:
1. Можно вывести значение: "договор №12345", обрезав право. Это Легко.
2. Потом вывести "12345", обрезов лево. Это как сделать?
Постоянные значения: "договор от" - 10 символов. "от 01.01.2015" - 13 символов.
"Народное творчество" и просто опечатки пользователей будут регулярно делать эти "постоянные" значения непостоянными.
Я бы сделал так:
1. Нашел в строке позицию слова "договор" и взял правую часть строки от этой позиции +7 (длина слова "договор"). Получилось бы " №12345 от 01.01.2015"
2. В получившейся подстроке нашел бы слово "от" и взял левую часть строки до этой позиции, получил бы " №12345 "
3. Заменил бы символ "№" на пробел и применил СокрЛП().
Но, опять-таки, предвижу вариант, когда "креативный" пользователь вколотит "дог.12345 от 01.01.15" и вся эта затея провалится.
(14)2. Мы не можем взять правильно левую часть до слова "от", т.к. сам номер "№12345" может быть "№12345/12/12". Тут слева мы не можем брать, нужно отнимать правую сторону. Только вот вычитание для строковых величин невозможно.
(15)да, только в названии. Сделать новый реквизит и сидеть целый день и вносить этот реквизит вручную для десяток тысяч контрагентов? Не вариант(
Вывод хороший. И сразу виден вывод из (14) "Но, опять-таки, предвижу вариант, когда "креативный" пользователь вколотит "дог.12345 от 01.01.15" и вся эта затея провалится.")))))
(18) Согласен. Я думал, создать обработку и аналогично данным строкам заполнить реквизиты. Может так и сделаем. Только лишние телодвижения потом при создании нового договора, чтобы наименование формировалось "договор №12345 от 01.01.2015", но это уже совсем другая история))
Номера телефонов для обращения с/х по различным вопросам работы с АИС «Учет счетов-фактур»:
по техническим: +375 17 328-32-96, +375 17 328-33-05, +375 17 223-78-23,
по организационным: тел. (017)2297994, (017) 2297987,
по методологическим: тел. (017)2297927, (017)2297928, (017)2202347.
Вот пришло ещё письмо от техподдержки.
Добрый день
В рамках демонстрации использования интеграционного решения с функциями подписания и отправки электронных счетов-фактур на веб-сервис АИС УСФ, был показан пример вызова из системы 1С. Прилагаем данный пример. Надеемся он будет вам полезен для доработки ваших учетных систем.
С уважением,
Служба технической поддержки
Номера телефонов для обращения с/х по различным вопросам работы с АИС «Учет счетов-фактур»:
по техническим: +375 17 328-32-96, +375 17 328-33-05, +375 17 223-78-23,
по организационным: тел. (017)2297994, (017) 2297987,
по методологическим: тел. (017)2297927, (017)2297928, (017)2202347.
Ссылка на доковский файл
https://onedrive.live.com/redir?resid=CB1FD4FA8125D79A!93499&authkey=!APxIv4txF8QtAF4&ithint=file%2cdocx
Новое письмо от новакома
Добрый день.
Информируем Вас о том, что обновилась новая версия ПО для массовой подписи ЭСЧФ.
Данное ПО доступно по ссылке: vat.gov.by Номера телефонов для обращения с/х по различным вопросам работы с АИС «Учет счетов-фактур»:
по техническим: +375 17 328-32-96, +375 17 328-33-05, +375 17 223-78-23,
по организационным: тел. (017)2297994, (017) 2297987,
по методологическим: тел. (017)2297927, (017)2297928, (017)2202347.
Интересная работа портала. 1С выдает, что все проверки прошла счет-фактура, файл выгрузился на портал, все прошло. На портале его нет. Этот же файл пробую загружать на портал с портала кнЗагрузить, то ошибка в структуре. Что за ерунда -то((
(330) Slypower, какая ошибка у меня была ругалась на секцию dateIssuance, не нравилась она порталу, закоментил и все прекрасно улеглось. На сколько я понял она в файле не нужна, добавляется автоматом когда фаил передается на портал. если потом СФ выгрузить с портала в xml, она в файле присудствует с датой выгрузки СФ.
В тех поддержку написал письмо по поводу выгрузки и что сервис выдает что фаил принят но когда захожу в личный кабинет файла нет.
Получил ответ
"Добрый день.
Промоделировали Вашу ситуацию, действительно есть такая проблема. Поставили задачу на ее исправление.
При следующем обновление должно работать корректно.
С уважением,
Служба технической поддержки
Номера телефонов для обращения с/х по различным вопросам работы с АИС «Учет счетов-фактур»:
по техническим: +375 17 328-32-96, +375 17 328-33-05, +375 17 223-78-23,
по организационным: тел. (017)2297994, (017) 2297987,
по методологическим: тел. (017)2297927, (017)2297928, (017)2202347."
From: Я
Sent: Friday, June 10, 2016 3:34 PM
To: Техническая поддержка ЭСЧФ <support_EINVOICE@novacom.by>
Subject: Вопросы по порталу
Добрый день. Есть пару вопросов-предложений
1) Хотелось бы на портале иметь возможность удалять поступившие нам ЭСЧФ. Могут выставить неправильных, и они будут мешать. Со временем их будет сотни, и это неудобно, будет каша и потеряются некоторые неподписанные.
2) Хотелось бы проверять статус не по одной счет-фактуре, а из периода дат. Мы будем выгружать раз в неделю/месяц много фактур, и как нам проверить статус, подписана или аннулирована? Оповещений же нет никаких.
3) Хотелось бы проверять входящие по периоду дат. Организации могут выставлять не до 5 числа месяца, а и позже. Так вот тоже можно будет путаться. Если будет проверка методом GetList(датаначала, датаконец), было очень хорошо.
4) Спасибо за понимание.
ответ:
Добрый день.
Ваши пожелания будут рассмотрены в совокупности с другими, которые поступают от участников опытной эксплуатации. Решения об изменениях будут приниматься с учетом замечаний и предложений, поступивших как в наш адрес, так и в МНС.
За ранее благодарим Вас за любые предложения в отношении нашего ПО.
С уважением,
Служба технической поддержки
Номера телефонов для обращения с/х по различным вопросам работы с АИС «Учет счетов-фактур»:
по техническим: +375 17 328-32-96, +375 17 328-33-05, +375 17 223-78-23,
по организационным: тел. (017)2297994, (017) 2297987,
по методологическим: тел. (017)2297927, (017)2297928, (017)2202347.
Пересылаю очередной ФЕЕРИЧЕСКИЙ БРЕД выданный службой ТП ЭСЧФ
ПЕЧАЛЬНО даже округлить не могут. ОХРЕНЕТЬ уровень программирования в РБ!!!
------- Пересылаемое сообщение -------
От: "Техническая поддержка ЭСЧФ" <support_EINVOICE@novacom.by>
Кому: "selus@mail.ru" <selus@mail.ru>
Копия:
Тема: RE: Еще одна Странная ошибка передачи Похоже сегодня портал не заработает
Дата: Fri, 10 Jun 2016 15:47:42 +0300
Добрый день.
По поводу Вашей xml, там проблема в totalCostVat="274904000.329999" портал принимает только 3 знака после запятой.
При ручной загрузке портал округляет и поэтому дает подписать и отправить.
С уважением,
Служба технической поддержки
Номера телефонов для обращения с/х по различным вопросам работы с АИС <Учет счетов-фактур>:
по техническим: +375 17 328-32-96, +375 17 328-33-05, +375 17 223-78-23,
по организационным: тел. (017)2297994, (017) 2297987,
по методологическим: тел. (017)2297927, (017)2297928, (017)2202347.
Функция VerifyAllSigns(InvVatXml)
Перем i, signCount;
Перем InvVatNumber;
ОшибкаПодписи=0;
InvVatNumber = InvVatXml.Document.GetXmlNodeValue("issuance/general/number");
signCount = InvVatXml.GetSignCount;
if signCount = 0 then
Сообщить( "Ошибка: документ №" + InvVatNumber + " не содержит ЭЦП");
VerifyAllSigns = 1;
//возврат;
endif;
for i = 0 to signCount - 1 do
oid = "2.5.4.3"; //(commonName)
str = InvVatXml.GetSignProperty(i, oid, 0);
//Сообщить( "Проверка подписи " + str);
res = InvVatXml.VerifySign(i, 0);
if res <> 0 then
Сообщить( "Ошибка проверки подписи: " + EVatService.LastError);
ОшибкаПодписи=1;
VerifyAllSigns = 2;
Прервать;
else
ОшибкаПодписи=0;
Сообщить("ЭЦП проверена. Дата подписания: " + InvVatXml.GetSignProperty(i, "SIGNDATE", 0));
endif;
EndDo;
VerifyAllSigns = 0
КонецФункции // VerifyAllSigns(InvVatXml)
Показать
Так вот, на 7.7 работает без проблем, а на 8-ке валится с ошибкой:
{Форма.Форма.Форма(17)}: Значение не является значением объектного типа (Document)
InvVatNumber = InvVatXml.Document.GetXmlNodeValue("issuance/general/number");
Поясните, почему такое происходит и чем тут эта 8ка относится от 7.7?
Примечательно, на тестовом такой проблемы нет, почему тогда это наблюдается на рабочем?
(4620) Slypower, смотри в отладке чему равно InvVatXml.
В 1с8 есть такая кнопка в отладке остановка по ошибке. Перед тем как вывалить ошибку тебе остановит на ошибке и сможешь проанализировать входные параметры.
(4623) Xershi, У меня строка: InvVatXml = EVatService.GetEDoc(InvVatNumber); , откуда получаем номер. Вот я и перепутал вопрос))) получал отсюда: InvVatNumber - выдает 25 знаков, InvVatXml - выдает 1 (на тестовом).
Кнопку "Остановка по ошибке" не нашел еще(
(4642) lazovit, да я разобрался в чем дело, дело в том, что 8-ка отличается от 7.7, поэтому не получается. Немного переделать код под другую логику и все заработает.
(4671) Slypower, У меня ночью все работает хорошо, а днем по прежнему выдает ошибки.
Один раз запустишь - ошибки на одних ЭСЧФ, другой раз - ошибки могут быть уже на других ЭСЧФ.
Писал в поддержку по конкретным ошибкам - ответили, что в их базе по данным ЭСЧФ нет ошибок, попробуйте зайти на портал завтра.
И как тут не грешить на портал ?
(13) Slypower, у вас номер договора написан только в названии?
Может тогда сделать отдельный реквизит номер договора?
Ну а так функции работы со строками Лев, Прав, Сред.
(21) Slypower, я думал подождать. Может сольют конфу от франчайзи и слизать готовый вариант.
Коллеге предложил делать через вебсервисы, но он не захотел их изучать.
Поэтому пока мы даже ничего не пишем. К деноминации готовим базы.
Готовая есть тут для 8, но она платная. Написать легко. Я подготовил, пока в виде внешней обработке (с небольшими расшифровками в коде), могу скинуть. Только вот еще не вся инфа мне понятно. Где брать Номер ЭСЧФ, как он меняться будет и еще много вопросов.
Деноминация - это вообще бяда: База огромная, стандартными свертками не сворачивается Книга продаж.
Директор сказал, сделать ЭСЧФ. Будем может внедрять в процедуру ПриПроведении. Результат: создаются файлы xml как в примере. Ну а потом загружать их всех вечером на сайт. Пока такая задумка. Лучше, конечно, все доки в один файл, но хз, можно ли так и будут ли они размером меньше 1 МБ
(23) Slypower, ставите признак "требуется выгрузка" и "выгружен", при проведении только ставим "требуется выгрузка", потом выгружаем все обработкой и проставляем "выгружен".
(23) Slypower, Выгружать несколько документов одним запросом не получится.
Дело в том, что каждая ЭСЧФ должна быть подписана электронным ключом отдельно.
И по каждой будет генерироваться отдельный файл-ответ (тикет)
Мы со своей стороны отправляли пожелания по работе веб-сервиса разработчикам портала и Авесту.
Разработчик портала подтвердил, что функционал веб-сервисов будет расширен.
Пожелания организаций участвующих в тестировании будут учтены.
См. http://www.export.by/?act=news&mode=view&id=67735
Для подписи будет использоваться ключ от Авеста.
Они же ведут разработку транспорта для доставки xml.
Будет использоваться зашифрованный канал (TLS)
Инициализировать его из 1с просто так не получится. Поэтому использовать веб-сервисы (SOAP) тоже не получится.
На текущий момент Авест предложил утилиту, которая позволяет подписать и отравить ЭСЧФ из папки.
Запуск утилиты производится из командной строки. Ответы (тикиты) так же будут складываться в папку.
Такой подход существенно затрудняет интеграцию.
Мы со свой стороны описали сложности интеграции, приложили прошении о переходе на использование COM-объектов или Native API
Такой вариант позволил бы производить работу с TLS и ЭЦП прозрачно для учетных систем.
Решения по данному вопросу пока нет. Обещали рассмотреть на следующей неделе.
(33)Мы решили выгружать одним запросом все документы в папку, а потом уже вручную их загружать на сайт по одному документу, что очень неудобно и затратно.
Утилита от Авест заказывается у них? На сайте Министерства по налогам и сборам РБ, где вся информация по ЭСЧФ нет ее. Будет ждать информации. Спасибо, что сообщили. Если будет какие новшества, надеюсь, они выложат всю информацию
(35) Slypower, утилиту думаю предоставили пока только тестировщикам.
Очень надеюсь, что на следующей неделе все таки появится COM-объект для интеграции и потребность в "папках и файлах" отпадет.
Может,кто подскажет, в чем ошибка?? Спасибо
Начало записи: D:\2015-11-18\XML\2016\doc_
Время начала: 14:44:27
стрИмяФайла1=D:\2015-11-18\XML\2016\doc_100000002.xml
100000002.xml
номер договора 100000002
прм_ИмяФайла=D:\2015-11-18\XML\2016\doc_ВЕ0161151.xml
xml_file=xml_fso.CreateTextFile(прм_ИмяФайла, -1, 0); //создать файл, перезаписывая существующий.
{D:\2015-11-18\EXTFORMS\ВЫГРУЗКА_ЭСЧФ_2705.ERT(35)}: :
(523) 35 строка кода? Если это "xml_file=xml_fso.CreateTextFile(прм_ИмяФайла, -1, 0); //создать файл, перезаписывая существующий.", то Вы пытаетесь записать ОТКРЫТЫЙ до этого файл с его подменой.
Пытаюсь разобрать документ, делаю по примеру выше, ошибка:
InvList = EVatService.GetList(ДатаНачала);
Для i = 1 по InvList.Count Цикл
InvVatNumber = InvList.GetItemAttribute(i, "document/number");
InvVatXml = EVatService.GetEDoc(InvVatNumber);
УНП = InvVatXml.Document.GetXmlNodeAttribute("issuance/provider/unp");
InvVatXml = EVatService.GetEDoc(InvVatNumber);
{D:\CONFIG\EXTFORMSADD\EINVVATSERVICE.ERT(536)}: Плохой тип переменной
InvList = EVatService.GetList(ДатаНачала);
Для i = 0 по InvList.Count Цикл
InvVatNumber = InvList.GetItemAttribute(i, "document/number");
InvVatXml = EVatService.GetEDoc(InvVatNumber);
УНП = InvVatXml.Document.GetXmlNodeAttribute("issuance/provider/unp");
Требуется помощь! Может кто с этим сталкивался! Техподдержка молчит (уже направил им три письма).
Привожу последнее:
Получаю входящие.
Запись: 691756132-2016-0000001294 от 12.09.16 осн.
ФайлДанных.Загрузить(ИмяФайла);
{D:\77NASTR\ПОРТАЛ_ЭСЧФ_НТС_ПОЛИГРАФИЯ\EXTFORMS\ОБРАБОТКИ_ЗАГРУЗКИ_ПЕРЕДАЧИ\ПРИЕМ_ИЗ_ПОРТАЛА_МНС.ERT(523)}: : Attribute '{http://www.w3.org/2001/XMLSchema-instance}schemaLocation' has an invalid value according to the DTD/Schema.
[<issuance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.w3schools.com" xsi:schemaLocation="http://www.w3schools.com" sender="691756132"> (error position = 164)]
У кого ошибка
1. у меня (не смог загрузить)
2. у поставщика (неверное пространство имен http://www.w3.org/2001/XMLSchema-instance}schemaLocation типичное для XSD а не XML
3. У Вас на портале (Почему пропускает такое)
К сожалению такие ошибки учащаются. Прошу разьяснить и (или) принять меры.
Несколько поставщиков шлют такое. У меня выставить такое не получается. Проверку не проходит и портал не принимает. КАК УМУДРЯЮТСЯ ТАКОЕ ВЫСТАВЛЯТЬ?????????
И еще вопрос. Ко мне часто обращаются контрагенты с просьбой убрать тэг description из </rosterItem></roster>. Но в схеме этот тэг прописан как обязательный и проверку не проходит. Тем не менее наши контрагенты и я получаем СФ без этого тега.
В связи с этим вопрос: Как это возможно? Как правильно?
Если это правильно, то как этого добиться не выключая проверки?
(23) Slypower, по поводу номера ЭСЧФ. Он формируется по следующему принципу
9 первых цифр - УНП пользователя, который составляет ЭСЧФ - 4 цифры года, в который составляется ЭСЧФ - 10 цифр свободного номера по порядку с учетом лидирующих нулей.
Последовательность последних 10 цифр в году для каждого УНП должна быть уникальна. На начало каждого года, для каждого с/х (УНП) создается последовательность номеров (десять разрядов) от 1 до 9999999999. При заполнении ЭСЧФ, его номер формируется автоматически следующим образом: УНП - Год (текущий) - свободный номер из последовательности. Для каждого ЭСЧФ номер должен быть уникальным для данного УНП в текущем году.
Выложи плз обработку по выгрузке в xml
(5362) тут дело в том, что может пригодится такое решения в данном случае: я, чисто гипотетически, "продал" свою обработку покупателям. СОС тоже за доплату туда допилил. И вот чтобы не кидать никакие батники никуда, чтобы папки не докидывать и не забивать голову и так не оч умному покупателю, я в 1С так сделаю, и он будет рад и будет считать меня богом. Не ну а что))))))
(5363) а разве сам батник для обновления не лежит в папке авеста? почему просто его не вызвать используя 5 строк кода. Он же все равно есть. Но как решение - имеет место быть.
(5365) есть разные бат файлы. Например: get_crl.bat в папке c:\Program Files (x86)\Avest\AvPCM_nces\. Он обновляет СОСы, но столкнулся с ситуацией, когда нужно скачивать сосы с портала и обновлять их.
а вот get_crl.bat из папки: c:\Program Files (x86)\Avest\AvPCM_MNS\ у меня ничего не делает.