Добрый день!! делаю ВПФ в бухе, все вообще нормально, все работает, кроме одного момента Код: "Всего оказано услуг на сумму: " + СуммаПрописью(Док.Итог("Всего")) + ", в т.ч.: НДС - "+ СуммаПрописью(Док.Итог("НДС")) + ?(глПризнакУчетаНалога(Контекст, "НП")=1,", налог с продаж - "+СуммаПрописью(Док.Итог("НП")), "") + "." это строка формируется в самом макете, при выводе на печать выдает ошибку Если ПустоеЗначение(Док.ВариантРасчетаНалогов) = 0 Тогда // выбран вариант {Глобальный модуль(6279)}: Поле агрегатного объекта не обнаружено (ВариантРасчетаНалогов) В отладчике все отрабатывает нормально и выводит значения. Как исправить ??
Хотя нет, вру. Когда отладчике проваливаюсь в Код: Функция глПризнакУчетаНалога(Док, Налог) Экспорт УчитыватьНалог = 1; Ставка = ПолучитьПустоеЗначение("Справочник.Ставки"+Налог); Если ПустоеЗначение(Док.ВариантРасчетаНалогов) = 0 Тогда // выбран вариант Ставка = Док.ВариантРасчетаНалогов.ПолучитьАтрибут("Ставка"+Налог); Если Ставка = глБезНалога(Налог) Тогда УчитыватьНалог = 0; КонецЕсли; КонецЕсли; Возврат УчитыватьНалог; КонецФункции // глПризнакУчетаНалога() Вычисляю Док = ГрупповойКонтекст после этой строки сразу выкидывает из процедуры и выводит макет с ошибкой ПустоеЗначение(Док.ВариантРасчетаНалогов) =0
Значит в отладчике открываем "Док" в "вычислителе выражений" и смотрим, какие у него есть реквизиты. Как вариант, смотрим "ТипЗначенияСтр(Док)" - может это контекст НЕ документа?
Вроде бы оно... Док.Док. ... но как быть? ТипЗначениеСтр(Док) = ГрупповойКонтекст Посмотреть вложение 12429
Так сложно сказать. Нужно разбираться, почему сюда передается это значение (в отладчике есть возможность перейти на точку входа, а потом там поставить точку останова). Как вариант, в самом начале функции проверять переданное значение на корректность, если передано значение, которое все таки можно обработать, то обрабатываем его, например: Код: ТекДок = Док; Если ТипЗначенияСтр(Док) = "ГрупповойКонтекст" Тогда ТекДок = Док.Док; КонецЕсли. Хотя в данном условии, лучше выяснить, какой вид документа передается как контекст, и использовать: Код: Док.Вид() = "[Нужный вид документа]"
Я просто не могу понять почему вообще так получилось? это ведь типовая конфа, я просто делаю ВПФ на основе обычной.
Пытаюсь пройтись отладчиком и посмотреть как формируется стандартная ПФ, но он не попадает в процедуру ПЕЧАТЬ. Я раз 10 пробовал по-всякому... всегда попадает на конец ф-ции ИтоговаяСтрока Посмотреть вложение 12439
Сохранил конфу ( хотя там все ок, изменений нет) , все закрыл , в т.ч. конфигуратор. Открыл конфигуратор, в модуле дока нашел процедуру печать. Снизу кнопка ОткрытьМодульВОтладчике - открыл, поставил точку останова вначале процедуры Печать. При открытии документа в пользовательском режиме программа снова останавливается в конце функции ИтоговаяСтрока и точка останова, которую я ставил на процедуру печать исчезла. Ну да ладно. Ставлю снова точку останова на процеду печать, жму кнопку Печать и снова тоже самое. Моя точка исчезает, а останавливается в конце ф-ции ИтоговаяСтрока
Точки останова можно ставить только на исполняемые операторы. Нельзя на пустые строки, на определение процедур и функций, переменных. По скриншету - ставь точку на "Таб = ...."
а на что вообще влияет вот это ? Код: глПризнакУчетаНалога(Контекст, "НП")=1, процедура, которая обрабатывает это Код: Функция глПризнакУчетаНалога(Док, Налог) Экспорт УчитыватьНалог = 1; Ставка = ПолучитьПустоеЗначение("Справочник.Ставки"+Налог); Если ПустоеЗначение(Док.ВариантРасчетаНалогов) = 0 Тогда // выбран вариант Ставка = Док.ВариантРасчетаНалогов.ПолучитьАтрибут("Ставка"+Налог); Если Ставка = глБезНалога(Налог) Тогда УчитыватьНалог = 0; КонецЕсли; КонецЕсли; Возврат УчитыватьНалог; КонецФункции // глПризнакУчетаНалога() Не могу пример состряпать, чтобы посмотреть различия... я убрал пока это из макета, результат вывода на печать типовой и моей впф одинаков.
Все можно закрывать! Перенес из глобального модуля ф-ю глПризнакУчетаНалога в обработку и заменил Код: Док.Варианта РасчетаНалогов на Код: Док.Док.Варианта РасчетаНалогов спс Warder
Судя по коду "глПризнакУчетаНалога" - возвращает 1, если в справочнике номенклатура установлено значение по переданному налогу (в данном случае "НП"), иначе ноль.