Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Выбор варианта отчета СКД 1С на обычной форме

Недавно столкнулся с тем, что на форме отчета, построенного на 1С СКД, в режиме обычных формах 8 версии достаточно проблематично вывести варианты оформления отчета.

Вариант отчета в 1С СКД

После недолгих поисков нашел очень интересное решение для вывода вариантов отчета в режиме обычного приложения на одном из форумов:

Получите 267 видеоуроков по 1С бесплатно:

Процедура _СменаВариантаНастройки (Элемент)

Для каждого Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл

Если Элемент.Текст = Настройка.Представление тогда

КомпоновщикНастроек.ЗагрузитьНастройки(Настройка.Настройки);

Прервать;

КонецЕсли;

КонецЦикла;

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

Процедура УстановитьВариантыНастроек()

КП = ЭлементыФормы.ДействияФормы; НоваяКнопка = КП.Кнопки.Вставить(1,"_ВариантыОтчетов", ТипКнопкиКоманднойПанели.Подменю, "Варианты отчетов", ); НовоеДействие = Новый Действие("_СменаВариантаНастройки"); ч = 1;

Для каждого Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл

НоваяКнопка = КП.Кнопки._ВариантыОтчетов.Кнопки.Добавить("Вариант"+Строка(ч), ТипКнопкиКоманднойПанели.Действие, Настройка.Представление, НовоеДействие); ч = ч + 1;

КонецЦикла;

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

Процедура ПриОткрытии()

УстановитьВариантыНастроек();

...

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

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 24 на “Выбор варианта отчета СКД 1С на обычной форме
  1. Спасибо!!!

    Ответить

  2. Спасибо. Действительно очень краткий и эффективный способ!

    Ответить

  3. Отличненько!
    Большой респект!!!

    Ответить

  4. Круто!!!! Огромное спасибо!!!

    Ответить

  5. Спасибо огромное!!!!
    Уже мозг сломал, в трех местах, как это сделать.

    Ответить

  6. Спасибо огромное !!!

    Ответить

  7. Работает не во всех случаях. У меня один из параметров запроса в СКД задан выражением. Например: Справочники.ВидыКонтактнойИнформации.НайтиПоКоду(«00001»). Так вот при смене варианта отчета, он не формируется, если вернуть все обратно, работает.

    Ответить

    • Ложная тревога. Неправильно был настроен сам вариант отчета. Запутало что в ошибке говорилось именно про параметр.

      Ответить

  8. Спасибо, полдня убил, на то, чтобы построить запрос к гуглу, помогающий решить задачу, но в итоге набрёл на это решение.

    Ответить

    • Полдня??? Я нагуглил по запросу «варианты отчетов». В середине первой страницы выдачи

      Ответить

  9. Ругается на Новый Действие…
    {Форма.ФормаОтчета.Форма(21,25)}: Конструктор не найден
    НовоеДействие = Новый <>Действие(“_СменаВариантаНастройки”); (Проверка: Толстый клиент (обычное приложение))

    Ответить

    • Кавычки поставь нормальные “_СменаВариантаНастройки”. «».

      Ответить

  10. Спасибо большое, столько времени сэкономил.

    Ответить

    • Спасибо) Заглядывайте!)

      Ответить

  11. Спасибо огромное

    Ответить

  12. Спасибо. Изящное решение.

    Ответить

  13. На случай, когда используется несколько макетов СКД… обычные формы это кошмар)

    Соответствие = Новый Соответствие;

    Для каждого Макет Из ЭтотОбъект.Метаданные().Макеты Цикл
    Макеты = ПолучитьМакет(Макет.Имя);
    Для каждого Настройка Из Макеты.ВариантыНастроек Цикл
    Соответствие.Вставить(Настройка.Представление, Макет.Имя);
    КонецЦикла;
    КонецЦикла;

    ЗначениеСоответсия = Соответствие.Получить(Элемент.Текст);
    Если ЗначениеСоответсия Неопределено тогда

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

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

    КонецЕсли;

    Ответить

    • Ох, спасибо!

      Отличный код! 🙂

      Ответить

  14. Спасибо!

    Ответить

  15. Супер!!!

    Ответить

  16. спасибо за красивое решение под ключ

    Ответить

  17. Благодарю!!!!

    Ответить

  18. Большое спасибо за элегантное и эффективное решение.

    Ответить

  19. Спасибо, красивое решение

    Ответить

Добавить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*