При ведении налогового учета по УСН (Упрощенной системе налогообложения) в программе 1С:Бухгалтерия 8.3 записи в Книге учета доходов и расходов (КУДиР) формируются автоматически при проведении документов. Однако типовой текст в графе «Содержание операции» часто бывает слишком лаконичным, например: «Комиссионное вознаграждение удержано из выручки». Для целей детального учета или по требованию налоговых органов бухгалтеру может потребоваться более подробная информация, включающая наименование контрагента и номер договора.
В данной статье мы разберем, как программно изменить алгоритм формирования этой строки, чтобы в КУДиР автоматически подтягивались данные о комитенте и договоре. Мы рассмотрим как быстрый способ правки кода, так и более правильный подход с использованием расширений.
Для начала нам необходимо выяснить, какой именно модуль отвечает за формирование текста операции. В системе 1С текст часто задается жестко в программном коде или извлекается из ресурсов. Проанализируем ситуацию и воспользуемся глобальным поиском:
Ctrl+Shift+F).Комиссионное вознаграждение удержано из выручки.Система выдаст список вхождений. Как правило, этот текст встречается в общем модуле УчетУСН или в модуле менеджера документа ОтчетКомитенту. Нам нужно найти процедуру, которая заполняет структуру для записи в регистр накопления КнигаУчетаДоходовИРасходовРаздел1.
Выясним причину, по которой данные не выводятся полностью. Обычно в коде используется простая строковая переменная. Чтобы добавить в нее параметры, такие как Контрагент и Договор, нам потребуется использовать функции форматирования строк.
Рассмотрим пример кода, который позволит нам сформировать динамическое содержание. Вместо статичного текста мы будем использовать шаблон с подстановкой параметров:
// Определяем текст содержания с параметрами %1 и %2
ТекстШаблона = НСтр("ru = 'Оказание посреднических услуг в торговле (комиссионное вознаграждение); комитент ""%1"" по договору ""%2"". Комиссионное вознаграждение удержано из выручки комитента.'");
// Подставляем значения из структуры параметров документа
Содержание_УСН = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстШаблона,
ПараметрыУСН.Контрагент,
ПараметрыУСН.ДоговорКонтрагента
);
В данном примере функция НСтр позволяет соблюсти стандарты разработки 1С для мультиязычности, а СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку заменяет маркеры %1 и %2 на реальные данные из объекта или структуры параметров.
Важно проанализировать, доступны ли поля Контрагент и ДоговорКонтрагента в той точке кода, где вы делаете изменения. Если вы находитесь в процедуре проведения документа в общем модуле, данные обычно передаются в структуре (например, ПараметрыУСН или СтрокаТаблицы).
Если нужных данных нет в структуре, их необходимо получить. Рассмотрим подробнее, как это сделать:
ТекстЗапросаКнигаУчетаДоходовРасходов или аналогичную внутри модуля.Прямое изменение типовой конфигурации затрудняет дальнейшие обновления. Чтобы сохранить программу «на поддержке», воспользуемся механизмом расширений. Разберем по шагам:
УчетУСН).СформироватьДвиженияКнигаУчетаДоходовРасходов) и добавим ее в расширение с аннотацией &Вместо или &После.Пример использования аннотации &После для корректировки уже сформированной строки:
&После("ЗаполнитьСодержаниеКУДиР")
Процедура Расш1_ЗаполнитьСодержаниеКУДиР(Параметры, СтрокаДвижения)
// Дополняем уже сформированное содержание данными о контрагенте
Если ТипЗнч(Параметры.Ссылка) = Тип("ДокументСсылка.ОтчетКомитенту") Тогда
СтрокаДвижения.Содержание = "Комитент: " + Строка(Параметры.Контрагент) +
", дог. № " + Строка(Параметры.Договор);
КонецЕсли;
КонецПроцедуры
При реализации автоматического изменения содержания следует учитывать несколько критически важных моментов:
1. Ограничение длины строки. Поле Содержание в регистре КУДиР имеет фиксированную длину (часто 250 символов). Если наименование контрагента и договора очень длинные, строка может быть обрезана, что приведет к ошибке записи или некрасивому виду. Рекомендуется использовать функцию Лев():
СтрокаДвижения.Содержание = Лев(НовоеСодержание, 250);
2. Обновление старых данных. Помните, что изменения в коде не повлияют на записи, которые уже созданы в КУДиР. Чтобы новые правила отображения применились к прошлым периодам, документы Отчет комитенту необходимо перепровести. Перед этим обязательно убедитесь, что налоговый период открыт для редактирования.
3. Массовое перепроведение. Если документов много, используйте стандартную обработку «Групповое перепроведение документов», чтобы не открывать каждый отчет вручную.
Если вам нужно изменить содержание всего в нескольких документах, и вы не хотите прибегать к программированию, в 1С предусмотрен штатный механизм:
Этот способ прост, но он отключает автоматическое обновление движений документа при его изменении, поэтому использовать его для массовых задач не рекомендуется.
Таким образом, мы проанализировали ситуацию и выяснили, что наиболее эффективным методом автоматизации является внесение изменений в программный код через расширение с использованием функции ПодставитьПараметрыВСтроку. Это обеспечит информативность КУДиР и сохранит чистоту типовой конфигурации.