|
установить отбор при открытии ОСВ по 41сч Бухгалтерия 3.0 Ø (Новиков 02.08.2022 20:48) | ☑ | ||
---|---|---|---|---|
0
Новый1сник2
01.08.22
✎
13:15
|
Доброго дня!
подскажите как передать отбор по номенклатуре из реализации в ОСВ по 41 счету, пробовал передавать массив и список значений, не получается. код примерно такой: СЗ = мОтчетПо41счНаСервере(); Отбор = Новый Структура; Отбор.Вставить("Ссылка", СЗ); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Отбор", Отбор); ОткрытьФорму("Отчет.мОборотноСальдоваяВедомостьПоСчету41.Форма.ФормаОтчета", ПараметрыФормы); |
|||
1
Новый1сник2
01.08.22
✎
13:59
|
пробовал так, тоже не получается
Массив = мОтчетПо41счНаСервере(); Отбор = Новый Структура; Отбор.Вставить("Номенклатура", Массив); ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", Отбор, Истина); ОткрытьФорму("Отчет.мОборотноСальдоваяВедомостьПоСчету41.Форма.ФормаОтчета", ПараметрыФормы); |
|||
2
Новый1сник2
01.08.22
✎
14:00
|
подскажите хоть куда копать
|
|||
3
6awkup_true
01.08.22
✎
14:03
|
(2) отбор тебе нужно добавлять в отбор в схеме компоновки данных
|
|||
4
Новый1сник2
01.08.22
✎
14:06
|
(3) пример кода можно?
|
|||
5
6awkup_true
01.08.22
✎
14:09
|
НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ПолеОтбора = Новый ПолеКомпоновкиДанных("ИмяПоляКомпановки"); НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора; НовыйЭлементОтбора.Использование = Истина; НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = Значение; |
|||
6
Новый1сник2
01.08.22
✎
14:12
|
(5)в самом отчете ОсновнаяСхемаКомпоновкиДанных пустая, и куда добавлять этот код?
нужно из реализации массив значений передать в открываемую форму отчета |
|||
7
6awkup_true
01.08.22
✎
14:15
|
(6) если схема пустая, то значит, что в ПриКомпоновке в модуле отчета с ней что то происходит(заполняется). нет по рукой бухни. найди момент, когда схема не будет пустой и вставь свой отбор. учти, что отбор по счету уже может существовать. поэтому в КомпоновщикНастроек.Настройки.Отбор.Элементы тебе его нужно будет найти по имени и установить у него значение и использование
|
|||
8
Новый1сник2
01.08.22
✎
14:42
|
(7) отчет типовой скопировал, в параметрах выбора счета, поставил Отбор.Код(ТоварыНаСкладах)
|
|||
9
Новый1сник2
01.08.22
✎
15:34
|
может еще варианты есть? поделитесь кодом
|
|||
10
6awkup_true
01.08.22
✎
15:55
|
&НаКлиенте
Процедура ОткрытьОтчетСКДСОтбором(Команда) Параметры = Новый Структура; Параметры.Вставить("Период", КонецДня(Объект.Дата)); Параметры.Вставить("Счет", ПредопределенноеЗначени("ПланСчетов.Хозрасчетный.ТоварыНаСкладах")); ПользовательскиеНастройки = УстановитьПользовательскиеНастройкиОтчета("ОборотноСальдоваяВедомость",СтрПараметры); Отбор = Новый Структура; Отбор.Вставить("Организация", Объект.Организация); ПараметрыФормы = Новый Структура("Отбор,ПользовательскиеНастройки, СформироватьПриОткрытии", Отбор,ПользовательскиеНастройки, Истина); ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость.Форма.ФормаОтчета", ПараметрыФормы); КонецПроцедуры &НаСервере Функция УстановитьПользовательскиеНастройкиОтчета(ТипОтчета,СтруктураПараметров) СтруктураНастроек = Новый Структура; ОтчетОбъект = Отчеты[ТипОтчета].Создать(); //Получаешь схему. СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //заполняешь как в ПриКомпоновке отчета исходного. Дергаешь настройки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПользовательскиеНастройки = СхемаКомпоновкиДанных.КомпоновщикНастроек.ПользовательскиеНастройки; Для Каждого ЭлПараметр Из СтруктураПараметров Цикл Для Каждого ПараметрСКД Из ПользовательскиеНастройки.Элементы Цикл Если ТипЗнч(ПараметрСКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда Если строка(ПараметрСКД.Параметр) = ЭлПараметр.Ключ Тогда ПараметрСКД.Значение = ЭлПараметр.Значение; ПараметрСКД.Использование = Истина; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Возврат ПользовательскиеНастройки; КонецФункции отладить надо. могут быть ошибки |
|||
11
Новый1сник2
01.08.22
✎
16:03
|
(10) благодарю, только не вижу как номенклатура передается
|
|||
12
6awkup_true
01.08.22
✎
16:04
|
(11) Отбор = Новый Структура;
Отбор.Вставить("Организация", Объект.Организация); Отбор.Вставить("Номенклатура", ТвояНоменклатура); |
|||
13
Новый1сник2
01.08.22
✎
16:05
|
(12) в ТвояНоменклатура можно массив передать ?
|
|||
14
Новый1сник2
01.08.22
✎
16:06
|
или в цикле сделать ?
Отбор.Вставить("Номенклатура", ТвояНоменклатура); |
|||
15
6awkup_true
01.08.22
✎
16:07
|
(14) можно, только скорее всего будет нужно передавать фиксированный массив.
МассивНоменклатур = Новый массив; МассивНоменклатур.Добавить(...); ..... Отбор.Вставить("Номенклатура", Новый ФиксированныйМассив(МассивНоменклатур)); |
|||
16
Новый1сник2
01.08.22
✎
16:19
|
(15) ок, завтра попробую, благодарю
|
|||
17
Новый1сник2
02.08.22
✎
08:39
|
&НаСервере
Функция УстановитьПользовательскиеНастройкиОтчета(ТипОтчета,СтруктураПараметров) СтруктураНастроек = Новый Структура; ОтчетОбъект = Отчеты[ТипОтчета].Создать(); //Получаешь схему. СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //заполняешь как в ПриКомпоновке отчета исходного. Дергаешь настройки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПользовательскиеНастройки = СхемаКомпоновкиДанных.КомпоновщикНастроек.ПользовательскиеНастройки; Для Каждого ЭлПараметр Из СтруктураПараметров Цикл Для Каждого ПараметрСКД Из ПользовательскиеНастройки.Элементы Цикл Если ТипЗнч(ПараметрСКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда Если строка(ПараметрСКД.Параметр) = ЭлПараметр.Ключ Тогда ПараметрСКД.Значение = ЭлПараметр.Значение; ПараметрСКД.Использование = Истина; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Возврат ПользовательскиеНастройки; КонецФункции |
|||
18
Новый1сник2
02.08.22
✎
08:40
|
{Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары.Форма(3067,74)}: Переменная не определена (Настройки)
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, <<?>>Настройки, ДанныеРасшифровки); (Проверка: Сервер) {Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары.Форма(3067,85)}: Переменная не определена (ДанныеРасшифровки) МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, <<?>>ДанныеРасшифровки); (Проверка: Сервер) |
|||
19
Новый1сник2
02.08.22
✎
09:51
|
даже просто отбор не работает, делаю как в https://its.1c.ru/db/metod8dev/content/4143/hdoc
Отбор = Новый Структура; Отбор.Вставить("Организация", Объект.Организация); Отбор.Вставить("Склады", Объект.Склад); ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", Отбор, Истина); ОткрытьФорму("Отчет.мОборотноСальдоваяВедомостьПоСчету41.Форма.ФормаОтчета", ПараметрыФормы); |
|||
20
Новый1сник2
02.08.22
✎
12:01
|
вот нашел модуль, только отбор не работает, подскажите как установить отбор
&НаКлиенте Процедура ПрограммноОСВ41(Команда) СписокНоменклатуры = мСЗПоНоменклатуреПолучитьНаСервере(); ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных; ДополнительныеСвойства = ПользовательскиеНастройки.ДополнительныеСвойства; ДополнительныеСвойства.Вставить("НачалоПериода", КонецДня(Объект.Дата)); ДополнительныеСвойства.Вставить("КонецПериода", КонецДня(Объект.Дата)); ДополнительныеСвойства.Вставить("Счет", ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.Товары")); ДополнительныеСвойства.Вставить("Организация", Объект.Организация); ДополнительныеСвойства.Вставить("ПоСубсчетам", Ложь); ДополнительныеСвойства.Вставить("Склады", Ложь); Отбор = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных")); Отбор.ИдентификаторПользовательскойНастройки = "Отбор"; // //ЗаполнитьЭлементОтбораКомпоновкиДанных(Отбор,Истина,ВидСравненияКомпоновкиДанных.ВСписке,"Субконто1", СписокНоменклатуры); //ЗаполнитьЭлементОтбораКомпоновкиДанных(Отбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто2", Объект.Склад); // ДополнительныеСвойства.Вставить("Отбор", Отбор); ПараметрыФормы = Новый Структура(); ПараметрыФормы.Вставить("РежимРасшифровки", Ложь); ПараметрыФормы.Вставить("ВидРасшифровки", 2); ПараметрыФормы.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройки); ПараметрыФормы.Вставить("ЗаполняемыеНастройки", Новый Структура("Показатели, Отбор, Группировка", Истина, Истина, Истина)); ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина); ФормаОтчета = ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма", ПараметрыФормы, ЭтаФорма, Истина); ФормаОтчета.Элементы.Счет.Доступность = Ложь; КонецПроцедуры |
|||
21
Новый1сник2
02.08.22
✎
15:52
|
разобрался, тему можно закрывать
|
|||
22
Новиков
02.08.22
✎
16:20
|
(21) Код в (20) рабочий?
|
|||
23
Новый1сник2
02.08.22
✎
16:23
|
(22) без отбора рабочий
|
|||
24
Новиков
02.08.22
✎
16:39
|
(21) >>разобрался, тему можно закрывать
Если не сложно, приведите код целиком, для будущих ответов на подобные вопросы. После этого закроем тему, как и просили. |
|||
25
Новый1сник2
02.08.22
✎
16:40
|
вот тут нашел решение https://infostart.ru/1c/articles/345249/
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |