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




Свежие комментарии