Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 апр 2024, 01:29

Отбор в СКД

Автор ab30ru, 28 июн 2018, 17:49

0 Пользователей и 1 гость просматривают эту тему.

ab30ru

Здравствуйте. Помогите пожалуйста реализовать код.
Есть отчет. В СКД осуществлен по реквизиту ГодПоступления. Скажите пожалуйста, как ПРОГРАММНО реализовать этот отбор? Заранее огромное спасибо

СхемаКомпоновкиДанных = Отчеты.СводкаПоСпециальностям.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");   
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

Sy4a

Не совсем понял что вы имеете в виду.
Возможно что то типо этого?

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;

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

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

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

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, НаборДанных, ДанныеРасшифровки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

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

Тут я программно получаю параметры:

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

Таким же образом их наверно и установить можно

AIFrame

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

ПолучитьПоляОтбора();
КонецЕсли;

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

Добавлено: 29 июн 2018, 12:56


Пример отбора по Контрагенту:
перем кнОтбор_Контрагент;

Процедура ОтборПриИзменении(Элемент)
ОбработатьИзменениеОтбора();
КонецПроцедуры

Процедура ОбработатьИзменениеОтбора()

Если ЗначениеЗаполнено(ОтборКонтрагент) Тогда
УстановитьОтборОтчета(ОтборКонтрагент, кнОтбор_Контрагент, "Контрагент", Истина);
Иначе
УстановитьОтборОтчета(ОтборКонтрагент, кнОтбор_Контрагент, "Контрагент", Ложь);
КонецЕсли;
КонецПроцедуры

Процедура ПолучитьПоляОтбора()
Для Каждого Элемент ИЗ КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл

Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент") Тогда
кнОтбор_Контрагент = Элемент;
Продолжить;
КонецЕсли;

КонецЦикла;
КонецПроцедуры

ПолучитьПоляОтбора();


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск