Вариант отчета 1С: создать, сохранить, удалить и сбросить

Дата: 21.09.2026 09:53:45
Отчёты 1С
СКД
Настройки
Доработка 1С
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Управляемые

Вариант отчета 1С — именованный набор настроек одного отчета: группировки, поля, отборы, параметры и оформление. Отчет «Остатки товаров» может открываться по номенклатуре, по складам или по ячейкам — это три варианта одной схемы, а не три отчета. Ниже — где хранятся варианты, как добавить их в схему СКД и загрузить из кода, открыть отчет с нужным вариантом, раздать вариант пользователям, удалить испорченный и сбросить настройки, в том числе в конфигурациях на БСП.

Где хранится вариант отчета 1С

Варианты делятся на предопределенные, которые заложил разработчик, и сохраненные пользователями. Отдельно от них хранятся пользовательские настройки — то, что сотрудник поменял поверх варианта: период, быстрые отборы, значения в шапке отчета.

Что сохраняетсяГде лежитКак убрать
Предопределенный вариантСхема компоновки данных отчета, коллекция ВариантыНастроекТолько в конфигураторе
Вариант пользователя без БСПХранилищеВариантовОтчетов, у каждого пользователя свой списокСписок вариантов в форме отчета или код
Вариант пользователя в БСПСправочник «Варианты отчетов»Пометка удаления
Сохраненные пользовательские настройкиХранилищеПользовательскихНастроекОтчетов«Стандартные настройки» или код
Последние настройки и состояние формыХранилищеСистемныхНастроекОчистка настроек пользователя или код

Какие хранилища подключены, видно в свойствах корня конфигурации: «Хранилище вариантов отчетов» и «Хранилище пользовательских настроек отчетов». Пустое свойство означает стандартное хранилище платформы — служебную таблицу внутри информационной базы. В конфигурациях на БСП в первом свойстве указано ХранилищеВариантовОтчетов из состава библиотеки, оно записывает варианты в справочник. У отдельного отчета хранилища переопределяются его свойствами «Хранилище вариантов» и «Хранилище настроек».

Варианты отчета в схеме СКД: добавить и загрузить из кода

Чтобы добавить вариант отчета, откройте в конфигураторе схему компоновки данных и перейдите на закладку «Настройки». На этой закладке есть список вариантов, в новой схеме в нем один вариант «Основной». Добавьте строку, задайте имя без пробелов и представление для пользователей. Структура, поля, отборы и оформление, которые вы настроите после этого, относятся только к выделенному варианту. Первый вариант списка — вариант по умолчанию, его же возвращает свойство Схема.НастройкиПоУмолчанию.

Имя варианта служит ключом: по нему форма открывает вариант, к нему привязаны сохраненные пользовательские настройки и размещение в БСП. После внедрения меняйте представление, а имя оставляйте прежним.

Вариант из схемы можно применить без формы — для рассылки, регламентного задания или выгрузки в файл. Функция модуля объекта отчета:

// Модуль объекта отчета ОстаткиТоваров.
// Формирует отчет по варианту схемы без открытия формы: для рассылки,
// регламентного задания или выгрузки в файл. Вызов на сервере:
// ТабДок = Отчеты.ОстаткиТоваров.Создать().СформироватьПоВарианту("ОстаткиПоСкладам", Склад);

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Функция СформироватьПоВарианту(ИмяВарианта, Склад = Неопределено) Экспорт

	Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

	// Поиск идет по имени варианта, представление здесь не подходит
	Вариант = Схема.ВариантыНастроек.Найти(ИмяВарианта);
	Если Вариант = Неопределено Тогда
		ВызватьИсключение СтрШаблон("В схеме отчета нет варианта с именем ""%1""", ИмяВарианта);
	КонецЕсли;

	Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
	Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
	Компоновщик.ЗагрузитьНастройки(Вариант.Настройки);

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

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

	Процессор = Новый ПроцессорКомпоновкиДанных;
	Процессор.Инициализировать(Макет);

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

	Возврат Результат;

КонецФункции

#КонецЕсли
  • ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных") — макет, на который указывает свойство отчета «Основная схема компоновки данных». Если макет называется иначе, подставьте его имя.
  • ВариантыНастроек.Найти ищет только по имени и возвращает Неопределено, если варианта нет. Проверка сразу после поиска дает понятный текст ошибки.
  • Инициализировать связывает компоновщик со схемой: без источника доступных настроек он не знает полей, и отбор по складу не к чему привязать.
  • ПолучитьНастройки() возвращает итоговые настройки: вариант вместе с пользовательскими и фиксированными. Остальная цепочка вывода разобрана в статье «СКД программно».

Все варианты схемы перебираются циклом Для Каждого Вариант Из Схема.ВариантыНастроек: у элемента есть Имя, Представление и Настройки.

Как открыть отчет с нужным вариантом

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

// Модуль формы документа «Перемещение товаров».
// Команда «Остатки склада» открывает отчет сразу нужным вариантом.

&НаКлиенте
Процедура ОстаткиСклада(Команда)

	Если Не ЗначениеЗаполнено(Объект.СкладОтправитель) Тогда
		ПоказатьПредупреждение(, "Укажите склад-отправитель.");
		Возврат;
	КонецЕсли;

	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("КлючВарианта", "ОстаткиПоСкладам"); // имя варианта в схеме
	ПараметрыФормы.Вставить("Отбор", Новый Структура("Склад", Объект.СкладОтправитель));
	ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

	// Новый ключ уникальности: каждое нажатие открывает свое окно со своим отбором
	ОткрытьФорму("Отчет.ОстаткиТоваров.Форма", ПараметрыФормы, ЭтотОбъект, Новый УникальныйИдентификатор);

КонецПроцедуры

Отбор — структура «имя поля — значение», поле должно быть доступно для отбора в схеме. СформироватьПриОткрытии избавляет от нажатия «Сформировать». Четвертый параметр ОткрытьФорму — ключ уникальности: с новым идентификатором каждое нажатие открывает отдельное окно со своим отбором. Внутри формы отчета ключ открытого варианта хранится в свойстве КлючТекущегоВарианта, а перестроить элементы формы при смене варианта можно в событии ПриЗагрузкеВариантаНаСервере.

Как сохранить вариант отчета и поделиться им

Пользователь настраивает отчет, выбирает «Еще → Сохранить вариант» и вводит название. Изменить вариант отчета можно командой «Еще → Изменить вариант»: откроется редактор структуры, полей и отборов. В УТ 11.5 команды собраны в подменю «Еще → Варианты отчета»: «Сохранить как...», «Выбрать...» и список вариантов, а настройки правят через «Еще → Настройки...». В БСП предопределенный вариант перезаписать нельзя, правки сохраняют новым вариантом. Как настраивать поля, группировки и отборы, описано в статье «Настройка отчета 1С».

Подменю «Варианты отчета» в меню «Еще» 1С УТ 11.5
УТ 11.5: «Еще» (1) → «Стандартные настройки» (2); «Варианты отчета» (3) → «Сохранить как...» (4), «Выбрать...» (5) и список вариантов, текущий отмечен галочкой.

В конфигурациях на БСП окно сохранения позволяет открыть вариант всем пользователям или оставить только автору. Стандартное хранилище платформы держит варианты отдельно для каждого пользователя, общего варианта в нем нет. Администратор может раздать вариант кодом — команда в форме отчета конфигурации без БСП:

// Модуль формы отчета ОстаткиТоваров, конфигурация без БСП.
// Команда «Сохранить для всех» записывает текущие настройки отчета
// новым вариантом каждому пользователю информационной базы.

&НаКлиенте
Процедура СохранитьДляВсех(Команда)

	Оповещение = Новый ОписаниеОповещения("СохранитьДляВсехЗавершение", ЭтотОбъект);
	ПоказатьВводСтроки(Оповещение, "", "Название общего варианта", 100);

КонецПроцедуры

&НаКлиенте
Процедура СохранитьДляВсехЗавершение(Название, ДополнительныеПараметры) Экспорт

	Если Не ЗначениеЗаполнено(Название) Тогда
		Возврат; // ввод отменен
	КонецЕсли;

	ЧислоПользователей = СохранитьДляВсехНаСервере(Название);
	ПоказатьОповещениеПользователя("Вариант сохранен", , СтрШаблон("Пользователей: %1", ЧислоПользователей));

КонецПроцедуры

&НаСервере
Функция СохранитьДляВсехНаСервере(Название)

	Если Не ПравоДоступа("Администрирование", Метаданные) Тогда
		ВызватьИсключение "Сохранять варианты другим пользователям может только администратор.";
	КонецЕсли;

	ПолноеИмяОтчета = РеквизитФормыВЗначение("Отчет").Метаданные().ПолноеИмя();

	// Настройки варианта вместе с тем, что пользователь поменял в форме отчета
	Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();

	Описание = Новый ОписаниеНастроек;
	Описание.Представление = Название;
	КлючВарианта = Строка(Новый УникальныйИдентификатор);

	ПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
	Для Каждого ПользовательИБ Из ПользователиИБ Цикл
		ХранилищеВариантовОтчетов.Сохранить(ПолноеИмяОтчета, КлючВарианта, Настройки, Описание,
			ПользовательИБ.Имя);
	КонецЦикла;

	Возврат ПользователиИБ.Количество();

КонецФункции

ПолучитьНастройки() сохраняет вариант вместе с правками пользователя: свойство КомпоновщикНастроек.Настройки содержит только настройки варианта без значений из шапки. Общий КлючВарианта у всех пользователей позволяет потом найти и удалить вариант одним проходом. Проверка ПравоДоступа("Администрирование", Метаданные) стоит в начале, потому что писать в хранилище от имени другого пользователя может только администратор. В БСП так делать не нужно: там общий вариант — один элемент справочника.

Как удалить вариант отчета или сбросить настройки

Свой вариант пользователь удаляет из списка вариантов: «Еще → Выбрать вариант», строка варианта, удаление или пометка на удаление — зависит от конфигурации. Предопределенный вариант в режиме «Предприятие» не удаляется. Если вариант исправен, а отчет выглядит не так, как задумано, причина в пользовательских настройках: команда «Еще → Стандартные настройки» возвращает отчет к настройкам варианта.

Когда сотрудник не может открыть отчет или настройки нужно снять у многих пользователей, выручает серверная процедура для конфигураций без БСП:

// Общий модуль АдминистрированиеОтчетов (флажок «Сервер»), конфигурация без БСП.
// Удаляет у пользователя сохраненные настройки отчета, а по флажку и его варианты.
// Пример: АдминистрированиеОтчетов.СброситьНастройкиОтчета("Отчет.ОстаткиТоваров", "Петров", Истина);

Процедура СброситьНастройкиОтчета(ПолноеИмяОтчета, ИмяПользователя, УдалитьВарианты = Ложь) Экспорт

	Хранилища = Новый Массив;
	Хранилища.Добавить(ХранилищеПользовательскихНастроекОтчетов);
	Хранилища.Добавить(ХранилищеСистемныхНастроек);
	Если УдалитьВарианты Тогда
		Хранилища.Добавить(ХранилищеВариантовОтчетов);
	КонецЕсли;

	Для Каждого Хранилище Из Хранилища Цикл

		// У хранилища, созданного в конфигурации, метода Выбрать нет
		Если ТипЗнч(Хранилище) <> Тип("СтандартноеХранилищеНастроекМенеджер") Тогда
			Продолжить;
		КонецЕсли;

		// Сначала собираем ключи, затем удаляем: выборку во время обхода не меняем
		КУдалению = Новый Массив;
		Выборка = Хранилище.Выбрать(Новый Структура("Пользователь", ИмяПользователя));
		Пока Выборка.Следующий() Цикл
			Если ЭтоКлючОтчета(Выборка.КлючОбъекта, ПолноеИмяОтчета) Тогда
				КУдалению.Добавить(Новый Структура("КлючОбъекта, КлючНастроек",
					Выборка.КлючОбъекта, Выборка.КлючНастроек));
			КонецЕсли;
		КонецЦикла;

		Для Каждого Ключи Из КУдалению Цикл
			Хранилище.Удалить(Ключи.КлючОбъекта, Ключи.КлючНастроек, ИмяПользователя);
		КонецЦикла;

	КонецЦикла;

КонецПроцедуры

// Ключи настроек отчета начинаются с его полного имени:
// "Отчет.ОстаткиТоваров", "Отчет.ОстаткиТоваров/...", "Отчет.ОстаткиТоваров.Форма...".
// Разделитель в проверке не дает задеть отчет "ОстаткиТоваровПоСрокам".
Функция ЭтоКлючОтчета(КлючОбъекта, ПолноеИмяОтчета)

	Возврат КлючОбъекта = ПолноеИмяОтчета
		Или СтрНачинаетсяС(КлючОбъекта, ПолноеИмяОтчета + "/")
		Или СтрНачинаетсяС(КлючОбъекта, ПолноеИмяОтчета + ".");

КонецФункции
  • Метод Выбрать есть только у стандартного хранилища, поэтому хранилища конфигурации отсекаются проверкой типа.
  • Ключи настроек отчета начинаются с его полного имени. Проверка с разделителем «/» или «.» не заденет отчет с похожим именем.
  • Ключи сначала собираются в массив, удаление идет вторым проходом.
  • Для чужого пользователя нужно право «Администрирование». ИмяПользователя — имя пользователя информационной базы, а не полное имя из справочника.

Варианты отчетов в БСП: предопределенные, пользовательские, размещение

В типовых конфигурациях (БП 3.0, УТ 11, КА 2, ERP, ЗУП) вариантами управляет подсистема БСП «Варианты отчетов». Настройки предопределенных вариантов берутся из схемы, а описание, видимость и размещение задаются в модуле менеджера отчета; при обновлении информационной базы БСП переносит эти сведения в свои справочники. Пользовательские варианты — элементы справочника «Варианты отчетов» с автором и доступностью. Отчет попадает на панель отчетов тех разделов, в подсистемы которых он включен, а отдельный вариант можно разместить и в другом разделе.

// Модуль менеджера отчета ОстаткиТоваров, конфигурация на БСП 3.x.
// Отчет подключен в ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов строкой:
// ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ОстаткиТоваров);

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт

	// Третий параметр - имя варианта в схеме компоновки, оно же ключ варианта
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "Основной");
	НастройкиВарианта.Описание = НСтр("ru = 'Остатки товаров по номенклатуре на дату.'");

	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ОстаткиПоСкладам");
	НастройкиВарианта.Описание = НСтр("ru = 'Остатки в разрезе складов.'");
	// Подсистема - из вашей конфигурации; "Важный" выделяет вариант на панели раздела
	НастройкиВарианта.Размещение.Вставить(Метаданные.Подсистемы.Склад, "Важный");

	// Служебный вариант для расшифровки: на панели отчетов по умолчанию не виден
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ДвиженияТовара");
	НастройкиВарианта.ВидимостьПоУмолчанию = Ложь;

КонецПроцедуры

#КонецЕсли

Третий параметр ОписаниеВарианта — имя варианта из схемы. Описание выводится на панели отчетов и участвует в поиске по ней. Размещение — соответствие «подсистема — важность» со значениями «Важный», «СмТакже» или пустой строкой. ВидимостьПоУмолчанию = Ложь убирает служебный вариант с панели, но открыть его по ключу можно. Пользователь меняет видимость вариантов у себя в настройке панели отчетов.

Испорченный пользовательский вариант администратор находит в списке «Варианты отчетов» (в типовых — «Администрирование → Печатные формы, отчеты и обработки», в УТ 11.5 — «НСИ и администрирование → Печатные формы, отчеты и обработки → Отчеты») и помечает на удаление. Если таких вариантов много, поможет запрос к справочнику:

Ссылка «Отчеты» для администрирования вариантов отчетов в 1С УТ 11.5
УТ 11.5, «НСИ и администрирование → Печатные формы, отчеты и обработки»: ссылка «Отчеты» (1) открывает список всех вариантов отчетов.
// Общий серверный модуль или модуль обработки администратора, конфигурация на БСП.
// Помечает на удаление пользовательские варианты отчета с заданным названием,
// например испорченный вариант, из-за которого отчет не формируется.

Функция ПометитьНаУдалениеВариантыОтчета(ПолноеИмяОтчета, НазваниеВарианта) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ВариантыОтчетов.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.ВариантыОтчетов КАК ВариантыОтчетов
	|ГДЕ
	|	ВариантыОтчетов.Отчет = &Отчет
	|	И ВариантыОтчетов.Пользовательский
	|	И ВариантыОтчетов.Наименование = &Наименование
	|	И НЕ ВариантыОтчетов.ПометкаУдаления";
	Запрос.УстановитьПараметр("Отчет",
		ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.НайтиПоПолномуИмени(ПолноеИмяОтчета)));
	Запрос.УстановитьПараметр("Наименование", НазваниеВарианта);

	Помечено = 0;
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Попытка
			ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
			ВариантОбъект.УстановитьПометкуУдаления(Истина);
			Помечено = Помечено + 1;
		Исключение
			ЗаписьЖурналаРегистрации("АдминистрированиеОтчетов.ПометкаВарианта",
				УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.ВариантыОтчетов,
				Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		КонецПопытки;
	КонецЦикла;

	Возврат Помечено;

КонецФункции

Условие Пользовательский оставляет в выборке только варианты, сохраненные пользователями: предопределенные описаны в коде, и чинить их нужно там. ИдентификаторОбъектаМетаданных превращает отчет в ссылку справочника идентификаторов — по ней справочник вариантов связан с отчетом. Пометка удаления убирает вариант из списков, физически элемент удалит обработка удаления помеченных объектов.

Типичные ошибки

  • «Значение не является значением объектного типа (Настройки)». ВариантыНастроек.Найти вернул Неопределено: передали представление «Остатки по складам» вместо имени ОстаткиПоСкладам или ошиблись в имени. Проверяйте результат поиска, как в первом листинге.
  • «Метод объекта не обнаружен (ПолучитьМакет)». В модуле формы написали Отчет.ПолучитьМакет(...). Реквизит формы Отчет — данные формы, а не объект отчета: на сервере вызывайте РеквизитФормыВЗначение("Отчет").ПолучитьМакет(...).
  • «Нарушение прав доступа!» при записи или удалении настроек другого пользователя без права «Администрирование». Такие процедуры запускают под администратором.
  • Вариант в схеме исправили, а отчет у пользователя прежний. Поверх варианта действуют сохраненные пользовательские настройки. Помогает команда «Стандартные настройки» или процедура сброса.
  • Поля, удаленные из схемы, остались в сохраненном варианте. В настройках они подсвечены как недоступные, а отчет может не сформироваться. Откройте вариант в редакторе, удалите такие поля и сохраните вариант заново.

Частые вопросы

Где хранятся пользовательские варианты отчетов в 1С?

В информационной базе, а не на компьютере пользователя. Без БСП — в стандартном хранилище вариантов отчетов, у каждого пользователя свой список. В конфигурациях на БСП — в справочнике «Варианты отчетов». При выгрузке базы в файл .dt варианты переносятся вместе с ней.

Как удалить предопределенный вариант отчета?

Из режима «Предприятие» — никак: вариант описан в схеме компоновки. Пользователь может только скрыть его с панели отчетов. Разработчик удаляет вариант из схемы, а в конфигурации на БСП — еще и его описание в НастроитьВариантыОтчета.

Отчет не открывается из-за испорченного варианта. Что делать?

Откройте отчет другим вариантом: выберите его на панели отчетов или передайте КлючВарианта предопределенного варианта, как во втором листинге. Затем удалите испорченный вариант и сбросьте настройки командой «Стандартные настройки» или процедурой сброса.

Как сделать вариант отчета общим для всех?

В БСП — при сохранении выбрать доступность всем пользователям, для этого нужны права на общие варианты. Без БСП — добавить вариант в схему конфигурации или раздать его кодом из третьего листинга.

Когда проще заказать

Если варианты нужно перенести между базами, починить после обновления или собрать отчет с набором вариантов под разные роли, поручите это разработчику: разработка отчетов и обработок 1С. Опишите отчет и нужные варианты в форме задания, и исполнитель оценит работу до начала.

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.