Имя: Пароль:
1C
1С v8
Отчет СКД
0 denis_solyanko
 
17.10.14
09:14
Создал отчет скд.
На форму нужно вытащить поле отбора по типу цен вроде все сделал, но вылазиет ошибка значение не является значением объектного типа.

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


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


на форме поле создал данным присвоил тип справочникСсылка.ТипыЦенНоменклатуры
1 DmitriyDI
 
17.10.14
09:25
(0) не может найти параметр в отчете ТипЦен
2 pessok
 
17.10.14
09:28
а зачем это делать вручную то? На форму ТабПоле с типом Отбор
3 denis_solyanko
 
17.10.14
09:33
(2) нужно сделать так чтобы было поле выбора выбрал тип цен, и произошел отбор, вот теперь не пойму как исправить
4 denis_solyanko
 
17.10.14
09:34
Пишет поле объекта не обнаружено (Значение
)
5 pessok
 
17.10.14
09:35
запрос давай
6 pessok
 
17.10.14
09:36
чую, что (1) прав
7 DmitriyDI
 
17.10.14
09:36
Поле = Новый ПолеКомпоновкиДанных("ТипЦен");
Для каждого Элемент Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если Элемент.ЛевоеЗначение = ПолеТовар Тогда
ЭлементОтбора = Элемент;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
КонецЕсли;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
ЭлементОтбора.ЛевоеЗначение = Поле;
ЭлементОтбора.ПравоеЗначение = ТипЦен;
ЭлементОтбора.Использование = ?(ЗначениеЗАполнено(ТипЦен), Истина, Ложь);
8 pessok
 
17.10.14
09:37
(7) вроде ж речь не про отбор а про параметр
9 DmitriyDI
 
17.10.14
09:38
(0) так вроде в (0) "На форму нужно вытащить поле отбора по типу цен "
10 pessok
 
17.10.14
09:39
(9) если отбор, то вообще без конфигурирования это делается
11 DmitriyDI
 
17.10.14
09:41
(10) можно и без него)
12 denis_solyanko
 
17.10.14
09:41
без отбора можно как нибудь
13 denis_solyanko
 
17.10.14
09:42
в альфе нашел я сделал все также но , не хочет, может быть из-за того что при открытии я не присвоил значение типцен
ТипЦен = Справочники.ТипыЦен.ОсновнойТипЦенПродажи;
14 denis_solyanko
 
17.10.14
09:42
это в альфе так сделано и все работает
15 pessok
 
17.10.14
09:43
в (0) написано, что нужен отбор, в (12) отбор не нужен. что в итоге нужно?
16 denis_solyanko
 
17.10.14
09:44
поле выбора выбрал тип цен и нажал сформировать и все отбор совершился по тому значению что ты выбрал
17 DmitriyDI
 
17.10.14
09:44
так и пиши (13)
ТипЦенЗнач = Справочники.ТипыЦен.ОсновнойТипЦенПродажи;
ТипЦен =КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТипЦен");
ТипЦен.Значение = ТипЦенЗнач ;
18 DmitriyDI
 
17.10.14
09:45
(17) и там в конце допиши ТипЦен.Использование = Истина;
19 denis_solyanko
 
17.10.14
09:46
у меня нет основного типцен
20 pessok
 
17.10.14
09:47
(19) ты издеваешься?
дай запрос, мля. ты пытаешься установить ПАРАМЕТР ЗАПРОСА. Есть ли в запросе ПАРАМЕТР?
21 DmitriyDI
 
17.10.14
09:47
(19) смотри тогда надо делать так
ЭлементОтбора = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТипЦен");
ЭлементОтбора .Значение = ИмяТвоегоРеквизитаНаФорме;
ЭлементОтбора .Использование = Истина;
22 DmitriyDI
 
17.10.14
09:48
(20) ))) да это прикол если параметра еще нет в запросе)
23 pessok
 
17.10.14
09:48
(21) ты на ошибку в (0) посмотри. нет у него параметра, а ты распинаешься :)
24 denis_solyanko
 
17.10.14
09:48
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Валюта,
    ЦеныНоменклатурыСрезПоследних.Цена,
    ЦеныНоменклатурыСрезПоследних.ТипЦен,
    ЦеныНоменклатурыСрезПоследних.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
    ЦеныНоменклатурыСрезПоследних.Период,
    ЦеныНоменклатурыСрезПоследних.Номенклатура.Штрихкод,
    ВложенныйЗапрос.Ссылка,
    ЦеныНоменклатурыСрезПоследних.Номенклатура
ИЗ
    (ВЫБРАТЬ
        Номенклатура.Ссылка КАК Ссылка
    ИЗ
        Справочник.Номенклатура КАК Номенклатура) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = ВложенныйЗапрос.Ссылка)

УПОРЯДОЧИТЬ ПО
    ЦеныНоменклатурыСрезПоследних.Номенклатура.Родитель,
    ЦеныНоменклатурыСрезПоследних.Номенклатура
25 pessok
 
17.10.14
09:49
(24) что и требовалось доказать...
26 pessok
 
17.10.14
09:49
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен)
27 pessok
 
17.10.14
09:50
(24) если ты просишь о помощи, а у тебя просят запрос, то не надо ждать, пока начнут материться... ты украл у себя и нас 15 минут времени
28 DmitriyDI
 
17.10.14
09:52
и после (26) не забудь в (21)  посмотреть) а то, что ты сравниваешь в (0) не правильно
29 denis_solyanko
 
17.10.14
09:54
спасибо большое все заработало))
30 denis_solyanko
 
17.10.14
10:40
(28) еще один вопрос , нужно сделать чтобы этот отбор можно было использовать и не использовать с помощью флажка это осуществить?
31 DmitriyDI
 
17.10.14
11:06
(30) да надо убрать параметр из запроса, и добавить вот этот код вместо твоего:

Поле = Новый ПолеКомпоновкиДанных("ТипЦен");
Для каждого Элемент Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если Элемент.ЛевоеЗначение = ПолеТовар Тогда
ЭлементОтбора = Элемент;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
КонецЕсли;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
ЭлементОтбора.ЛевоеЗначение = Поле;
ЭлементОтбора.ПравоеЗначение = ИмяТвоегоПоля;
ЭлементОтбора.Использование = ?(ЗначениеЗАполнено(ТипЦен), Истина, Ложь);

Если цена не будет указана тогда отбора не будет. если будет то будет
32 denis_solyanko
 
17.10.14
14:35
да не хочет он так работать
33 denis_solyanko
 
17.10.14
14:35
(31)
34 denis_solyanko
 
17.10.14
14:39
где ПолеТовар что должно быть
35 pessok
 
17.10.14
14:53
(35) твое поле ТипЦен
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан