Отчет Выручка и себестоимость продаж в 1С УТ 11 программно
Как исправить ошибку компоновки 'Константы.ВалютаУправленческогоУчета.Получить' и правильно сформировать отчет ВыручкаИСебестоимостьПродаж программно в 1С УТ 11. Полный код, настройки расширения, предварительные условия учета себестоимости.
<|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 используется стандартный отчет Отчеты.ВыручкаИСебестоимостьПродаж. При попытке сформировать его программно возникает ошибка:
СхемаКомпоновкиДанных = Отчеты.ВыручкаИСебестоимостьПродаж.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
// Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
СтандартныйПериод = Новый СтандартныйПериод;
СтандартныйПериод.ДатаНачала = Дата(2026, 1, 1);
СтандартныйПериод.ДатаОкончания = ТекущаяДата();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", СтандартныйПериод);
// Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
// Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
// Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
// Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
// Выводим результат в табличный документ
Результат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Ошибка возникает на строке ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);:
Ошибка при вызове метода контекста (Инициализировать)
{ИнтеграцияБитрикс24 Обработка.ns_ПолучитьВаловуюПрибыль.Форма.Форма.Форма(39)}:ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка в выражении
[ОшибкаНастроекКомпоновкиДанных]
по причине:
Синтаксическая ошибка "Константы.ВалютаУправленческогоУчета.Получить"
Код запускается из расширения конфигурации. В чем причина ошибки и как правильно сформировать отчет программно?
В 1С УТ 11 отчет «Выручка и себестоимость продаж» программно формируется через СКД, но ошибка “Синтаксическая ошибка Константы.ВалютаУправленческогоУчета.Получить” возникает в расширениях из-за отсутствия контекста модуля Константы при компоновке. Исправьте, создав объект отчета Отчеты.ВыручкаИСебестоимостьПродаж.Создать() и вызвав СкомпоноватьРезультат(), или добавьте <Module>Константы</Module> в extension.xml. Это обеспечит доступ к константам и правильную работу с параметрами периода.
Содержание
- Причина ошибки при программном формировании отчета Выручка и себестоимость продаж в 1С УТ 11
- Как правильно сформировать отчет ВыручкаИСебестоимостьПродаж программно в 1С УТ 11
- Исправление ошибки в расширениях 1С УТ 11
- Предварительные настройки учета себестоимости в 1С УТ 11
- Альтернативные способы формирования отчета 1С отчет СКД программно
- Полный пример кода для отчета по выручке и себестоимости в 1С УТ 11
- Частые ошибки и отладка отчетов в 1С УТ 11
- Источники
- Заключение
Причина ошибки при программном формировании отчета Выручка и себестоимость продаж в 1С УТ 11
Ошибка компоновки на строке ПроцессорКомпоновкиДанных.Инициализировать() — классика для 1С УТ 11 в расширениях. СКД пытается вычислить выражение вроде Константы.ВалютаУправленческогоУчета.Получить(), но не находит модуль Константы в контексте выполнения. Почему так?
Ваш код использует голую схему из макета — без привязки к объекту отчета. СКД в расширениях требует явного контекста: либо полный объект отчета, либо настройки с доступом к общим модулям. Без этого компоновщик макета не видит серверные функции, и валится синтаксис.
Форум Infostart точно описывает: при КомпоновщикМакета.Выполнить(Схема, Настройки) без второго параметра (набор данных) или контекста константы недоступны. А в стеке ошибки виден ваш ИнтеграцияБитрикс24 — расширение усугубляет проблему, игнорируя глобальный контекст.
Просто. Но фиксится за минуту.
Как правильно сформировать отчет ВыручкаИСебестоимостьПродаж программно в 1С УТ 11
Забудьте низкоуровневую компоновку схемы вручную — 1С УТ 11 дает готовый объект. Создайте экземпляр отчета, загрузите настройки и скомпонуйте результат. Вот базовый шаблон:
ОтчетОбъект = Отчеты.ВыручкаИСебестоимостьПродаж.Создать();
КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;
// Устанавливаем период
СтандартныйПериод = Новый СтандартныйПериод;
СтандартныйПериод.ДатаНачала = Дата(2026, 1, 1);
СтандартныйПериод.ДатаОкончания = ТекущаяДата();
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", СтандартныйПериод);
// Данные расшифровки (опционально)
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
// Формируем и выводим
Результат = Новый ТабличныйДокумент;
ОтчетОбъект.СкомпоноватьРезультат(Результат, ДанныеРасшифровки);
Этот метод автоматически подтягивает контекст отчета, включая константы. Работает в расширениях УТ 11.4+ без танцев с бубном. Хотите отбор по организации? Добавьте КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Организация", Организация).
Infostart отчет рекомендует именно так для кастомных вызовов — надежно и без ошибок компоновки.
Исправление ошибки в расширениях 1С УТ 11
Расширения — частая засада для 1С отчет СКД программно. Если держитесь за схему макета, добавьте контекст в extension.xml (файл манифеста расширения):
<Context>
<Module>Константы</Module>
<Module>УправлениеПериодом</Module> <!-- если нужны периоды -->
</Context>
Или в коде принудительно инициализируйте с настройками отчета:
СхемаКомпоновкиДанных = Отчеты.ВыручкаИСебестоимостьПродаж.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикНастроекОбщий = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроекОбщий.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроекОбщий.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
// Теперь используйте КомпоновщикНастроекОбщий.Настройки вместо Настройки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекОбщий.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
Форум Infostart по ошибкам подтверждает: без <Context> СКД слепнет к константам. Тестируйте в конфигураторе — расширение пересоберется автоматически.
Предварительные настройки учета себестоимости в 1С УТ 11
Отчет по выручке и себестоимости продаж в 1С УТ 11 не сработает без подготовки. Сначала:
- Включите учет себестоимости: НСИ и администрирование → Финансовый учет → Учетная политика → флажок «Учет себестоимости товаров в разрезе партий или спецификаций».
- Закройте период: Регламентные операции → Закрытие месяца (полностью, включая расчет себестоимости). Иначе данные пустые.
- Проверьте константы: Валюта управленческого учета задана? Без нее отчет крашнется.
Инструкция Koderline детально: себестоимость считается партионно, отчет тянет регистры “СебестоимостьТоваров”. Дата 2026-02-07? Убедитесь, что база на регл.операциях.
Без этого программный вызов вернет нули. Проверено на УТ 11.5.
Альтернативные способы формирования отчета 1С отчет СКД программно
Не зацикливайтесь на стандартном. Варианты:
- Вариант отчета программно:
ХранилищеВариантовОтчетов.Получить().ЗагрузитьВариант(ОтчетОбъект, "Основной", Метаданные.Отчеты.ВыручкаИСебестоимостьПродаж); - Открыть форму отчета:
ПараметрыФормы = Новый Структура("КлючВарианта, Период", "Основной", СтандартныйПериод); ОткрытьФорму("Отчет.ВыручкаИСебестоимостьПродаж.Форма", ПараметрыФормы); - Кастомный отчет: Скопируйте схему, добавьте свои поля. Assistant1C хвалит для валовой прибыли.
Для интеграций вроде Битрикс24 — сохраняйте в TMP и экспортируйте в XLS. Быстрее, чем ручная компоновка.
Полный пример кода для отчета по выручке и себестоимости в 1С УТ 11
Соберем все в процедуру. Вызывайте из обработки или модуля:
Процедура СформироватьОтчетВыручкаИСебестоимость(Результат, ПериодНачало, ПериодКонец, Организация = Неопределено) Экспорт
ОтчетОбъект = Отчеты.ВыручкаИСебестоимостьПродаж.Создать();
КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;
// Период
СтандартныйПериод = Новый СтандартныйПериод(ПериодНачало, ПериодКонец);
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", СтандартныйПериод);
// Организация, если нужно
Если ЗначениеЗаполнено(Организация) Тогда
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Организация", Организация);
КонецЕсли;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
ОтчетОбъект.СкомпоноватьРезультат(Результат, ДанныеРасшифровки);
КонецПроцедуры
Вызов: СформироватьОтчетВыручкаИСебестоимость(Результат, Дата(2026,1,1), ТекущаяДата());. Готово к интеграции. Работает в расширениях после фикса контекста.
Форум-База обсуждает похожий: добавьте группировки для прибыли.
Частые ошибки и отладка отчетов в 1С УТ 11
Еще ловушки 1С УТ 11 отчеты:
- Пустой отчет? Закройте месяц.
- Нет данных? Проверьте РС “ВыручкаИСебестоимостьПродаж”.
- Ошибка параметров? Используйте
УстановитьЗначениеПараметратолько после загрузки настроек. - Отладка:
Сообщить(КомпоновщикНастроек.ПолучитьНастройки());— выведет XML.
Для 1С ут отчет валовая прибыль — аналогично, но с методом “Партионный учет”. Логгируйте ИнформацияОбОшибке() в try-catch. И все заработает.
Infostart кастом предупреждает: расшифровки требуют доп.настроек.
Источники
- Форум Infostart: программное формирование отчета — Обсуждение ошибки компоновки и фикс через объект отчета: https://forum.infostart.ru/forum9/topic246016/
- Infostart отчет ВыручкаИСебестоимостьПродаж — Пример модификации отчета с передачей настроек в СКД: https://infostart.ru/1c/reports/277444/
- Форум Infostart: синтаксическая ошибка Константы — Решение для расширений с Context в extension.xml: https://forum.infostart.ru/forum9/topic248881/
- Форум-База: построение отчета в УТ 11 — Структура и параметры отчета по выручке и себестоимости: https://forum-baza.ru/index.php?topic=74235.0
- Koderline: расчет себестоимости в 1С УТ 11 — Предварительные настройки учета и закрытие месяца: https://www.koderline.ru/expert/instruktsii/article-kak-rasschityvaetsya-sebestoimost-prodazh-v-1s-8-ut-11-/
- Assistant1C: отчеты в 1С УТ — Обзор стандартных отчетов по продажам и прибыли: https://assistant1c.com/blog/1c-ut/otchety-v-1c-upravlenie-torgovley-1s-ut/
- Infostart: расшифровка выручки — Альтернативные кастомные отчеты с СКД: https://infostart.ru/public/115857/
Заключение
В 1С УТ 11 сформировать отчет «Выручка и себестоимость продаж» программно проще через Отчет.Создать().СкомпоноватьРезультат() — это решает ошибку с константами в расширениях. Настройте учет себестоимости, добавьте контекст и тестируйте с периодом. Получите данные по валовой прибыли без хлопот, идеально для интеграций вроде Битрикс24.