Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия Следующая версия справа и слева
common_all:priemyraboty:ole [2018/08/19 18:48]
alexander
common_all:priemyraboty:ole [2018/12/06 14:35]
alexander
Строка 87: Строка 87:
  
 База8 = Неопределено;</​code>​ База8 = Неопределено;</​code>​
 +
 +
 +==== Как выполнить отчет на СКД через COM и получить данные отчета?​ (статья Vladimir A (wowik) на Infostart'​e) ====
 +
 +<​code> ​   МесяцРасчета = Дата(2018,​03,​01);​
 +    ​
 +    //​Програмное формирование отчета СКД ​   ​
 +    СхемаОст = Отчеты.АнализНачисленийРаботникамОрганизаций.ПолучитьМакет("​ОсновнаяСхемаКомпоновкиДанных"​);​
 +    ​
 +    КомпоновщикНастроекНастройки = Новый КомпоновщикНастроекКомпоновкиДанных;​
 +    КомпоновщикНастроекНастройки.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаОст));​
 +    КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаОст.НастройкиПоУмолчанию);​
 +    ​
 +    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("​НачалоПериода",​ НачалоМесяца(МесяцРасчета));​
 +    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("​КонецПериода",​ КонецМесяца(МесяцРасчета));​
 +    ​
 +    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;​
 +    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаОст,​ КомпоновщикНастроекНастройки.Настройки,​ , , Тип("​ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"​));​
 +    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;​
 +    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);​
 +    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;​
 +    ​
 +    ДанныеТЗ = Новый ТаблицаЗначений;​
 +    ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);​
 +    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ​  
 +
 +    ЗП = 0;
 +    ПодразделениеПроизводство = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("​000000005"​);​
 +    Для каждого СтрокаТаблицы из ДанныеТЗ Цикл
 +        Если не ЗначениеЗаполнено(СтрокаТаблицы.ВидРасчета) Тогда
 +            Продолжить;​
 +        КонецЕсли;​
 +        ​
 +        Если СтрокаТаблицы.ПодразделениеОрганизации = ПодразделениеПроизводство ​ Тогда
 +            ЗП = ЗП + СтрокаТаблицы.Начислено;​
 +        КонецЕсли;​
 +    КонецЦикла;</​code>​
 +
 +<​code> ​ //ЗУП - Com - соединение. Как подключиться сказано здесь - //​infostart.ru/​public/​164976/​
 +    ​
 +    МесяцРасчета = Дата(2018,​03,​01); ​  
 +    ​
 +    СхемаКомпоновкиДанных = ЗУП.Отчеты.АнализНачисленийРаботникамОрганизаций.ПолучитьМакет("​ОсновнаяСхемаКомпоновкиДанных"​);​
 +    ​
 +    КомпоновщикНастроекНастройки = ЗУП.NewObject("​КомпоновщикНастроекКомпоновкиДанных"​);​
 +    ИсточникДоступныхНастроекКомпоновкиДанных =  ЗУП.NewObject("​ИсточникДоступныхНастроекКомпоновкиДанных",​СхемаКомпоновкиДанных);​
 +    КомпоновщикНастроекНастройки.Инициализировать(ИсточникДоступныхНастроекКомпоновкиДанных);​
 +    КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ​   ​
 +    ​
 +    ​
 +    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("​НачалоПериода",​ НачалоМесяца(МесяцРасчета));​
 +    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("​КонецПериода",​ КонецМесяца(МесяцРасчета));​
 +    ​
 +    КомпоновщикМакета = ЗУП.NewObject("​КомпоновщикМакетаКомпоновкиДанных"​);​
 +    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,​ КомпоновщикНастроекНастройки.Настройки,,,​ЗУП.NewObject("​ОписаниеТипов",​ "​ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"​).Типы().Получить(0));​
 +    ПроцессорКомпоновкиДанных = ЗУП.NewObject("​ПроцессорКомпоновкиДанных"​);​
 +    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);​
 +    ​
 +    ПроцессорВывода = ЗУП.NewObject("​ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений"​);​
 +    ​
 +    ДанныеТЗ = ЗУП.NewObject("​ТаблицаЗначений"​);​
 +    ​
 +    ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);​
 +    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ​    
 +    ​
 +    ЗП = 0;
 +     ​ПодразделениеУИД =ЗУП.XMlСтрока(ЗУП.Справочники.ПодразделенияОрганизаций.НайтиПоКоду("​000000005"​));​
 +    Для каждого СтрокаТаблицы из ДанныеТЗ Цикл
 +        Если не ЗУП.ЗначениеЗаполнено(СтрокаТаблицы.ВидРасчета) Тогда
 +            Продолжить;​
 +        КонецЕсли;​
 +        ​
 +        Если ЗУП.XMlСтрока(СтрокаТаблицы.ПодразделениеОрганизации) = ПодразделениеУИД Тогда // сравнить элементы справочника в СОМ подключении можно только так
 +            ЗП = ЗП + СтрокаТаблицы.Начислено;​
 +        КонецЕсли;​
 +    КонецЦикла;</​code>​
  
 ==== Передача списка параметров запросу через COM (OLE) соединение ==== ==== Передача списка параметров запросу через COM (OLE) соединение ====