Программная работа с отчетами СКД

24.03.26

Разработка - СКД

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Программная работа с отчетами СКД
.erf 13,33Kb
0 3 000 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Изначально с управляемыми формами я не работал.

Только недавно перешел на уф. И понимаю, что любой шаг делается с таким трудом. Пока не изучишь механизмы работы СКД, форм, самих отчетов, за пару минут ничего не заработает.

Также требуется немного знать БСП. Понимать, что многое скорее всего работает уже из коробки. Просто надо понимать, что, где и как вызывать.

Поэтому решил написать небольшую шпаргалку для себя и, возможно, кому-то еще пригодится.

1. Открытие формы отчета.

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

Для внешнего поменяется 1 строчка:

      ОткрытьФорму("ВнешнийОтчет."+ИмяВнешнегоОтчета+".Форма", ПараметрыФормы);

Открыть по пути:

КомандаОткрытьВнешнийОтчет("\\192.168.0.1\обмен\отчет.erf");

&НаКлиенте
Процедура КомандаОткрытьВнешнийОтчет(Путь)

	ОписаниеОповещения = Новый ОписаниеОповещения("ПоместитьФайлВХранилищеЗавершениеОтчет", ЭтотОбъект);
	НачатьПомещениеФайла(ОписаниеОповещения, , Путь, Ложь);
КонецПроцедуры 

&НаКлиенте
Процедура ПоместитьФайлВХранилищеЗавершениеОтчет(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт 
    
РезЗапроса = ПодключитьВнешнийОтчетНаСервереОтчет(Адрес);  
ИмяОтчета = РезЗапроса.ИмяОтчета;
КлючВарианта = РезЗапроса.ВариантОтчета;
ПараметрыОткрытия = Новый Структура("КлючВарианта", КлючВарианта);
Уникальность ="ВнешнийОтчет." + ИмяОтчета;
ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".Форма", ПараметрыОткрытия, Неопределено, Уникальность)

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

Диагностика настроек отчета СКД

//Отладка по отчету
&НаСервере
Процедура ДиагностикаНастроекОтчетаСервер(ИмяОтчета)
	ОтчетОбъект = Отчеты[ИмяОтчета].Создать();
	
	// Проверяем доступные поля отбора
	Для Каждого ПолеОтбора Из ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы Цикл
		Сообщить("Доступное поле отбора: " + Строка(ПолеОтбора.Поле));
	КонецЦикла;
	
	// Проверяем параметры
	Для Каждого Параметр Из ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы Цикл
		Сообщить("Параметр: " + Строка(Параметр.Параметр) + ", Значение: " + Строка(Параметр.Значение));
	КонецЦикла;
	
	// Проверяем существующие отборы
	Для Каждого Отбор Из ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
		Сообщить("Отбор: " + Строка(Отбор.ЛевоеЗначение) + " " + 
					Строка(Отбор.ВидСравнения) + " " + Строка(Отбор.ПравоеЗначение));
	КонецЦикла;
КонецПроцедуры

Перебор вариантов отчета:

&Насервере коротко:
	Для каждого Настройка Из СоздОтчет.СхемаКомпоновкиДанных.ВариантыНастроек Цикл
		Сообщить("отчет "+Имяотчета+" вариант:"+Настройка.Имя+", Представление:"+Настройка.Представление );	
	КонецЦикла; //Пример

Открытие по скопированной ссылке 1С:

	СсылкаВ1С = "e1cib/data/Справочник.ВариантыОтчетов?ref=aaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
	ПерейтиПоНавигационнойСсылке(СсылкаВ1С);

Получить Отчет для отработки своих вариантов.

	Если Внешний Тогда
		//СоздОтчетСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере (Имяотчета);	
		СоздОтчет = ПолучитьВнешнийОтчетСервер(Имяотчета,Внешний);
	Иначе	
		СоздОтчет = Отчеты[Имяотчета].Создать();
	КонецЕсли;

Получение пользовательских настроек:

&НаСервереБезКонтекста
Процедура ПолучитьотчетСнастройками(Имяотчета)

	СоздОтчет = Отчеты[Имяотчета].Создать();
	Настройки =ПолучитьПользовательскиеНастройкиСервер(СоздОтчет );
КонецПроцедуры


&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройкиСервер(отчет)  
    КомпоновщикНастроек=отчет.КомпоновщикНастроек;
    Настройки=КомпоновщикНастроек.ПолучитьНастройки();
	//Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
	//Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
	//КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции

Открытие формы отчета с исправленными настройками.

Отличие от обычного открытия формы только здесь:

	Форма=ПолучитьФорму("ВнешнийОтчет." + ИмяВнешнегоОтчета + ".Форма");
	ПользовательскиеНастройки=ПолучитьИсправитьПользовательскиеНастройки(Форма.Отчет.КомпоновщикНастроек);
    ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки);


&НаСервереБезКонтекста
Функция ПолучитьИсправитьПользовательскиеНастройки(КомпоновщикНастроек);
    Настройки=КомпоновщикНастроек.ПолучитьНастройки();
	//Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
	//Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",Новый СтандартныйПериод(ТекущаяДата(),ТекущаяДата()) );
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции

И самое последнее программное формирование СКД.

С выбором варианта отчета.

Пришлось лезть в БСП, смотреть, как делается рассылка. И здесь не добавлены изменяемые отборы параметры. Потому что обычно они берутся из варианта. Но если формировать из 1 отчета другой на СКД, то скорее всего потребуется немного доработать. Функция будет в приложенной обработке.

    Табдок = ПрограммноСформироватьОтчетИпоказатьТабДокСервер(ИмяВстроенногоОтчета,Ложь);    
    Табдок.Показать();  

 

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.25.112

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    249765    1384    421    

1141

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    5649    300    shapa_pro    25    

67

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    16960    ovetgana    112    

107

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    9817    krasnoshchekovpavel    5    

67

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    9101    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    15899    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.

24.12.2024    13521    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    10075    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Трактор 1278 24.03.26 17:18 Сейчас в теме
О! Нашёлся знающий человек.

Затеялся я как-то в конфигурации ЕРП делать отчёт с двумя СКД. Программно вторая СКД работала хорошо, а вот вывести на форму команду открытия отчёта со второй СКД я так и не смог. Целый день потратил. Даже у ИИ спрашивал. И коллеги ничего подсказать не смогли.
Максимум что до чего договорили - делать свою форму и отказаться от общей. Но это как-то не фэншуйно.
2. jump0 8 24.03.26 18:45 Сейчас в теме
Я потратил 2 дня)) И совсем не знающий в этих управляемых формах. Возможно где то и неоптимально сделал. Но в целом заработало. И как вывести 2 отчета я уже не стал заморачиваться. Возможно позже доделаю, выложу.
Для отправки сообщения требуется регистрация/авторизация