Для фриланса, к которому я отношусь, задача весьма непростая. Ключа с электронной подписью на доступ к vat.gov.by нет, а соответственно разрабатывать и отлаживать модули обработок для 1С можно только у Заказчика (Заказчик – это 12 различных предприятий).
У Заказчика сеть, терминальный доступ, сервер Win2003, сервер Win2008, сервер Win2012, SQL serwer, 1С версий 7.7, 8.2, 8.3. Как правило: администратора сети нет или это Главный инженер, Зам. по производству и т.д. со знаниями чуть больше обычного пользователя Windows. Работать с франчайзи не хотят – типа «дорого»… В общем «обычная картина».
Прав у меня на серверах почти никаких. Зарегистрировать компонент eInvVat на сервере без толкового администратора – «ещё та песня!» Менеджер сертификатов и ключ у Главного бухгалтера, на сервер ключ отдавать не хотят, т.к. ключ «универсальный» и используется в другом «Рабочем кабинете»… и т.д.
Все эти трудности нужно обойти:
- Информация должна находится на сервере.
- Информацию нужно получать с рабочего места Главного бухгалтера. Место обработки – локальный компьютер.
- Информацию нужно обрабатывать и готовить к подписанию с любого рабочего места в сети. Место обработки - сервер.
- Информацию нужно подписывать на рабочем месте Главного бухгалтера и отправлять на портал. Место обработки – локальный компьютер.
Рассмотрим пока все эти проблемы для версии 1С Предприятие 7.7.
Ставим на компьютере Главного бухгалтера 1С локально (не в режиме терминального доступа), обеспечив доступ к ключу защиты.
Через сетевое окружение подключаем рабочую базу данных.
Теперь в этой базе можно запускать обработки.
Читаем входящие электронных счета фактуры, создаём их как документы в 1С.
Написал обработку, которая должна прочитать входящие ЭСЧФ на портале, динамически по требованию расшифровать: что это, от кого, содержание, показатели…, пользователь принимает решение подписывать или нет, подписывает там же (на портале) и делает отметку в документах 1С о соответствии входящего ЭСЧФ документу поступления.
Запустил обработку… Читает… Ура! Заполняет таблицу! Расшифровывает! Клааассс…
Выставил флажки в обработке: «Подписать»…Запускаю соединение с порталом и повторное чтение ЭСЧФ входящих для привязки подписи и… Ха! «Ошибка имени файла…», «Ошибка запроса номера…», «Ошибка…»!
«- Ну, может завтра?!» «Что-то портал плохо работает…»
Завтра всё, как и вчера!
Через 2 дня выясняю у технической поддержки портала, что существует ограничение на одноразовое в сутки чтение входящих ЭСЧФ с портала vat.gov.by с использованием компонента eInvVat. Т.е. одновременно прочитать, проанализировать, решить подписать, повторно прочитать (т.к. портал готов воспринимать от пользователя только дату начала опроса, затем выдать количество входящих ЭСЧФ, затем прочитать в цикле на портале номера входящих) и сравнить номер ЭСЧФ на портале с номером ЭСЧФ в обработке, никак не получится за одни сутки.
Значит: информацию о входящих ЭСЧФ нужно в первом и единственном цикле чтения сохранить на «своём компьютере». В нашем случае на Сервере.
Завтра в первом и единственном цикле чтения номеров входящих ЭСЧФ на портале сравнить их с номерами, помеченными нами к подписанию в нашей базе, и подписать их на портале.
Работать в режиме ONline не получается или получается очень «криво», отладка для специалистов 1С крайне затруднена или почти невозможна.
Будем работать в режиме OFFline и обрабатывать ЭСЧФ в 1С с помощью библиотеки V7PLUS.DLL. Полагаю куда dll нужно скопировать, все уже знают: «в каталог программы», «в каталог 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
Принцип работы точно такой как у предыдущей обработки...