Имя: Пароль:
1C
1С v8
Изменение параметра в отчете СКД никак не влияет на результат
0 alexio_alexio
 
20.11.14
14:27
КА 1.1.46.1. Создан отчет по движению товара на СКД с параметрами: Период, СписокСкладов, СписокНоменклатуры, ВыбДокумент. Столбцы отчета: Номенклатура, Нач. остаток, Приход, Приход по выбранному документу, Расход, Кон. остаток. 1-ый столбец должен заполняться только номенклатурой из док-та, выбранного в параметре "ВыбДокумент".
При формировании отчета в режиме Предприятие все нормально, важно что данные меняются при редактирование в пользовательских настройках параметра "Список складов".

Затем возникла необходимость формирования этого отчета через внешнюю печатную форму документа Поступленеи тов. и услуг. Тут столкнулся с проблемой, описанной ниже.

Код из модуля объекта внешней печ. формы:
<code>
Функция Печать() Экспорт
    
    ДокументОснование = СсылкаНаОбъект;
    ОтчетОстатки  = Отчеты.Стор_ДляОборачиваемостиПартии.Создать();
    ФормаОтчета = ОтчетОстатки.ПолучитьФорму();
    
    Параметр = ФормаОтчета.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Если Параметр <> Неопределено Тогда        
        Параметр.Значение.ДатаНачала = ДокументОснование.Дата;
        Параметр.Значение.ДатаОкончания = ТекущаяДата()-3600*24;
        Параметр.Использование = Истина;    
        ПользовательскийПараметр = ФормаОтчета.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки);        
        Если ПользовательскийПараметр <> Неопределено Тогда
            ПользовательскийПараметр.Значение = Параметр.Значение;                    
        КонецЕсли;      
    КонецЕсли;
    
    СписокСкладов = Новый СписокЗначений;
    СписокСкладов.Добавить(Справочники.Склады.НайтиПоКоду("00003"));
    СписокСкладов.Добавить(Справочники.Склады.НайтиПоКоду("00026"));
    Параметр = ФормаОтчета.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("СписокСкладов");
    Если Параметр <> Неопределено Тогда        
        Параметр.Значение = СписокСкладов;
        Параметр.Использование = Истина;    
        ПользовательскийПараметр = ФормаОтчета.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки);        
        Если ПользовательскийПараметр <> Неопределено Тогда
            ПользовательскийПараметр.Значение = Параметр.Значение;                    
        КонецЕсли;      
    КонецЕсли;
    
    СписокНоменклатуры = Новый СписокЗначений;
    СписокНоменклатуры.ЗагрузитьЗначения(ДокументОснование.Товары.ВыгрузитьКолонку("Номенклатура"));
    
    Параметр = ФормаОтчета.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("СписокНоменклатуры");
    Если Параметр <> Неопределено Тогда        
        Параметр.Значение = СписокНоменклатуры;
        Параметр.Использование = Истина;    
        ПользовательскийПараметр = ФормаОтчета.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки);        
        Если ПользовательскийПараметр <> Неопределено Тогда
            ПользовательскийПараметр.Значение = Параметр.Значение;                    
        КонецЕсли;      
    КонецЕсли;
    
    Параметр = ФормаОтчета.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ВыбДокумент");
    Если Параметр <> Неопределено Тогда        
        Параметр.Значение = ДокументОснование;
        Параметр.Использование = Истина;    
        ПользовательскийПараметр = ФормаОтчета.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки);        
        Если ПользовательскийПараметр <> Неопределено Тогда
            ПользовательскийПараметр.Значение = Параметр.Значение;                    
        КонецЕсли;      
    КонецЕсли;
    
    ФормаОтчета.Обновить();
    ФормаОтчета.Открыть();
    
    Возврат Неопределено;
    
КонецФункции
</code>

Здесь "СсылкаНаОбъект" это реквизит вн. печ. формы с типом "Документ.ПТИУ". В режиме Предприятия работает, но есть проблема: редактирование в пользовательских настройках параметра "СписокСкладов" никак не влияет на данные отчета. Т.е. добавляю склад, удаляю, все равно результат не меняется, даже на печатной форме при выводе параметров "Список складов" остается неизменным, т.е. заданным в вышеуказанном коде (2 склада с кодами 00003 и 00026). Если же редактирую в польз. настройках параметр "Период", то результат меняется, правда все с теми же складами. Не пойму в чем дело. Подскажите, пожалуйста.
1 SUA
 
20.11.14
14:31
СписокСкладов = Новый СписокЗначений;
    СписокСкладов.Добавить(Справочники.Склады.НайтиПоКоду("00003"));
    СписокСкладов.Добавить(Справочники.Склады.НайтиПоКоду("00026"));
    Параметр = ФормаОтчета.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("СписокСкладов");
    Если Параметр <> Неопределено Тогда        
        Параметр.Значение = СписокСкладов;
наверное поэтому - нефиг параметр переписывать принудительно
2 alexio_alexio
 
20.11.14
14:33
(1) Но мне надо обязательно при открытии отчета заполнять список складов списком по-умолчанию.
3 alexio_alexio
 
20.11.14
14:39
(1) Пробовал закомментировать в коде из (0) строки, относящиеся к списку складов, и в управляемой форме отчета "Стор_ДляОборачиваемостиПартии" писал:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    КомпоновщикНастроек = Отчет.КомпоновщикНастроек;

    СписокСкладов = Новый СписокЗначений;
    СписокСкладов.Добавить(Справочники.Склады.НайтиПоКоду("00003"));
    СписокСкладов.Добавить(Справочники.Склады.НайтиПоКоду("00026"));
    //ЭлементыОтбора = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    //Отбор = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[4];
    //Отбор.ПравоеЗначение = СписокСкладов;
    //Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
    //Отбор.Использование = Истина;
    Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СписокСкладов"));
    Если Параметр <> Неопределено Тогда
        ИдентификаторПользНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьИдентификаторПоОбъекту(Параметр);
        ПараметрПользовНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПользНастройки);
        ПараметрПользовНастройки.Значение = СписокСкладов;
        ПараметрПользовНастройки.Использование = Истина;
    КонецЕсли;
КонецПроцедуры

Если использовать в связке с внешней печатной формой этот код, то параметр "Список складов" в польз. режиме остается пустой. Если же открывать напрямую отчет "Стор_ДляОборачиваемостиПартии" с этим кодом, то все нормально заполняется.
4 alexio_alexio
 
20.11.14
14:44
Вот собственно сам отчет и вн. печ. форма: https://yadi.sk/d/lBTt6uPtcpqAa. Может, кто на демо-базе КА посмотрит?
5 alexio_alexio
 
21.11.14
13:01
Кто что посоветует?