Имя: Пароль:
1C
1С v8
Вопрос по отчету СКД
, ,
0 Tumakota
 
13.10.17
15:08
Уважаемые коллеги!

что может быть не так в этом условии запроса, что он ругается на параметры. Параметры ввел свои не стандартные

ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачал, &ДатаКонца, Период, ) КАК ВыручкаИСебестоимостьПродажОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        ПО ВыручкаИСебестоимостьПродажОбороты.ЗаказКлиента = ЗаказКлиентаТовары.Ссылка
            И ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЗаказКлиентаТовары.Номенклатура
            И ВыручкаИСебестоимостьПродажОбороты.Склад = ЗаказКлиентаТовары.Ссылка.Склад
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
        ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура,
    РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКонца, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
1 Tumakota
 
13.10.17
15:08
Ругается на представление
2 Гипервизор
 
13.10.17
15:30
(0) Так и сообщает: "представление параметров, машу вать"?
3 Диманыч
 
14.10.17
10:53
(0) Так на параметры или представление ? Левое соединение во втором случае с чем, само с собой ?
4 Мандалай
 
14.10.17
14:15
Это нормально что РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты и РегистрСведений.КурсыВалют.СрезПоследних ни по чем не соединены?
5 Мандалай
 
14.10.17
14:16
СрезПоследних попробуй в эту таблицу не передавать свой параметр - посмотри что получится.
6 Мандалай
 
14.10.17
14:17
+(5)параметр дата
7 Mankubus
 
14.10.17
15:41
(0) твои параметры в СКД смысла не имеют. Они будут называться как Период, НачалоПериода, КонецПериода
8 Мандалай
 
14.10.17
19:15
(7)Почему не имеют? Может он их при компоновке определяет.
9 Mikhail Volkov
 
16.10.17
08:32
Форму для СКД обязательно делать? Его надо открывать из документа с определенными параметрами (даты начала, конца, и еще пара) из документа.
10 Mikhail Volkov
 
16.10.17
11:31
Без формы отчет на СКД из документа никак не запустить?
11 Mikhail Volkov
 
16.10.17
16:02
Без формы отчет на СКД открываешь из меню (для отладки), надо нажать "Настойки...", заполнить параметры, нажать "Сформировать". Добавил пустую ФормаОтчета, чтобы не ругалась на
        ОтчетПоЧекамФР = Отчеты.ДенежныеСредстваПоЧекамФР.Создать();
        ОтчетПоЧекамФР.ДатаНачала = НачалоДня(Дата);
        ОтчетПоЧекамФР.ДатаКонца  = КонецДня(Дата);
        ОтчетПоЧекамФР.КассаККМ      = КассаККМ;
        ОтчетПоЧекамФР.ФР          = мвДоработки.ФискальныйРегистратор(Ложь);
        ФормаОтчета = ОтчетПоЧекамФР.ПолучитьФорму("ФормаОтчета");
        ФормаОтчета.Открыть();
Открывается эта пустая форма, ничего не формируется!?
12 Mikhail Volkov
 
16.10.17
16:04
+ не ругалась на ФормаОтчета = ОтчетПоЧекамФР.ПолучитьФорму("ФормаОтчета");
13 Mikhail Volkov
 
16.10.17
18:05
Форму удалил (зачем пустая нужна), переделал:
        ПараметрыФормы = Новый Структура;
    //    ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
        ПараметрыФормы.Вставить("ДатаНачала", НачалоДня(Дата));
        ПараметрыФормы.Вставить("ДатаКонца",  КонецДня(Дата));
        ПараметрыФормы.Вставить("КассаККМ",      КассаККМ);
        ПараметрыФормы.Вставить("ФР",          мвДоработки.ФискальныйРегистратор(Ложь));
        ФормаОтчета = ПолучитьФорму("Отчет.ДенежныеСредстваПоЧекамФР.Форма", ПараметрыФормы);
        ФормаОтчета.Открыть();

Открывается теперь из документа, но параметры пустые!? Это наверное параметры не формы, а отбора? Как их вставить?
14 Mikhail Volkov
 
17.10.17
06:07
Альфа-Авто обычное приложение (не УФ). В ней СКД не используют. Где посмотреть пример передачи параметров в отчет СКД без формы?
15 Mikhail Volkov
 
17.10.17
07:19
Нашел пример вроде для обычных форм: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=607402, сделал также, но ругается: Поле объекта не обнаружено (Отчет)
        ПараметрДанныхДатаНачала = Форма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0];
16 catena
 
17.10.17
07:26
(15)Если вы хотите использовать СКД  без формы, зачем вы мучаете пример вызова через форму?

Форма - просто инструмент, все элементы компоновщика на форме связаны со свойствами самого компоновщика. И обращаться к ним напрямую можно.
17 Mikhail Volkov
 
17.10.17
07:34
(16) Гуглю СКД - все для УФ. Как передать параметры в СКД в обычном приложении?
18 catena
 
17.10.17
07:40
(17)УФ и ОФ различаются только выводом. Компоновщик и там и там один и тот же.

Как гуглил? Первая же ссылка с установкой отбора для скд.

http://catalog.mista.ru/public/286563/
19 Mikhail Volkov
 
17.10.17
11:12
(18) > с установкой отбора для скд.
Отбор - это и есть Параметры СКД? (вроде в СКД свои отборы есть) Прежде всего нужно передать: ДатаНачала и ДатаКонца, и еще пару параметров...
В том примере:
НовыйОтбор = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйОтбор.ЛевоеЗначение = ПолеНоменклатура.Поле;
НовыйОтбор.ПравоеЗначение = ЭлементыФормы.Список.ТекущаяСтрока;
НовыйОтбор.Использование = Истина;

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

ЭлементыФормы.Список.ТекущаяСтрока - это сама номенклатура? В обоих случаях ПравоеЗначение одно и тоже?
20 catena
 
17.10.17
11:23
Параметры - это параметры, отборы - это отборы.

С параметрами вообще просто:

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


ПравоеЗначение - то, что справа в отборе. Вручную отборы заполняли когда нибудь? Левое-вид сравнения-правое.
21 Mikhail Volkov
 
17.10.17
15:16
(20) Значит правильно понял, в примере это Номенклатура. В обоих случаях: для самой номенклатуры и скидки? Все же Номенклатура - параметр или отбор? У меня только параметры: даты, КассаККМ и ФР. Не видя Набор данных примера трудно гадать...
У меня жалуется на: Значение не является значением объектного типа (Поле)
    НовыйОтбор.ЛевоеЗначение  = ПолеКассаККМ.Поле;

Для примера это:
ПолеНоменклатура = тОтчет.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Номенклатура"); //поле отбора присутствует в СКД
22 Mikhail Volkov
 
19.10.17
08:41
(20) Параметры переписал по твоему примеру:

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

Пишет: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
    Отчет.СкомпоноватьРезультат(Форма.ЭлементыФормы.Результат); // табличный документ на форме
по причине:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(20, 30)}: Не задано значение параметра "ДатаНачала"
ЧекОплаты.Ссылка.Дата МЕЖДУ <<?>>&ДатаНачала И &ДатаКонца
Параметр ДатаНачала не передался, или ошибка раньше в "НаборДанных1"?
23 Mankubus
 
19.10.17
08:54
(22) сначала устанавливаешь параметр в настройках, потом эти настройки заменяешь на другие
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД);

устанавливать параметр можно сразу без поиска Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала",ДатаНачала)
24 Mikhail Volkov
 
19.10.17
10:50
(23) Спс, получилось! Еще бы заголовок параметров в + свернуть!?
25 Mikhail Volkov
 
27.10.17
15:13
Только после этого расшифровка не работает, документы из отчета на открываются? А если открыть настройку, параметры эти же задать, сформируется этот же отчет, но документы прямо из отчета открываются. Что-то еще в не указано, что?
26 DrShad
 
27.10.17
15:20
(25) нужно инициализировать данные расшифровки
27 Mikhail Volkov
 
27.10.17
16:33
(26) Где и как? В итоге получилось следующее:

    Отчет = Отчеты.ДенежныеСредстваПоЧекамФР.Создать();
    НастройкиКД = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД);

    Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", ДатаНачала);
    Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаКонца", ДатаКонца);
    Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КассаККМ", КассаККМ);
    Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ФР", ФР);

    Форма = Отчет.ПолучитьФорму("Отчет.ДенежныеСредстваПоЧекамФР.Форма");
    Отчет.СкомпоноватьРезультат(Форма.ЭлементыФормы.Результат);
    Форма.Открыть();
28 Mikhail Volkov
 
28.10.17
17:33
(26) Добавил ДанныеРасшифровки:
    Форма = Отчет.ПолучитьФорму("Отчет.ДенежныеСредстваПоЧекамФР.Форма");
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    Отчет.СкомпоноватьРезультат(Форма.ЭлементыФормы.Результат, ДанныеРасшифровки);
    Форма.Открыть();
по двойному клику мыши стал какие-то цифры выводить. Как правильно инициализировать данные расшифровки?
29 Mikhail Volkov
 
29.10.17
13:51
+ Вроде в форме должна быть Процедура РезультатОбработкаРасшифровки(). Но у меня нет формы?
30 Mikhail Volkov
 
29.10.17
19:30
+ Вроде нашел схожую по проблеме тему v8: СКД: Цифры вместо расшифровки добавил:
    Форма = Отчет.ПолучитьФорму("Отчет.ДенежныеСредстваПоЧекамФР.Форма");
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(Отчет.СхемаКомпоновкиДанных, НастройкиКД, ДанныеРасшифровки);
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных, , ДанныеРасшифровки);
    Отчет.СкомпоноватьРезультат(Форма.ЭлементыФормы.Результат, ДанныеРасшифровки);
    Форма.Открыть();

Не помогло. Что ни так?
31 Mikhail Volkov
 
30.10.17
05:58
+ Всего-то строчку изменил Форма.ДанныеРасшифровки:
Отчет.СкомпоноватьРезультат(Форма.ЭлементыФормы.Результат, Форма.ДанныеРасшифровки);
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.