Программное добавление параметров редактирования СКД

Публикация № 1158436

Разработка - Практика программирования

Отборы параметры редактирования СКД СхемаКомпоновкиДанных НаборыДанных Настройки ФормаВыбора ПараметрыВыбора

В данной публикации приводится пример программного добавления параметров редактирования для поля выборки в СКД.

Почти в каждом отчете в 1С используются отборы. Зачастую в поле отбора требуется выбирать не все элементы справочника, а только конкретный перечень или по каким-нибудь еще отборам и параметрам. И Как же это сделать в СКД? Есть несколько вариантов:

1. Непосредственно в самой схеме компоновки данных, на закладке "Наборы данных", в таблице "Поля". Например можно указать, что выбирать можно только не помеченные на удаления (см. рисунок ниже).

2. Программным способом на форме , в событии "ПриСозданииНаСервере". Есть отборы, которые в конфигураторе не настроить. Например, сделать так, чтобы можно было выбрать только конкретные элементы справочника (не предопределенные). 

 

 
 ПриСозданииНаСервере

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	УстановитьПараметрыРедактирования();
	
КонецПроцедуры

&НаСервере
Процедура УстановитьПараметрыРедактирования()

    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	// Основная схема компоновки или можно указать конкретный макет
	ОсновнаяСхемаКомпоновки = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	// найдем нужное нам поле набора данных
	// наборов данных может быть много, поэтому указывайте тот который вам нужен
	Поле_Валюта = ОсновнаяСхемаКомпоновки.НаборыДанных.НаборДанных1.Поля.Найти("Валюта");
	Если НЕ Поле_Валюта = Неопределено Тогда
		// Найдем в параметрах редактирования нужную настройку "ПараметрыВыбора"
		ПараметрыВыбора = Поле_Валюта.ПараметрыРедактирования.Элементы.Найти(Новый ПараметрКомпоновкиДанных("ПараметрыВыбора"));
		Если НЕ ПараметрыВыбора = Неопределено Тогда
			// Добавим новый параметр выбора
			// в нашем случае мы хотим поставить отбор по элементам справочника "Руб" и "EUR"
			НовыйПараметрВыбора = ПараметрыВыбора.Значение.Добавить();
			// "Отбор." означает, что форма выбора автоматически откроется с указанным отбором
			// в Форме выбора поле "Ссылка" дожно иметь признак обязательного использования
			НовыйПараметрВыбора.Имя = "Отбор.Ссылка";
			// значения отбора вы можете получить как угодно, в данном примере найдем по коду
			ОтборПоЭлементам = Новый Массив();
			ОтборПоЭлементам.Добавить(Справочники.Валюты.НайтиПоКоду("643"));
			ОтборПоЭлементам.Добавить(Справочники.Валюты.НайтиПоКоду("978"));
			// присвоим значение отбора
			НовыйПараметрВыбора.Значение = ОтборПоЭлементам;
			// установим признак использования нашей настройки
			ПараметрыВыбора.Использование = Истина;
		КонецЕсли;
		// также можно и заменить стандартную форму выбора
		ФормаВыбора = Поле_Валюта.ПараметрыРедактирования.Элементы.Найти(Новый ПараметрКомпоновкиДанных("ФормаВыбора")); 
		Если НЕ ФормаВыбора = Неопределено Тогда
			ФормаВыбора.Значение = "Справочник.Валюты.Форма.ФормаСписка";		
			ФормаВыбора.Использование = Истина;
		КонецЕсли;	
	КонецЕсли;	
	
	// далее необходимо наши настройки загрузить в компоновщик 
	АдресСхемы = ПоместитьВоВременноеХранилище(ОсновнаяСхемаКомпоновки,Новый УникальныйИдентификатор());
	// тут и происходит инициализация наших настроек
	ОтчетОбъект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));	
	ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ОсновнаяСхемаКомпоновки.НастройкиПоУмолчанию);
		
	ЗначениеВРеквизитФормы(ОтчетОбъект,"Отчет");

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

 

В моем примере устанавливается отбор на выбор "Валюты". В результате получаем, что пользователь не сможет выбрать другие элементы, кроме "Руб" и "Евро".

 

 

 

Тестировалось на платформе 8.3.13.1644

Управление торговлей, редакция 11 (11.4.3.137)

Скачать файлы

Наименование Файл Версия Размер
Программное добавление параметров редактирования СКД:

.erf 9,48Kb
25.11.19
1
.erf 9,48Kb 1 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 25.11.19 16:07 Сейчас в теме
Тему логичнее назвать
"Программная установка ограничений выбора значений параметров СКД"
2. Isonic 193 25.11.19 16:16 Сейчас в теме
(1) В публикации не только про ограничение выбора. Есть пример с подменой стандартной формы выбора.
3. VmvLer 25.11.19 16:21 Сейчас в теме
(2) если вести со мной дальше диалог, то я найду еще 100500 противоречий в вашей поделке?
на первый взгляд бросился в глаза - не четко позиционируемый задачу заголовок, что может ввести
в заблуждение неискушенные умы, а на второй взгляд - код очень условный и монстроидальный.
4. Isonic 193 25.11.19 16:24 Сейчас в теме
(3) Сядьте и напишите свою статью. А мы все дружно посмотрим и оценим)
barat; wowik; hasp_x; +3 Ответить
5. VmvLer 25.11.19 16:30 Сейчас в теме
(4) У меня нет таланта в дружеской формулировке мыслей.

Обычно, после прочтения первых абзацев у читателей
пробуждаются первобытные инстинкты, хотя моя цель пробудить логику.
парадокс(
6. dandykry 5 26.11.19 08:21 Сейчас в теме
Для БСП в модуле объекта отчета

Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.5.33");
    ПараметрыРегистрации.ОпределитьНастройкиФормы = Истина;  //Строка из-за которой приведен кусок

    //.................................................//
	
        
    Возврат ПараметрыРегистрации;
    
КонецФункции



// Настройки общей формы отчета подсистемы "Варианты отчетов".
//
// Параметры:
//   Форма - УправляемаяФорма - Форма отчета.
//   КлючВарианта - Строка - Имя предопределенного варианта отчета или уникальный идентификатор пользовательского.
//   Настройки - Структура - см. возвращаемое значение ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию().
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
	
	Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
	
КонецПроцедуры


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

Процедура НастроитьПараметрыОтчетаПоВариантуОтчета(НастройкиОтчета, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД)
	
	ПараметрДанныеОтчета = СхемаКомпоновкиДанных.Параметры.Найти("НужныйПараметр");
	
	СписокВыбора = Новый СписокЗначений;

        //Некий запрос

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

КонецПроцедуры
Показать


Все остальное делается там же
Наталия01; Danil.Potapov; +2 Ответить
7. Isonic 193 26.11.19 08:38 Сейчас в теме
8. ko-alla55 30.07.20 16:31 Сейчас в теме
Спасибо за статью! Как раз нужно было программно установить список доступных значений для поля набора данных.
Оставьте свое сообщение

См. также

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

Печатные формы документов Практика программирования Универсальные функции v8 1cv8.cf Абонемент ($m)

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    40335    28    agent00mouse    0    

Два способа реализации ABC-анализа контрагентов для БП 3.0

Практика программирования Оптовая торговля v8 БП3.0 Россия УУ Абонемент ($m)

В данной статье рассматриваются 2 способа реализации ABC анализа контрагентов для конфигурации Бухгалтерия предприятия 3.0 (версия  3.0.75.109).

1 стартмани

17.03.2020    1917    8    Астиг    8    

Задачка: Список всех документов за заданный период, используя СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Вывести все документы за заданный период, используя СКД.

1 стартмани

11.03.2020    2038    2    MaxxiMiliSan    7    

Подборка иконок для подсистем 1С:8.2, 8.3 (740 шт.) PNG 48х48 Промо

Практика программирования Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

Подборка иконок для подсистем 1С: Предприятие 8.2, 8.3 (УП) в формате PNG 48*48 с сохранением прозрачности.

3 стартмани

19.12.2011    103768    192    Lesha1C    74    

СКД: красивые надписи в заголовках колонок

Практика программирования Работа с интерфейсом v8 v8::СКД УПП1 Россия Абонемент ($m)

Необходимо немного исправить вывод надписей в заголовках колонок, сделать более читаемый вариант. Как это сделать?

2 стартмани

27.02.2020    9728    7    wowik    36    

Примерная схема проведения документов (Механизм проведения) в ERP 2.5.x.x

Практика программирования v8 ERP2 Абонемент ($m)

Некий шаблон "общей" картины связи процедур выполняемых типовым механизмом проведения в ERP 2.5.

1 стартмани

27.01.2020    5927    11    s14adow    7    

Отчет на СКД с выводом остатков по всем датам периода для УТ 10.3 (обычные формы)

Практика программирования v8::СКД УТ10 Россия УУ Абонемент ($m)

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

1 стартмани

23.12.2019    3325    3    jump0    0    

Решение задач по мотивам статьи "30 задач. Странных и не очень"

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка по мотивам статьи: https://infostart.ru/public/1161686/

1 стартмани

04.12.2019    3011    2    batsy66    9    

html + css + js в поле HTML документа 1С на примере решения задачи ханойских башен

Практика программирования v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Рассматривается пример использования html + css + js в полеHTMLдокумента 1с. Вызов функций javascript со стороны 1С с передачей параметров. Решение головоломки "Ханойская башня" с визуализацией в среде 1С.

1 стартмани

11.11.2019    6075    9    mangushov    0    

Инициалы имени иностранного сотрудника в ЗУП 3.1

Практика программирования Печатные формы документов v8 v8::СПР ЗУП3.x Россия Абонемент ($m)

Решение проблемы лишнего дефиса в двойном имени иностранного сотрудника с помощью простого расширения.

1 стартмани

10.10.2019    4338    0    accounting_cons    0    

Индикатор выполнения (прогресс-бар) с таймером остаточного времени выполнения (обычное приложение + УФ)

Практика программирования Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Индикатор (прогресс-бар) - элемент формы, отображающий ход выполнения операций по счетчику. В данном решении разработана возможность отслеживания остаточного времени выполнения.

1 стартмани

08.10.2019    5001    12    slayer-ekb    5    

Формирование внешнего отчета в фоне

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

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

1 стартмани

07.08.2019    8393    4    partizand    14    

Расчет сложных итогов СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Малоизвестный прием для расчета итогов в отчетах на СКД.

1 стартмани

05.08.2019    18621    14    masterkio    16    

Иерархическая нумерация в отчете СКД с помощью макета поля

Практика программирования Разработка v8 v8::СКД 1cv8.cf Абонемент ($m)

Представляю Вашему вниманию вариант решения задачи нумерации строк иерархического отчета на СКД.

1 стартмани

28.06.2019    7608    5    Isonic    14    

Пример печатной формы в Word для УТ 11.4, ERP. КА 2.4, подложка и колонтитулы

Печатные формы документов Практика программирования Разработка v8 ERP2 УТ11 КА2 Россия Абонемент ($m)

Пример внешней печатной формы с выводом в MS Word для УТ 11.4, КА 2, ERP 2.4, печатная форма печатается из документа "Заказ клиента". Для примера разобрано програмнное заполнение верхнего и нижнего колонтитулов, а также печать в качестве подложки - логотипа организации (печать картинки на заднем фоне, при этом у логотипа уменьшена яркость и он повернут на 45 градусов).

1 стартмани

30.05.2019    3471    13    DarkPinch222    5    

Поле "Отбор" в управляемой форме используя СКД

Работа с интерфейсом Практика программирования Разработка v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Пример, который осуществляет отбор ссылок при помощи СКД, макет компоновки создается программно.

1 стартмани

17.05.2019    9076    10    artms    0    

Отладка сложных отчетов на СКД

Практика программирования v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Расширение для отладки сложных отчетов на СКД (в т.ч. для собираемых программно "на лету") и быстрого перехода к отладке таких отчетов в консоли запросов и отчетов на СКД.

1 стартмани

28.12.2018    27606    93    maxx    58    

Шаблон кросс-таблицы с иерархией на СКД

Инструментарий разработчика Практика программирования v8::БУ v8::СКД БП3.0 Россия Абонемент ($m)

Шаблон для быстрой реализации отчета кросс-таблицы с иерархией и жестко заданной структурой вывода с использованием СКД.

1 стартмани

22.12.2018    9716    8    wizard.ilmir02    3    

Чат на управляемых формах

Практика программирования WEB v8 v8::УФ Абонемент ($m)

Чат для 1С на управляемых формах, для работы в браузере. Возможности: Есть общая комната Можно создавать открытые и закрытые комнаты Переписка между двумя пользователями (беседа) Протестировано на платформе 8.3.12.1714.

2 стартмани

14.12.2018    6074    10    panihinnv    13    

Печать QR кода

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Простой пример печати QR кода.

1 стартмани

18.11.2018    8707    13    ah7777777    4    

Объединение нескольких печатных форм в один табличный документ

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Простое решение, как объединить табличные документы с различной шириной колонок в один и чтобы ничего не разъехалось.

1 стартмани

17.11.2018    13251    7    echo77    6    

Отчет для демонстрации работы с программной расшифровкой СКД

Практика программирования v8::СКД 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

08.11.2018    7018    6    budidich    1    

Диаграмма Ганта и графическая схема сторонними средствами

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Примеры формирования диаграммы Ганта и графической схемы в 1С сторонними средствами.

1 стартмани

01.11.2018    7085    5    no_betrayal    6    

И снова группировка столбцов в СКД

Практика программирования v8 v8::СКД УТ11 Россия Абонемент ($m)

В публикации описано создание отчета "Остатки по складам" с группировкой по строкам и столбцам.

1 стартмани

23.10.2018    11413    1    vasilievil    9    

Параметризованные заголовки полей СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Доработанный шаблон типового отчета, который это позволяет менять заголовки полей в зависимости от значений параметров.

2 стартмани

21.09.2018    8320    3    echo77    3    

Преобразование отбора компоновки данных к линейному условию для запроса

Практика программирования v8::БУ БП3.0 Россия БУ Абонемент ($m)

Описание механизма преобразования интерактивного отбора компоновки данных в условие для использования в запросе, данный механизм можно использовать в конфигурации Бухгалтерия предприятия 3.0 и везде в управляемых приложениях, где используется регистр бухгалтерии "Хозрасчетный", также можно адаптировать к любому источнику данных

10 стартмани

10.09.2018    4533    2    scarabey2006    4    

Табель учета рабочего времени или как создать календарик в табличной части документа

Практика программирования Учет рабочего времени Учет рабочего времени v8 УНФ ERP2 УУ Абонемент ($m)

Мой велосипед по созданию документа учета рабочего времени. Обработка предназначена для Управляемых форм, тестировалась на Управление нашей фирмой, редакция 1.6 (1.6.10.44),1С:ERP Управление предприятием 2 (2.4.4.124) платформы (8.3.12.1412),(8.3.11.2867)

1 стартмани

24.08.2018    4252    2    Doreng    2    

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

Практика программирования Работа с интерфейсом v8::СКД 1cv8.cf Россия Абонемент ($m)

В ходе выполнения своей повседневной работы столкнулся с интересной клиентской задачей - требовалось результат отчета СКД вывести на форму отчета в разные вкладки формы в разные табличные документы. Как оказалось, информации по такому выводу отчета в интернете маловато, поэтому решил скомпоновать свой опыт решения этой задачи в одной статье.

1 стартмани

21.08.2018    13174    11    Dipod    4    

[Механизм интерфейса] Интерактивный выбор даты

Практика программирования Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Вариант механизма выбора даты для разработки интерфейса под сенсорный монитор. Особенно актуально для разработки терминалов или других подобных систем.

1 стартмани

16.08.2018    11034    8    rpgshnik    18    

Примеры программной работы с СКД, а также программного создания управляемой формы

Практика программирования v8 v8::УФ v8::СКД Абонемент ($m)

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

1 стартмани

12.08.2018    6228    27    MaxCreator    0    

Линия тренда в диаграмме на графике "Биржевая свеча"

Практика программирования WEB v8 v8::УФ 1cv8.cf Абонемент ($m)

Отчет демонстрирует, как можно отразить линию тренда на биржевом графике типа "свеча" средствами 1С.

1 стартмани

11.08.2018    6479    19    Scop    3    

Горячая клавиша для открытия ячеек таблиц, отчетов

Практика программирования Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

10.08.2018    6129    2    leobrn    0    

Часы в 1С

Практика программирования v8 1cv8.cf Абонемент ($m)

Часы в 1с с использованием продвинутого рисования

1 стартмани

25.07.2018    5564    3    Plash    7    

Множество Мандельброта на 1С

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

20.03.2018    4055    3    kylix90    3    

Таблица значений в параметрах СКД

Практика программирования Инструментарий разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Шаблон отчета на СКД, где в качестве параметра передаётся таблица значений.

1 стартмани

31.01.2018    9239    22    skydivespb    4    

Пример реализации технологии Блокчейн в 1С 8.3

Практика программирования Блокчейн v8 Абонемент ($m)

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

10 стартмани

26.01.2018    10311    1    astracrypt    2    

Пример решения расчетной задачи с табелем (для 1С:Специалист)

Практика программирования Решение задач на 1С:Специалист Учет рабочего времени Учет рабочего времени v8 v8::СПР УУ Абонемент ($m)

Условие задачи собрано из нескольких экзаменационных задач и служит общим примером решения.

1 стартмани

25.01.2018    16591    7    perepetulichka    3    

Подпись в мобильном приложении

Практика программирования Мобильная разработка v8::Mobile 1cv8.cf Абонемент ($m)

Подпись клиента в вашем мобильном приложении.

1 стартмани

04.01.2018    14744    45    onec.developer    7    

Справочная библиотека программ и подпрограмм 1С

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Данная небольшая статья (и обработка для использования в практике своей работы) предлагается вниманию начинающим и опытным программистам 1С в качестве небольшого пособия по освоению программирования на платформе 1С. Есть такая книжка «1С: Предприятие Опыты программирования», написал ее небезысвестный в узких одинэсовских кругах О. В. Бартеньев (издательство «Диалог-МИФИ», 2004 г.), так вот, при внимательном ее изучении у пытливого пользователя возникает множество вопросов. Предлагаемая обработка позволяет решить некоторые из них.

1 стартмани

06.10.2017    9802    8    vik2006    12    

Решение задачи по созданию прикладного решения

Практика программирования Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 Россия УУ Абонемент ($m)

Создание прикладного решения для платформы «1С: Предприятие» для упрощенного учета хозяйственной деятельности некой торговой организации.

1 стартмани

25.08.2017    7483    15    alex1_1976    0