Имя: Пароль:
1C
1С v8
СКД: полностью программное заполнение схемы
0 ixijixi
 
14.02.13
18:18
Есть хотелка формировать схему КД программно.

Например, есть такой отчет - РСВ-1. Он постоянно корректируется 1с-овцами. Мне из него нужен конкретный кусок - таблица 3.1 "Выплаты инвалидам". Я беру из него 2 текста запроса - ОсновнойЗапросТекст и ДоходыИнвалидовТекст. При открытии своего отчета пихаю
СхемаКомпоновкиДанных.НаборыДанных[0].Запрос = ПолучитьТекстЗапроса();
где функция ПолучитьТекстЗапроса() выдает те самые куски из регламентированного отчета. Все хорошо, ошибок нет, схема создается, но фишка в том, что нужно еще задать:
1. Ресурсы СКД
2. Параметры
3. Настройки
В противном случае отчет не формируется (выдает просто список физлиц).
Можно ли как-либо задать вышеуказанные 1, 2 и 3 ПРОГРАММНО?
З.Ы. В пользовательском режиме вообще-то можно настроить структуру и получить отчет, но хотелось бы полностью автоматизировать.
1 Fragster
 
гуру
14.02.13
18:24
Да, можно
2 Fragster
 
гуру
14.02.13
18:24
кто мы такие, чтобы тебе запрещать?
3 pumbaEO
 
14.02.13
18:25
4 GANR
 
14.02.13
18:32
(0) Чтобы увидеть что за СКД и настройки создает твой отчет сделай так (в толстом клиенте или обычном приложении):

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("D:\СКД_отчета.xml");  СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТвояСКД);
ЗаписьXML.Закрыть();

ЗаписьXML.ОткрытьФайл("D:\Настройки_отчета.xml");  СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТвойКомпоновщикНастроек.ПолучитьНастройки());
ЗаписьXML.Закрыть();

Затем открываешь конструктор СКД на закладке "Наборы данных" загружаешь "D:\СКД_отчета.xml" , а на закладке "Настройки" над окном "Структура отчета" загружаешь "D:\Настройки_отчета.xml".
5 UnsavedSoul
 
14.02.13
20:24
У ОтчетОбъект есть свойство КомпоновщикНастроек, из которого ты можешь получить результирующие настройки отчета (тип НастройкиКомпоновкиДанных), в свою очередь у настроек есть свойство Структура, которое и содержит структуру отчета. Это универсальная коллекция и ее можно править как и любую другую.
Вот пример кода:
Настройки = КомпоновщикНастроек.Настройки;
НоваяГруппировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
НоваяГруппировка.Использование = Истина;
ПолеГруппировки = НоваяГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");//здесь номенклатура - поле из набора данных
ПолеГРуппировки.Использование = Истина;

И так далее, с Синтакс-помощником и отладчиком разберешься, в соседнем окне можешь открыть декларативные настройки отчета и поэтапно добавлять элементы в графике и в коде.
6 Trier
 
14.02.13
20:36
Он постоянно корректируется 1с-овцами.

________________________________

Ура, термин "адинэсник" в прошло! теперь надо говорить  "адинэс-овца"
7 EvgeniuXP
 
14.02.13
21:05
хорошо звучит: 1С - ОВЦА :)
8 ixijixi
 
15.02.13
08:22
(4) Отличный совет!
Сравнил тексты запроса СКД и программного. Выяснилось, что они отличаются в части компоновки данных (sick! какое открытие!), например

ПОМЕСТИТЬ ВТСведенияОДоходах
ИЗ
   РегистрНакопления.СтраховыеВзносыСведенияОДоходах.Обороты(&парамНачалоГода {(&НачалоПериода)}, &парамКонецОтчетногоПериода {(&КонецПериода)}, МЕСЯЦ, Организация = &парамГоловнаяОрганизация {(Организация = &парамГоловнаяОрганизация)}) КАК СтраховыеВзносыСведенияОДоходахОбороты
{ГДЕ
   СтраховыеВзносыСведенияОДоходахОбороты.ФизЛицо.*,
   СтраховыеВзносыСведенияОДоходахОбороты.ОбособленноеПодразделение.* КАК Организация}

превращается в

ПОМЕСТИТЬ ВТСведенияОДоходах
ИЗ
   РегистрНакопления.СтраховыеВзносыСведенияОДоходах.Обороты(&парамНачалоГода, &парамКонецОтчетногоПериода, МЕСЯЦ, Организация = &парамГоловнаяОрганизация) КАК СтраховыеВзносыСведенияОДоходахОбороты

Таким образом, исходные тексты запроса из РСВ-1 нужно дополнять полями компоновки данных. Вопрос: не слишком ли это трудоемко - искать позиции фигурных скобок и вставлять их в нужную позицию нового запроса? Или применить какой-нибудь иной подход? Что скажете?
9 el-gamberro
 
15.02.13
08:38
(7) я недавно услышал: 1С-сер.
10 ixijixi
 
15.02.13
08:40
(9) не отвлекаемся, комментируем ))
11 ixijixi
 
15.02.13
10:51
ап