Увеличение количества дополнительных аналитик в БИТ.Финанс

25.01.24

Задачи пользователя - Адаптация типовых решений

Статья описывает опыт изменения конфигурации БИТ.Финанс с целью увеличения количества дополнительных аналитик (измерений).

Добрый день!

По умолчанию в БИТ.Финанс возможно использовать 7 аналитик по своему усмотрению, то есть задать им произвольный тип. Собственно, этого количества может оказаться мало. В данной статье опишу мой опыт увеличения количества дополнительных аналитик в БИТ.Финанс. Было принято решение добавить сразу 3 аналитики, так как жадным быть плохо.

Я изменил конфигурацию только по тем объектам/фрагментам кода, которые задействуются в контурах автоматизации нашей организации. Плюс этого в том, что при обновлении не придется делать лишние объединения. Минус в том, что часть программы остается как бы недоработанной. Если позже понадобится использовать какой-то вид документа, который ранее не использовали, то придется возвращаться к этой задаче и делать доработку.

Во-первых, изменения касаются реквизитов объектов. Необходимо добавить реквизиты во все объекты, которые вы используете. Можно это сделать копированием существующих реквизитов и не тратить время на типизацию. Вот некоторые из примеров:



 

 

Вот список объектов, куда я добавил новые аналитики:

Регистры накопления:

  • бит_ПланируемыйРасходДенежныхСредств
  • бит_ОборотыПоБюджетам
  • бит_КонтрольныеЗначенияБюджетов
  • бит_ПричиныРасхожденийБюджета
  • бит_ПланируемыеЗатраты
  • бит_ПланируемоеПоступлениеДенежныхСредств
  • бит_НезапланированныеРасходы
  • бит_мто_ПотребностиНоменклатурыАналитика
  • бит_мто_ПланируемаяЗакупкаНоменклатурыАналитика
  • бит_мто_НезапланированныеЗакупки
  • бит_ДвиженияДенежныхСредств
  • бит_ГрафикиДоговоров

 

Регистры сведений:

  • бит_ЗависимыеОбороты
  • бит_СрокиКонтроляПоБюджету
  • бит_ФормаВводаБюджетаЗависимыеОбороты
  • бит_ФормаВводаБюджетаБДДС
  • бит_НастройкиЗаполненияАналитикПоНазначениюПлатежа
  • бит_ДанныеПроизвольныхОтчетов

 

Документы:

  • бит_БюджетнаяОперация
  • бит_ЗаявкаНаРасходованиеСредств
  • бит_УстановкаКонтрольныхЗначений
  • бит_ФормаВводаБюджета
  • бит_УстановкаЗависимыхОборотов
  • бит_КорректировкаКонтрольныхЗначений
  • бит_КорректировкаБюджета
  • СписаниеСРасчетногоСчета
  • РасходныйКассовыйОрдер
  • ПриходныйКассовыйОрдер
  • ПоступлениеНаРасчетныйСчет

 

Обработки:

  • бит_СозданиеФормВводаБюджета
  • бит_ПодборДанныхБюджета

 

Кстати, список выбора доп.аналитик в назначении доп.аналитик определяется программно составом доп. аналитик в регистре накопления “бит_ОборотыПоБюджетам”.

Далее нужно дорабатывать код. Главный девиз: сделать по аналогии с имеющимися доп. аналитиками. По большей изменения в текстах запросов, где нужно опять же копипастом добавить новые аналитики. Обращайте внимание на группировки, соединения и т.п. в запросах по доп. аналитикам, чтобы ничего не сломать.

Самый обыкновенный пример:

 

 

Изменений было действительно много, вот некоторые места, где изменен код:

 

Общие модули:

бит_Казначейство

бит_КонтрольИсполненияБюджета

 

Общие формы:

бит_РедактированиеДополнительныхАналитик

 

Документы:

бит_БюджетнаяОперация - модуль менеджера

бит_ЗаявкаНаРасходованиеСредств - модуль объекта + модуль менеджера

бит_УстановкаКонтрольныхЗначений - модуль менеджера

бит_КорректировкаКонтрольныхЗначений - модуль менеджера

бит_ФормаВводаБюджета - модуль объекта + модуль менеджера


Также в коде много где содержится “магическое число” 7, несмотря на то что в самом БИТ.Финансе есть функция, возвращающая количество доп измерений. Таких мест я нашел 15. Исправляется довольно просто:

 

// Неправильно:
//Для Индекс = 1 По 7 Цикл
// Правильно:
Для Индекс = 1 По бит_МеханизмДопИзмерений.ПолучитьМаксимальноеКоличествоДополнительныхИзмерений() Цикл
	Если НЕ ЗначениеЗаполнено(СтрокаРаспределения["Аналитика_" + Индекс]) Тогда
		СтрокаРаспределения["Аналитика_" + Индекс] = Неопределено;				
	КонецЕсли; 
КонецЦикла; 

 

Соответственно, нужно сделать, чтобы функция возвращала число 10 вместо стандартных 7. Думаю, с этим проблем не возникнет.

Следующий шаг это доработка форм. В некоторых формах элементы и реквизиты доп. аналитик добавляются программно, так что не придется добавлять их на форму самостоятельно. Это, например, в “Форма ввода бюджета”.

А в “Заявка на расходование ДС” нужно будет прописать добавление реквизитов и элементов вручную. Не забыть повесить обработчики. При этом, могут быть реквизиты формы которые в конфигураторе не заданы, а добавляются программно в коде бит финанса, затем как-то используются. Фрагмент кода, который я добавил в заявку:

// При чтении документа вызывается эта процедура и определяет доступность элементов раньше,  
// чем выполняется обработчик "ПриСозданииНаСервере". Поэтому элементы добавляем здесь.
// Кроме этого вызывается после записи.
&НаСервере
&Перед("ПодготовитьФормуНаСервере")
Процедура пари_ПодготовитьФормуНаСервере()
	
	МассивРеквизитов = ПолучитьРеквизиты("Объект.Распределение");
	ДобавляемыеРеквизитыУжеЕсть = Ложь;
	Для Каждого Реквизит Из МассивРеквизитов Цикл
		Если Реквизит.Имя = "Аналитика_8Доступность" Тогда
			ДобавляемыеРеквизитыУжеЕсть = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;              
	Если НЕ ДобавляемыеРеквизитыУжеЕсть Тогда

		Тип = Новый ОписаниеТипов("Булево");
		Путь = "Объект.Распределение";
		ДобавляемыеРеквизиты = Новый Массив;
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Аналитика_8Доступность", 	Тип, Путь));
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Аналитика_9Доступность", 	Тип, Путь));
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Аналитика_10Доступность", 	Тип, Путь));
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Аналитика_8Проверять", 		Тип, Путь));
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Аналитика_9Проверять", 		Тип, Путь));
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Аналитика_10Проверять", 		Тип, Путь)); 
		ИзменитьРеквизиты(ДобавляемыеРеквизиты); 
				
		НовыйЭлемент = Элементы.Добавить("Аналитика_8", Тип("ПолеФормы"), Элементы.ГруппаЗаявкаПравоОднострочныйДокумент);
		НовыйЭлемент.Вид 				= ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.ПутьКДанным 		= "Объект.Аналитика_8";
		НовыйЭлемент.УстановитьДействие("ПриИзменении",	"Аналитика_8ПриИзменении"); 
		НовыйЭлемент.УстановитьДействие("НачалоВыбора",	"АналитикаНачалоВыбора"); 
		НовыйЭлемент.УстановитьДействие("Очистка", 		"АналитикаОчистка"); 
		НовыйЭлемент.УстановитьДействие("АвтоПодбор", 	"АналитикаАвтоПодбор"); 
		
		НовыйЭлемент = Элементы.Добавить("Аналитика_9", Тип("ПолеФормы"), Элементы.ГруппаЗаявкаПравоОднострочныйДокумент);
		НовыйЭлемент.Вид 				= ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.ПутьКДанным 		= "Объект.Аналитика_9";
		НовыйЭлемент.УстановитьДействие("ПриИзменении",	"Аналитика_9ПриИзменении"); 
		НовыйЭлемент.УстановитьДействие("НачалоВыбора",	"АналитикаНачалоВыбора"); 
		НовыйЭлемент.УстановитьДействие("Очистка", 		"АналитикаОчистка"); 
		НовыйЭлемент.УстановитьДействие("АвтоПодбор", 	"АналитикаАвтоПодбор"); 
		
		НовыйЭлемент = Элементы.Добавить("Аналитика_10", Тип("ПолеФормы"), Элементы.ГруппаЗаявкаПравоОднострочныйДокумент);
		НовыйЭлемент.Вид 				= ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.ПутьКДанным 		= "Объект.Аналитика_10";
		НовыйЭлемент.УстановитьДействие("ПриИзменении",	"Аналитика_10ПриИзменении"); 
		НовыйЭлемент.УстановитьДействие("НачалоВыбора",	"АналитикаНачалоВыбора"); 
		НовыйЭлемент.УстановитьДействие("Очистка", 		"АналитикаОчистка"); 
		НовыйЭлемент.УстановитьДействие("АвтоПодбор", 	"АналитикаАвтоПодбор"); 
		
		НовыйЭлемент = Элементы.Добавить("РаспределениеАналитика_8", Тип("ПолеФормы"), Элементы.Распределение);
		НовыйЭлемент.Вид 				= ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.ПутьКДанным 		= "Объект.Распределение.Аналитика_8";
		НовыйЭлемент.УстановитьДействие("ПриИзменении",	"РаспределениеАналитикаПриИзменении"); 
		НовыйЭлемент.УстановитьДействие("НачалоВыбора",	"РаспределениеАналитикаНачалоВыбора"); 
		НовыйЭлемент.УстановитьДействие("Очистка", 		"РаспределениеАналитикаОчистка"); 
		НовыйЭлемент.УстановитьДействие("АвтоПодбор", 	"РаспределениеАналитикаАвтоПодбор"); 
		
		НовыйЭлемент = Элементы.Добавить("РаспределениеАналитика_9", Тип("ПолеФормы"), Элементы.Распределение);
		НовыйЭлемент.Вид 				= ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.ПутьКДанным 		= "Объект.Распределение.Аналитика_9";
		НовыйЭлемент.УстановитьДействие("ПриИзменении",	"РаспределениеАналитикаПриИзменении"); 
		НовыйЭлемент.УстановитьДействие("НачалоВыбора",	"РаспределениеАналитикаНачалоВыбора"); 
		НовыйЭлемент.УстановитьДействие("Очистка", 		"РаспределениеАналитикаОчистка"); 
		НовыйЭлемент.УстановитьДействие("АвтоПодбор", 	"РаспределениеАналитикаАвтоПодбор"); 
		
		НовыйЭлемент = Элементы.Добавить("РаспределениеАналитика_10", Тип("ПолеФормы"), Элементы.Распределение);
		НовыйЭлемент.Вид 				= ВидПоляФормы.ПолеВвода;
		НовыйЭлемент.ПутьКДанным 		= "Объект.Распределение.Аналитика_10";
		НовыйЭлемент.УстановитьДействие("ПриИзменении",	"РаспределениеАналитикаПриИзменении"); 
		НовыйЭлемент.УстановитьДействие("НачалоВыбора",	"РаспределениеАналитикаНачалоВыбора"); 
		НовыйЭлемент.УстановитьДействие("Очистка", 		"РаспределениеАналитикаОчистка"); 
		НовыйЭлемент.УстановитьДействие("АвтоПодбор", 	"РаспределениеАналитикаАвтоПодбор"); 
	КонецЕсли;
КонецПроцедуры


// Обработчики:
&НаКлиенте
Процедура Аналитика_8ПриИзменении(Элемент)
	
	СинхронизироватьРеквизитыИОтобразитьБюджетСПаузой();
	
КонецПроцедуры

&НаКлиенте
Процедура Аналитика_9ПриИзменении(Элемент)
	
	СинхронизироватьРеквизитыИОтобразитьБюджетСПаузой();
	
КонецПроцедуры

&НаКлиенте
Процедура Аналитика_10ПриИзменении(Элемент)
	
	СинхронизироватьРеквизитыИОтобразитьБюджетСПаузой();
	
КонецПроцедуры


В отчетах добавление простое. В схему компоновки добавить поля, настроить по аналогии с имеющимися аналитиками. Не забудьте добавить настройки компоновщика данных, так как в примере ниже в СКД выключено автозаполнение.

 


 


 

 

Таким образом аналитики будут добавлены, в том числе их корректные заголовки в пользовательском режиме будут формироваться программно.

Есть изменения и в таких местах:


 

С помощью этой схемы осуществляется подбор лимитов в корректировку контрольных значений.

После всех изменений необходимо тщательно протестировать основные сценарии использования программы, дабы не сильно упасть лицом в грязь после переноса на прод. Вероятней всего в первое время вы всё же столкнетесь с багами разной критичности. Однако после их устранения всё будет работать как часы)

Всем удачи!

БИТ.Финанс битфинанс доп дополнительные аналитики назначение измерения разрезы

См. также

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    4170    14    1    

32

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    5994    14    5    

24

Печатные формы Адаптация типовых решений Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    6706    73    10    

30

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5267    dimanich70    15    

22

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    6825    dimanich70    9    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Бубузяка 62 30.01.24 10:57 Сейчас в теме
Если вы зарегистрированный пользователь, напишите в поддержку и предоставьте список мест с магическим числом "7". Думаю, вам пойдут на встречу и поставят вызов функции. Так у вас уменьшится количество правок.
Оставьте свое сообщение