|
СКД. Как-то криво передается параметр. | ☑ | ||
---|---|---|---|---|
0
Lenka_Boo
13.02.14
✎
11:23
|
Делался внешний отчетик для ЗУПа. На базе вот этого шаблона: http://infostart.ru/public/127639/
Потребовалось возможность исключать из отчета доки корректировки налогов и взносов (по желанию) Добавляю в запрос условие: "&БезКорректировок = ЛОЖЬ" В консоли отчетов ("Произвольные отчеты" в ЗУПе) все отлично отрабатывает. Добавляю во внешний отчет реквизит с типом Булево (+ галку на форму) Передаю в СКД вместе с датами: ... Попытка ДатаКон = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1]; ДатаКон.Значение = КонецДня(ДатаОкончания); ДатаКон.Использование = Истина; Исключение #Если Клиент Тогда Сообщить("Ошибка установки конечной даты!"); #КонецЕсли КонецПопытки; Попытка ОтключениеКорректировок = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2]; ОтключениеКорректировок.Значение = БезКорректировок; ОтключениеКорректировок.Использование = Истина; Исключение #Если Клиент Тогда Сообщить("Ошибка установки параметра исключения корректировок"); #КонецЕсли КонецПопытки; ... В СКД параметру тоже задаю тип Булево. Вылезает такая ошибка: {Форма.ФормаОтчета.Форма(86)}: Ошибка при вызове метода контекста (Вывести) ПроцессорВывода.Вывести(ПроцессорКомпановкиДанных); по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Ошибка создания набора данных "Запрос" по причине: Ошибка при исполнении запроса набора данных по причине: {(70, 22)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. И &БезКорректировок <<?>>= ЛОЖЬ Что не так? Где еще с этим параметром поколдовать? |
|||
1
Wobland
13.02.14
✎
11:27
|
параметры искать принято, а не брать по конкретному адресу
|
|||
2
Wobland
13.02.14
✎
11:28
|
Настройки=КомпоновщикНастроек.ПолучитьНастройки(); // Получаем настройки отчета
ПараметрНачалоПериода=Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); Если ПараметрНачалоПериода<>Неопределено И ПараметрНачалоПериода.Использование Тогда НачалоПериода=ПараметрНачалоПериода.Значение.Дата; КонецЕсли; |
|||
3
Lenka_Boo
13.02.14
✎
12:38
|
Извини, не очень понимаю при чем тут получение даты из СКД.
Даты в этом шаблоне я не трогала. Они там как есть и прекрасно работают. |
|||
4
Wobland
13.02.14
✎
12:40
|
хорошо. а кто там такой хитрый сидит на третьей позиции у параметров? ОтключениеКорректировок что ли? точно-точно?
|
|||
5
Lenka_Boo
13.02.14
✎
12:44
|
(4) Да. Отладчиком проверяла.
На 1 и 2 - даты. |
|||
6
Lenka_Boo
13.02.14
✎
12:47
|
+(5) Изначально даты так в модуле формы шаблона были забиты.
Я просто уже не знаю в каком месте значение в параметр еще передать. |
|||
7
Wobland
13.02.14
✎
12:51
|
(5) то есть, ты в параметр про дату пихаешь истину, а в желаемый параметр ничего?
|
|||
8
Lenka_Boo
13.02.14
✎
12:56
|
(7) Это конкретно в какой строчке я пихаю Истину в параметр про дату? Там:
//Обработаем период (то что было и я не трогала) Попытка ДатаНач = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0]; ДатаНач.Значение = НачалоДня(ДатаНачала); ДатаНач.Использование = Истина; Исключение #Если Клиент Тогда Сообщить("Ошибка установки начальной даты!"); #КонецЕсли КонецПопытки; Попытка ДатаКон = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1]; ДатаКон.Значение = КонецДня(ДатаОкончания); ДатаКон.Использование = Истина; Исключение #Если Клиент Тогда Сообщить("Ошибка установки конечной даты!"); #КонецЕсли КонецПопытки; //Обработаем МОЙ параметр (то что я добавила) Попытка ОтключениеКорректировок = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2]; ОтключениеКорректировок.Значение = БезКорректировок; ОтключениеКорректировок.Использование = Истина; Исключение #Если Клиент Тогда Сообщить("Ошибка установки параметра исключения корректировок"); #КонецЕсли КонецПопытки; |
|||
9
Wobland
13.02.14
✎
12:59
|
лишь предположение. никто не знает, кто у тебя на третьем месте
ОтключениеКорректировок.Значение = БезКорректировок; |
|||
10
Lenka_Boo
13.02.14
✎
13:09
|
Ну хорошо.
Сделала через поиск ОтключениеКорректировок = Настройки.ПараметрыДанных.Элементы.Найти("БезКорректировок"); Если ОтключениеКорректировок <> Неопределено И ОтключениеКорректировок.Использование = Истина Тогда ОтключениеКорректировок.Значение = БезКорректировок; КонецЕсли; Та же самая ошибка. |
|||
11
Wobland
13.02.14
✎
13:12
|
угу. а нашлось?
|
|||
12
Lenka_Boo
13.02.14
✎
13:15
|
(11) Да. И присвоилось.
Но дальше... |
|||
13
Lenka_Boo
13.02.14
✎
13:16
|
Сразу после ввода параметров идет:
Настройки = КомпоновщикНастроек.Настройки; СхемаКомпановкиДанных = ПолучитьМакет("Макет"); КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Настройки = КомпоновщикНастроек.Настройки; КомпановщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпановки = КомпановщикМакета.Выполнить(СхемаКомпановкиДанных,Настройки,ДанныеРасшифровки); ПроцессорКомпановкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпановкиДанных.Инициализировать(МакетКомпановки,,ДанныеРасшифровки, Истина); ЭлементыФормы.Результат.Очистить(); ДокументРезультат = ЭлементыФормы.Результат; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпановкиДанных); |
|||
14
Lenka_Boo
13.02.14
✎
13:18
|
Нафига столько раз повторяется строчка
Настройки = КомпоновщикНастроек.Настройки; ? И почему даты в параметрах СКД сохраняются, а мой параметр сбрасывается. |
|||
15
Lenka_Boo
13.02.14
✎
13:19
|
+(13) Это все в одной процедуре.
|
|||
16
Wobland
13.02.14
✎
13:20
|
ищи сама. эталон:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; НачалоПериода='00010101'; КонецПериода=ТекущаяДата(); Настройки=КомпоновщикНастроек.ПолучитьНастройки(); // Получаем настройки отчета ПараметрНачалоПериода=Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); Если ПараметрНачалоПериода<>Неопределено И ПараметрНачалоПериода.Использование Тогда НачалоПериода=ПараметрНачалоПериода.Значение.Дата; КонецЕсли; ПараметрКонецПериода=Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода"); Если ПараметрКонецПериода<>Неопределено И ПараметрКонецПериода.Использование Тогда КонецПериода=КонецДня(ПараметрКонецПериода.Значение.Дата); КонецЕсли; Результат=ПолучитьРезультат(НачалоПериода, КонецПериода); ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаём данные расшифровки КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных; // Создаём компоновщик макета // Инициализируем макет компоновки, используя схему компоновки данных // и созданные ранее настройки и данные расшифровки СхемаКомпоновкиДанных=ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); // Скомпонуем результат ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("Результат", Результат), ДанныеРасшифровки); ДокументРезультат.Очистить(); // Выводим результат в табличный документ ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
17
bvb
13.02.14
✎
13:30
|
Я правильно понимаю проблема с передечей параметра ?
Сначала нужно его наблюдать визуально : 1. Нужно вывести на форму отчета (если она есть, если нет сделать) КомпоновщикНастроек.Настройки.ПараметрыДанных и КомпоновщикНастроек.Настройки.Отбор 2. Вывести эту галку в параметры сняв признак "Ограничение доступности" |
|||
18
bvb
13.02.14
✎
13:31
|
А устанавливать и читать можно так
Функции для модуля отчета : Функция ПолучитьЗначениеПараметра (НазваниеПараметра) Экспорт Для Каждого Элемент ИЗ КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы Цикл Если Строка(Элемент.Параметр) = НазваниеПараметра Тогда Возврат Элемент.Значение; КонецЕсли; КонецЦикла; КонецФункции Процедура УстановитьЗначениеПараметра (НазваниеПараметра, ЗначениеПараметра) Экспорт Для Каждого Элемент ИЗ КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы Цикл Если Строка(Элемент.Параметр) = НазваниеПараметра Тогда Элемент.Значение = ЗначениеПараметра ; Элемент.Использование = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры Написано кривовато но работает... |
|||
19
Lenka_Boo
13.02.14
✎
15:23
|
Б****!
Можно смеяться. У меня на параметре галка "Доступен список значений" почему-то встает автоматом когда запрос правлю. Всем спасибо! :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |