При автоматизации загрузки данных в 1С:Бухгалтерию 3.0, например, при импорте реализаций из файлов Excel, часто возникает задача автоматического создания счета-фактуры. Многие разработчики сталкиваются с трудностью при передаче ссылок между клиентом и сервером или пытаются создавать документы «в лоб», что приводит к нарушению типового алгоритма учета. Рассмотрим, как выполнить эту задачу правильно, не снимая конфигурацию с поддержки.
СоздатьДокумент()Типовая конфигурация 1С:Бухгалтерия 3.0 построена на базе БСП (Библиотеки стандартных подсистем). Процесс создания счета-фактуры включает в себя множество проверок, заполнение регистров накопления и сведений по НДС, а также привязку к договорам и кодам видов операций. Если вы будете создавать объект напрямую через Документы.СчетФактураВыданный.СоздатьДокумент(), вы рискуете упустить важные детали заполнения, что приведет к ошибкам в налоговой отчетности.
Разработчики 1С предусмотрели специальные методы в общих модулях, которые позволяют создавать и актуализировать счета-фактуры в соответствии с типовой логикой. Основным инструментом здесь является модуль УчетНДСВызовСервера.
Для создания счета-фактуры на основании реализации рекомендуем использовать функцию СоздатьСчетФактуруВыданныйНаОсновании. Это гарантирует корректность всех данных.
Рассмотрим по шагам, как организовать программное создание счета-фактуры при массовой загрузке данных:
Реализация товаров и услуг на сервере.Пример программного кода для реализации этой задачи:
// В переменной СсылкаНаРеализацию находится ссылка на созданный документ
// Вызываем типовой метод из общего модуля
Результат = УчетНДСВызовСервера.СоздатьСчетФактуруВыданныйНаОсновании(СсылкаНаРеализацию, Неопределено);
// Если требуется, можно дополнить заполнение специфическими данными
Если ЗначениеЗаполнено(Результат) Тогда
ОбъектСФ = Результат.ПолучитьОбъект();
ОбъектСФ.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
Если вам требуется создать счет-фактуру, связанную с исправлением ошибки, логика обращения к серверным методам остается аналогичной, но требует формирования структуры параметров. Рассмотрим пример подготовки данных для корректировочных счетов-фактур:
&НаСервере
Функция ПолучитьПараметрыДляИсправления(СтрокаДанных)
Результат = Новый Структура;
// Получаем реквизиты через типовой метод
РеквизитыСФ = УчетНДСВызовСервера.РеквизитыСчетаФактурыДляИсправленияСобственнойОшибки(
Документы.СчетФактураПолученный.ПустаяСсылка,
СтрокаДанных.СчетФактураОснования);
Результат.Вставить("ДокументОснование", СтрокаДанных.Корректировка);
Результат.Вставить("СчетФактураИсправляемый", СтрокаДанных.СчетФактураОснования);
// ... дальнейшее заполнение реквизитов ...
Возврат Результат;
КонецФункции
Одной из частых проблем является то, что при создании счета-фактуры в «фоновом» режиме (на сервере), пользователь не видит его в интерфейсе документа-основания. Чтобы обновить надпись или панель навигации в форме, необходимо воспользоваться специализированными методами переопределяемых модулей.
Для обновления надписи о наличии счета-фактуры используйте следующий вызов:
// Вызов для обновления информации на форме
РеквизитыСФ = УчетНДСПереопределяемый.РеквизитыДляНадписиОСчетеФактуреВыданном(ДокументСсылка, СтруктураОтбора);
При автоматизации работы с документами 1С всегда придерживайтесь следующих правил:
УчетНДСВызовСервера для всех операций, связанных с налоговым учетом и созданием счетов-фактур.Оповестить(), чтобы интерфейс пользователя корректно отображал новые данные без необходимости переоткрытия формы.Соблюдение этих принципов позволит вам создавать стабильные и обновляемые решения, которые не вызовут проблем при переходе на новые версии 1С:Бухгалтерии 3.0.