Имя: Пароль:
1C
1С v8
Как передать дополнительные параметры с формы в СКД ?
0 vv2304
 
06.08.19
08:22
УФ.
Создан отчет на СКД. Создана форма настроек куда вынесены реквизиты отчета.
Здесь скрин  https://s8.hostingkartinok.com/uploads/images/2019/08/efa4a1dd111932ebf8e4bc68dc7f65ec.jpg
Щелкаю по настройкам, скрин здесь  https://s8.hostingkartinok.com/uploads/images/2019/08/284476ca39a7b051c61b725f654d8610.jpg
Вылетает ошибка "{ОбщийМодуль.ОбщегоНазначенияКлиентСервер.Модуль(338)}: Итератор для значения не определен
    Для Каждого Элемент Из Источник Цикл"
Скрин ошибки  https://s8.hostingkartinok.com/uploads/images/2019/08/03c3da7f62bcd2619bbd5b3aca847bd4.jpg

Не могу понять :(
1 vv2304
 
06.08.19
08:24
Отладчиком в модуле формы проверяю, все заполненные реквизиты отчета видны и заполнены. На скрине убрал
А в модуле объекта в процедуре ПриКомпоновкеРезультата
их ни одного нет, у всех "". Все реквизиты-строка неогр.длины.
2 Пробел
 
06.08.19
08:38
Вопроса не понял, но я бы попробовал перенести все реквизиты отчета в параметры СКД, а дальше через КомпоновщикНастроек...
3 vv2304
 
06.08.19
08:45
(2) Реквизит "ПутьКБазе" - это для интерактивного выбора на форме расположения каталога базы.
Логин и пароль - тоже вводятся интерактивно.
4 vv2304
 
06.08.19
08:48
Логин можно, а вот пароль с учетом тогоа, что он должен вводиться именно как пароль ?
Ну и путь к другой базе нужно выбирать.
Поэтом эти реквизиты сделал реквизитами отчета.
Но как их разместить на форме отчета, созданного на СКД ?
Пробовал обычную форму добавить, там орет, что настройки не переданы.
5 Mankubus
 
06.08.19
08:54
делаешь реквизиты отчета. размешаешь их на форме.
в процедуре ПриКомпоновкеРезультата передаешь их в СКД
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Имя", Значение)
6 vv2304
 
06.08.19
08:56
(5) При таком варианте при нажатии кнопки "Настройка" вылетает
{ОбщаяФорма.ФормаНастроекОтчета.Форма(34)}: Не передан служебный параметр "НастройкиОтчета".
        ВызватьИсключение НСтр("ru = 'Не передан служебный параметр ""НастройкиОтчета"".'");
7 vv2304
 
06.08.19
09:10
Получается,что надо создавать обе формы, и настройи и обычную. Форма настроек не заполняется, весь код в модуле основной формы: выбор баз, логины и пароли.
А в модуле объекта все это подхватится.
Т.е. основная засада была в том, что надо  было создать ДВЕ формы.
8 Максим Нижегородец
 
06.08.19
09:18
(7) Всегда делается так: На основную форму ОТЧЕТА помещаются самые нужные параметры отчета (их обычно немного, на пример Период, Организация, Склад). А в настройки заходят для более тонкой настройки отчета (если такая требуется). (5) Тут правильно.
9 Sasha_H
 
06.08.19
09:35
(5)
Дополню немножко:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    УстановитьНовоеЗначениеПараметраДанных("Парам1", ПолучитьЗначениеПараметраДанных("Парам1_1"));
    УстановитьНовоеЗначениеПараметраДанных("Парам2", ПолучитьЗначениеПараметраДанных("Парам2_1"));
    
КонецПроцедуры

Функция ПолучитьЗначениеПараметраДанных(ИмяПараметра)
    
    ПараметрДанных                 = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
    ПараметрДанныхПользовательский = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
    
    Возврат ПараметрДанныхПользовательский.Значение;
КонецФункции

Процедура УстановитьНовоеЗначениеПараметраДанных(ИмяПараметра, НовоеЗначение)
    
    ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
    ПараметрДанных.Значение.ЗагрузитьЗначения(НовоеЗначение);
    ПараметрДанных.Использование = Истина;
    
КонецПроцедуры


Учитывается пользовательское изменение параметра.
10 Sasha_H
 
06.08.19
09:39
Это как пример, где вариатор ЗагрузитьЗначения используется только для СпискаЗначений. Поэтому комбинаторика в случае разных типов будет сложней.
11 Sasha_H
 
06.08.19
09:42
(9) В моем случае я решал, пользователь в параметры скд передавал Список разных артикулов причем там была еще обработка этого я скрыл так как кода много. ТОесть пользователь мог скопировать колонку из ексель и вбабахать в параметр, а скд в свою очередь выдать результат с отбором.

Просто разъяснил причину связанности установки параметра в СКД за счет другого параметра СКД.
12 vv2304
 
06.08.19
15:13
Не, не пойдет, мне же нужно еще и сохранять варианты отчета.
13 vv2304
 
06.08.19
16:29
Люди, так как тогда сохранять варианты если параметры - это реквизиты отчета ?