|
СКД. Установка НастройкиПоУмолчанию | ☑ | ||
---|---|---|---|---|
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) Так и сделал - это логичнее, и удобнее. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |