Имя: Пароль:
1C
1С v8
Заменить запрос СКД тонкий клиент
,
0 ghostrid3r
 
27.09.13
18:53
Доброго времени суток уважаемые форумчане помогите решить проблему, столкнулся вот с чем, есть отчет на СКД со своей формой под тонкий клиент, там есть Реквизит - С наработкой (тип булево). Так вот когда галочка не стоит пытаюсь поменять запрос обычным методом :

    СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Отчет").СхемаКомпоновкиДанных;
    
    Если НЕ СНаработкой Тогда
        СхемаКомпоновкиДанных.НаборыДанных[0].Запрос = СтрЗаменить(СхемаКомпоновкиДанных.НаборыДанных[0].Запрос,"ГДЕ ИСТИНА", "ГДЕ ИСТИНА И ВыпускПродукции.Стоимость <> 0");
    КонецЕсли;

В резултате сей манипуляции получаю точно такой же запрос как и был, те СтрЗаменить не срабатывает.
1 User_Agronom
 
27.09.13
18:56
Предположу: может во фразе "ГДЕ ИСТИНА" пробелов несколько не столько?
2 User_Agronom
 
27.09.13
18:57
Вообще смысл "ГДЕ Истина" несколько непонятен.
Всё равно же истина.
3 discovery science
 
27.09.13
18:59
где истина что?
4 fisher
 
27.09.13
18:59
Знатный изврат. Никогда так не пробовал.
А не проще в запросе написать ГДЕ НЕ &СНаработкой ИЛИ ВыпускПродукции.Стоимость <> 0?
5 ghostrid3r
 
27.09.13
19:01
(2) оно понятно что истина, где истина тут используются больше для СТРЗаменить чтобы знать где и что менять.
6 discovery science
 
27.09.13
19:01
(4)имха, это не изврат, а косяк
7 Franchiser
 
гуру
27.09.13
19:09
(4) +, сам так делаю, подсмотрел в типовой, так запрос не портится
8 Franchiser
 
гуру
27.09.13
19:10
Либо можно использовать оператор Выбора
9 Franchiser
 
гуру
27.09.13
19:12
Выбор когда не &снаработкой тогда истина иначе выпускпродукции.стоимость<>0 конец
10 Fragster
 
модератор
27.09.13
19:33
(4) еще проще в отбор это добавить безо всяких ИЛИ, ВЫБОР и НЕОПРЕДЕЛЕНО
11 Fragster
 
модератор
27.09.13
19:34
а все от того, что никто построитель не учил, когда только он был
12 ghostrid3r
 
27.09.13
19:47
(4) Ок с вашим варинтом согласен, но тут есть одна загвоздка, это в том что СНаработкой это должна быть галочка на форме отчета, вот тут и загвоздка как передать эту галочку в пользовательские настройки. Поставить на этом параметре в отчете включить в пользовательские настройки не разрешают, говорят отдельно галочека на форме.
13 Noroving
 
27.09.13
22:34
(0) Честно говоря, все это мне кажется бредовой идеей. Лично я решал этот вопрос посредством СКД. Все что нужно прописываеш в запросе СКД. Выводиш параметр в настройках СКД, но не доступный для пользователя. В модуле формы при открытии и изменении твоего флага срабатывает процедурка:

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

Если Параметр выведен в польз. настройках, тогда нужно еще получеть его по идентификатору:
ПользовательскиеНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; //получаем пользовательские настройки
ПарамСНаработкойПольз = ПользовательскиеНастройки.Найти(ПарамСНаработкой.ИдентификаторПользовательскойНастройки);
Если ПарамСНаработкойПольз <> Неопределено Тогда
    ПарамСНаработкойПольз.Использование = Истина;
    ПарамСНаработкойПольз.Значение = СНаработкой;
КонецЕсли;

Радуемся)
14 GANR
 
27.09.13
23:09
(0) Не знаю! Я пробовал в событии модуля объекта (отчета) ПриКомпоновкеДанных (не помню точно название) подсунуть другой запрос - все прекрасно работает.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший