Еще один способ нестандартной расшифровки отчета. Без использования обработчиков формы. Для ленивых
Статью написать сподвиг вопрос Слишком сложно для меня по уже стандартно нестандартной расшифровке. В свое время тоже требовалось оное и естественно набрел на Это. Все здорово. Но! Статья то о СКД + Лень. Последняя пылала пожаром и отказывалась нажимать последовательность cntr+C, alt+Tab, cntr+V многократно.
Я её уговаривал, грамотно же статья написана. Нет, отвечает Лень. Там нужна форма, а в БСП это Общая форма и она может измениться со следующим релизом, будет тебе лишняя головная боль при обновлении. В общем, Лень странная девочка. Когда творческий поиск, сложный запрос - ядерным взрывом не разбудишь, а тут бунт и в условиях цейтнота.
Пришлось идти на поводу у Матери всея прогресса. Спросил у Яндекса, тот мне честно: “Ты б еще у Гугела идиот спросил”. Пришлось включать творческий процесс и метод “Научного тыка”. Чем научный от ненаучного знаете, чем отличается? Ставишь точку останова и смотришь в табло. Не нужное само отметается, а нужное обязательно найдется. А где ее ставить как не в ПриКомпоновкеРезультата. В уже стандартных строчках:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
И вот ОНО. Нужное! После строчки:
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
Под пытками, ЕЁ Величества Точки останова, ДанныеРасшифровки сознаются в своих параметрах, отборах и остальных "грехах". Остается только проверить, а расшифровка ли это
ЭтоРасшифровка = Не ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество()= 0;
Накидываем седло с уздечкой на коня и вуаля. Шорты превращаются в брюки:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
#Область ВставкаДляВыводаНестандартнойРасшифровки
ЭтоРасшифровка = Не ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество()= 0;
Если ЭтоРасшифровка Тогда
Отчет = Отчеты.<Любой отчет>.Создать();
Настройки = Отчет.КомпоновщикНастроек.Настройки;
//Устанавливаем отборы и параметры из ДанныеРасшифровки в Настройки(
//....
//)
МакетКомпоновки = КомпоновщикМакета.Выполнить(Отчет.СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
КонецЕсли;
#КонецОбласти
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Вроде бы просто. Но не тут то было. Моя Лень требует большего. Шорты не превращаются в брюки. При выборе поля расшифровки нет строчки. "Остатки товаров", а есть другие поля, которые мне абсолютно не нужны. С ненужными полями все просто. Идем на закладку "Наборы данный" и ставим ограничение поля на "Не доступно для группировки". Но и с выводом нужной мне строки в диалоге выбора поля, тоже банально. Добавляем в вычисляемые поля "ОтчетОстаткиТоваров" с заголовком "Остатки товаров" и в диалоге выбора поля уже ее наблюдаем. Остается только обработать в процедуре ПриКомпоновкеРезультата именно её:
Если ЭтоРасшифровка Тогда
ИмяРашифровки = МакетКомпоновки.Тело[МакетКомпоновки.Тело.Количество()-1].Группировка[0].ИмяПоля;
Если ИмяРашифровки = "ОтчетОстаткиТоваров" Тогда
Отчет = Отчеты.ОстаткиТоваров.Создать();
Настройки = Отчет.КомпоновщикНастроек.Настройки;
//Устанавливаем отборы и параметры из ДанныеРасшифровки в Настройки(
//....
//)
МакетКомпоновки = КомпоновщикМакета.Выполнить(Отчет.СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
КонецЕсли;
КонецЕсли;
Вот собственно и все. Наивную девочку Расшифровка обманули и она выдала все что мне нужно, при минимальных затратах и обработчиков формы "Выбор" и "ОбработкаРасшифровки". Лень успокоилась на время.
Тестировалось на платформах 8.3.10 и 8.3.13. Но думаю будет работать и на более ранних релизах.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)
Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
16500 руб.
02.09.2020 285494 1606 423
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
Как решить проблему с отборами по полям СКД, когда с одинаковым отбором Отчет показывает одно, а Консоль запросов другое.
16.06.2026 6358 sapervodichka 45
Инструментарий разработчика СКД Разработчик 1С 8.3 Бесплатно (free)
В этой статье представлен ПовелительОтчетов — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.
29.01.2026 9425 454 shapa_pro 31
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.
29.10.2025 26996 ovetgana 112
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).
01.07.2025 15754 krasnoshchekovpavel 7
СКД Разработчик Стажер 1С:Предприятие 8 Россия Бесплатно (free)
Несколько способов управления формами выбора параметров и отборов СКД.
10.04.2025 15195 Neti 0
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.
27.02.2025 19813 ovetgana 50
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.
24.12.2024 17736 Akcium 17
МакетКомпоновки = КомпоновщикМакета.Выполнить(Отчет.СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
В общем, то что я в статье назвал обманом девочки по имени Расшифровка
ЭтоРасшифровка = Не ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество()= 0;А Вы думаете проверять расшифровку через Тело лучше
Если формируется отчет у ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество() =0.
Если расшифровка Количество отборов больше нуля
Все просто
ЭтоРасшифровка = ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество() > 0;Не, религия не позволяет ? ж))
Это, вообще, чья процедура рассматривается - основного отчета или отчета-расшифровки ?
Я исчо в запросах пишу Значение(Справочник.Контрагенты.). А почему бы нет, если ПустаяССылка писать не надо
Ну а так то можно через вычисляемое поле принудительно и ссылку отправить на выполнение расшифровки. Пример на скрине
Это правда. Вызывается один раз. Но вывод расшифровки это как бэ новый отчет, следовательно идет в ПриКомпоновкеРезультата с заполненными ДанныеРасшифровки. Собственно на этом метод и построен
ЭтоРасшифровка = ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество() > 0;Ну строго говоря сократить
Вместо этого
ЭтоРасшифровка = Не ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество()= 0;
Если ЭтоРасшифровка Тогда
написать это
Если ДанныеРасшифровки.Настройки.Отбор.Элементы.Количество() Тогда
Однако у одинэсников откуда-то дичайшая любовь создавать тонны лишних переменных.
З.Ы. Мне лень дописывать этот комме
Чтобы при нажатии на значение, значение расшифровалось например по номенклатуре и по складу.
До расшифровки:
Склад Номенклатура 12 11 10
После расшифровки
10Дт - 60Кт Склад Номенклатура.3
10Дт - 60Кт Склад Номенклатура.8
Идем на закладку "Наборы данный" и ставим ограничение поля на "Не доступно для группировки".
Чтобы вообще не выходил Диалог выбора, без использования обработчика формы Выбор, победить не удалось. Задавал вопрос на этом форуме. Ни кто не знает
Склад Номенклатура Приход Расход
Нажали на значение колонки Приход расшифровался по определенным проводкам
Нажали на значение колонки Расход расшифровался по определенным проводкам.
Добавил макет поля: Заполнение - Параметр, Параметр - ИмяПоля, Параметр расшифровки(от балды) - П1
Заполнил выражения параметров макета:
И в список расшифровки добавил Дебет и Кредит, Выражения "10,41"; "60,79,76"
В общем В отбор расшифровки попадает, как надо
В макете СКД добавил макет поля.
<Приход БУ>.
В параметре расшифровки указал Номенклатура и склад.
При формировании СКД выдает ошибку, "Поле "Склад" не может быть использовано в группировке "Номенклатура""
В настройках стоит группировка сначала по номенклатуре, далее группировка по складу.
Вопрос, как такую ошибку можно обойти?
Чтобы при расшифровке брал значение еще и склада.
(39)
Щаз было обидно.
Всем сленгом не угодишь,не литературное произведение. Для того вставки кода написаны подробно, что бы было понятно.
А код работает, не сомневайся. Причем я могу вызвать кучу своих расшифровок, создавая Вычисляемые поля и проверяя какое вычисляемое поле было выбрано для расшифровки
Ну и ребята. моя статья абсолютно бесплатная
А так. Этой статьи в запросе у яндекса я не нашел. Приму к сведению. Но тут дело не стиле, а в ключевых словах.
ЗЫ: Попробуешь код на зуб - спасибо скажешь ибо он легок и быстр и ему наплевать, есть форма или нет
Лень убрать? Так люди точки останова перестануть ставить и Нас раздербанят на вопросы почему.
Не трогай мой стиль. Меня по нему узнают плюсы и минусы ставят.
Радоваться люди должны, что я за Них догадался, что так все просто.
Не нравиться стиль, да божеж мой, пользуйся, что я придумал, не нравиться пройди мимо. Но код читать обязательно
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1058110
Создание 16.05.19 11:20
Обновление 26.05.19 20:03
Просмотры 21393
Загрузки 0
Рейтинг
119
Комментарии 56
Код открыт Да
Рубрики СКД
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)