![]() |
![]() |
![]() |
|
СКД: СКД: Программные настройки | ☑ | ||
---|---|---|---|---|
0
Demasiado
29.10.09
✎
13:29
|
Пишу отчет и делаю программную настройку схемы компоновки. Отчет простенький и есть у него три доступных поля которые нужно добавить программно - Склад, Номенклатура, Количество(Остатки).
Добавляю вот так: Настройки = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию; //////////////// ГруппировкаСклад = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаСклад.Использование = Истина; //Добавление полей наборов данных ПолеСклад = ГруппировкаСклад.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеСклад.Использование = Истина; ПолеСклад.Поле = Новый ПолеКомпоновкиДанных("Склад"); ВыбранныеПоляДляСклада = ГруппировкаСклад.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоляДляСклада.Использование = Истина; //ДобавитьПоляНабораДанных(); //////// //////////////// ГруппировкаНоменклатура = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаНоменклатура.Использование = Истина; //Добавление полей наборов данных ПолеНоменклатура = ГруппировкаНоменклатура.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеНоменклатура.Использование = Истина; ПолеНоменклатура.Поле = Новый ПолеКомпоновкиДанных("Номенклатура"); ВыбранныеПоляДляНоменклатуры = ГруппировкаНоменклатура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоляДляНоменклатуры.Использование = Истина; //ДобавитьПоляНабораДанных(); //////// //////////////// ГруппировкаКоличество = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаКоличество.Использование = Истина; //Добавление полей наборов данных ПолеКоличество = ГруппировкаКоличество.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеКоличество.Использование = Истина; ПолеКоличество.Поле = Новый ПолеКомпоновкиДанных("Количество"); ВыбранныеПоляДляКоличество = ГруппировкаКоличество.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоляДляКоличество.Использование = Истина; //ДобавитьПоляНабораДанных(); //////// Теперь сами вопросы: 1) Как мне указать что количество - это ресурс? (соответственно варианты функций к этому ресурсу - Сумма, Максимум, Минимум) 2) Сейчас порядок группировки в настройках выглядит вот так http://i028.radikal.ru/0910/b2/ebc8969135d3.jpg а хочется по правильному, вот так: http://i056.radikal.ru/0910/d7/9e08272b953f.jpg Что нужно исправить в коде? |
|||
1
Mort
29.10.09
✎
13:33
|
2) ГруппировкаНоменклатура = ГруппировкаСклад.Структура.Добавить()...
|
|||
2
Mort
29.10.09
✎
13:42
|
1) Кури ПоляИтога
|
|||
3
Demasiado
29.10.09
✎
13:43
|
модеры, перекиньте ветку в 8ку, в СКД. Почему то не в ту секцию попало
(2) сенку, сейчас попробую |
|||
4
Demasiado
29.10.09
✎
13:48
|
(2) нашел в примере решение своего вопроса 2) у хрусталевой, после твоего наведения.
|
|||
5
Demasiado
29.10.09
✎
13:48
|
вернее вопроса 1)
|
|||
6
Mort
29.10.09
✎
13:51
|
В руководстве разработчика 8.2 (не знаю как в 8.1) все гораздо яснее написано чем у Хрусталевой и сама глава по СКД меньше раз в 10, кури лучше его.
|
|||
7
Demasiado
29.10.09
✎
13:57
|
Да мне сейчас с этим отчетом разобраться, как с нуля без скд построить отчет полностью програмно, если объект данных - запрос. Я тогда смогу тут новичкам статью написать и сам разберусь гораздо лучше:)
|
|||
8
Mort
29.10.09
✎
14:02
|
Только вчера писал вывод результат запроса в ТЗ с помощью СКД. Вот, вдруг кому пригодится:
СКД = Новый СхемаКомпоновкиДанных; //1. Установить источник данных ИсточникДанных = СКД.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "Local"; ИсточникДанных.ТипИсточникаДанных = "Local"; //2. Определить набор данных - запрос Иерархический = Элемент.Метаданные().Иерархический; ИмеетВладельца = Элемент.Метаданные().Владельцы.Количество() > 0; СтрокаУсловий = ""; Если Иерархический Тогда СтрокаУсловий = " И Родитель = &Родитель"; КонецЕсли; Если ИмеетВладельца Тогда СтрокаУсловий = "И Владелец = &Владелец "; КонецЕсли; НаборДанных = СКД.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.Элементы. Если Вверх Тогда НаборДанных.Запрос = "ВЫБРАТЬ ПЕРВЫЕ 1 | Ссылка |ИЗ | Справочник.ВариантыИспользования |ГДЕ | РучнойПорядок < &ЗначениеПорядка " + СтрокаУсловий + " |УПОРЯДОЧИТЬ ПО | РучнойПорядок УБЫВ"; Иначе НаборДанных.Запрос = "ВЫБРАТЬ ПЕРВЫЕ 1 | Ссылка |ИЗ | Справочник.ВариантыИспользования |ГДЕ | РучнойПорядок > &ЗначениеПорядка " + СтрокаУсловий + " |УПОРЯДОЧИТЬ ПО | РучнойПорядок ВОЗР"; КонецЕсли; НаборДанных.Имя = "НаборДанных"; НаборДанных.ИсточникДанных = "Local"; Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); Поле.ПутьКДанным = "Ссылка"; Поле.Поле = "Ссылка"; //3. Установить настройки КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД)); Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Использование=Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка"); Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); Группировка.Использование = Истина; ВыбранноеПоле = Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Использование = Истина; Если Иерархический Тогда Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Родитель", Элемент.Родитель); КонецЕсли; Если ИмеетВладельца Тогда Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Владелец", Элемент.Владелец); КонецЕсли; Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ЗначениеПорядка", Элемент.РучнойПорядок); //4. Получаем макет компоновки Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = Компоновщик.Выполнить(СКД, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); //5. Выводим ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); Процессор = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТЗ = Процессор.Вывести(ПроцессорКомпоновки); |
|||
9
Demasiado
29.10.09
✎
15:04
|
а если я Параметр запроса прописываю не в Компоновщик настроек как у тебя, а в Схему компоновки? Могу ли я там сразу задать значение Параметра? Нужно ли мне включить этот параметр в НастрокаПоУмолчанию?
У меня сейчас только вот этот кусок кода Параметры = СхемаКомпоновкиДанных.Параметры.Добавить(); Параметры.Имя = "НаДату"; Параметры.Заголовок = "МойПериод"; Параметры.ТипЗначения = Новый ОписаниеТипов("Дата"); Параметры.Значение = ТекущаяДата();//предустановка И при попытке открытия "собранной" схемы компановки Конструктором схем вываливается вот такое сообщение. {Форма.ФормаОтчета(129)}: Ошибка при вызове метода контекста (Следующий): Ошибка компоновки данных ЭлементРезультата = ПроцессорКомпоновки.Следующий(); по причине: Ошибка компоновки данных по причине: Ошибка получения данных по причине: Ошибка создания набора данных "ОсновнойЗапрос" по причине: Ошибка при исполнении запроса набора данных по причине: {(8, 44)}: Не задано значение параметра "НаДату" РегистрНакопления.ТоварыНаСкладах.Остатки(<<?>>&НаДату, ) КАК ТоварыНаСкладахОстатки |
|||
10
Demasiado
29.10.09
✎
15:53
|
(9) снимается - разобрался
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |