Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Програмное изменение запроса СКД и установка параметров          
DrLivsi Подменю пользователя
сообщение 02.09.15, 13:17
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 19 раз
Рейтинг: 0

Всем привет!

Нужно програмно менять запрос в отчете на скд, в зависимости от настроек пользователя.
Запрос поменял, но не могу установить параметр "ОсновнойМенеджер", в параметрах данных его нет. Подскажите как сделать.

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

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




VikingKosmo Подменю пользователя
сообщение 02.09.15, 13:40
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Харьков
Спасибо сказали: 12 раз
Рейтинг: 0

Нужно в настройки еще добавить соответствующий параметр. Посмотрите, что у Вас в Настройки.ПараметрыДанных.Элементы. Там точно нет параметра "ОсновнойМенеджер".

DrLivsi Подменю пользователя
сообщение 02.09.15, 13:54
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 19 раз
Рейтинг: 0

Цитата(VikingKosmo @ 02.09.15, 14:40) *
Нужно в настройки еще добавить соответствующий параметр. Посмотрите, что у Вас в Настройки.ПараметрыДанных.Элементы. Там точно нет параметра "ОсновнойМенеджер".


У" ПараметрыДанных" нет метода Добавить()

Пробовал следующий код, но ничего не поменялось

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

logist Подменю пользователя
сообщение 02.09.15, 14:00
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Добавьте все необходимые параметры заранее, не зависимо от того, используются они в тексте запроса или нет.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

VikingKosmo Подменю пользователя
сообщение 02.09.15, 14:15
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Харьков
Спасибо сказали: 12 раз
Рейтинг: 0

Цитата(DrLivsi @ 02.09.15, 14:54) *
У" ПараметрыДанных" нет метода Добавить()

Пробовал следующий код, но ничего не поменялось

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


Если уж хотите программно добавить параметр, то его нужно не СхемеКомпоновки добавлять, а Настройкам.

DrLivsi Подменю пользователя
сообщение 02.09.15, 15:11
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 19 раз
Рейтинг: 0

Цитата(logist @ 02.09.15, 15:00) *
Добавьте все необходимые параметры заранее, не зависимо от того, используются они в тексте запроса или нет.


На вкладку Параметры добавил ОсновнойМенеджер, ошибки нет, но и отбора тоже нет

Petre Подменю пользователя
сообщение 02.09.15, 15:30
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(DrLivsi @ 02.09.15, 14:54) *
У" ПараметрыДанных" нет метода Добавить()

Конечно нет. Он есть у "ПараметрыДанных.Элементы".


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

DrLivsi Подменю пользователя
сообщение 02.09.15, 16:13
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 19 раз
Рейтинг: 0

Цитата(Petre @ 02.09.15, 16:30) *
Конечно нет. Он есть у "ПараметрыДанных.Элементы".


Получился у меня следующий код:
ПараметрКомпоновки  = Настройки.ПараметрыДанных.Элементы.Добавить();
ПараметрКомпоновки.Параметр = Новый ПараметрКомпоновкиДанных("ОсновнойМенеджер");
ПараметрКомпоновки.Использование = Истина;
ПараметрКомпоновки.Значение = ПараметрыСеанса.ТекущийПользователь;


Теперь в первой строке вылетает ошибка:
Коллекция значений параметров не может изменять свой состав, так как она связана с доступными параметрами.

logist Подменю пользователя
сообщение 02.09.15, 16:37
Сообщение #9

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Потому что Найстроки.ПараметрыДанных содержат те параметры которые указаны на вкладке Параметры СКД.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

VikingKosmo Подменю пользователя
сообщение 02.09.15, 16:42
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Харьков
Спасибо сказали: 12 раз
Рейтинг: 0

Цитата(DrLivsi @ 02.09.15, 17:13) *
Получился у меня следующий код:
ПараметрКомпоновки  = Настройки.ПараметрыДанных.Элементы.Добавить();
ПараметрКомпоновки.Параметр = Новый ПараметрКомпоновкиДанных("ОсновнойМенеджер");
ПараметрКомпоновки.Использование = Истина;
ПараметрКомпоновки.Значение = ПараметрыСеанса.ТекущийПользователь;


Теперь в первой строке вылетает ошибка:
Коллекция значений параметров не может изменять свой состав, так как она связана с доступными параметрами.


Получите настройки из СхемыКомпоновки, добавьте в них параметр, а потом Настройки.ЗагрузитьПараметры(ВашиПараметры)

DrLivsi Подменю пользователя
сообщение 03.09.15, 10:42
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 19 раз
Рейтинг: 0

Цитата(VikingKosmo @ 02.09.15, 17:42) *
Получите настройки из СхемыКомпоновки, добавьте в них параметр, а потом Настройки.ЗагрузитьПараметры(ВашиПараметры)


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

Та же ошибка, в строке: ПараметрКомпоновки = Настройки.ПараметрыДанных.Элементы.Добавить();

Сделал как советовали выше, вручную добавил все необходимые параметры на вкладку "Параметры", а потом заполнил их
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ОсновнойМенеджер", ПараметрыСеанса.ТекущийПользователь);



kosalex Подменю пользователя
сообщение 03.09.15, 11:34
Сообщение #12

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

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

        
        //Параметры
        Для Инд1 = 0 По Настройки.ПараметрыДанных.Элементы.Количество() - 1 Цикл
            Настройки.ПараметрыДанных.Элементы[Инд1].Значение.Вариант =  КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[Инд1].Значение.Вариант;
            Настройки.ПараметрыДанных.Элементы[Инд1].Значение.Дата = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[Инд1].Значение.Дата;    
        КонецЦикла;
        
    
        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
                
        МакетКомпоновки = КомпоновщикМакета.Выполнить(МакетВходыВыходы, Настройки,ДанныеРасшифровки,,,,);
        
        ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
        
        ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,ИСТИНА);
        
        ДокументРезультат.Очистить();
        
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
        ПроцессорВывода.ОтображатьПроцентВывода = Истина;
        ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
        
        ПроцессорВывода.Вывести(ПроцессорКомпоновки);
        
        
        
    ИначеЕсли ОтработанноеВремяКОДОС Тогда
..............................................

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 23:29
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!