gifts2017

ЭСЧФ. Беларусь. Практика работы с входящими электронными счетами-фактурами

Опубликовал Ugu (ge_ni) в раздел Обработки - Обработка документов

Читаем входящие электронные счета-фактуры, создаём их как документы в 1С.

Для фриланса, к  которому я отношусь, задача весьма непростая. Ключа с электронной подписью на доступ к vat.gov.by нет, а соответственно разрабатывать и отлаживать модули обработок для 1С можно только у Заказчика (Заказчик – это 12 различных предприятий).

У Заказчика сеть, терминальный доступ, сервер Win2003, сервер Win2008, сервер Win2012,  SQL serwer, 1С версий 7.7, 8.2, 8.3. Как правило: администратора сети нет или это Главный инженер, Зам. по производству и т.д. со знаниями чуть больше обычного пользователя Windows. Работать с франчайзи не хотят – типа «дорого»… В общем «обычная картина».

Прав у меня на серверах почти никаких. Зарегистрировать компонент eInvVat на сервере без толкового администратора  – «ещё та песня!» Менеджер сертификатов и ключ у Главного бухгалтера, на сервер ключ отдавать не хотят, т.к. ключ «универсальный» и используется в другом «Рабочем кабинете»… и т.д.

Все эти трудности нужно обойти:

  1. Информация должна находится на сервере.
  2. Информацию нужно получать с рабочего места Главного бухгалтера. Место обработки – локальный компьютер.
  3. Информацию нужно обрабатывать и готовить к подписанию с любого рабочего места в сети. Место обработки - сервер.
  4. Информацию нужно подписывать на рабочем месте Главного бухгалтера и отправлять на портал. Место обработки – локальный компьютер.

Рассмотрим пока все эти проблемы для версии 1С Предприятие 7.7.

Ставим на компьютере Главного бухгалтера 1С локально (не в режиме терминального доступа), обеспечив доступ к ключу защиты.

Через сетевое окружение подключаем рабочую базу данных.

Теперь в этой базе можно запускать обработки.

Читаем входящие электронных счета  фактуры, создаём их как документы в 1С.

Написал обработку, которая должна прочитать входящие ЭСЧФ на портале, динамически по требованию расшифровать:  что это, от кого, содержание, показатели…, пользователь принимает решение подписывать или нет, подписывает там же (на портале) и делает отметку в документах 1С о соответствии входящего ЭСЧФ документу поступления.

Запустил обработку… Читает… Ура! Заполняет таблицу! Расшифровывает! Клааассс…

Выставил флажки в обработке: «Подписать»…Запускаю соединение с порталом и повторное чтение ЭСЧФ входящих для привязки подписи и… Ха! «Ошибка имени файла…», «Ошибка запроса номера…», «Ошибка…»!

«- Ну, может завтра?!» «Что-то портал плохо работает…»

Завтра всё, как и вчера!

Через 2 дня выясняю у технической поддержки портала, что существует ограничение на одноразовое в сутки чтение входящих ЭСЧФ с портала vat.gov.by с использованием компонента eInvVat.  Т.е. одновременно прочитать, проанализировать, решить подписать, повторно прочитать (т.к. портал готов воспринимать от пользователя только дату начала опроса, затем выдать количество входящих ЭСЧФ, затем прочитать в цикле на портале номера входящих) и сравнить номер ЭСЧФ на портале с номером ЭСЧФ в обработке, никак  не получится за одни сутки.

Значит: информацию о входящих ЭСЧФ нужно в первом и единственном цикле чтения сохранить на «своём компьютере». В нашем случае на Сервере.

Завтра в первом и единственном цикле чтения номеров входящих ЭСЧФ на портале сравнить их с номерами, помеченными нами к подписанию в нашей базе, и подписать их на портале.

 Работать в режиме ONline не получается или получается очень «криво», отладка для специалистов 1С крайне затруднена или почти невозможна.

Будем работать в режиме OFFline и обрабатывать ЭСЧФ в 1С с помощью библиотеки V7PLUS.DLL. Полагаю куда dll  нужно скопировать, все уже знают: «в каталог программы», «в каталог 1С» …

Сначала доработаем в конфигураторе глобальный модуль:

  1. в раздел переменных добавляем записи

Перем КаталогВходящиеСчетаФактуры Экспорт; Перем КаталогВходящиеИсходные Экспорт; Перем КаталогВходящиеПодписанные Экспорт; Перем КаталогВходящиеАрхив Экспорт;

  1. в процедуру «ПриНачалеРаботыСистемы()»

… 

КаталогВходящиеСчетаФактуры = КаталогБазыДанных()+"ВходящиеЭСЧФ\"; Если (ФС.СуществуетФайл(КаталогВходящиеСчетаФактуры +"*.*")=0) Тогда ФС.СоздатьКаталог(КаталогВходящиеСчетаФактуры ); КонецЕсли; КаталогВходящиеИсходные = КаталогБазыДанных()+"ВходящиеЭСЧФ\ВходящиеИсходные\"; Если (ФС.СуществуетФайл(КаталогВходящиеИсходные+"*.*")=0) Тогда ФС.СоздатьКаталог(КаталогВходящиеИсходные); КонецЕсли; КаталогВходящиеПодписанные = КаталогБазыДанных()+"ВходящиеЭСЧФ\ВходящиеПодписанные\"; Если (ФС.СуществуетФайл(КаталогВходящиеПодписанные+"*.*")=0) Тогда ФС.СоздатьКаталог(КаталогВходящиеПодписанные); КонецЕсли; КаталогВходящиеАрхив = КаталогБазыДанных()+"ВходящиеЭСЧФ\ВходящиеАрхив\"; Если (ФС.СуществуетФайл(КаталогВходящиеАрхив+"*.*")=0) Тогда ФС.СоздатьКаталог(КаталогВходящиеАрхив); КонецЕсли;

Почему предопределенные папки? Бухгалтер «тормозит с выбором каталога». Не нужно заботиться о сетевых путях при запуске обработок на локальных компьютерах.

Сохранить конфигурацию. Запустить  1С и проверить наличие папок с названиями объявленных каталогов (ВходящиеЭСЧФ, ВходящиеИсходные, ВходящиеПодписанные, ВходящиеАрхив), внутри каталога базы данных Вашей программы.

См.Рис.1.

Если папки не созданы, скорее всего, Вы запускали 1С не как «Администратор».  Создайте папки каталогов вручную.

Создайте общий  реквизит в Документах «ДокументОснование1» с типом «Документ». Всегда пригодится…

 См.Рис. 4.

Не хотите или такой реквизит уже есть у Вас?! Тогда создайте его в реквизитах документа «ЭСЧФВходящие». Тип реквизита – «Документ».

Если такой реквизит уже есть в Вашей базе данных, замените название «ДокументОснование1» в представленных ниже обработках на Ваше.

Для типовой конфигурации от МиСофт необходимо доработать сам документ «ЭСЧФвходящие» добавив реквизиты:

См.Рис. 2.

ТипЭСЧФ  = Перечисление.ТипЭСЧФ;

СтатусЭСЧФ = Перечисление.СтатусыЭСЧФ;

 НомерДокОсн  - Строка(10) – номер входящего документа 1С(Поступление…, Услуги сторонних… и т.д.); -

ДатаДокОсн – Дата()  дата входящего  документа 1С;

НомерДоговора – Строка(40) (у Белтаможсервиса доходит до 40 символов);

ДатаДоговора – Дата();

СписокКорректур – Строка (300) – для записи ссылок на номера входящих ЭСЧФ по которым производились корректировки исходного ЭСЧФ. При повторном запуске обработок исключает повторную корректировку документа.

СтрокаТовар – Строка(300) для записи названия товара указанного в ЭСЧФ. Почему строка? Даже в приходной накладной название товара иногда не совпадает с его же названием в ЭСЧФ! (Ручной ввод ЭСЧФ).

Длину номера документа «ЭСЧФвходящий» увеличиваем до 20 символов. Номер документа «ЭСЧФвходящий» должен состоять из УНП поставщика и входящего номера ЭСЧФ. Иначе сложно добиться уникальности номеров…

Теперь форма входящего ЭСЧФ выглядит так:

- верхняя таблица это собственно таблица документа «ЭСЧФвходящий»;

- нижняя таблица это «ТаблицаЗначений» с информацией из табличной части «Док.основание» (ДокументОснование1) (документ поступления в 1С).

См.Рис. 3.

 

Вся  первичная подготовка закончена.

 

Запускаем обработку  ЗагружаемВходящиеЭСЧФВКаталог.ert

См.Рис. 5.

Если выбрать текущую дату, загрузка входящих ЭСЧФ произойдет только за сегодня. Если выбрать первое число месяца, то загрузка произойдет с начала месяца по текущую дату.

См.Рис. 7.

Файлы входящих ЭСЧФ в количестве около 200, сохраняются в течение нескольких секунд.

См.Рис. 6.

Файлы сохраняются в папку «ВходящиеИсходные». При загрузке обработка дописывает в название файла статус ЭСЧФ, что позволяет пользователю администрировать полученные файлы по этому признаку вручную.  Просто «Выставлен» нам нужно подписать и отправить.

«Выставлен. Подписан получателем» можно копировать в папку «ВходящиеПодписанные» для автоматического создания документов «ЭСЧФвходящий». Обработка исключает повторную загрузку полученных ЭСЧФ при работе с порталом в последующие дни.

Эту обработку мы запускаем на компьютере Главного бухгалтера, из локальной версии 1С Предприятие.

 

Если совсем ничего не получается. «Сертификаты СОС  типа устарели»… по неизвестным причинам не обновляются… и т.д., но есть доступ к электронным счетам фактурам на портале с использованием Internet Explorer, забрать к себе входящие ЭСЧФ можно и вручную.

- Настройте фильтр на портале на нужный период отображения ЭСЧФ.

- Выберите раздел «Входящие».

- Выберите подраздел «Выставлен. Подписан получателем».

- Выставьте групповую отметку «Отметить все», в левом верхнем углу окна списка ЭСЧФ.

- Рядом с этой групповой отметкой есть пиктограмма  (три точки вертикально и знак неравенства). Клик правой кнопкой мыши и выберите «Сохранить как XML».

- Внизу окна откроется  меню сохранения XML файлов с описанием имени файла. По умолчанию все файлы сохраняются в папку «Загрузки» на локальном компьютере.

Копируем их из этой папки в папку на сервере «ВходящиеПодписанные».

 

Для автоматического создания документа «ЭСЧФвходящий» используется обработка СканерВходящихЭСЧФ.ert.

При первом запуске, по желанию, можно, допустим, только посмотреть в таблице обработки содержание входящих ЭСЧФ.

Перед повторным запуском выставьте флажок "Создавать входящие ЭСЧФ", и после нажатия на кнопку "Выполнить", документы

1С "ЭСЧФвходящие" будут автоматически создаваться по мере заполнения табличной части обработки.

Обработкой можно пользоваться много раз, последовательно дополняя информацией созданные документы 1С «ЭСЧФвходящие».

Обработку можно запускать с любого компьютера в сети.

Обработку можно запускать с нескольких компьютеров, разделив списки входящих файлов между исполнителями.

Обработка выглядит так:

См.Рис. 8.

…клик – клик …«Получение услуг»

…клик – клик … «ЭСЧФвходящий»

…клик – клик … Исходный XML файл

Входящие электронные счета фактуры как документ 1С модно использовать для заполнения «Книги покупок», в различных 1С отчетах, для сверки с документами поступления в 1С и т.д.

Вся необходимая информация находится теперь у пользователя. Сегодня подписывать входящие в единственном доступном цикле чтения на портале не получится, но завтра…!

Выставим флаги (птички) того, что нужно подписать. Запускаем некую обработку чтения входящих ЭСЧФ … Во время чтения входящих с портала сравниваем их номера с нашими номерами, полученными вчера и отмеченными «птичками», и подписываем их прямо на портале!

Но это уже совсем другая обработка…

ЧитаемИПодписываемВходящиеЭСЧФ.ert

Принцип работы точно такой как у предыдущей обработки...

Скачать файлы

Наименование Файл Версия Размер
СканерВходящихЭСЧФ.ert 16
.ert 259,00Kb
02.09.16
16
.ert 1.2 259,00Kb Скачать
ЗагружаемВходящиеЭСЧФВКаталог.ert 15
.ert 214,00Kb
29.08.16
15
.ert 214,00Kb Скачать
ЧитаемИПодписываемВходящиеЭСЧФ.ert 14
.ert 368,50Kb
02.09.16
14
.ert 368,50Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Ugu (ge_ni) 31.08.16 19:09
Всем, кто скачал, готов отправлять ежедневные обновления примерно к 21:00.

За время с начала публикации:

- Агентство Гревцова записывае заголовок файла xml 4 мя строчками. - Исправлено
- ЗАО "БЕЛСНАБЭНЕРГО пишет "sender = " вначале а затем "http..." - Исправлено
- При автозагрузке получен под именем хххх.xml файл содержащий описание ошибки сервера портала - Исправлено
- Не обрабатывается документ с реквизитами "Всего", "НДС" в том числе - Исправлено
- В "СканерВходящихЭСЧФ" пропущена процедура "ШкалаВСтрокеСостояния(...) - Исправлено (есть в
ЧитаемИПодписываемВходящиеЭСЧФ)
- На некоторых компьютерах не запускается Анализатор = СоздатьОбъект("AddIn.XMLParser") - Исправлено
2. Ugu (ge_ni) 02.09.16 14:19
При загрузке с портала Получен файл со статусом "Данный контрагент "+УНП+" не является плательщиком НДС..." - Исправлено
Портал возвращает описание статуса в виде "Текст" на русском языке, не меняется статус входящих - Исправлено
Нет автоматического перемещения между папками "ВходящиеИсходные" в зависимости от статуса - Будет исправлено
3. Александр Веремеев (wer_alex) 12.09.16 10:36
Скачал ваши обработки, буду очень благодарен за обновления. Так как все что исправлено, у меня в проблеме сейчас
Мой адрес wer_alex@tut.by
4. Ugu (ge_ni) 19.09.16 11:13
Некоторые из бухгалтеров накопили до 500 неподписанных ЭСЧФ.
Попытка сканировать их на локальном рабочем месте бухгалтера привела к огромным потерям времени: 45 секунд на 1 запись.
При том, что на сервере эта работа была выполнена за 2.5 секунды.
Основное зависание на обработке поиска контрагента по номеру ИНН. Для 20 000 контрагентов это оказалась непосильная задача.
"Черный запрос" сработал не эффективно.
Касается это обработки: "Читаем и подписываем..."
Изменил правила работы с ней:

1. Читаем файлы ЭСЧФ из папки "...Исходные" и создаем "ЭСЧФВходящие" в 1С на сервере.
2. Проверяем ЭСЧФ и устанавливаем статус "На согласовании" на сервере.
3. Читаем в обработку уже из документов 1С "ЭСЧФВходящие". Всю необходимую информацию для заполнения таблицы к подписанию берем из документа. (управляет этим режимом "флажок" в шапке обработки). Это на локальном компьютере бухгалтера. Тратим те же 2.5 секунды.
4. Запускаем режим подписания ... 14 секунд.
5 Файлы ЭСЧФ из папки ",,,Исходные" переносятся в папку ",,,Подписанные" с изменением статуса и документов 1С
5. Евгений Титов (titoff) 20.09.16 15:35
Огромное спасибо автору за публикацию. Сэкономлена куча времени. И это при том, что постоянно сталкиваешься со все-возможными проблемами на стороне портала. Однозначно плюс. Только остался открытым вопрос с получением обновлений :)))
6. Ugu (ge_ni) 21.09.16 11:26
Обновления буду отправлять на электронный адрес
7. Vasil (user609375_pupkin2005) 21.09.16 12:01
8. Ugu (ge_ni) 21.09.16 12:08
Надеюсь понимаете, что часть реквизитов в обработках не совпадает с реквизитами Ваших конфигураций и соответственно: прежде
чем использовать обработки придется чуть переписать.

Сделайте начальные настройки Глобального модуля... как описано в публикации.

Добавьте реквизиты документу "ЭСЧФВходящие" ... как описано в публикации.

1. Получаем с портала на диск. (Обработка - ЗагружаемВходящие...")
2. Читаем на сервере... (так быстрее) (Обработка - ЧитаемИПодписываем...)
3. Создаём документы "ЭСЧФВходящие" в 1С на сервере со статусом "На согласовании" (Обработка - ЧитаемИПодписываем...)
4. На следующий день на локальном компьютере бухгалтера (Обработка - ЧитаемИПодписываем...) ставим в шапке обработки флажок
"Читаем из уже созданных ЭСЧФ для подписи на портале (экономим время)" и жмем кнопку "Читаем входящие". Заполнятся только
распознанные в 1С по приходным документам.
5. Жмем кнопку "Подписать"... "бла-бла-бла-портал"... в случае успешного ответа портала:
- в таблице обработки меняется статус;
- в документе 1С "ЭСЧФВходящий" меняется статус;
- файл ЭСЧФ меняет название с "Выставлен__ХХХ...xml" на "Выставлен. Подписан получателем__ХХХ...xml" и переносится из папки
"ВходящиеИсходные" в папку "ВходящиеПодписанные".
6. Читаем файлы ЭСЧФ из папки "ВходящиеПодписанные", мало ли что пропустили (Обработка - СканерВходящих...) на сервере... (так быстрее)
7. Создаём недостающие "ЭСЧФВходящие" в 1С (Обработка - СканерВходящих...) на сервере... (так быстрее) .
8. Если всё распознано по документам поступления, жмем кнопку "Отправить в архив"... (Обработка - СканерВходящих...) на сервере... (так быстрее). Файлы ЭСЧФ переносятся из папки "ВходящиеПодписанные" в папку "ВходящиеАрхив"...

Из ЭСЧФВходящих в 1С формируем "Книгу покупок" и т.д.
9. Ugu (ge_ni) 21.09.16 12:13
(7) да просто ни на каких... т.е если Вам это нужно...
10. Ugu (ge_ni) 21.09.16 12:15
11. Евгений Титов (titoff) 21.09.16 12:21
(6) ge_ni, Вот и он: titoff_27@mail.ru. Вчера столкнулся с этим тормозами в реальности. Конечно, это не допустимо. Спасибо еще раз.
12. Евгений Титов (titoff) 21.09.16 13:21
Сегодня получил вот это:
InvList = EVatService.GetList(НужнаяДата);
{\\TERMINAL\БУХГАЛТЕРИЯ Н\EXTFORMS\ЧИТАЕМИПОДПИСЫВАЕМВХОДЯЩИЕЭСЧФ.ERT(890)}: Плохой тип переменной
InvVatXml = EVatService.GetEDoc(InvVatNumber);
{\\TERMINAL\БУХГАЛТЕРИЯ Н\EXTFORMS\ЗАГРУЖАЕМВХОДЯЩИЕЭСЧФВКАТАЛОГ.ERT(141)}: Плохой тип переменной
Это опять портал заглючил ?
13. Vasil (user609375_pupkin2005) 21.09.16 15:38
pupkin2005@tut.by - это для обновлений. Спасибо.
14. Ugu (ge_ni) 21.09.16 18:26

12. titoff (файл скачал) 21.09.2016 13:21
Сегодня получил вот это:
InvList = EVatService.GetList(НужнаяДата);
{\\TERMINAL\БУХГАЛТЕРИЯ Н\EXTFORMS\ЧИТАЕМИПОДПИСЫВАЕМВХОДЯЩИЕЭСЧФ.ERT(890)}: Плохой тип переменной

InvVatXml = EVatService.GetEDoc(InvVatNumber);
{\\TERMINAL\БУХГАЛТЕРИЯ Н\EXTFORMS\ЗАГРУЖАЕМВХОДЯЩИЕЭСЧФВКАТАЛОГ.ERT(141)}: Плохой тип переменной

Ответ портала на попытку повторного подключения к нему... Значит сегодня уже не стоит...

Остаётся только сожалеть

Другой команды кроме

EVatService.GetList(НужнаяДата) нет...

Это мы пытаемся запросить у портала отбор по входящим ЭСЧФ на НужнуюДату именно по нашему ключу...

Посмотрите в отладчике, что есть у Вас НужнаяДата?
15. Евгений Титов (titoff) 21.09.16 20:44
(14) ge_ni, Понятно. Попробую завтра. Спасибо.
16. Евгений Титов (titoff) 27.09.16 11:00
При попытке загрузить в каталог получаем вот это:
Ошибка подключения: Ошибка HTTP
SSPI InitializeSecurityContext returns error #-2146893816(0x80090008): Unknown error
Что за зверь ? Не встречался ?
17. Вячеслав К (bravesk) 28.09.16 15:00
Скачал ваши обработки, буду очень благодарен за обновления.
Мой адрес bravesk@mail.ru
18. Ugu (ge_ni) 28.09.16 15:59
(16) Ровно вчера получил такой же ответ.
Сегодня всё нормально... не выдаёт такого сообщения...
19. Вячеслав К (bravesk) 29.09.16 09:27
При попытке загрузить в каталог выдает следующее:

Ошибка подключения: Ошибка HTTP
Socket Error # 10060
Connection timed out.

В чём причина???
20. Ugu (ge_ni) 29.09.16 22:33
(19) Да не в чем... Нужно попробовать через пол часа... Было у меня и такое сообщение.
Портал либо занят, либо забит запросами... Т.е. нам на обработку нашего запроса отводится определенное время:
- Мы сообщили порталу "Кто мы"...
- Сообщили дату и время с какой и по текущий момент хотим получить входящие ЭСЧФ
- Нас поставили в очередь, если:
-- все входы заняты;
-- идет некая транзакция и не до НАС
-- не успели обработать распознавание НАС
-- и т.д.

- Время ожидания в очереди на обработку запроса истекло
- Нам об этом сказали
21. Алексей С (user589919_digitta) 03.10.16 21:42
Добрый день. А как-нибудь управление вычетами у Вас реализовано?
22. Ugu (ge_ni) 04.10.16 22:07
(21) Имеется в виду заполнение книги покупок?
23. Алексей С (user589919_digitta) 05.10.16 11:56
(22) ge_ni, не совсем.
Само заполнение книги покупок не проблема. Главное правильно отразить в ней ЭСЧФ с вычетами. Вот есть у нас на портале ЭСЧФ. Нам нужно принять только часть ндс из неё. Допустим мы её импортировали в 1с (к примеру Вашей обработкой), удалили из документа в 1с позицию,по которой ндс не "принимаем". Отразили в учете (записали в книгу покупок). Далее подписали и отправили на портал. Но на портале этот ЭСЧФ осталась не изменённой. Придется лезть на портал и делать вычеты в данном ЭСЧФ вручную. Но это уже невозможно, т.к. он подписан. Или сначало делать вычеты вручную, а потом импортировать в 1С. В любом случае данные на портале и в 1С должны соответствовать. Вы как-нибудь эту проблему решали?
24. Ugu (ge_ni) 06.10.16 09:44
(23) Для отправителя исходящих ЭСЧФ, в новых условиях, существует ограничение связанное с тем, что его "ЭСЧФ исходящий" может анулировать получатель. В "СтатусахЭСЧФ" есть два состояния, предназначенные для таких манипуляций:
- "CANCELLED" (Анулирован);
- "ON_AGREEMENT_CANCEL" (Выставлен. Анулирован поставщиком).
Для Вас это единственный шанс повлиять на содержание входящих ЭСЧФ. Вам придется их "Анулировать". У поставщика же должен быть механизм регулярного (или перед составлением отчетов) чтения статусов выставленных им ЭСЧФ. На основании данных этого механизма предстоит определить долю счета 68.2.1, которую можно пустить в зачет.
Есть и другой способ: поставщик сам "Анулирует" собственные ЭСЧФ по Вашему звонку и подстраивает их под то, что Вы хотите.

Обе ситуации КОНФЛИКТНЫЕ. Вывод для поставщика: зачем ему такой хлопотный покупатель?

А Вы, судя по всему, работаете "по оплате" и имеете от этого существенные "преимущества"...

Та же картина, когда ВЫ являетесь поставщиком! Выставлять ЭСЧФ следует только на то, что оплачено покупателем.
Один из клиентов, работающий "по оплате", согласовал с налоговой для себя вариант, когда он не ориентируется на оплату отгрузочных документов, при выставлении "ЭСЧФ исходящих"...

Есть еще странное состояние "ON_AGREEMENT" (На осгласовании), но я его использую в обработках только для фиксации у получателя статуса чтения входящего и проверки до подписания...
25. Sergey Goylo (grayglobus) 17.11.16 11:54
Скачал, вашу разработку. Будьте добры выслать обновления на адрес GrayGlobus@inbox.ru. Заранее благодарен