В современной практике ведения торгового учета часто возникает необходимость корректировки первичных документов. Согласно Налоговому кодексу РФ (п. 3 ст. 168), для выставления корректировочного счета-фактуры требуется наличие первичного документа-основания, подтверждающего согласие покупателя на изменение стоимости. Одним из таких документов является «Соглашение об изменении стоимости».
В конфигурации «Бухгалтерия предприятия 3.0» (БП 3.0) эта форма является типовой, однако в «Управление торговлей 10.3» (УТ 10.3) она зачастую отсутствует. В этой статье мы разберем, как программисту 1С самостоятельно реализовать данную форму, используя наработки из современных конфигураций и адаптируя их под архитектуру обычных форм.
Прежде чем переходить к коду, проанализируем юридическую значимость документа. Форма не является строго унифицированной, но для признания её первичным документом она должна содержать обязательные реквизиты согласно ФЗ № 402 «О бухгалтерском учете»:
Самый трудоемкий процесс при создании печатной формы — это верстка макета. Чтобы сэкономить время, мы можем позаимствовать готовый макет из конфигурации на базе БСП (например, БП 3.0). Разберем этот процесс по шагам.
Шаг 1. Экспорт макета из БП 3.0. Откроем конфигуратор «Бухгалтерии предприятия». Найдем документ КорректировкаРеализации. В ветке Макеты найдем ПФ_MXL_СоглашениеОбИзмененииСтоимости. Выгрузим его в файл .mxl на диск.
Шаг 2. Импорт в УТ 10.3. Откроем конфигуратор вашей базы УТ 10.3. Создадим новую внешнюю обработку (Внешнюю печатную форму). Добавим в нее новый макет, выбрав тип «Табличный документ», и загрузим в него сохраненный ранее файл .mxl. Теперь у нас есть профессионально сверстанная форма со всеми необходимыми параметрами.
Основная сложность заключается в том, что структура хранения данных в УТ 10.3 существенно отличается от БП 3.0. В БП 3.0 данные подготавливаются механизмами БСП, тогда как в УТ 10.3 нам придется писать прямой запрос к табличным частям документа КорректировкаРеализации.
Проанализируем структуру документа в УТ 10.3. В нем есть табличные части Товары и Услуги. Важно помнить, что корректировка может содержать строки в двух состояниях:
Для корректного заполнения макета нам нужно получить эти данные в одной выборке. Рассмотрим пример запроса, который собирает информацию по товарам:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КорректировкаТовары.Номенклатура КАК Номенклатура,
| КорректировкаТовары.Количество КАК КоличествоПосле,
| КорректировкаТовары.Цена КАК ЦенаПосле,
| КорректировкаТовары.Сумма КАК СуммаПосле,
| КорректировкаТовары.СуммаНДС КАК СуммаНДСПосле,
| КорректировкаТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| КорректировкаТовары.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения
|ИЗ
| Документ.КорректировкаРеализации.Товары КАК КорректировкаТовары
|ГДЕ
| КорректировкаТовары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
РезультатЗапроса = Запрос.Выполнить();
Обратите внимание: в зависимости от релиза вашей УТ 10.3, показатели «до» и «после» могут храниться либо в разных строках (с признаком вида строки), либо в отдельных реквизитах одной строки. Нам необходимо сопоставить их, чтобы вывести в макет разницу.
Рассмотрим структуру программного кода в модуле объекта внешней печатной формы. Нам необходимо реализовать функцию Печать(), которая возвращает ТабличныйДокумент.
ТабличныйДокумент и получаем макет.ФормированиеПечатныхФорм.ПолучитьДанныеОрганизации().Пример заполнения области строки макета:
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
// Заполняем параметры области
ОбластьСтрока.Параметры.ТоварНаименование = Выборка.ТоварНаименование;
ОбластьСтрока.Параметры.КоличествоДо = Выборка.КоличествоДо;
ОбластьСтрока.Параметры.КоличествоПосле = Выборка.КоличествоПосле;
// Вычисляем разницу
ОбластьСтрока.Параметры.РазницаСумма = Выборка.СуммаПосле - Выборка.СуммаДо;
// Выводим область в итоговый документ
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
При работе с формой в УТ 10.3 следует учитывать несколько технических моментов:
Сведения о договоре: В соглашении обязательно должна быть ссылка на основной договор или исходный документ реализации. Эти данные нужно получить из шапки документа КорректировкаРеализации через реквизиты ДокументОснование или Сделка.
Работа с НДС: Убедитесь, что вы корректно обрабатываете ставки НДС. В печатной форме «Соглашение об изменении стоимости» принято указывать сумму с НДС и отдельно выделять сумму налога, чтобы покупатель мог сверить эти данные с будущим корректировочным счетом-фактурой.
Использование ВПФ: Чтобы не вносить изменения в конфигурацию, лучше всего реализовать этот механизм как Внешнюю печатную форму. Это позволит обновлять макет без снятия конфигурации с поддержки и упростит перенос между базами.
Подводя итог, можно сказать, что хотя УТ 10.3 и считается устаревшей системой по сравнению с современными конфигурациями на БСП, она обладает достаточной гибкостью. Перенос макета из БП 3.0 и написание грамотного запроса к данным корректировки позволяют получить полноценное «Соглашение об изменении стоимости» буквально за несколько часов работы.