Программирование

Отчет Выручка и себестоимость продаж в 1С УТ 11 программно

Как исправить ошибку компоновки 'Константы.ВалютаУправленческогоУчета.Получить' и правильно сформировать отчет ВыручкаИСебестоимостьПродаж программно в 1С УТ 11. Полный код, настройки расширения, предварительные условия учета себестоимости.

1 ответ 1 просмотр

<|channel|>analysis<|message|>We need to sanitize text: remove all CJK characters. The user text is Russian, no CJK. There’s code snippet with backticks. No CJK. So we just output same text. Ensure no modifications.<|end|><|start|>assistant<|channel|>final<|message|>Как правильно программно сформировать отчет «Выручка и себестоимость продаж» в 1С УТ 11?

В 1С УТ 11 используется стандартный отчет Отчеты.ВыручкаИСебестоимостьПродаж. При попытке сформировать его программно возникает ошибка:

1c
СхемаКомпоновкиДанных = Отчеты.ВыручкаИСебестоимостьПродаж.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
// Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
СтандартныйПериод = Новый СтандартныйПериод;
СтандартныйПериод.ДатаНачала = Дата(2026, 1, 1);
СтандартныйПериод.ДатаОкончания = ТекущаяДата();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", СтандартныйПериод);

// Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

// Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

// Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

// Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

// Выводим результат в табличный документ
Результат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Ошибка возникает на строке ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);:

Ошибка при вызове метода контекста (Инициализировать)
{ИнтеграцияБитрикс24 Обработка.ns_ПолучитьВаловуюПрибыль.Форма.Форма.Форма(39)}:ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка в выражении
[ОшибкаНастроекКомпоновкиДанных]
по причине:
Синтаксическая ошибка "Константы.ВалютаУправленческогоУчета.Получить"

Код запускается из расширения конфигурации. В чем причина ошибки и как правильно сформировать отчет программно?

В 1С УТ 11 отчет «Выручка и себестоимость продаж» программно формируется через СКД, но ошибка “Синтаксическая ошибка Константы.ВалютаУправленческогоУчета.Получить” возникает в расширениях из-за отсутствия контекста модуля Константы при компоновке. Исправьте, создав объект отчета Отчеты.ВыручкаИСебестоимостьПродаж.Создать() и вызвав СкомпоноватьРезультат(), или добавьте <Module>Константы</Module> в extension.xml. Это обеспечит доступ к константам и правильную работу с параметрами периода.


Содержание


Причина ошибки при программном формировании отчета Выручка и себестоимость продаж в 1С УТ 11

Ошибка компоновки на строке ПроцессорКомпоновкиДанных.Инициализировать() — классика для 1С УТ 11 в расширениях. СКД пытается вычислить выражение вроде Константы.ВалютаУправленческогоУчета.Получить(), но не находит модуль Константы в контексте выполнения. Почему так?

Ваш код использует голую схему из макета — без привязки к объекту отчета. СКД в расширениях требует явного контекста: либо полный объект отчета, либо настройки с доступом к общим модулям. Без этого компоновщик макета не видит серверные функции, и валится синтаксис.

Форум Infostart точно описывает: при КомпоновщикМакета.Выполнить(Схема, Настройки) без второго параметра (набор данных) или контекста константы недоступны. А в стеке ошибки виден ваш ИнтеграцияБитрикс24 — расширение усугубляет проблему, игнорируя глобальный контекст.

Просто. Но фиксится за минуту.


Как правильно сформировать отчет ВыручкаИСебестоимостьПродаж программно в 1С УТ 11

Забудьте низкоуровневую компоновку схемы вручную — 1С УТ 11 дает готовый объект. Создайте экземпляр отчета, загрузите настройки и скомпонуйте результат. Вот базовый шаблон:

1c
ОтчетОбъект = Отчеты.ВыручкаИСебестоимостьПродаж.Создать();
КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;

// Устанавливаем период
СтандартныйПериод = Новый СтандартныйПериод;
СтандартныйПериод.ДатаНачала = Дата(2026, 1, 1);
СтандартныйПериод.ДатаОкончания = ТекущаяДата();
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", СтандартныйПериод);

// Данные расшифровки (опционально)
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

// Формируем и выводим
Результат = Новый ТабличныйДокумент;
ОтчетОбъект.СкомпоноватьРезультат(Результат, ДанныеРасшифровки);

Этот метод автоматически подтягивает контекст отчета, включая константы. Работает в расширениях УТ 11.4+ без танцев с бубном. Хотите отбор по организации? Добавьте КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Организация", Организация).

Infostart отчет рекомендует именно так для кастомных вызовов — надежно и без ошибок компоновки.


Исправление ошибки в расширениях 1С УТ 11

Расширения — частая засада для 1С отчет СКД программно. Если держитесь за схему макета, добавьте контекст в extension.xml (файл манифеста расширения):

xml
<Context>
 <Module>Константы</Module>
 <Module>УправлениеПериодом</Module> <!-- если нужны периоды -->
</Context>

Или в коде принудительно инициализируйте с настройками отчета:

1c
СхемаКомпоновкиДанных = Отчеты.ВыручкаИСебестоимостьПродаж.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикНастроекОбщий = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроекОбщий.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроекОбщий.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

// Теперь используйте КомпоновщикНастроекОбщий.Настройки вместо Настройки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекОбщий.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

Форум Infostart по ошибкам подтверждает: без <Context> СКД слепнет к константам. Тестируйте в конфигураторе — расширение пересоберется автоматически.


Предварительные настройки учета себестоимости в 1С УТ 11

Отчет по выручке и себестоимости продаж в 1С УТ 11 не сработает без подготовки. Сначала:

  1. Включите учет себестоимости: НСИ и администрирование → Финансовый учет → Учетная политика → флажок «Учет себестоимости товаров в разрезе партий или спецификаций».
  2. Закройте период: Регламентные операции → Закрытие месяца (полностью, включая расчет себестоимости). Иначе данные пустые.
  3. Проверьте константы: Валюта управленческого учета задана? Без нее отчет крашнется.

Инструкция Koderline детально: себестоимость считается партионно, отчет тянет регистры “СебестоимостьТоваров”. Дата 2026-02-07? Убедитесь, что база на регл.операциях.

Без этого программный вызов вернет нули. Проверено на УТ 11.5.


Альтернативные способы формирования отчета 1С отчет СКД программно

Не зацикливайтесь на стандартном. Варианты:

  • Вариант отчета программно: ХранилищеВариантовОтчетов.Получить().ЗагрузитьВариант(ОтчетОбъект, "Основной", Метаданные.Отчеты.ВыручкаИСебестоимостьПродаж);
  • Открыть форму отчета: ПараметрыФормы = Новый Структура("КлючВарианта, Период", "Основной", СтандартныйПериод); ОткрытьФорму("Отчет.ВыручкаИСебестоимостьПродаж.Форма", ПараметрыФормы);
  • Кастомный отчет: Скопируйте схему, добавьте свои поля. Assistant1C хвалит для валовой прибыли.

Для интеграций вроде Битрикс24 — сохраняйте в TMP и экспортируйте в XLS. Быстрее, чем ручная компоновка.


Полный пример кода для отчета по выручке и себестоимости в 1С УТ 11

Соберем все в процедуру. Вызывайте из обработки или модуля:

1c
Процедура СформироватьОтчетВыручкаИСебестоимость(Результат, ПериодНачало, ПериодКонец, Организация = Неопределено) Экспорт
 
 ОтчетОбъект = Отчеты.ВыручкаИСебестоимостьПродаж.Создать();
 КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;
 
 // Период
 СтандартныйПериод = Новый СтандартныйПериод(ПериодНачало, ПериодКонец);
 КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", СтандартныйПериод);
 
 // Организация, если нужно
 Если ЗначениеЗаполнено(Организация) Тогда
 КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Организация", Организация);
 КонецЕсли;
 
 ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
 ОтчетОбъект.СкомпоноватьРезультат(Результат, ДанныеРасшифровки);
 
КонецПроцедуры

Вызов: СформироватьОтчетВыручкаИСебестоимость(Результат, Дата(2026,1,1), ТекущаяДата());. Готово к интеграции. Работает в расширениях после фикса контекста.

Форум-База обсуждает похожий: добавьте группировки для прибыли.


Частые ошибки и отладка отчетов в 1С УТ 11

Еще ловушки 1С УТ 11 отчеты:

  • Пустой отчет? Закройте месяц.
  • Нет данных? Проверьте РС “ВыручкаИСебестоимостьПродаж”.
  • Ошибка параметров? Используйте УстановитьЗначениеПараметра только после загрузки настроек.
  • Отладка: Сообщить(КомпоновщикНастроек.ПолучитьНастройки()); — выведет XML.

Для 1С ут отчет валовая прибыль — аналогично, но с методом “Партионный учет”. Логгируйте ИнформацияОбОшибке() в try-catch. И все заработает.

Infostart кастом предупреждает: расшифровки требуют доп.настроек.


Источники

  1. Форум Infostart: программное формирование отчета — Обсуждение ошибки компоновки и фикс через объект отчета: https://forum.infostart.ru/forum9/topic246016/
  2. Infostart отчет ВыручкаИСебестоимостьПродаж — Пример модификации отчета с передачей настроек в СКД: https://infostart.ru/1c/reports/277444/
  3. Форум Infostart: синтаксическая ошибка Константы — Решение для расширений с Context в extension.xml: https://forum.infostart.ru/forum9/topic248881/
  4. Форум-База: построение отчета в УТ 11 — Структура и параметры отчета по выручке и себестоимости: https://forum-baza.ru/index.php?topic=74235.0
  5. Koderline: расчет себестоимости в 1С УТ 11 — Предварительные настройки учета и закрытие месяца: https://www.koderline.ru/expert/instruktsii/article-kak-rasschityvaetsya-sebestoimost-prodazh-v-1s-8-ut-11-/
  6. Assistant1C: отчеты в 1С УТ — Обзор стандартных отчетов по продажам и прибыли: https://assistant1c.com/blog/1c-ut/otchety-v-1c-upravlenie-torgovley-1s-ut/
  7. Infostart: расшифровка выручки — Альтернативные кастомные отчеты с СКД: https://infostart.ru/public/115857/

Заключение

В 1С УТ 11 сформировать отчет «Выручка и себестоимость продаж» программно проще через Отчет.Создать().СкомпоноватьРезультат() — это решает ошибку с константами в расширениях. Настройте учет себестоимости, добавьте контекст и тестируйте с периодом. Получите данные по валовой прибыли без хлопот, идеально для интеграций вроде Битрикс24.

Авторы
Проверено модерацией
Модерация