Каталог решений - Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

В наличии

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

Категория:

Описание

Для чего я решил написать данную статью? Изначально ставилась задача правильно и быстро получать наиболее полную информацию об организации, контрагентах в одних из самых ходовых конфигурациях — бухгалтерия предприятия и управление торговлей для применения этой информации при разработке печатных форм (и вообще в обработках).

Решено было сделать анализ — сравнение на возможность применения уже готовых функций в этих конфигурациях.

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

Отмечу сразу, это не функции БСП и отношения к библиотеке стандартных подсистем никакого не имеют.

Все что получилось — привожу ниже по тексту. Надеюсь, что данный материал будет вам полезен. Начну описание с одной из самых базовых функций:

 

Функция 1.

СведенияОЮрФизЛице(ЮрФизЛицо, ДатаПериода, ДляФизЛицаТолькоИнициалы = Истина, Знач БанковскийСчет = Неопределено)

Ничего не нужно сочинять — данная функция вернет вам структуру с информацией об организации или контрагенте на заданных период времени. Параметр ЮрФизЛицо — это может быть Организация либо Контрагент.

 

Возвращает структуру следующего содержания:

Сведения = Новый Структура("Представление, СокращенноеНаименование, ПолноеНаименование, НаименованиеДляПечатныхФорм,
		|КодПоОКПО, КодОКВЭД, ИНН, КПП, Телефоны, ЮридическийАдрес, Банк, БИК, КоррСчет, НомерСчета");

 

Данная функция в Управлении Торговли 11.4 находится в модуле ФормированиеПечатныхФорм.

В Бухгалтерии 3.0 находится в модуле БухгалтерскийУчетПереопределяемый и она немного отличается входящими параметрами от функции торговли СведенияОЮрФизЛице(ЮрФизЛицо, ДатаПериода, ДляФизЛицаТолькоИнициалы = Истина, Знач БанковскийСчет = Неопределено), но возвращает то же самое.

Полезная функция, запомните ее.

 

Следующая, одна из полезнейших готовых функций

 

Функция 2.

ОписаниеОрганизации(СписокСведений, Список = "", СПрефиксом = Истина)

Данная функция позволяет получить необходимые данные об организации, контрагенте или физическом лице. Возвращает описание строкой такого вида:

ОписаниеОрг =  ФормированиеПечатныхФорм.ОписаниеОрганизации(СписокСведений,,Истина);

 

В качестве основного параметра СписокСведений — это результат — структура предыдущей функции СведенияОЮрФизЛице.

Данная функция в Управлении Торговли 11.4 находится в модуле ФормированиеПечатныхФорм.

Возвращаемый результат такой:

//ИП ****** К.В., ИНН 42*****, 65*****, Кемеровская область - Кузбасс, Новокузнецк г., ул. С*****, дом ***, квартира ****, тел.: +7 (3843) ******

 

В Бухгалтерии 3.0 находится в модуле ОбщегоНазначенияБПВызовСервера — по возвращаемой строке немного отличается от функции УТ.

Так же применяешь функцию, не придумывая что-то свое.

 

Функция 3.

ПолучитьАдресИзКонтактнойИнформации(Объект, ТипАдреса = "", Дата = Неопределено) Экспорт

Получаем сразу адрес объекта, ТипАдреса может быть "Юридический", "Регистрации", "Фактический" на дату (у меня указана ТекущаяДата())

АдрКонтр = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Контр,"Фактический",ТекущаяДата());
Сообщить(АдрКонтр); //65****, Кемеровская область - Кузбасс, Новокузнецк г., ул. С****, дом ***, квартира ****

Для получения адреса из контактной информации в Бухгалетрии 3.0, я использую ранее упомянутую функцию ОписаниеОрганизации.

 

Функция 4.

ПолучитьТелефонИзКонтактнойИнформации(Объект) Экспорт

Получаем напрямую телефон с помощью функции Управления Торговлей 11.4

ТелКонтр = ФормированиеПечатныхФорм.ПолучитьТелефонИзКонтактнойИнформации(Контр);
Сообщить(ТелКонтр); // +7 (3843) ****

В глубинах бухгалтерии нарыты такие интересные функции для работы с телефонами:

В обработке ОбщиеОбъектРеглОтчетности. Функция приводит формату 89012345678. Это неэкспортная функция, придется копировать в свой код.

&НаСервере
Функция НормализованныйНомерТелефона(Знач Телефон) 
	
	Телефон = СокрЛП(Телефон);
	Телефон = СтрЗаменить(Телефон, " ", "");
	Телефон = СтрЗаменить(Телефон, "(", "");
	Телефон = СтрЗаменить(Телефон, ")", "");
	
	Если СтрНачинаетсяС(Телефон, "7") Тогда 
		Телефон = "8" + Сред(Телефон, 2);
	ИначеЕсли СтрНачинаетсяС(Телефон, "+7") Тогда 
		Телефон = "8" + Сред(Телефон, 3);
	КонецЕсли;
	Если СтрДлина(Телефон) < 11 Тогда
		Телефон = "";
	КонецЕсли;
	
	Возврат Телефон;
	
КонецФункции

так же есть "полуискусственная" функция, которая требует адаптации в вашем коде.

Здесь ЗаписиКонтактнойИнформации — это некая табличная часть, в которой содержится вся контактная информация.

&НаСервере
Функция ТелефонИзКонтактнойИнформацииПоВиду(ЗаписиКонтактнойИнформации, ВидКонтактнойИнформации)
	
	ПараметрыОтбора = Новый Структура;
	ПараметрыОтбора.Вставить("Вид", ВидКонтактнойИнформации); 
	
	СтрокиСТелефоном = ЗаписиКонтактнойИнформации.НайтиСтроки(ПараметрыОтбора);	
	Если СтрокиСТелефоном.Количество() > 0 Тогда 
		НомерТелефона = НормализованныйНомерТелефона(СтрокиСТелефоном[0].Представление);
		Возврат НомерТелефона;
	КонецЕсли;
	
	Возврат "";
				
КонецФункции

 

Функция 5.

ФорматСумм(Сумма, Валюта, ЧН = "", ЧРГ = "") Экспорт

Стандартная для конфигурации Управление торговлей функция форматирования сумм

Сообщить(ФормированиеПечатныхФорм.ФорматСумм(444441.44,Справочники.Валюты.НайтиПоКоду("643"),"0","."));
// 444.441,44 RUB

В бухгалтерии данная функция находится в модуле ОбщегоНазначенияБПВызовСервера

обращаться к ней нужно так: ОбщегоНазначенияБПВызовСервера.ФорматСумм(Сумма, Валюта, "0", ".");

 

Функция 6.

Функция СуммаРубКоп(Сумма, Валюта, ВалютаРегламентированногоУчета) Экспорт

Данная функция разбивает число "на входе" на валюты рег.учета.

РубКоп = ФормированиеПечатныхФорм.СуммаРубКоп(254.44, Справочники.Валюты.НайтиПоКоду("643") , Справочники.Валюты.НайтиПоКоду("643"));
Сообщить(РубКоп); // 254 руб. 44 коп.

 

Функция 7.

Функция КоличествоПрописью(Количество) Экспорт

Думаю, что данную функцию или что-то похожее придумывали все. Готовая функция работает вот так.:

КолвоПрописью =  ФормированиеПечатныхФорм.КоличествоПрописью(45444.55);
Сообщить(КолвоПрописью); // Сорок пять тысяч четыреста сорок четыре целых 55 сотых

Обращение в бухгалтерии:

КолвоПрописью =  ОбщегоНазначенияБПВызовСервера.КоличествоПрописью(45444.55);
Сообщить(КолвоПрописью); // Сорок пять тысяч четыреста сорок четыре целых 55 сотых

 

Функция 8.

СформироватьСуммуПрописью(Сумма, Валюта) Экспорт

Обращение к этой готовой функции из бухгалтерии

	СуммаПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(225.3, Справочники.Валюты.НайтиПоКоду("643"));
	Сообщить(СуммаПрописью); //Двести двадцать пять рублей 30 копеек

Функция выглядит вот и состоит из двух функций — вышеупомянуюто ФорматСумм и встроенной в платформу ЧислоПрописью

Функция СформироватьСуммуПрописью(Сумма, Валюта) Экспорт

	Если Валюта.ПараметрыПрописи = "" Тогда
		Возврат ФорматСумм(Сумма);
	Иначе
		Возврат ЧислоПрописью(Сумма, ,Валюта.ПараметрыПрописи);
	КонецЕсли;

КонецФункции

 

Функция 9.

ДанныеФизЛица(Организация, ФизЛицо, ДатаСреза, ФИОКратко = Истина) Экспорт

Находится в общем модуле ОбщегоНазначенияБПВызовСервера. Полезная готовая функция бухгалтерии, выводящая данные физического лица на период времени в виде структуры:

//     - Фамилия
//     - Имя
//     - Отчество
//     - Представление (Фамилия И.О.)
//     - Подразделение
//     - ВидДокумента
//     - Серия
//     - Номер
//     - ДатаВыдачи
//     - КемВыдан
//     - КодПодразделения

Выглядит она так — просто экспортирует функцию УчетЗарплаты.ДанныеФизическихЛиц(Организация, ФизЛицо, ДатаСреза, ФИОКратко)

Функция ДанныеФизЛица(Организация, ФизЛицо, ДатаСреза, ФИОКратко = Истина) Экспорт
	
	Возврат УчетЗарплаты.ДанныеФизическихЛиц(Организация, ФизЛицо, ДатаСреза, ФИОКратко);

КонецФункции

 

Функция 10.

ПолучитьФамилиюИмяОтчество(Фамилия = " ", Имя = " ", Отчество = " ", ФИОКратко = Истина) Экспорт

И последняя функция, о которой я хочу упомянуть в этой статье. Ее, думаю, тоже писали почти все. В бухгалтерии предприятия — она готовенькая и также находится в общем модуле ОбщегоНазначенияБПВызовСервера

Функция ПолучитьФамилиюИмяОтчество(Фамилия = " ", Имя = " ", Отчество = " ", ФИОКратко = Истина) Экспорт

	Если ФИОКратко Тогда
		Возврат ?(НЕ ПустаяСтрока(Фамилия), Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." +
				?(НЕ ПустаяСтрока(Отчество) ,
				Лев(Отчество,1)+".", ""), ""), "");
	Иначе
		Возврат ?(НЕ ПустаяСтрока(Фамилия), Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Имя +
				?(НЕ ПустаяСтрока(Отчество) , " " + Отчество, ""), ""), "");
	КонецЕсли;

КонецФункции

Данная функция возвращает фамилия, имя, отчество одной строкой. По-умолчанию — кратко.

 

Процедура 1 и Процедура 2.

Так же хочу упомянуть о двух готовых процедурах в УТ — это Процедура ВывестиЛоготипВТабличныйДокумент(Макет, ОбластьМакета, ИмяОбласти, Организация) Экспорт и Процедура ВывестиФаксимилеВТабличныйДокумент(Макет, ОбластьМакета, Организация, ПараметрыПечати = Неопределено) Экспорт.

Логика работы этих процедур практически одинакова — берется готовый макет, область и по передаваемой организации вставляется картинка:

Процедура ВывестиЛоготипВТабличныйДокумент(Макет, ОбластьМакета, ИмяОбласти, Организация)Экспорт
	
	ФайлКартинки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Организация, "ФайлЛоготип");
	
	Если Не ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ОбластьМакета.Рисунки, "Логотип") Тогда
		// Картинки логотипа в этой области макета нет.
		
		Если Макет.Области.Найти(ИмяОбласти+"Логотип") <> Неопределено Тогда
			
			// Проверка картинки логотипа в области с логотипом
			ОбластьМакетаЛоготип = Макет.ПолучитьОбласть(ИмяОбласти+"Логотип");
			Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ОбластьМакетаЛоготип.Рисунки, "Логотип") 
				И ЗначениеЗаполнено(ФайлКартинки) Тогда
				
				ОбластьМакета = ОбластьМакетаЛоготип;
			Иначе
				Возврат;
			КонецЕсли;
		Иначе
			Возврат;
		КонецЕсли;
		
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(ФайлКартинки) Тогда
		ОбластьМакета.Рисунки.Удалить(ОбластьМакета.Рисунки.Логотип);
		Возврат;
	КонецЕсли;
	
	ДвоичныеДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки);
	
	Если ТипЗнч(ДвоичныеДанныеФайла) = Тип("Картинка") Тогда
		Картинка = ДвоичныеДанныеФайла;
	ИначеЕсли ТипЗнч(ДвоичныеДанныеФайла) = Тип("ДвоичныеДанные") Тогда
		Картинка = Новый Картинка(ДвоичныеДанныеФайла);
	Иначе
		Картинка = Новый Картинка;
	КонецЕсли; 
	
	ОбластьМакета.Рисунки.Логотип.Картинка = Картинка;
	
КонецПроцедуры

Сразу можно обращаться к готовым процедурам в УТ:

ФормированиеПечатныхФорм.ВывестиФаксимилеВТабличныйДокумент(Макет, ОбластьМакета, Организация, )

 

Итак, на примере этих 10-ти готовых функций и 2-х процедур, опять предлагаю вам не придумывать ничего, а брать готовое — пользоваться наработками. Так же напомню, что данные функции не имеют отношения к БСП.

Спасибо, что дочитали данную статью до конца. Так же, прошу ознакомиться с моей предыдущей статьей Возможности работы со строками при помощи БСП, которые должен знать каждый программист.

has been added to your cart:
Оформление заказа