Всем привет. Не секрет, в Беларуси с 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С?
Ответ: (679)

Сообщение об ошибке, которое выплевывает 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с - все работает и загружает.
Дополняется со временем
---
pasha_2001, публикацию смотрели?
Там есть картинки к публикации. Посмотрите на них - должно быть понятно.
---
Slypower, на счет семерки хз. Но я предложил коллеге через вебсервисы фигачить как 2 пальца будет. Создали документ, начали кнопку отправить, если отправилось галка отправки проставилась.
---
публикация - можете дополнить или ссылкой на GitHub, если не запрещено правилами форума.
---
раз уж есть код проверки протокола (хотя это совсем не верно, т.к. зависит от конфигурации), то пусть будет и это:

```1c
    // Входит ли в перечень товаров согласно Указа Президента Республики Беларусь от 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()
```
---
ну и можно добавить тогда проверку перед подтверждением:

```1c
    ////////////////////////////////////////////////////////////­////////////////////
    //
    // Функция ЭСЧФСоответствуетПротоколуВх
    //
    // Описание:
    // проверяет возможность подписания входящего документа согласно протокола обмена (правил)
    //
    // Параметры (название, тип, дифференцированное значение)
    // Документ - ДокументСсылка.ЭлектронныйСчетФактураПолученный - номер входящего документа
    // Отказ - Булево - значение, противоположное возвращаемому
    // Ошибки - Массив, Строка - ошибки проверки
    //
    // Возвращаемое значение:
    // Булево - результат проверки
    //
    Функция ЭСЧФСоответствуетПротоколуВх( Документ, Отказ = Ложь, Ошибки = Неопределено ) Экспорт

    Если Документ.ТипЭСЧФ = ПредопределенноеЗначение("Перечисление.ТипыЭСЧФ.Исправленный") Тогда

    // Правило-56

    КвитанцияДокумента = РегистрыСведений.КвитанцииВходящих.СоздатьМенеджерЗаписи();
    КвитанцияДокумента.Год = Документ.НомерГод;
    КвитанцияДокумента.Объект = Документ.НомерОбъект;
    КвитанцияДокумента.Номер = Документ.НомерНомер;
    КвитанцияДокумента.Прочитать();

    Если Не КвитанцияДокумента.Выбран() И Ошибки <> Неопределено Тогда

    ОтразитьОшибку(Ошибки, "Статус не найден", "КЭСЧФ");

    ИначеЕсли КвитанцияДокумента.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЭСЧФ.НаСогласовании") Тогда

    // найти неаннулированные с номером в поле 11 или 12 из 5-го поля данного документа
    ЗапросПоНомеруПродавцаИлиКомитента = Новый Запрос;
    ЗапросПоНомеруПродавцаИлиКомитента.УстановитьПараметр("Номер", Документ.КЭСЧФ);
    МассивСтатусов = Новый Массив;
    МассивСтатусов.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыЭСЧФ.Аннулирован"));
    МассивСтатусов.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыЭСЧФ.ВыставленАннулированПоставшиком"));
    ЗапросПоНомеруПродавцаИлиКомитента.УстановитьПараметр("МассивСтатусов", МассивСтатусов);
    ЗапросПоНомеруПродавцаИлиКомитента.Текст = "ВЫБРАТЬ
    | ЭлектронныйСчетФактураПолученный.Номер,
    | КвитанцииВходящих.Статус,
    | КвитанцииВходящих.ДатаСостояния
    |ИЗ
    | Документ.ЭлектронныйСчетФактураПолученный КАК ЭлектронныйСчетФактураПолученный
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КвитанцииВходящих КАК КвитанцииВходящих
    | ПО ЭлектронныйСчетФактураПолученный.НомерГод = КвитанцииВходящих.Год
    | И ЭлектронныйСчетФактураПолученный.НомерОбъект = КвитанцииВходящих.Объект
    | И ЭлектронныйСчетФактураПолученный.НомерНомер = КвитанцииВходящих.Номер
    |ГДЕ
    | (ЭлектронныйСчетФактураПолученный.ПоставщикНомерСчетаКомитента = &Номер
    | ИЛИ ЭлектронныйСчетФактураПолученный.ПоставщикНомерСчетаПродавца = &Номер)
    | И НЕ КвитанцииВходящих.Статус В (&МассивСтатусов)";

    РезультатЗапросаПоНомеруПродавцаИлиКомитента = ЗапросПоНомеруПродавцаИлиКомитента.Выполнить();

    Если Не РезультатЗапросаПоНомеруПродавцаИлиКомитента.Пустой() Тогда
    Отказ = Истина;
    Если Ошибки <> Неопределено Тогда
    ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента = РезультатЗапросаПоНомеруПродавцаИлиКомитента.Выбрать();
    ОтразитьОшибку(Ошибки, "Получатель может подписать исправленный со статусом "На согласовании" только тогда,
    | когда в БД нет неаннулированных ЭСЧФ, в которых в 11 или 12 поле указан номер из 5
    | поля данного исправленного ЭСЧФ со статусом "На согласовании".", "КЭСЧФ");
    Пока ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента.Следующий() Цикл
    ОтразитьОшибку(Ошибки, "Ссылается на документ № " + ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента.Номер + " со статусом " + ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента.Статус
    + " от " + ВыборкаРезультатаЗапросаПоНомеруПродавцаИлиКомитента.ДатаСостояния, "КЭСЧФ");
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;

    КонецЕсли;

    // Правило-57

    ЗапросИсправленныйНаСогласовании = Новый Запрос;
    ЗапросИсправленныйНаСогласовании.УстановитьПараметр("КЭСЧФ", Документ.Номер);
    ЗапросИсправленныйНаСогласовании.УстановитьПараметр("НаСогласовании", ПредопределенноеЗначение("Перечисление.СтатусыЭСЧФ.НаСогласовании"));
    ЗапросИсправленныйНаСогласовании.Текст = "ВЫБРАТЬ
    | ЭлектронныйСчетФактураПолученный.Ссылка КАК СсылкаНаИсправленныйНаСогласовании
    |ИЗ
    | Документ.ЭлектронныйСчетФактураПолученный КАК ЭлектронныйСчетФактураПолученный
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КвитанцииВходящих КАК КвитанцииВходящих
    | ПО ЭлектронныйСчетФактураПолученный.НомерГод = КвитанцииВходящих.Год
    | И ЭлектронныйСчетФактураПолученный.НомерОбъект = КвитанцииВходящих.Объект
    | И ЭлектронныйСчетФактураПолученный.НомерНомер = КвитанцииВходящих.Номер
    |ГДЕ
    | ЭлектронныйСчетФактураПолученный.КЭСЧФ = &КЭСЧФ
    | И КвитанцииВходящих.Статус = &НаСогласовании";

    РезультатЗапросаИсправленногоНаСогласовании = ЗапросИсправленныйНаСогласовании.Выполнить();

    Если Не РезультатЗапросаИсправленногоНаСогласовании.Пустой() Тогда
    Отказ = Истина;
    Если Ошибки <> Неопределено Тогда
    ВыборкаИсправленногоНаСогласовании = РезультатЗапросаИсправленногоНаСогласовании.Выбрать();
    ВыборкаИсправленногоНаСогласовании.Следующий();
    ОтразитьОшибку(Ошибки, "Получатель не может дать согласие на аннулирование ЭСЧФ, если к данному ЭСЧФ есть исправленный "на согласовании"
    | (" + СокрЛП(ВыборкаИсправленногоНаСогласовании.СсылкаНаИсправленныйНаСогласовании) + "). При подписании получателем исправленного
    | ЭСЧФ, исходный ЭСЧФ должен быть аннулирован автоматически", "КЭСЧФ");
    КонецЕсли;
    КонецЕсли;

    КонецЕсли;

    КонецФункции //ЭСЧФСоответствуетПротоколуВх
```
---
На Портале в очередной раз поменяли формат файла камерального контроля, а именно в файлах csv поменяли разделитель с ";" на Символ(1) (актуально для 1С)

Информации об этом в новостях на портале как обычно не было.
---
вот сижу как раз и ругаюсь на их за такие поступки. Че лезут, куда уже не следует, че ломают, только проблеммы создают
---
Анализируя как текст (для 1с7.7 пишу), то выявил, что в строках они сделали разные табуляции, где 1 таб, где 2 и так же 3 встречается
---
Ну собственно то что они форматы меняют как им вздумается - это не есть хорошо. А вообще в первой строке файла у них сейчас специально указан разделитель
---
да, но считывание путем "Текста нужно начинать с 3 строки, т.к. во второй просто пусто какое-то
---
Там типа 2 строки с пробелами через разделитель ... может туда при каких-то условиях будет и конечно заполняться, но пока ХЗ :)
---
Возник еще вопрос. Это из данной обработки.
Как представить дату в формате: 2016-04-19
Если расписывать:

```1c
    ДатаГод(Док.ДатаДок)+"-"+ДатаМесяц(Док.ДатаДок)+"-"+ДатаЧисло(Док.ДатаДок)
```

Ответ: 2016-4-16, а нужно: 2016-04-16
---
Slypower, нужно использовать формат.
---
Пролопатил Формат, но ничего не вышло(
(4)Так если около сотни реализаций, в каждой реализации от 20 товаров, то нужно человека садить, чтобы он эти документы на сервисе создавал и отправлял)))
---
Очень хорошая статейка по парсингу CSV файла. Не важно как расположены колонки и как названы они. Вот код:

```1c
    Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",",
    Знач ПропускатьПустыеСтроки = Неопределено)

    Результат = Новый Массив;

    // для обеспечения обратной совместимости
    Если ПропускатьПустыеСтроки = Неопределено Тогда
    ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
    Если ПустаяСтрока(Строка) Тогда
    Если Разделитель = " " Тогда
    Результат.Добавить(");
    КонецЕсли;
    Возврат Результат;
    КонецЕсли;
    КонецЕсли;
    //

    Позиция = Найти(Строка, Разделитель);
    Пока Позиция > 0 Цикл
    Подстрока = Лев(Строка, Позиция - 1);
    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
    Результат.Добавить(Подстрока);
    КонецЕсли;
    Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
    Позиция = Найти(Строка, Разделитель);
    КонецЦикла;

    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
    Результат.Добавить(Строка);
    КонецЕсли;

    Возврат Результат;

    КонецФункции

    Процедура СравнитьСБазойНажатие(Элемент)
    перем Разделитель;
    Таблица = Новый ТаблицаЗначений;

    //очищаем таблицу и удаляем информацию
    Таблица.Очистить();
    Таблица.Колонки.Очистить();
    ЭлементыФормы.Таблица.Колонки.Очистить();

    // чтение
    ЗагружаемыйФайл = Новый ТекстовыйДокумент;
    ЗагружаемыйФайл.Прочитать(ВыбФайл);

    //шапка по умолчанию третья строчка
    Шапка = ЗагружаемыйФайл.ПолучитьСтроку(3);

    //раскладываем строку в массив
    Разделитель=";";
    МассивКол = РазложитьСтрокуВМассивПодстрок(Шапка,Разделитель); // процедура из типовой конфигурации, разбивает строку в массив по разделителям

    //генерируем столбцы
    Для Каждого ИмяСтолбца Из МассивКол Цикл

    ИмяБезПробелов = СтрЗаменить(ИмяСтолбца," ","); // убираем из имени пробелы
    Если Найти(ИмяБезПробелов,"")<>0 Тогда
    ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"",");
    КонецЕсли;
    Если Найти(ИмяБезПробелов,"№")<>0 Тогда
    ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"№","Номер");
    КонецЕсли;
    Если Найти(ИмяБезПробелов,"(")<>0 Тогда
    ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"(",");
    КонецЕсли;
    Если Найти(ИмяБезПробелов,")")<>0 Тогда
    ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,")",");
    КонецЕсли;
    Если Найти(ИмяБезПробелов,"–")<>0 Тогда
    ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"–",");
    КонецЕсли;

    Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяСтолбца);
    НовыйСтолбец = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяСтолбца);
    НовыйСтолбец.Данные = ИмяБезПробелов;

    КонецЦикла;

    Для НомерСтроки=4 по ЗагружаемыйФайл.КоличествоСтрок() Цикл

    Состояние("Обрабатывается "+Строка(Формат(?(ЗагружаемыйФайл.КоличествоСтрок()=0,0,((100*НомерСтроки)/ ЗагружаемыйФайл.КоличествоСтрок())),"ЧЦ=3; ЧДЦ=0"))+" %");
    ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break

    // получить стрoку с указанным номером и преобразуем её в массив
    Строка = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки);
    МассивКол = РазложитьСтрокуВМассивПодстрок(Строка,Разделитель);// процедура из типовой конфигурации, разбивает строку в массив по разделителям
    НоваяСтрочка= Таблица.Добавить();

    Если МассивКол.Количество() <> Таблица.Колонки.Количество() Тогда
    Продолжить; // скорее всего в тексте содержит разделитель
    КонецЕсли;

    Для НомерСтолбца= 1 по МассивКол.Количество() Цикл
    //заполняем строчку значениями
    ТекущееЗначение = МассивКол[НомерСтолбца-1];
    ИмяКолонки = Таблица.Колонки[НомерСтолбца-1].Имя;
    НоваяСтрочка[ИмяКолонки] = ТекущееЗначение;
    КонецЦикла;

    КонецЦикла;

    КонецПроцедуры
```

Результат:

вот и вот
---
слабо лопатили )
ДатаСтрокой = Формат(Дата, "ДФ=yyyy-MM-dd").
в конфигураторе если в модуле любом вызвать контекстное меню, то рядом с конструктором запросов будет и конструктор форматной строки - там побаловаться можно, сразу видя результат
---
баян)))) (6951)
---
тьфу, 7.7.. прошу прощения, там не в курсе )
---
(6951) сорри, в шапке не нашел, поэтому скинул) Счас ваше сообщение туда добавлю
---
Slypower,

ДатаГод(Док.ДатаДок)+"-"+?(ДатаМесяц(Док.ДатаДок)<10,"","0")+ДатаМесяц(Док.ДатаДок)+"-"+ДатаЧисло(Док.ДатаДок)
---
В синкс-помощнике смотри функцию: Формат()
---
Ну или
ДатаГод(Док.ДатаДок)+"-"+ Прав("00" + ДатаМесяц(Док.ДатаДок),2)+"-"+ Прав("00"+ДатаЧисло(Док.ДатаДок),2)
---
ни (7) ни (8) не помогает
---
код для тех кто хочет хранить XML файлы в БД
в принципе подходит для любых файлов малого размера

```1c
    //Преобразует двоичные данные в Base64 и возвращает строку в base64
    Функция ПолучитьТекстBase64(Объект,ТипОперации,Строка64)
    Если ТипОперации = "Преобразование" Тогда
    Двоичное = Новый ДвоичныеДанные(Объект);//Ссылка на объект
    Строка64 = Base64Строка(Двоичное);//Строка для сохранения
    //Массив64 = Преобразовать64(Строка64 , );//Для того, чтобы получить массив байтов из строки, вызываем ее так:
    Возврат Строка64
    ИначеЕсли ТипОперации = "Востановление" Тогда
    //Востановление
    Массив64 = Преобразовать64(Строка64 , );//Для того, чтобы получить массив байтов из строки, вызываем ее так:
    Строка64 = Преобразовать64( , Массив64 );//Для обратного преобразования вызываем так:
    вДвоичное = Base64Значение(Строка64);//Преобразовать строку в двоичные
    ИмяФайла = ПолучитьИмяВременногоФайла("xml"); //Сохранение в файл
    вДвоичное.Записать(ИмяФайла);
    //УдалитьФайлы(ИмяФайла);
    Возврат ИмяФайла
    КонецЕсли;
    КонецФункции

    Функция Преобразовать64(Строка64 = неопределено, Массив64 = неопределено)Экспорт
    Таб64 = Новый ТаблицаЗначений;
    Таб64.Колонки.Добавить("Код");
    Таб64.Колонки.Добавить("Символ");
    Нпп = 0;
    Для Код = КодСимвола("A") По КодСимвола("Z") Цикл
    стр = Таб64.Добавить();
    стр.Код = Нпп;
    стр.Символ = Символ(Код);
    Нпп = Нпп + 1;
    КонецЦикла;
    Для Код = КодСимвола("a") По КодСимвола("z") Цикл
    стр = Таб64.Добавить();
    стр.Код = Нпп;
    стр.Символ = Символ(Код);
    Нпп = Нпп + 1;
    КонецЦикла;
    стр = Таб64.Добавить();
    стр.Код = Нпп;
    стр.Символ = "0";
    Нпп = Нпп + 1;
    Для Код = 1 По 9 Цикл
    стр = Таб64.Добавить();
    стр.Код = Нпп;
    стр.Символ = Формат(Код,"ЧЦ=1; ЧДЦ=0");
    Нпп = Нпп + 1;
    КонецЦикла;
    стр = Таб64.Добавить();
    стр.Код = Нпп;
    стр.Символ = "+";
    Нпп = Нпп + 1;
    стр = Таб64.Добавить();
    стр.Код = Нпп;
    стр.Символ = "/";

    Если Массив64 = неопределено Тогда
    Если Строка64 = неопределено Тогда
    Сообщить("неверный вызов функции");
    Возврат неопределено;
    КонецЕсли;
    //Уберем переносы строк
    Строка64 = СтрЗаменить(Строка64, Символ(10), ");
    Строка64 = СтрЗаменить(Строка64, Символ(13), ");

    //преобразовываем строку в массив
    Если СтрДлина(Строка64) % 4 <> 0 Тогда
    Сообщить("длина строки на входе должна быть кратна 4");
    Сообщить(СтрДлина(Строка64));
    Возврат неопределено;
    КонецЕсли;
    Кол4 = Цел(СтрДлина(Строка64) / 4);
    РазмерМ = Кол4 * 3;
    Если Прав(Строка64, 2) = "==" Тогда
    РазмерМ = РазмерМ - 2;
    ИначеЕсли Прав(Строка64, 1) = "=" Тогда
    РазмерМ = РазмерМ - 1;
    КонецЕсли;
    Массив64 = Новый Массив(РазмерМ);
    Для А = 1 По Кол4 Цикл
    Число3 = 0;
    Для Б = 1 По 4 Цикл
    Буква1 = Сред(Строка64, (А-1)*4 + Б, 1);
    Если Буква1 = "=" Тогда
    Код4 = 0;
    Иначе
    стрН = Таб64.Найти(Буква1, "Символ");
    Если стрН = Неопределено Тогда
    Сообщить("ошибка при поиске "+ КодСимвола(Буква1));
    Иначе
    Код4 = стрН.Код;
    КонецЕсли;
    КонецЕсли;
    Число3 = Число3 * 64 + Код4;
    КонецЦикла;
    Ост = Число3 % 256;
    Индекс = (А-1)*3 + 2;
    Если Индекс <= РазмерМ - 1 Тогда
    Массив64[Индекс] = Ост;
    КонецЕсли;
    Число3 = (Число3 - Ост) / 256;
    Ост = Число3 % 256;
    Индекс = (А-1)*3 + 1;
    Если Индекс <= РазмерМ - 1 Тогда
    Массив64[Индекс] = Ост;
    КонецЕсли;
    Число3 = (Число3 - Ост) / 256;
    Ост = Число3 % 256;
    Массив64[(А-1)*3 + 0] = Ост;
    КонецЦикла;
    Возврат Массив64;
    Иначе //Преобразовываем массив в строку
    Строка64 = ";
    Кол3 = Цел(Массив64.Количество() / 3);
    Если Массив64.Количество() % 3 <> 0 Тогда
    Кол3 = Кол3 + 1;
    КонецЕсли;
    Для А = 1 По Кол3 Цикл
    Число3 = Массив64[(А-1)*3];
    Если (А-1)*3+1 <= Массив64.ВГраница() Тогда
    Код3 = Массив64[(А-1)*3+1];
    Иначе
    Код3 = 0;
    КонецЕсли;
    Число3 = Число3*256 + Код3;
    Если (А-1)*3+2 <= Массив64.ВГраница() Тогда
    Код3 = Массив64[(А-1)*3+2];
    Иначе
    Код3 = 0;
    КонецЕсли;
    Число3 = Число3*256 + Код3;

    Ост4 = Число3 % 64;
    Число3 = (Число3 - Ост4) / 64;
    Ост3 = Число3 % 64;
    Число3 = (Число3 - Ост3) / 64;
    Ост2 = Число3 % 64;
    Число3 = (Число3 - Ост2) / 64;
    Ост1 = Число3 % 64;
    Число3 = (Число3 - Ост1) / 64;
    стрН = Таб64.Найти(Ост1, "Код");
    Если стрН = неопределено Тогда
    Сообщить("Ошибка при поиске");
    Иначе
    Строка64 = Строка64 + стрН.Символ;
    КонецЕсли;
    стрН = Таб64.Найти(Ост2, "Код");
    Если стрН = неопределено Тогда
    Сообщить("Ошибка при поиске");
    Иначе
    Строка64 = Строка64 + стрН.Символ;
    КонецЕсли;
    стрН = Таб64.Найти(Ост3, "Код");
    Если стрН = неопределено Тогда
    Сообщить("Ошибка при поиске");
    Иначе
    Строка64 = Строка64 + стрН.Символ;
    КонецЕсли;
    стрН = Таб64.Найти(Ост4, "Код");
    Если стрН = неопределено Тогда
    Сообщить("Ошибка при поиске");
    Иначе
    Строка64 = Строка64 + стрН.Символ;
    КонецЕсли;
    КонецЦикла;
    //Если количество символов не делится на 3, то на конце должны быть
    //знаки "="
    Если Массив64.Количество() % 3 = 1 Тогда
    Строка64 = Лев(Строка64, СтрДлина(Строка64)-2)+ "==";
    ИначеЕсли Массив64.Количество() % 3 = 2 Тогда
    Строка64 = Лев(Строка64, СтрДлина(Строка64)-1)+ "=";
    КонецЕсли;
    Возврат Строка64;
    КонецЕсли;
    КонецФункции
```

Толком ни разу так и не воспользовался но может кому то пригодиться
(1с8)
---
ДатаГод(Док.ДатаДок)+"-"+Формат(ДатаМесяц(Док.ДатаДок),"Ч(0)2.0")+"-"+Формат(ДатаЧисло(Док.ДатаДок),"Ч(0)2.0")
---
то, что нужно. Спасибо
---
Еще одна дилемма - вырезать номер договора из названия.
Имеется: "договор №12345 от 01.01.2015"
Как вывести номер договора: "12345", при условии, что он может быть разным по длине?
Как мог бы найти выход:
1. Можно вывести значение: "договор №12345", обрезав право. Это Легко.
2. Потом вывести "12345", обрезов лево. Это как сделать?
Постоянные значения: "договор от" - 10 символов. "от 01.01.2015" - 13 символов.
---
Slypower, Постоянные значения: "договор от" - 10 символов. "от 01.01.2015" - 13 символов. "Народное творчество" и просто опечатки пользователей будут регулярно делать эти "постоянные" значения непостоянными.

Я бы сделал так:
1. Нашел в строке позицию слова "договор" и взял правую часть строки от этой позиции +7 (длина слова "договор"). Получилось бы " №12345 от 01.01.2015"
2. В получившейся подстроке нашел бы слово "от" и взял левую часть строки до этой позиции, получил бы " №12345 "
3. Заменил бы символ "№" на пробел и применил СокрЛП().

Но, опять-таки, предвижу вариант, когда "креативный" пользователь вколотит "дог.12345 от 01.01.15" и вся эта затея провалится.
---
2. Мы не можем взять правильно левую часть до слова "от", т.к. сам номер "№12345" может быть "№12345/12/12". Тут слева мы не можем брать, нужно отнимать правую сторону. Только вот вычитание для строковых величин невозможно.
(15)да, только в названии. Сделать новый реквизит и сидеть целый день и вносить этот реквизит вручную для десяток тысяч контрагентов? Не вариант(
---
Slypower, Мы не можем взять правильно левую часть до слова "от", т.к. сам номер "№12345" может быть "№12345/12/12". Если вы не можете, то это не значит, что все не могут.

Это значит, что вы просто не умеете:

```1c
    СтрНомерДата=Прав(ИсхСтрока,Найти(ИсхСтрока,"договор")+7);
    СтрНомер=Лев(СтрНомерДата, Найти(СтрНомерДата,"от")-1);
```
---
Сделал так:

```1c
    НомерДоговора = Сред(док.Договор.Наименование,10);
    НомерДоговораКонечное = СокрЛП(Лев(НомерДоговора, Найти(НомерДоговора,"от")-1));
```

Вывод хороший. И сразу виден вывод из (14) "Но, опять-таки, предвижу вариант, когда "креативный" пользователь вколотит "дог.12345 от 01.01.15" и вся эта затея провалится.")))))
(18) Согласен. Я думал, создать обработку и аналогично данным строкам заполнить реквизиты. Может так и сделаем. Только лишние телодвижения потом при создании нового договора, чтобы наименование формировалось "договор №12345 от 01.01.2015", но это уже совсем другая история))
---
Slypower, логичнее номер хранить в отдельном реквизите. Просто в клюшке не думали об этом раньше))
---
Вот пришло письмо, обещанное 2 мая.
Добрый день.
Ссылка на просмотр записи вебинара: https://webinars.softlinegroup.com/mira/miravr/3974463496
Работа с порталом АИС УСФ доступна по ссылке http://vat.gov.by/
Вся информация по работе с электронными счетами фактурами находится на портале МНС http://www.nalog.gov.by/ru/electronic_invoice_ru/
XSD-схемы и описания XML-файлов, а так же инструкции и файлы для работы с веб-сервисом в архиве: https://www.dropbox.com/s/1amqxwtgwfcfjcy/eInvVat.7z?dl=0

С уважением,
Служба технической поддержки

Номера телефонов для обращения с/х по различным вопросам работы с АИС «Учет счетов-фактур»:
по техническим: +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.
---
Alex911k, может им запрос по мылу отправить с просьбой выложить исходники 1с?
---
Вот пришло ещё письмо от техподдержки.
Добрый день
В рамках демонстрации использования интеграционного решения с функциями подписания и отправки электронных счетов-фактур на веб-сервис АИС УСФ, был показан пример вызова из системы 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.
---
Alex911k, а саму ссылку можешь скинуть?
---
Alex911k, а ссылку можно увидеть откуда скачать ??????
---
shiko, http://www.nalog.gov.by/ru/electronic_invoice_ru/

Интересная работа портала. 1С выдает, что все проверки прошла счет-фактура, файл выгрузился на портал, все прошло. На портале его нет. Этот же файл пробую загружать на портал с портала кнЗагрузить, то ошибка в структуре. Что за ерунда -то((
---
Slypower, какая ошибка у меня была ругалась на секцию dateIssuance, не нравилась она порталу, закоментил и все прекрасно улеглось. На сколько я понял она в файле не нужна, добавляется автоматом когда фаил передается на портал. если потом СФ выгрузить с портала в xml, она в файле присудствует с датой выгрузки СФ.
---
С сайта http://www.nalog.gov.by/ru/electronic_invoice_ru/view/o-vnedrenii-mexanizma-funktsionirovanija-elektronnyx-schetov-faktur-po-nalogu-na-dobavlennuju-stoimost-22331/ Контактные телефоны по вопросам опытной эксплуатации: (017) 229-79-87, (017) 229-79-94
---
В тех поддержку написал письмо по поводу выгрузки и что сервис выдает что фаил принят но когда захожу в личный кабинет файла нет.

Получил ответ

"Добрый день.
Промоделировали Вашу ситуацию, действительно есть такая проблема. Поставили задачу на ее исправление.
При следующем обновление должно работать корректно.

С уважением,
Служба технической поддержки
Номера телефонов для обращения с/х по различным вопросам работы с АИС «Учет счетов-фактур»:
по техническим: +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.
---
Нужна помощь наших Гуру 8рок.
Есть код:

```1c
    Функция 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-ке валится с ошибкой:

```1c
    {Форма.Форма.Форма(17)}: Значение не является значением объектного типа (Document)
    InvVatNumber = InvVatXml.Document.GetXmlNodeValue("issuance/general/number");
```

Поясните, почему такое происходит и чем тут эта 8ка относится от 7.7?

Примечательно, на тестовом такой проблемы нет, почему тогда это наблюдается на рабочем?
---
Slypower, смотри в отладке чему равно InvVatXml.
В 1с8 есть такая кнопка в отладке остановка по ошибке. Перед тем как вывалить ошибку тебе остановит на ошибке и сможешь проанализировать входные параметры.
---
Xershi, смотрел, ничего не выдает. Может все же портал глючит? На тестовом выдает 1, а на рабочем ничего.
---
Slypower, номер то 25 знаков какой 1?)
---
Xershi, У меня строка: InvVatXml = EVatService.GetEDoc(InvVatNumber); , откуда получаем номер. Вот я и перепутал вопрос))) получал отсюда: InvVatNumber - выдает 25 знаков, InvVatXml - выдает 1 (на тестовом).
Кнопку "Остановка по ошибке" не нашел еще(
---
Slypower, отладка - остановка по ошибке - галка останавливаться по ошибке
---
Slypower,
Называется функцией, если верить коду, выглядит как процедура.
---
wasiliy, ну читать я умею, но я же не писал, что процедура, а написал код. И от этого вашего знания, проблема не решается
---
Slypower,
Я же не телепат, в таком случае если все знаете возьмите типовую обработку из 1с 8, там код похож и сравните, что у вас не работает.
---
Slypower,
в InvVatXml передаете не то что надо, т.е. при вызове функции ли процедуры подсовываете не то что надо
---
lazovit, да я разобрался в чем дело, дело в том, что 8-ка отличается от 7.7, поэтому не получается. Немного переделать код под другую логику и все заработает.
---
Slypower, восьмерка тут не причем, портал не отдает нужную инфу.
А тестовый - красавец, работает хорошо, но это почти уже никому не надо.
---
Igor Igorevich, ну дело было в обработке. Xershi в (4627) дал направление, которое мне и помогло реализовать для 8ки. Все работает теперь
---
Slypower, У меня ночью все работает хорошо, а днем по прежнему выдает ошибки.
Один раз запустишь - ошибки на одних ЭСЧФ, другой раз - ошибки могут быть уже на других ЭСЧФ.
Писал в поддержку по конкретным ошибкам - ответили, что в их базе по данным ЭСЧФ нет ошибок, попробуйте зайти на портал завтра.
И как тут не грешить на портал ?
---
Slypower, обработки для этого придумали.

Так в чем у вас проблема отпарсить строку?
---
Slypower, у вас номер договора написан только в названии?
Может тогда сделать отдельный реквизит номер договора?
Ну а так функции работы со строками Лев, Прав, Сред.
---
Вот теперь первоначальный вопрос. Есть те, кто уже тестируют данные выгрузки из 1С в ЭСЧФ?
---
Slypower, я думал подождать. Может сольют конфу от франчайзи и слизать готовый вариант.
Коллеге предложил делать через вебсервисы, но он не захотел их изучать.
Поэтому пока мы даже ничего не пишем. К деноминации готовим базы.
---
Xershi, сливать конфу от франчайзи не очень корректно.
Мы же тратим средства на разработку в расчёте на реализацию нашего труда.

Такие вещи правильнее покупать. Это не дорого для Вас и приятно для нас)
---
Gladkov_Anton, все все знают. Вопрос не в этом.
---
Готовая есть тут для 8, но она платная. Написать легко. Я подготовил, пока в виде внешней обработке (с небольшими расшифровками в коде), могу скинуть. Только вот еще не вся инфа мне понятно. Где брать Номер ЭСЧФ, как он меняться будет и еще много вопросов.
Деноминация - это вообще бяда: База огромная, стандартными свертками не сворачивается Книга продаж.
Директор сказал, сделать ЭСЧФ. Будем может внедрять в процедуру ПриПроведении. Результат: создаются файлы xml как в примере. Ну а потом загружать их всех вечером на сайт. Пока такая задумка. Лучше, конечно, все доки в один файл, но хз, можно ли так и будут ли они размером меньше 1 МБ
---
Slypower, это же хмл. Объем зависит от количества текста.
---
Основное различие в количестве текста - количество товара в реализации
---
Slypower, тут тогда нужно делать транзакцию с определенным объемом документов и проблем не будет.
---
Slypower, ставите признак "требуется выгрузка" и "выгружен", при проведении только ставим "требуется выгрузка", потом выгружаем все обработкой и проставляем "выгружен".
---
Slypower, Выгружать несколько документов одним запросом не получится.
Дело в том, что каждая ЭСЧФ должна быть подписана электронным ключом отдельно.
И по каждой будет генерироваться отдельный файл-ответ (тикет)

Мы со своей стороны отправляли пожелания по работе веб-сервиса разработчикам портала и Авесту.
Разработчик портала подтвердил, что функционал веб-сервисов будет расширен.
Пожелания организаций участвующих в тестировании будут учтены.
См. http://www.export.by/?act=news&mode=view&id=67735

Для подписи будет использоваться ключ от Авеста.
Они же ведут разработку транспорта для доставки xml.
Будет использоваться зашифрованный канал (TLS)
Инициализировать его из 1с просто так не получится. Поэтому использовать веб-сервисы (SOAP) тоже не получится.

На текущий момент Авест предложил утилиту, которая позволяет подписать и отравить ЭСЧФ из папки.
Запуск утилиты производится из командной строки. Ответы (тикиты) так же будут складываться в папку.

Такой подход существенно затрудняет интеграцию.
Мы со свой стороны описали сложности интеграции, приложили прошении о переходе на использование COM-объектов или Native API
Такой вариант позволил бы производить работу с TLS и ЭЦП прозрачно для учетных систем.

Решения по данному вопросу пока нет. Обещали рассмотреть на следующей неделе.
---
Мы решили выгружать одним запросом все документы в папку, а потом уже вручную их загружать на сайт по одному документу, что очень неудобно и затратно.
Утилита от Авест заказывается у них? На сайте Министерства по налогам и сборам РБ, где вся информация по ЭСЧФ нет ее. Будет ждать информации. Спасибо, что сообщили. Если будет какие новшества, надеюсь, они выложат всю информацию
---
Slypower, утилиту думаю предоставили пока только тестировщикам.
Очень надеюсь, что на следующей неделе все таки появится COM-объект для интеграции и потребность в "папках и файлах" отпадет.
---
Gladkov_Anton, лучше бы веб-сервисы подружили и тогда вообще во всем отпадет надобность.
---
Xershi, отказали. Отказ мотивировали необходимостью реализовать шифрование канала связи собственными средствами.
---
Gladkov_Anton, буду ждать развития темы, короче у нас как всегда все через одно место...
---
Gladkov_Anton, 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)}: :
---
35 строка кода? Если это "xml_file=xml_fso.CreateTextFile(прм_ИмяФайла, -1, 0); //создать файл, перезаписывая существующий.", то Вы пытаетесь записать ОТКРЫТЫЙ до этого файл с его подменой.
---
stavrosoleg, Спасибо огромное, извините за глупые вопросы ,кто-то уже на финишной прямой,а мы только стартуем!
---
stavrosoleg, а не подскажите каким мемодом очиститьфайл() перед созданием?
---
Пытаюсь разобрать документ, делаю по примеру выше, ошибка:

```1c
    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)}: Плохой тип переменной
---
an2007,
```1c
    Для i = 0 по InvList.Count-1 Цикл
```
---
tyn, не помогает:

```1c
    InvList = EVatService.GetList(ДатаНачала);
    Для i = 0 по InvList.Count Цикл
    InvVatNumber = InvList.GetItemAttribute(i, "document/number");
    InvVatXml = EVatService.GetEDoc(InvVatNumber);
    УНП = InvVatXml.Document.GetXmlNodeAttribute("issuance/provider/unp");
```

Ошибка на первом документе.
---
tyn, ОК, все разобрался.
---
в чем проблема была?(2153) an2007,
---
Nykos, я делал перебор от 1..count, надо 0..count-1
---
an2007, -> (2144) tyn, как так? как так не сразу понял?)))))))))
---
Требуется помощь! Может кто с этим сталкивался! Техподдержка молчит (уже направил им три письма).

Привожу последнее:

Получаю входящие.

Запись: 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>. Но в схеме этот тэг прописан как обязательный и проверку не проходит. Тем не менее наши контрагенты и я получаем СФ без этого тега.
В связи с этим вопрос: Как это возможно? Как правильно?
Если это правильно, то как этого добиться не выключая проверки?
---
selus, позвони поставщику и объясни что бы не косячили!
---
Slypower, по поводу номера ЭСЧФ. Он формируется по следующему принципу
9 первых цифр - УНП пользователя, который составляет ЭСЧФ - 4 цифры года, в который составляется ЭСЧФ - 10 цифр свободного номера по порядку с учетом лидирующих нулей.
Последовательность последних 10 цифр в году для каждого УНП должна быть уникальна. На начало каждого года, для каждого с/х (УНП) создается последовательность номеров (десять разрядов) от 1 до 9999999999. При заполнении ЭСЧФ, его номер формируется автоматически следующим образом: УНП - Год (текущий) - свободный номер из последовательности. Для каждого ЭСЧФ номер должен быть уникальным для данного УНП в текущем году.
Выложи плз обработку по выгрузке в xml
---
Обновление СОС из 1с.
Искал не нашел, пришлось самому сделать, ничего сложного, но может кому-нибудь пригодится.

```1c
    Процедура ОбновитьСОС()

    // удаляем старые СОС
    КомандаСистемы("del %TEMP%\*.crl >NUL: 2>&1");

    скачатьФайл = ""c:\Program Files\Avest\AvPCM_MNS\wget" -q -T 30 -O %TEMP%\"; // для 32-х битных систем
    импортСОС = ""c:\Program Files\Avest\AvPCM_MNS\AvCmUt3.exe" -C %TEMP%\";
    сайтФайлаМНС = " %PX_USER% %PX_PASS% http:" + Симв(47) + Симв(47) + "www.portal.nalog.gov.by/ca/";
    сайтФайлаПКИ = " %PX_USER% %PX_PASS% http:" + Симв(47) + Симв(47) + "pki.gov.by/certs/-/";
    выводВНоль = " >NUL";

    // загрузка СОС Корневой Удостоверяющий центр Министерства по налогам и сборам
    имяФайла = "mns-ca.crl";
    выполненоУспешно = 0;
    Попытка
    КомандаСистемы(скачатьФайл + имяФайла + сайтФайлаМНС + имяФайла);
    выполненоУспешно = 1;
    Исключение
    Сообщить("СОС " + имяФайла + " - не скачан !!!");
    КонецПопытки;

    Если выполненоУспешно = 1 Тогда
    КомандаСистемы(импортСОС + имяФайла + выводВНоль);
    КонецЕсли;

    // загрузка СОС Корневой УЦ РУП "Информационно-издательский центр по налогам и сборам"
    имяФайла = "rup.crl";
    выполненоУспешно = 0;
    Попытка
    КомандаСистемы(скачатьФайл + имяФайла + сайтФайлаМНС + имяФайла);
    выполненоУспешно = 1;
    Исключение
    Сообщить("СОС " + имяФайла + " - не скачан !!!");
    КонецПопытки;

    Если выполненоУспешно = 1 Тогда
    КомандаСистемы(импортСОС + имяФайла + выводВНоль);
    КонецЕсли;

    // загрузка СОС Корневой удостоверяющий центр (КУЦ)
    имяФайла = "kuc.crl";
    выполненоУспешно = 0;
    Попытка
    КомандаСистемы(скачатьФайл + имяФайла + сайтФайлаПКИ + имяФайла);
    выполненоУспешно = 1;
    Исключение
    Сообщить("СОС " + имяФайла + " - не скачан !!!");
    КонецПопытки;

    Если выполненоУспешно = 1 Тогда
    КомандаСистемы(импортСОС + имяФайла + выводВНоль);
    КонецЕсли;

    // загрузка СОС Республиканский удостоверяющий центр (РУЦ)
    имяФайла = "ruc.crl";
    выполненоУспешно = 0;
    Попытка
    КомандаСистемы(скачатьФайл + имяФайла + сайтФайлаПКИ + имяФайла);
    выполненоУспешно = 1;
    Исключение
    Сообщить("СОС " + имяФайла + " - не скачан !!!");
    КонецПопытки;

    Если выполненоУспешно = 1 Тогда
    КомандаСистемы(импортСОС + имяФайла + выводВНоль);
    КонецЕсли;

    // удаляем лог-файл.
    КомандаСистемы("del " + СокрЛП(КаталогИБ()) + "AvCmUt3.log");

    КонецПроцедуры

    //*******************************************

    Процедура ОбработкаОшибок(текстОшибки)

    ......

    строкаПоиска = "истек срок действия СОС"; // Строка записана по памяти.
    Если Найти(текстОшибки,строкаПоиска)>0 Тогда
    ОбновитьСОС();

    текстПредупреждения = "СОС обновлены. Попробуйте выполнить операцию повторно.";
    Предупреждение(текстПредупреждения);
    КонецЕсли;

    ......

    КонецПроцедуры
```
---
батник мне кажется проще в винде поставить для обновления.
---
тут дело в том, что может пригодится такое решения в данном случае: я, чисто гипотетически, "продал" свою обработку покупателям. СОС тоже за доплату туда допилил. И вот чтобы не кидать никакие батники никуда, чтобы папки не докидывать и не забивать голову и так не оч умному покупателю, я в 1С так сделаю, и он будет рад и будет считать меня богом. Не ну а что))))))
---
тогда уже лучше регламентное задание написать)
Но как кнопка тоже неплохо.
---
а разве сам батник для обновления не лежит в папке авеста? почему просто его не вызвать используя 5 строк кода. Он же все равно есть. Но как решение - имеет место быть.
---
есть разные бат файлы. Например: get_crl.bat в папке c:\Program Files (x86)\Avest\AvPCM_nces\. Он обновляет СОСы, но столкнулся с ситуацией, когда нужно скачивать сосы с портала и обновлять их.
а вот get_crl.bat из папки: c:\Program Files (x86)\Avest\AvPCM_MNS\ у меня ничего не делает.
---
Спасибо!
Пригодиться.
---
Переписал под 8-ку и скрестил со своей процедурой.

```1c
    Перем Рез;
    Перем ИМНС_СОС;
    Перем НЦЭУ_СОС ;

    Процедура КоманднаяПанель1ОбновитьСОС(Кнопка)Экспорт
    ПутьАвест =";

    Если ИМНС_СОС Тогда
    Если Рез = 64 Тогда
    ПутьАвест = ""C:\Program Files (x86)\Avest\AvPCM_MNS\"";
    Иначе
    ПутьАвест = ""C:\Program Files\Avest\AvPCM_MNS\"";
    КонецЕсли;
    ИначеЕсли НЦЭУ_СОС Тогда
    Если Рез = 64 Тогда
    ПутьАвест = ""C:\Program Files (x86)\Avest\AvPCM_nces\"";
    Иначе
    ПутьАвест = ""C:\Program Files\Avest\AvPCM_nces\"";
    КонецЕсли;
    Иначе
    Предупреждение("Выберите вид сертификата");
    Возврат;
    КонецЕсли;

    Попытка
    Если ИМНС_СОС Тогда
    Если Рез = 64 Тогда
    КомандаСистемы("get_crl.bat",ПутьАвест);
    Иначе
    КомандаСистемы("get_crl.bat",ПутьАвест);
    КонецЕсли;
    ИначеЕсли НЦЭУ_СОС Тогда
    Если Рез = 64 Тогда
    КомандаСистемы("get_crl.bat",ПутьАвест);
    Иначе
    КомандаСистемы("get_crl.bat",ПутьАвест);
    КонецЕсли;
    Иначе
    Предупреждение("Виберите вид сертификата");
    КонецЕсли;
    Исключение

    ОбновитьСОС(ПутьАвест);

    КонецПопытки;
    КонецПроцедуры

    Процедура ОбновитьСОС(ПутьАвест)

    // удаляем старые СОС
    КомандаСистемы("del %TEMP%\*.crl >NUL: 2>&1");

    скачатьФайл = ПутьАвест + ""wget" -q -T 30 -O %TEMP%\";
    импортСОС = ПутьАвест + "AvCmUt3.exe" -C %TEMP%\";
    сайтФайлаМНС = " %PX_USER% %PX_PASS% http://www.portal.nalog.gov.by/ca/";
    сайтФайлаПКИ = " %PX_USER% %PX_PASS% http://pki.gov.by/certs/-/";
    выводВНоль = " >NUL";

    // загрузка СОС Корневой Удостоверяющий центр Министерства по налогам и сборам
    имяФайла = "mns-ca.crl";
    выполненоУспешно = 0;
    Попытка
    КомандаСистемы(скачатьФайл + имяФайла + сайтФайлаМНС + имяФайла);
    выполненоУспешно = 1;
    Исключение
    Сообщить("СОС " + имяФайла + " - не скачан !!!");
    КонецПопытки;

    Если выполненоУспешно = 1 Тогда
    КомандаСистемы(импортСОС + имяФайла + выводВНоль);
    КонецЕсли;

    // загрузка СОС Корневой УЦ РУП "Информационно-издательский центр по налогам и сборам"
    имяФайла = "rup.crl";
    выполненоУспешно = 0;
    Попытка
    КомандаСистемы(скачатьФайл + имяФайла + сайтФайлаМНС + имяФайла);
    выполненоУспешно = 1;
    Исключение
    Сообщить("СОС " + имяФайла + " - не скачан !!!");
    КонецПопытки;

    Если выполненоУспешно = 1 Тогда
    КомандаСистемы(импортСОС + имяФайла + выводВНоль);
    КонецЕсли;

    // загрузка СОС Корневой удостоверяющий центр (КУЦ)
    имяФайла = "kuc.crl";
    выполненоУспешно = 0;
    Попытка
    КомандаСистемы(скачатьФайл + имяФайла + сайтФайлаПКИ + имяФайла);
    выполненоУспешно = 1;
    Исключение
    Сообщить("СОС " + имяФайла + " - не скачан !!!");
    КонецПопытки;

    Если выполненоУспешно = 1 Тогда
    КомандаСистемы(импортСОС + имяФайла + выводВНоль);
    КонецЕсли;

    // загрузка СОС Республиканский удостоверяющий центр (РУЦ)
    имяФайла = "ruc.crl";
    выполненоУспешно = 0;
    Попытка
    КомандаСистемы(скачатьФайл + имяФайла + сайтФайлаПКИ + имяФайла);
    выполненоУспешно = 1;
    Исключение
    Сообщить("СОС " + имяФайла + " - не скачан !!!");
    КонецПопытки;

    Если выполненоУспешно = 1 Тогда
    КомандаСистемы(импортСОС + имяФайла + выводВНоль);
    КонецЕсли;

    // удаляем лог-файл.
    КомандаСистемы("del " + СокрЛП(ПутьАвест) + "AvCmUt3.log");

    КонецПроцедуры
    //Определяет разрядность системы
    WshShell = Новый COMОбъект("WScript.Shell");
    Рез = ?(Найти(WshShell.Environment("SYSTEM").item("PROCESSOR_ARCHITECTURE"), "64") > 0, 64, 32);
```
---
Местные гуру, назрел вопрос.
пишу

```1c
    Если xml_fso.FileExists(КаталогИБ()+"XML\2016\doc_1000000002.xml")=1 Тогда
    код;
    КонецЕсли;
```

Файл там есть, но он его не находит((( почему?
---
Почему xml_fso.FileExists(КаталогИБ()+"XML\2016\doc_1000000002.xml") = -1