Программное добавление параметров редактирования СКД
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Почти в каждом отчете в 1С используются отборы. Зачастую в поле отбора требуется выбирать не все элементы справочника, а только конкретный перечень или по каким-нибудь еще отборам и параметрам. И Как же это сделать в СКД? Есть несколько вариантов:
1. Непосредственно в самой схеме компоновки данных, на закладке "Наборы данных", в таблице "Поля". Например можно указать, что выбирать можно только не помеченные на удаления (см. рисунок ниже).
2. Программным способом на форме , в событии "ПриСозданииНаСервере". Есть отборы, которые в конфигураторе не настроить. Например, сделать так, чтобы можно было выбрать только конкретные элементы справочника (не предопределенные).
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьПараметрыРедактирования();
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыРедактирования()
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
// Основная схема компоновки или можно указать конкретный макет
ОсновнаяСхемаКомпоновки = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
// найдем нужное нам поле набора данных
// наборов данных может быть много, поэтому указывайте тот который вам нужен
Поле_Валюта = ОсновнаяСхемаКомпоновки.НаборыДанных.НаборДанных1.Поля.Найти("Валюта");
Если НЕ Поле_Валюта = Неопределено Тогда
// Найдем в параметрах редактирования нужную настройку "ПараметрыВыбора"
ПараметрыВыбора = Поле_Валюта.ПараметрыРедактирования.Элементы.Найти(Новый ПараметрКомпоновкиДанных("ПараметрыВыбора"));
Если НЕ ПараметрыВыбора = Неопределено Тогда
// Добавим новый параметр выбора
// в нашем случае мы хотим поставить отбор по элементам справочника "Руб" и "EUR"
НовыйПараметрВыбора = ПараметрыВыбора.Значение.Добавить();
// "Отбор." означает, что форма выбора автоматически откроется с указанным отбором
// в Форме выбора поле "Ссылка" дожно иметь признак обязательного использования
НовыйПараметрВыбора.Имя = "Отбор.Ссылка";
// значения отбора вы можете получить как угодно, в данном примере найдем по коду
ОтборПоЭлементам = Новый Массив();
ОтборПоЭлементам.Добавить(Справочники.Валюты.НайтиПоКоду("643"));
ОтборПоЭлементам.Добавить(Справочники.Валюты.НайтиПоКоду("978"));
// присвоим значение отбора
НовыйПараметрВыбора.Значение = ОтборПоЭлементам;
// установим признак использования нашей настройки
ПараметрыВыбора.Использование = Истина;
КонецЕсли;
// также можно и заменить стандартную форму выбора
ФормаВыбора = Поле_Валюта.ПараметрыРедактирования.Элементы.Найти(Новый ПараметрКомпоновкиДанных("ФормаВыбора"));
Если НЕ ФормаВыбора = Неопределено Тогда
ФормаВыбора.Значение = "Справочник.Валюты.Форма.ФормаСписка";
ФормаВыбора.Использование = Истина;
КонецЕсли;
КонецЕсли;
// далее необходимо наши настройки загрузить в компоновщик
АдресСхемы = ПоместитьВоВременноеХранилище(ОсновнаяСхемаКомпоновки,Новый УникальныйИдентификатор());
// тут и происходит инициализация наших настроек
ОтчетОбъект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ОсновнаяСхемаКомпоновки.НастройкиПоУмолчанию);
ЗначениеВРеквизитФормы(ОтчетОбъект,"Отчет");
КонецПроцедуры
В моем примере устанавливается отбор на выбор "Валюты". В результате получаем, что пользователь не сможет выбрать другие элементы, кроме "Руб" и "Евро".
Тестировалось на платформе 8.3.13.1644
Управление торговлей, редакция 11 (11.4.3.137)
Вступайте в нашу телеграмм-группу Инфостарт