Имя: Пароль:
1C
 
не добавляются программно поля СКД помечены крестиком
0 Gossar1C
 
25.02.15
10:55
Здравствуйте. Пытаюсь программно добавить поля в скд, в настройках в выбранных полях они почему то помечены крестиком?

Процедура ПодготовитьЗапрос()
    
    Обработка =  РеквизитФормыВЗначение("Отчет");
    Макет = Обработка.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    
    Текст = Макет.НаборыДанных.НаборДанных1.Запрос;
    
    Для Каждого Элем Из СписокВидовЦен Цикл
       Если Элем.Пометка = Истина Тогда
        Текст = СтрЗаменить(Текст,"ИЗ","
        | ,ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦен.Наименование = " + Элем.Представление + "
        |        ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
        |    КОНЕЦ КАК " + СтрЗаменить(Элем.Представление," ","") + "
        |ИЗ
        |");
       КонецЕсли;
   КонецЦикла;
  
   Макет.НаборыДанных.НаборДанных1.Запрос = Текст;
  
   Набор = Макет.НаборыДанных.Найти("НаборДанных1");
  
   Для Каждого Элем Из СписокВидовЦен Цикл
       Если Элем.Пометка = Истина Тогда
          
           НовоеПоле =  Набор.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
           НовоеПоле.Поле = СтрЗаменить(Элем.Представление," ","");
           НовоеПоле.ПутьКДанным = СтрЗаменить(Элем.Представление," ","");
           НовоеПоле.Заголовок = СтрЗаменить(Элем.Представление," ","");
          
           ВыбранноеПолеКомментарий = Отчет.КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
           ВыбранноеПолеКомментарий.Использование = Истина;
           ВыбранноеПолеКомментарий.Заголовок = СтрЗаменить(Элем.Представление," ","");
           ВыбранноеПолеКомментарий.Поле = Новый ПолеКомпоновкиДанных(СтрЗаменить(Элем.Представление," ",""));
          
       КонецЕсли;
   КонецЦикла;

    ЗначениеВРеквизитФормы(Обработка,"Отчет");
1 skeptik_m
 
25.02.15
10:56
Это означает, что таких полей нет в источнике данных
2 Gossar1C
 
25.02.15
11:00
(1) как это нет если я наименование оттуда беру?)
3 Gossar1C
 
25.02.15
11:02
страшно туплю сейчас исправлю свою писанину) спасибо!
4 Gossar1C
 
25.02.15
11:04
(1) хотя нет... думал подставлю ссылку а ему все равно
5 Gossar1C
 
25.02.15
11:05
то есть я по ссылке сравниваю
Для Каждого Элем Из СписокВидовЦен Цикл
       Если Элем.Пометка = Истина Тогда
        Текст = СтрЗаменить(Текст,"ИЗ","
        | ,ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦен = " + Элем.Значение + "
        |        ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
        |    КОНЕЦ КАК " + СтрЗаменить(Элем.Представление," ","") + "
        |ИЗ
        |");
       КонецЕсли;
   КонецЦикла;


также поля крестиком помечены
6 Gossar1C
 
25.02.15
11:08
может они должны ресурсами бытЬ?
7 Gossar1C
 
25.02.15
11:26
ап?
8 ИС-2
 
naïve
25.02.15
11:54
посмотри в доступных полях они есть или нет?

Смутно, помню что надо что-то инициализировать() или заполнить настройки у компоновщика...

Посмотри у набора данных свойство АвтоЗаполнениеДоступныхПолей стоит в истину?
9 Gossar1C
 
25.02.15
12:10
(8)

Обработка =  РеквизитФормыВЗначение("Отчет");
    Макет = Обработка.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    
    Текст = Макет.НаборыДанных.НаборДанных1.Запрос;
    
    Для Каждого Элем Из СписокВидовЦен Цикл
       Если Элем.Пометка = Истина Тогда
        Текст = СтрЗаменить(Текст,"ИЗ","
        | ,ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦен.Наименование = " + Символ(34) + Элем.Представление + Символ(34) + "
        |        ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
        |    КОНЕЦ КАК " + СтрЗаменить(Элем.Представление," ","") + "
        |ИЗ
        |");
       КонецЕсли;
   КонецЦикла;
  
   Макет.НаборыДанных.НаборДанных1.Запрос = Текст;
  
   Набор = Макет.НаборыДанных.Найти("НаборДанных1");
  
   Для Каждого Элем Из СписокВидовЦен Цикл
       Если Элем.Пометка = Истина Тогда
          
           НовоеПолеК = Набор.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
           НовоеПолеК.Поле = СтрЗаменить(Элем.Представление," ","");
           НовоеПолеК.ПутьКДанным = СтрЗаменить(Элем.Представление," ","");
          
           НовоеПоле = Макет.ПоляИтога.Добавить();
           НовоеПоле.ПутьКДанным = СтрЗаменить(Элем.Представление," ","");
           НовоеПоле.Выражение = "Сумма("+НовоеПоле.ПутьКДанным+")";

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

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


АвтоЗаполнениеДоступныхПолей в значении Истина

а доступные поля в схеме смотреть? или в компоновщике настроек?
10 Gossar1C
 
25.02.15
12:11
в полях и ресурсах они добавляются странно...
11 Gossar1C
 
25.02.15
12:12
(8) а вот в настройках в доступных полях их вообще нет
12 Gossar1C
 
25.02.15
12:32
ап
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан