INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Кривенок Александра | Разработчик мобильных приложений | 1С-Рарус

«Монетизация. Как заставить приложение приносить прибыль раньше, чем вы потратите на него все деньги»

Кажется, что самое сложное в работе над тиражными приложениями - это этап разработки. Вроде бы "родили" конкурентоспособный продукт, и все , можно расслабиться, пить коктейли на пляже и ждать, пока пользователи выстроятся в очередь за подписками на ваше детище. Но нет...тут как раз и начинается все самое интересное. Оказалось, что так тщательно продуманная вами схема монетизации совсем не работает. Или работает, но далеко не так эффективно, как вы ожидали. Подписки не продаются, количество платников не растет, а график роста выручки похож на кардиограмму трупа. Жизнь - боль, а коктейли пьют ваши конкуренты. Так как же найти ее - оптимальную схему монетизации именно для вашего продукта? Как заставить приложение приносить деньги? За годы работы над Boss мы попробовали, наверное, все возможные варианты. Провели массу экспериментов. И кое-чему научились. - За что будем требовать деньги? Главные ошибки при выборе схемы монетизации. - Подписки vs покупки : кто круче? Основные плюсы и минусы обоих вариантов. - Триальный период. А надо ли? - Так за что же все таки готов платить ваш пользователь? Поиск оптимальной схемы. - Главное не спугнуть или как интерфейс влияет на рост продаж. Это и еще много чего интересного я расскажу в своем докладе. P.S. На основе реальных событий.

Как выполнить отчет на СКД через COM и получить данные отчета?

Программирование - Практика программирования

59
Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

Общий подход к созданию объектов через COM рассмотрен здесь

Задача. Нужно получить начисления по сотрудникам заданного подразделения из базы ЗиУП.

Так выглядит получение данных в обычном режиме:  

    МесяцРасчета = Дата(2018,03,01);
    
    //Програмное формирование отчета СКД    
    СхемаОст = Отчеты.АнализНачисленийРаботникамОрганизаций.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    КомпоновщикНастроекНастройки = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекНастройки.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаОст));
    КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаОст.НастройкиПоУмолчанию);
    
    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НачалоМесяца(МесяцРасчета));
    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КонецМесяца(МесяцРасчета));
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаОст, КомпоновщикНастроекНастройки.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    
    ДанныеТЗ = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);   

    ЗП = 0;
    ПодразделениеПроизводство = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000005");
    Для каждого СтрокаТаблицы из ДанныеТЗ Цикл
        Если не ЗначениеЗаполнено(СтрокаТаблицы.ВидРасчета) Тогда
            Продолжить;
        КонецЕсли;
        
        Если СтрокаТаблицы.ПодразделениеОрганизации = ПодразделениеПроизводство  Тогда
            ЗП = ЗП + СтрокаТаблицы.Начислено;
        КонецЕсли;
    КонецЦикла; 

  

Так выглядит получение данных через COM:   

  //ЗУП - Com - соединение. Как подключиться сказано здесь - //infostart.ru/public/164976/
    
    МесяцРасчета = Дата(2018,03,01);   
    
    СхемаКомпоновкиДанных = ЗУП.Отчеты.АнализНачисленийРаботникамОрганизаций.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    КомпоновщикНастроекНастройки = ЗУП.NewObject("КомпоновщикНастроекКомпоновкиДанных");
    ИсточникДоступныхНастроекКомпоновкиДанных =  ЗУП.NewObject("ИсточникДоступныхНастроекКомпоновкиДанных",СхемаКомпоновкиДанных);
    КомпоновщикНастроекНастройки.Инициализировать(ИсточникДоступныхНастроекКомпоновкиДанных);
    КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);    
    
    
    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НачалоМесяца(МесяцРасчета));
    КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КонецМесяца(МесяцРасчета));
    
    КомпоновщикМакета = ЗУП.NewObject("КомпоновщикМакетаКомпоновкиДанных");
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекНастройки.Настройки,,,ЗУП.NewObject("ОписаниеТипов", "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений").Типы().Получить(0));
    ПроцессорКомпоновкиДанных = ЗУП.NewObject("ПроцессорКомпоновкиДанных");
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    
    ПроцессорВывода = ЗУП.NewObject("ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений");
    
    ДанныеТЗ = ЗУП.NewObject("ТаблицаЗначений");
    
    ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);     
    
    ЗП = 0;
     ПодразделениеУИД =ЗУП.XMlСтрока(ЗУП.Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000005"));
    Для каждого СтрокаТаблицы из ДанныеТЗ Цикл
        Если не ЗУП.ЗначениеЗаполнено(СтрокаТаблицы.ВидРасчета) Тогда
            Продолжить;
        КонецЕсли;
        
        Если ЗУП.XMlСтрока(СтрокаТаблицы.ПодразделениеОрганизации) = ПодразделениеУИД Тогда // сравнить элементы справочника в СОМ подключении можно только так
            ЗП = ЗП + СтрокаТаблицы.Начислено;
        КонецЕсли;
    КонецЦикла;   

 

59

См. также

Автор запретил комментарии