gifts2017

Вызов Анализ субконто из любого справочника

Опубликовал Павел Городилов (bxz) в раздел Программирование - Практика программирования

Вызвать из любого справочника Анализ субконто без изменений каждой формы очень просто.
Описание Алгоритма для 1С:Бухгалтерия предприятия 2.0.

У одного заказчика до перехода на 2.0 была возможность перехода практически из всех справочников в анализ субконто. И после обновления попросили эту возможность повторить.

Итак реализовано все очень просто. Надо добавить независимый регистр сведений с измерениями(ведущими) всех справочников, какие хочется видеть в анализа субконто. У меня их было немного(см. рис 1). 

Далее создать форму списка и копируем туда сл. код:

Процедура ОткрытиеФормыАнализСубконто(ЗначениеСубконто1) Экспорт
	ВидСубконто2          = Неопределено;
	Количество            = Ложь;
	ЗначениеСубконто2     = Неопределено;
	ВидСравненияСубконто1 = ВидСравненияКомпоновкиДанных.Равно;
	Если Метаданные.Справочники.Содержит(ЗначениеСубконто1.Метаданные()) И ЗначениеСубконто1.ЭтоГруппа Тогда
		ВидСравненияСубконто1 = ВидСравненияКомпоновкиДанных.ВИерархии;
	КонецЕсли;
	Если      ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.СтатьиЗатрат") Тогда        
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.СтатьиДвиженияДенежныхСредств") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиДвиженияДенежныхСредств;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.ПрочиеДоходыИРасходы") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПрочиеДоходыИРасходы;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.Склады") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.РасходыБудущихПериодов") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РасходыБудущихПериодов;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.ОбъектыСтроительства") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОбъектыСтроительства;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.ДоходыБудущихПериодов") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДоходыБудущихПериодов;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.НоменклатурныеГруппы") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.ОсновныеСредства") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.Контрагенты") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты;
		ВидСубконто2 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры;
	ИначеЕсли ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты;
		ВидСубконто2 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры;
		ЗначениеСубконто2 = ЗначениеСубконто1;
		ЗначениеСубконто1 = ЗначениеСубконто1.Владелец;
	ИначеЕсли  ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.Номенклатура") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура;
		ВидСубконто2 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады;
		Количество = Истина;
	ИначеЕсли  ТипЗнч(ЗначениеСубконто1) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
		ВидСубконто1 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СФПолученные;
	КонецЕсли;
	
	Отчет = Отчеты["АнализСубконто"].Создать();
	Отчет.РежимРасшифровки = Истина;
	Отчет.НачалоПериода = НачалоГода(ТекущаяДата());
	Отчет.КонецПериода  = ТекущаяДата();
	Если ТипЗнч(ЗначениеСубконто1) = Тип("СправочникСсылка.ПодразделенияОрганизаций") Тогда
		Отчет.Настроить();
		ТиповыеОтчеты.ДобавитьОтбор(Отчет.КомпоновщикНастроек, "Подразделение", ЗначениеСубконто1, ВидСравненияКомпоновкиДанных.ВИерархии);
	Иначе
		СписокВидовСубконто = Новый СписокЗначений;
		СписокВидовСубконто.Добавить(ВидСубконто1);
		Если НЕ ВидСубконто2 = Неопределено Тогда
			СписокВидовСубконто.Добавить(ВидСубконто2);
		КонецЕсли;
		Отчет.СписокВидовСубконто = СписокВидовСубконто.Скопировать();
		Отчет.Настроить();
		ТиповыеОтчеты.ДобавитьОтбор(Отчет.КомпоновщикНастроек, "Субконто1", ЗначениеСубконто1, ВидСравненияСубконто1);
		Если НЕ ЗначениеСубконто2 = Неопределено Тогда 
			ТиповыеОтчеты.ДобавитьОтбор(Отчет.КомпоновщикНастроек, "Субконто2", ЗначениеСубконто2, ВидСравненияКомпоновкиДанных.Равно);
		КонецЕсли;
	КонецЕсли;
	Для Каждого Показатель Из Отчет.ДанныеОтчета.ПоказателиОтчета Цикл
		Если Показатель.Ключ <> "БУ" И (НЕ Количество И Показатель.Ключ <> "Количество") Тогда
			Показатель.Значение.Значение = Ложь;
		КонецЕсли;
	КонецЦикла;
	ФормаОтчета = Отчет.ПолучитьФорму(, , Новый УникальныйИдентификатор());
	ФормаОтчета.Открыть();
	ФормаОтчета.ОбновитьОтчет();
	
КонецПроцедуры // ОткрытиеФормыАнализСубконто()

Процедура ПриОткрытии()
	Для Индекс = 0 По Отбор.Количество() - 1 Цикл
		ПолеОтбора = Отбор[Индекс];
		Элемент    = ПолеОтбора.Значение.Ссылка;
		Если ПустаяСтрока(Элемент)=Ложь Тогда
			ОткрытиеФормыАнализСубконто(Элемент);
			Прервать;
		КонецЕсли;
	КонецЦикла;
	ЭтаФорма.Закрыть();
КонецПроцедуры  // ПриОткрытии()

 

Вот и все. Во всех указаных в регистре справочниках в перейти появился пункт "Анализ субконто".

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей (sstar90) 29.04.14 11:18
Не плохо бы еще чтобы при открытии формы "Анализ субконто" вставала "Организация" по умолчанию
2. Макас (makas) 26.08.14 02:39
А почему нельзя релизовать "Анализ субкнто" как ВПФ без доработки конфигурации? Или я что-то не понял :-\
3. Павел Городилов (bxz) 26.08.14 10:56
(2) Идея в том что бы не через "Печать" переходить, а через меню "Перейти"
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа