|
Установка параметров отбора в СКД при открытии | ☑ | ||
---|---|---|---|---|
0
Кокос
09.11.16
✎
21:16
|
Ставил приведенный код в присозданиинасервере и в приоткрытии. Параметры ставятся. отборы очищаются но новые отборы не применяются и не появляются в настройках. Может кто подскажет что сделал не так?
В отладке все работает без ошибок. Если Параметры.Свойство("Документ") И ТипЗнч(Параметры.Документ) = Тип("ДокументСсылка.ПересчетТоваров") Тогда //установка параметра по периоду-работает ПараметрДатаНач = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); ПараметрДатаНач.Использование = Ложь; ПараметрДатаКон = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода"); ПараметрДатаКон.Использование = Ложь; Если Параметры.Свойство("ПоляДляОтбора") Тогда НастройкиДляОтбора = Отчет.КомпоновщикНастроек.Настройки; ОтборыПересчета = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы; ОтборыПересчета.Очистить(); //очистка параметров - работает // дальше отборы не работают и не появляются на форме ТоварыДляОтбора = Параметры.ПоляДляОтбора; Для Каждого ТоварОтбора из ТоварыДляОтбора Цикл ГруппаОтбора = ОтборыПересчета.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли; ГруппаОтбора.Использование = Истина; ПервыйОтборГруппы = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ПервыйОтборГруппы.Использование = Истина; ПервыйОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура"); ПервыйОтборГруппы.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ПервыйОтборГруппы.ПравоеЗначение= ТоварОтбора.Номенклатура; ВторойОтборГруппы = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ВторойОтборГруппы.Использование = Истина; ВторойОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Характеристика"); ВторойОтборГруппы.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ВторойОтборГруппы.ПравоеЗначение= ТоварОтбора.Характеристика; КонецЦикла; СкладОтборГруппы = ОтборыПересчета.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); СкладОтборГруппы.Использование = Истина; СкладОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Склад"); СкладОтборГруппы.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; СкладОтборГруппы.ПравоеЗначение= Параметры.Документ.Склад; КонецЕсли; КонецЕсли; |
|||
1
mikecool
09.11.16
✎
22:42
|
я не знаю, почему, но цикл по отборам заменил бы на "в списке" или как его там
|
|||
2
vicof
10.11.16
✎
00:13
|
Наверное, в компоновщик нужно загрузить настройки
|
|||
3
vicof
10.11.16
✎
00:13
|
Привет, Онотоле ;)
|
|||
4
EvgeniuXP
10.11.16
✎
01:33
|
Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПользовательскиеНастройки)
|
|||
5
Кокос
10.11.16
✎
09:56
|
(3) Ляксандер и (4)Евгений спасибо. Щас попробую )
|
|||
6
Кокос
10.11.16
✎
10:02
|
(1) я бы тоже. но задача состоит в том чтобы вывести только по тем комбицаниям обуви и размеров по которым есть расхождения.
|
|||
7
Кокос
10.11.16
✎
21:28
|
Если кому интересно. Сделал через глобальную команду.
Пришлось еще вариант добавлять в компоновщик. Но это всё. Помогла конфа отсюда http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=617456&threadtype=0&partt617456=2 &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ПоляДляОтбора = Новый Массив; Если ТипЗнч(ПараметрКоманды) = Тип("ДокументСсылка.ПересчетТоваров") Тогда Для Каждого Товар из ПараметрКоманды.Товары Цикл Если Товар.КоличествоУпаковок <> Товар.КоличествоУпаковокФакт Тогда ПоляДляОтбора.Добавить(Новый Структура("Номенклатура,Характеристика",Товар.Номенклатура,Товар.Характеристика)); Конецесли; КонецЦикла; КонецЕсли; ОтборПоСкладу = Новый Массив; ОтборПоСкладу.Добавить(Новый Структура("Склад",ПараметрКоманды.Склад)); ПараметрыФормы = Новый Структура("Документ,ПоляДляОтбора,СформироватьПриОткрытии,ПользовательскиеНастройки",ПараметрКоманды,ПоляДляОтбора,Истина, ЗаполнитьПользовательскиеНастройкиОтчета("ВедомостьПоТоварамНаСкладах",Новый Структура("Отбор,ОтборПоСкладу",ПоляДляОтбора,ОтборПоСкладу),"_ПересчетыТоваров")); ОткрытьФорму("Отчет.ВедомостьПоТоварамНаСкладах.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка); КонецПроцедуры Функция ЗаполнитьПользовательскиеНастройкиОтчета(ИмяОтчета,ПараметрыПользователя,ИмяВарианта) Экспорт ОтчетОбъект=Отчеты[ИмяОтчета].Создать(); КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек; Если ИмяВарианта<>"" Тогда Варианты=ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек; НайденныйВариант=Варианты.Найти(ИмяВарианта); Если НайденныйВариант<>Неопределено Тогда Настройки=НайденныйВариант.Настройки; ПоляОтбора = ПараметрыПользователя.Отбор; Настройки.Отбор.Элементы.Очистить(); ГруппаОтбораТоваров = Настройки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбораТоваров.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ; ГруппаОтбораТоваров.Использование = Истина; Для каждого ПараметрПользователя Из ПоляОтбора Цикл ГруппаОтбора = ГруппаОтбораТоваров.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора.Использование = Истина; ПервыйОтборГруппы = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ПервыйОтборГруппы.Использование = Истина; ПервыйОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура"); ПервыйОтборГруппы.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ПервыйОтборГруппы.ПравоеЗначение= ПараметрПользователя.Номенклатура; ВторойОтборГруппы = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ВторойОтборГруппы.Использование = Истина; ВторойОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Характеристика"); ВторойОтборГруппы.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ВторойОтборГруппы.ПравоеЗначение= ПараметрПользователя.Характеристика; КонецЦикла; СкладОтборГруппы = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); СкладОтборГруппы.Использование = Истина; СкладОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Склад"); СкладОтборГруппы.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; СкладОтборГруппы.ПравоеЗначение= ПараметрыПользователя.ОтборПоСкладу[0].Склад; КонецЕсли; Иначе Настройки = КомпоновщикНастроек.ПолучитьНастройки(); КонецЕсли; КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Возврат КомпоновщикНастроек.ПользовательскиеНастройки; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |