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

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

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

Как программно изменить реквизит ТЧ документа "Коррекировка записей регистров" 8.2

1. yamawa 49 29.12.16 10:48 Сейчас в теме
Как программно прочитать реквизит табличной части документа "Корректировка записей регистров" версия 8.2 и изменить его?
Вознаграждение за ответ
Показать полностью
Найденные решения
7. dmt 29 29.12.16 11:45 Сейчас в теме
Имя регистра проще получить так:

ВЫБРАТЬ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
Остальные ответы
Сортировка: Древо
2. dmt 29 29.12.16 10:54 Сейчас в теме
Как и любой регистр:
 Запрос = Новый Запрос;
	НаборЗаписей = РегистрыСведений.СкидкиНаценкиНоменклатуры.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Регистратор.Установить(Док);
	НаборЗаписей.Прочитать();
	Для каждого зап Из НаборЗаписей Цикл
		
		зап.ДатаОкончания = '20151231';     
		
	КонецЦикла;
	НаборЗаписей.Записать();
Показать
3. yamawa 49 29.12.16 11:00 Сейчас в теме
(2) вы обращаешься непосредственно к регистру СкидкиНаценкиНоменклатуры, а в документе "Корректрировка записей регистров" несколько табличных частей и в каждой содержиться несколько регистров, как это реализовать?
4. yamawa 49 29.12.16 11:01 Сейчас в теме
т.е. мы не можем прописать конкретный регистр...
5. dmt 29 29.12.16 11:10 Сейчас в теме
Не сильно понял. Нужно понять какие именно регистры двигает КЗР? И в каком-то изменить движения? А как понять в каком?
6. yamawa 49 29.12.16 11:16 Сейчас в теме
(5)
Процедура УдалитьБитыеСсылки()
	Для Каждого Регистр Из Метаданные.РегистрыНакопления Цикл  				
		УдалитьБитыеСсылкиРН(Регистр.Имя);
	КонецЦикла;
КонецПроцедуры

Процедура УдалитьБитыеСсылкиРН(ИмяРегистра)
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	| Регистр.Регистратор
	|ИЗ
	| РегистрНакопления." + ИмяРегистра + " КАК Регистр
	|ГДЕ
	| Регистр.Регистратор = &ДокументКорректировки
	|
	|СГРУППИРОВАТЬ ПО
	| Регистр.Регистратор");
	
	Запрос.УстановитьПараметр("ДокументКоррекировки", ДокументКорректировки);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
		НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
		НЗ.Прочитать(); 		
		НЗ.Период=Дата("01.01.16");				
	КонецЦикла;
НЗ.Записать();
ДокументКорректировки.Записать();
КонецПроцедуры
Показать

Посмотрите так?
7. dmt 29 29.12.16 11:45 Сейчас в теме
Имя регистра проще получить так:

ВЫБРАТЬ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
8. yamawa 49 29.12.16 12:01 Сейчас в теме
спасибо,
у меня есть сомнение также по этому блоку модуля: в нем очевидно нет состыковки меджу записью полученной в запросе
Выборка.Следующий()
и записью полученной через метод
РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
как в этом случае быть?
Пока Выборка.Следующий() Цикл
        НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
        НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
        НЗ.Прочитать();         
        НЗ.Период=Дата("01.01.16");                
    КонецЦикла;
11. dmt 29 29.12.16 12:37 Сейчас в теме
(8) Как-то так:
Пока Выборка.Следующий() Цикл
        НЗ = РегистрыНакопления[Выборка.Имя].СоздатьНаборЗаписей();
        НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
        НЗ.Прочитать();         
        НЗ.Период=Дата("01.01.16");                
 КонецЦикла;


В выборке запрос из (7)
9. smirnova_a 29.12.16 12:09 Сейчас в теме
Сч01_01 = ПланыСчетов.Хозрасчетный.ОСвОрганизации;
Сч02_01 = ПланыСчетов.Хозрасчетный.АмортизацияОС_01;
Сч83_01 = ПланыСчетов.Хозрасчетный.ПриростСтоимостиИмуществаПоПереоценке;
ДБФ = Новый XBase;
ДБФ.ОткрытьФайл(ИмяФайла);
Если ДБФ.Открыта() Тогда
    Попытка
        НачатьТранзакцию();
        
  ДокКорректировка = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
        ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокКорректировка.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь);
        ДокКорректировка.Дата = Период;            

  НоваяСтрокаРегБух = ДокКорректировка.ТаблицаРегистровБухгалтерии.Добавить();
        НоваяСтрокаРегБух.Имя = "Хозрасчетный";
        НоваяСтрокаРегБух.Представление = "Журнал проводок (бухгалтерский учет)";
        
        ДокКорректировка.Записать();
        ДокКорректировкаСсылка = ДокКорректировка.Ссылка;
  
        НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
        НЗХозрасчетный.Отбор.Регистратор.Значение = ДокКорректировкаСсылка;
  
        ДБФ.Первая();
        Пока Не ДБФ.ВКонце() Цикл
            ОсновноеСредство = Справочники.ОсновныеСредства.НайтиПоКоду(СокрЛП(ДБФ.OS));
            Если ОсновноеСредство.Пустая() Тогда
                Сообщить("Не найдено ОС с кодом " + ДБФ.OS + "!", СтатусСообщения.Важное);
                Продолжить;
            КонецЕсли;

            ЗХозрасчетный = НЗХозрасчетный.Добавить();
            ЗХозрасчетный.Период = Период;
            ЗХозрасчетный.Регистратор = ДокКорректировкаСсылка;
            ЗХозрасчетный.Организация = Организация;
            ЗХозрасчетный.Содержание  = "Увеличение первоначальной стоимости ОС";
            ЗХозрасчетный.СчетДт = Сч01_01;
            ЗХозрасчетный.СчетКт = Сч83_01;     
            БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетДт, ЗХозрасчетный.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
            БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетКт, ЗХозрасчетный.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
            ЗХозрасчетный.Сумма = ДБФ.SumB;

            ЗХозрасчетный = НЗХозрасчетный.Добавить();
            ЗХозрасчетный.Период = Период;
            ЗХозрасчетный.Регистратор = ДокКорректировкаСсылка;
            ЗХозрасчетный.Организация = Организация;
            ЗХозрасчетный.Содержание  = "Увеличение накопленной амортизации ОС";
            ЗХозрасчетный.СчетДт = Сч83_01;
            ЗХозрасчетный.СчетКт = Сч02_01;     
            БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетДт, ЗХозрасчетный.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
            БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетКт, ЗХозрасчетный.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
            ЗХозрасчетный.Сумма = ДБФ.AmortB;

            ДБФ.Следующая();
        КонецЦикла;
        ДБФ.ЗакрытьФайл();
        НЗХозрасчетный.Записать();

        ЗафиксироватьТранзакцию();
    Исключение
        Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
        ОтменитьТранзакцию();
    КонецПопытки;
КонецЕсли;   
Показать
10. yamawa 49 29.12.16 12:12 Сейчас в теме
(9) у вас создать документ, а мне нужно уже готовый прочитать и изменить реквизит
12. yamawa 49 29.12.16 12:40 Сейчас в теме
Процедура УдалитьБитыеСсылки()
	
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	КорректировкаЗаписейРегистровТаблицаРегистровСведений.Имя КАК Имя
		|ИЗ
		|	Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровСведений КАК КорректировкаЗаписейРегистровТаблицаРегистровСведений
		|ГДЕ
		|	КорректировкаЗаписейРегистровТаблицаРегистровСведений.Ссылка = &ДокументКорректировки");
		Запрос.УстановитьПараметр("ДокументКорректировки",ДокументКорректировки);
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			НЗ = РегистрыСведений[Выборка.Имя].СоздатьНаборЗаписей();
			НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
			Нз.Прочитать();
			Для Каждого СтрокаРС Из НЗ Цикл
			СтрокаРС.Период = ДатаКоррекировки;
			КонецЦикла;
		КонецЦикла;
		НЗ.Записать();   
		ДокументКорректировки.ПолучитьОбъект().Записать();
////////////////////////////////////////////////////////////­///////////////////		
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя КАК Имя
		|ИЗ
		|	Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
		|ГДЕ
		|	КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &ДокументКорректировки");
		Запрос.УстановитьПараметр("ДокументКорректировки",ДокументКорректировки);
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			НЗ = РегистрыНакопления[Выборка.Имя].СоздатьНаборЗаписей();
			НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
			Нз.Прочитать();
			Для Каждого СтрокаРС Из НЗ Цикл
			СтрокаРС.Период = ДатаКоррекировки;
			КонецЦикла;
		КонецЦикла;
		НЗ.Записать();   
		ДокументКорректировки.ПолучитьОбъект().Записать();    		
		
КонецПроцедуры
Показать

Изменили текст модуля как вы сказали, теперь работает
13. yamawa 49 29.12.16 14:09 Сейчас в теме
большое вам спасибо! вознаграждение вам перечислили
14. zoomzd1234 22.01.17 19:07 Сейчас в теме
Можно на примере запроса как я делал..

Функция ПолучитьСтатусОборудования(Оборудование)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                    |   ДвижениеОборудованияСрезПоследних.Статус
                    |ИЗ
                    |   РегистрСведений.ДвижениеОборудования.СрезПоследних(, ШтрихКод = &ШтрихКод) КАК ДвижениеОборудованияСрезПоследних"
                    ;
    Запрос.УстановитьПараметр("ШтрихКод",Оборудование);
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда 
        //возврат статуса для оборудования, у которого нет еще данных о статусе
        //в регистре сведений
        возврат <<Перечисления.СтатусыОборудования.???>>
        //или
        возврат Неопределено;
    КонецЕсли; 
    
    СтатусОборудованияВыборка = Результат.Выбрать();
    СтатусОборудованияВыборка.Следующий();
    Возврат СтатусОборудованияВыборка.Статус;
    
КонецФункции
Показать
Оставьте свое сообщение

Вакансии

Удаленный бизнес-аналитик 1С
Санкт-Петербург
Временный (на проект)

Разработчик (эксперт) по направлению 1С:ЗУП 3
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Архитектор 1С
Санкт-Петербург
Полный день

Программист 1С
Москва
Полный день

Программист 1С
Москва
Полный день