Как работает префиксация в УНФ3

Я потратил некоторое время, прежде чем понял, что новый номер документа устанавливается, если номер пустой. Поэтому чтобы изменить номер документа, нужно для начала очистить номер. Я то думал, что нужно как-то вызывать установку нового номера.

Поэтому я сделал, чтобы при изменении галочки БУ (добавленного признака отправки документа в бухгалтерию) сбрасывался номер:

Элемент.УстановитьДействие("ПриИзменении", "Подключаемый_ВыполнитьКоманду");

В модуле ПодключаемыеКомандыКлиент прописал обработку изменения поля флажка:

&Вместо("НачатьВыполнениеКоманды")
Процедура ОбменБУНачатьВыполнениеКоманды(Форма, Команда, Знач Источник)
	
	Если ТипЗнч(Команда) = Тип("ПолеФормы") И Команда.Имя = "ОбменБУ_БУ" Тогда
		Номер = ""; //Сбрасываем номер
		Возврат;
	КонецЕсли;
	
	ПродолжитьВызов(Форма, Команда, Источник);
КонецПроцедуры


Ну и в подписке УстановитьПрефиксИнформационнойБазыНомеруДокумента доработал, чтобы если номер документа зависит от галочки, для него подставлялся префикс организации:

&ИзменениеИКонтроль("УстановитьПрефикс")
Процедура ОбменБУУстановитьПрефикс(Источник, Префикс, УстановитьПрефиксИнформационнойБазы, УстановитьПрефиксОрганизации)
	
	ПрефиксИнформационнойБазы = "";
	ПрефиксОрганизации        = "";
	
	Если УстановитьПрефиксИнформационнойБазы Тогда
		
		ПриОпределенииПрефиксаИнформационнойБазы(ПрефиксИнформационнойБазы);
		
		ДополнитьСтрокуНулямиСлева(ПрефиксИнформационнойБазы, 2);
	КонецЕсли;
	
	Если УстановитьПрефиксОрганизации Тогда
		
		Если РеквизитОрганизацияДоступен(Источник) Тогда
			
			ПриОпределенииПрефиксаОрганизации(
				Источник[ИмяРеквизитаОрганизация(Источник.Метаданные())], ПрефиксОрганизации);
			// Если задана пустая ссылка на организацию.
			Если ПрефиксОрганизации = Ложь Тогда
				
				ПрефиксОрганизации = "";
				
			КонецЕсли;
			#Вставка     
			Если ЗначениеЗаполнено(Источник.Организация) И ОбменБУКэш.УстанавливатьБУПрефиксДокумента(Источник.Метаданные().Имя) Тогда
				БУПрефикс = ОбменБУКэш.ПолучитьБУПрефикс(Источник.Организация);
				Если ЗначениеЗаполнено(БУПрефикс) Тогда
					ПрефиксОрганизации = БУПрефикс;	
				КонецЕсли;
				
			КонецЕсли;
			#КонецВставки
			
		КонецЕсли;
		
		ДополнитьСтрокуНулямиСлева(ПрефиксОрганизации, 2);
	КонецЕсли;
	
	ШаблонПрефикса = "[ОР][ИБ]-[Префикс]";
	ШаблонПрефикса = СтрЗаменить(ШаблонПрефикса, "[ОР]", ПрефиксОрганизации);
	ШаблонПрефикса = СтрЗаменить(ШаблонПрефикса, "[ИБ]", ПрефиксИнформационнойБазы);
	ШаблонПрефикса = СтрЗаменить(ШаблонПрефикса, "[Префикс]", Префикс);
	
	Префикс = ШаблонПрефикса;
	
КонецПроцедуры
Функция УстанавливатьБУПрефиксДокумента(Имя) Экспорт
	УстановитьПривилегированныйРежим(Истина);        
	//ПОЗЖЕ Из константы! ВидыДокументовПрефиксации
	ВидыДокументов = "ПриходнаяНакладная,РасходнаяНакладная"; 
	Если Найти(ВидыДокументов + ",", Имя + ",") = 0 Тогда
		Возврат ложь;
	КонецЕсли;   
	
	
	Возврат истина;
	
КонецФункции  



Функция ПолучитьБУПрефикс(Организация) Экспорт
	УстановитьПривилегированныйРежим(Истина);       
	Префикс = "";
	//ПОЗЖЕ Из оранизации
	НаименованиеОрганизации = ВРЕГ(Строка(Организация));
	Если Найти(НаименованиеОрганизации, "ХИЖИНА") <> 0 Тогда
		Возврат "ХЖ";
	КонецЕсли;
	
	
	Возврат СокрЛП(Префикс);
	
КонецФункции  

Среда: УНФ 3.0.9.105

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *