О форматировании прочерка в шаблонах документов УНФ

Пользователь жалуется, что установил формат, чтобы при нулевом НДС в Word-шаблоне прописывался ноль, в строках прописывается нормально, а в общем итоге прочерк:

Прочерк добавляется в модуле менеджера заказа ПриВыводеТаблицыЗапасыПараметровШаблона:

Стек при этом выглядит весьма непросто:

Искать, в чем разница между строками и итогом не стал, сделал заплатку в модуле менеджера, как уже раньше делал:

&После("ДобавитьПараметрыЗаказаПокупателяВШаблон")
Процедура дор_ДобавитьПараметрыЗаказаПокупателяВШаблон(НазначениеШаблона, ПараметрыШаблона)
	МетаданныеЗаказа = Метаданные.Документы.ЗаказПокупателя;
	ШаблоныПечатиОфисныхДокументов.ДобавитьПараметрШаблона(ПараметрыШаблона, "ЗаказПокупателя.ВалютаДокумента", МетаданныеЗаказа.Реквизиты.ВалютаДокумента.Синоним);
КонецПроцедуры


&После("ЗаполнитьЗначенияПараметровЗаказа")
Процедура дор_ЗаполнитьЗначенияПараметровЗаказа(ОбъектПечати, ОписаниеПараметров, ДополнительныеПараметры)
    //Осипов 2021-04-12
    Для Каждого Эл ИЗ ОписаниеПараметров Цикл
        Если Эл.Ключ = "ЗаказПокупателя.ВалютаДокумента" Тогда
            Если ЗначениеЗаполнено(Эл.Формат) Тогда
                Эл.Значение = СокрЛП(ОбъектПечати.ВалютаДокумента[Эл.Формат]);
            Иначе
                Эл.Значение = СокрЛП(ОбъектПечати.ВалютаДокумента.НаименованиеПолное);
            КонецЕсли;
            //Прервать;            
		ИначеЕсли Эл.Ключ = "ЗаказПокупателя.СуммаНДС" Тогда
			//Если хотели ноль, а получили прочерк, заменяем на ноль 26.03.04
			Если Эл.Значение = "-" И Найти(Эл.Формат, "ЧН='0'") <> 0 Тогда
				Эл.Значение = "0";                                        
			КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Но это не помогло. Пришлось отлаживать процедуру ВывестиЗначениеПараметраДокумента модуля ШаблоныПечатиОфисныхДокументов:

Тут-то я и обнаружил, что значение успело обратно поменяться на прочерк:

Где оно поменялось, искать не стал, в итоге перенес заплатку уже в момент вывода в Word:

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

	Если ИмяПараметра = "ЗаказПокупателя.СуммаНДС" Тогда
		//Если хотели ноль, а получили прочерк, заменяем на ноль 26.03.04
		Если ОписаниеПараметра.Значение = "-" И Найти(ОписаниеПараметра.Формат, "ЧН='0'") <> 0 Тогда
			Возврат "0";   
		КонецЕсли;
	КонецЕсли;
	
	Результат = ПродолжитьВызов(ОписаниеПараметров, ИмяПараметра);
	
	Возврат Результат;
	
КонецФункции

Кто так пишет, 1с?! Где однообразие, стройность?

image_pdfimage_print

fixin

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

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

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

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