|   |   | 
| 
 | СКД. Установка НастройкиПоУмолчанию | ☑ | ||
|---|---|---|---|---|
| 0
    
        Гот 13.03.12✎ 15:14 | 
        Добрый день.
  Помогите разобраться. Есть форма, у формы есть реквизит "КомпоновщикНастроек", Тип - "КомпоновщикНастроекКомпоновкиДанных". На форме есть элемент управления, тип - ТабличноеПоле, Данные- "КомпоновщикНастроек.Настройки.Отбор". Теперь по порядку. 1. При открытии формы - Инициализирую СКД. Программно. СКД = Новый СхемаКомпоновкиДанных; //1.1 определяем источник данных для схемы //для наших целей - текущая ИБ Источник = СКД.ИсточникиДанных.Добавить(); Источник.Имя = "ЛокальнаяБаза"; Источник.СтрокаСоединения = ""; Источник.ТипИсточникаДанных = "Local"; //1.2 определяем набор данных НаборДанных = СКД.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.Имя = "ХозрасчетныйОборотыДтКт"; НаборДанных.ИсточникДанных = "ЛокальнаяБаза"; НаборДанных.Запрос = ( "ВЫБРАТЬ | ХозрасчетныйОборотыДтКт.СчетДт, | ХозрасчетныйОборотыДтКт.СчетКт, | ХозрасчетныйОборотыДтКт.СубконтоДт1, | ХозрасчетныйОборотыДтКт.СубконтоДт2, | ХозрасчетныйОборотыДтКт.СубконтоДт3, | ХозрасчетныйОборотыДтКт.СубконтоКт1, | ХозрасчетныйОборотыДтКт.СубконтоКт2, | ХозрасчетныйОборотыДтКт.СубконтоКт3, | ХозрасчетныйОборотыДтКт.Организация, | ХозрасчетныйОборотыДтКт.ВалютаДт, | ХозрасчетныйОборотыДтКт.ВалютаКт, | ХозрасчетныйОборотыДтКт.ПодразделениеДт, | ХозрасчетныйОборотыДтКт.ПодразделениеКт, | ХозрасчетныйОборотыДтКт.СуммаОборот, | ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотДт, | ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотКт, | ХозрасчетныйОборотыДтКт.КоличествоОборотДт, | ХозрасчетныйОборотыДтКт.КоличествоОборотКт, | ХозрасчетныйОборотыДтКт.СуммаНУОборотДт, | ХозрасчетныйОборотыДтКт.СуммаНУОборотКт, | ХозрасчетныйОборотыДтКт.СуммаПРОборотДт, | ХозрасчетныйОборотыДтКт.СуммаПРОборотКт, | ХозрасчетныйОборотыДтКт.СуммаВРОборотДт, | ХозрасчетныйОборотыДтКт.СуммаВРОборотКт |{ВЫБРАТЬ | СчетДт.*, | СчетКт.*, | СубконтоДт1.*, | СубконтоДт2.*, | СубконтоДт3.*, | СубконтоКт1.*, | СубконтоКт2.*, | СубконтоКт3.*, | Организация.*, | ВалютаДт.*, | ВалютаКт.*, | ПодразделениеДт.*, | ПодразделениеКт.*, | СуммаОборот, | ВалютнаяСуммаОборотДт, | ВалютнаяСуммаОборотКт, | КоличествоОборотДт, | КоличествоОборотКт, | СуммаНУОборотДт, | СуммаНУОборотКт, | СуммаПРОборотДт, | СуммаПРОборотКт, | СуммаВРОборотДт, | СуммаВРОборотКт} |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Регистратор, , , , , ) КАК ХозрасчетныйОборотыДтКт |{ГДЕ | ХозрасчетныйОборотыДтКт.СчетДт.*, | ХозрасчетныйОборотыДтКт.СчетКт.*, | ХозрасчетныйОборотыДтКт.СубконтоДт1.*, | ХозрасчетныйОборотыДтКт.СубконтоДт2.*, | ХозрасчетныйОборотыДтКт.СубконтоДт3.*, | ХозрасчетныйОборотыДтКт.СубконтоКт1.*, | ХозрасчетныйОборотыДтКт.СубконтоКт2.*, | ХозрасчетныйОборотыДтКт.СубконтоКт3.*, | ХозрасчетныйОборотыДтКт.Организация.*, | ХозрасчетныйОборотыДтКт.ВалютаДт.*, | ХозрасчетныйОборотыДтКт.ВалютаКт.*, | ХозрасчетныйОборотыДтКт.ПодразделениеДт.*, | ХозрасчетныйОборотыДтКт.ПодразделениеКт.*, | ХозрасчетныйОборотыДтКт.СуммаОборот, | ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотДт, | ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотКт, | ХозрасчетныйОборотыДтКт.КоличествоОборотДт, | ХозрасчетныйОборотыДтКт.КоличествоОборотКт, | ХозрасчетныйОборотыДтКт.СуммаНУОборотДт, | ХозрасчетныйОборотыДтКт.СуммаНУОборотКт, | ХозрасчетныйОборотыДтКт.СуммаПРОборотДт, | ХозрасчетныйОборотыДтКт.СуммаПРОборотКт, | ХозрасчетныйОборотыДтКт.СуммаВРОборотДт, | ХозрасчетныйОборотыДтКт.СуммаВРОборотКт}" ); ПолеИтога = СКД.ПоляИтога.Добавить(); ПолеИтога.Выражение = "Сумма(СуммаОборот)"; ПолеИтога.ПутьКДанным = "СуммаОборот"; ПолеИтога = СКД.ПоляИтога.Добавить(); ПолеИтога.Выражение = "Сумма(ВалютнаяСуммаОборотДт)"; ПолеИтога.ПутьКДанным = "ВалютнаяСуммаОборотДт"; ПолеИтога = СКД.ПоляИтога.Добавить(); ПолеИтога.Выражение = "Сумма(ВалютнаяСуммаОборотКт)"; ПолеИтога.ПутьКДанным = "ВалютнаяСуммаОборотКт"; ПолеИтога = СКД.ПоляИтога.Добавить(); ПолеИтога.Выражение = "Сумма(КоличествоОборотДт)"; ПолеИтога.ПутьКДанным = "КоличествоОборотДт"; ПолеИтога = СКД.ПоляИтога.Добавить(); ПолеИтога.Выражение = "Сумма(КоличествоОборотКт)"; ПолеИтога.ПутьКДанным = "КоличествоОборотКт"; 2. Инициализирую КомпоновщикНастроек (тот, который реквизит формы) КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД)); 3. Соответственно, у элемента управления, который "КомпоновщикНастроек.Настройки.Отбор", становятся доступными поля отбора. Все хорошо. Я в форме добавляю отбор, нажимаю выполнить. Чего я хочу добиться - что бы тот отбор, который я указал на форме, "записался" в реквизит "СКД.НастройкиПоУмолчанию". Наваял вот что (скопипастил). НастройкиКомпоновкиДанных = КомпоновщикНастроек.Настройки; //2.1 определяем структуру //2.1.1 добавляем группировку "Регистратор" ГруппировкаНоменклатуры = НастройкиКомпоновкиДанных.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ПолеГруппировки = ГруппировкаНоменклатуры.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Регистратор"); //2.2 определим выбранные поля ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Заголовок = "Стоимость"; ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СтоимостьОборот"); //3. компонуем КомпНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД)); КомпНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); НастройкиКомпоновкиДанных = КомпНастроек.ПолучитьНастройки(); Конструктор = Новый КонструкторСхемыКомпоновкиДанных; Конструктор.УстановитьСхему(СКД); Конструктор.Редактировать(ЭтаФорма); Открывается конструктор. В настройках "Вариант "Основной" нет отборов. Вопрос - Как сделать, что бы были отборы? | |||
| 1
    
        Defender aka LINN 13.03.12✎ 15:25 | 
        (0) Настройки по умолчанию задаются в схеме компоновки. Схема <> компоновщик, ферштейн?     | |||
| 2
    
        Гот 13.03.12✎ 15:30 | 
        (1) Немного. Но я туп, как валенок.
  СхемаКомпоновкиДанных (DataCompositionSchema) НастройкиПоУмолчанию (DefaultSettings) Использование: Только чтение. Вот как-то сюда мне надо вставить то, что у меня сделано при помощи "КомпоновщикНастроекКомпоновкиДанных" А я не догоняю :( | |||
| 3
    
        Defender aka LINN 13.03.12✎ 15:33 | 
        (2) Для зачем?     | |||
| 4
    
        Мигрень 13.03.12✎ 15:34 | 
        (0) Солько на прошлой неделе с этим разбирался. Там се мудрено и не очевидно - целых два дня убил. Зато сейчас есть классый шаблон для собственных поделок.
  Давай мыло - сброшу на почту. | |||
| 5
    
        Defender aka LINN 13.03.12✎ 15:35 | 
        (4) Пожалей человека - пусть хоть он научится что-то правильно делать.     | |||
| 6
    
        Гот 13.03.12✎ 15:36 | 
        (5) Ты в каждой теме по поводу СКД ответить толком не хочешь. 
  (4) beiner (пес) me (dot) com Спасибо заранее :) | |||
| 7
    
        Defender aka LINN 13.03.12✎ 15:37 | 
        (6) Был бы вопрос - ответил бы.     | |||
| 8
    
        Мигрень 13.03.12✎ 15:39 | 
        (6) Ушло     | |||
| 9
    
        Гот 13.03.12✎ 15:41 | 
        (8) Спасибо, получил.     | |||
| 10
    
        Defender aka LINN 13.03.12✎ 15:42 | 
        (9) Ну удачи, удачи...     | |||
| 11
    
        Гот 13.03.12✎ 15:47 | 
        (8) 
  Процедура ОсновныеДействияФормыСохранитьОтбор(Кнопка) ОтборПользователя = КомпоновщикНастроек.Настройки.Отбор.Элементы; ОтборПоУмолчанию = СКД.НастройкиПоУмолчанию.Отбор.Элементы; ОтборПоУмолчанию.Очистить(); Для каждого ЭлементОтбора Из ОтборПользователя Цикл НовыйЭлемент = ОтборПоУмолчанию.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЗаполнитьЗначенияСвойств(НовыйЭлемент, ЭлементОтбора); КонецЦикла; КонецПроцедуры Не вопрос - так - работает. Все ОК. (10) Секптик. Вот тебе вопрос - Как сохранить настройку по умолчанию для СКД (отборы, выбранные поля, и прочее, прочее) в объект "СхемаКомпоновкиДанных" из компонвищика? | |||
| 12
    
        Defender aka LINN 13.03.12✎ 15:51 | 
        (11) Доктор, меня все игнорируют... :'(
  1. Что будем делать с группами в отборе? 2. ЗАЧЕМ, Б@#$ть? | |||
| 13
    
        Гот 13.03.12✎ 15:54 | 
        (12) 
  1. Будем дорабатывать. 2. Затем. Процедура СформироватьДвиженияПоПроизвольномуПоказателю(ХранилищеСКД, ПериодНачала, ПериодОкончания, ПроизвольныйПоказатель,УдалятьСтарыеДвижения) Экспорт СхемаКомпоновкиДанных = ХранилищеСКД.Получить(); //2. создаем настройки для схемы НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; СхемаКомпоновкиДанных.Параметры.НачалоПериода.Значение = ПериодНачала; СхемаКомпоновкиДанных.Параметры.КонецПериода.Значение = Новый Граница(ПериодОкончания, ВидГраницы.Включая); //3. готовим макет КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаДокументов = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаДокументов); ДеревоДанных = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ДеревоДанных); ПроцессорВывода.Вывести(ПроцессорКомпоновки); Индекс = 0; Всего = ДеревоДанных.Количество(); //ДеревоДанных.ВыбратьСтроку(); Для Каждого СтрокаЗначений Из ДеревоДанных Цикл Если Не ЗначениеЗаполнено(СтрокаЗначений.Регистратор) Тогда Продолжить; КонецЕсли; Индекс = Индекс + 1; Регистратор = СтрокаЗначений.Регистратор; НаборЗаписей = РегистрыНакопления.ОборотыУниверсальныхПоказателей.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Значение = Регистратор; НаборЗаписей.Прочитать(); ВремДвижения = НаборЗаписей.Выгрузить(); Если УдалятьСтарыеДвижения Тогда МассивСтрок = ВремДвижения.НайтиСтроки(Новый Структура("Показатель",ПроизвольныйПоказатель)); Для Каждого СтароеДвижение Из МассивСтрок Цикл ВремДвижения.Удалить(СтароеДвижение); КонецЦикла; КонецЕсли; Запись = ВремДвижения.Добавить(); ЗаполнитьЗначенияСвойств(Запись,СтрокаЗначений); Запись.Показатель = ПроизвольныйПоказатель; Запись.Период = Регистратор.Дата; Запись.Активность = Истина; НаборЗаписей.Загрузить(ВремДвижения); НаборЗаписей.Записать(); КонецЦикла; КонецПроцедуры !!!! НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; Конечно, я могу настойки для МакетКомпоновки конечно хранить отдельно. Но хочу в СКД в настройках по умолчанию. | |||
| 14
    
        Defender aka LINN 13.03.12✎ 15:55 | 
        (13) МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
  Все, проблема решена? | |||
| 15
    
        Гот 13.03.12✎ 15:59 | 
        (14) Нет! Потому что там, где выполняется 
  МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); Нет "КомпоновщикНастроек". Настройки редактируются в другом месте, итить. Я не хочу хранить отдельно "КомпоновщикНастроек" и "СхемаКомпоновкиДанных". Я хочу настройки для для МакетКомпоновки редактировать в форме, и СОХРАНЯТЬ в СхемаКомпоновкиДанных.НастройкиПоУмолчанию. | |||
| 16
    
        Defender aka LINN 13.03.12✎ 16:01 | 
        (15) Странное желание, если честно. Сильно прямо в размерах сэкономишь, что ли?
  З.Ы. Типовая, али нет? | |||
| 17
    
        PVV65 13.03.12✎ 16:01 | 
        (15) Не понял. Ты хочешь хранить настройки между сеансами?     | |||
| 18
    
        Гот 13.03.12✎ 16:05 | 
        (16) Не экономлю. Ну, академический интерес. Если это невозможно - так не вопрос, я сохраню компоновщик настроек в хранилище, и для выполнения макета его получу из хранилища.
  Но, итить! Неужели нельзя настройки по умолчанию из компоновщика настроек сразу записать. То, что я могу обойти Настройки.Отбор, Настройки.ВыбранныеПоля - это понятно. А вот что бы Настройки в Настройки - нет? (17) Я настройки храню в хранилище значений, и по мере надобности они оттуда извлекаются. | |||
| 19
    
        Defender aka LINN 13.03.12✎ 16:10 | 
        (18) Какбе, логика системы проста - схема задает настройки по умолчанию в конфигураторе, которые можно потом поменять Компоновщиком в предприятии. Менять из предприятия то, что задается в конфигураторе - нелогично.
  В типовых есть готовая процедура СкопироватьЭлементы(). | |||
| 20
    
        Defender aka LINN 13.03.12✎ 16:11 | 
        +(19) Но если собираешься хранить прямо настройки в целом - храни лучше настройки компоновщика.     | |||
| 21
    
        Гот 13.03.12✎ 16:13 | 
        (20) Так и сделал - это логичнее, и удобнее. Спасибо.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |