Имя: Пароль:
1C
1С v8
"Поле объекта не обнаружено" в табличном документе
0 istenly
 
24.12.16
14:05
Заранее извиняюсь, если вопрос слишком глупый, но не могу понять как с этим справиться. Есть внешняя печатная форма трудового договора, выводящая табличный документ. Хочу использовать данную форму не только для трудового договора, но и для других документов. Формат дат, цифры окладов прописью, и т.п. задаю через Макет.Параметры. Например:
Макет.Параметры.ДатаРожденияРаботника = Формат(Выборка.ДатаРожденияРаботника,"ДЛФ=DD")),
Макет.Параметры.ТарифнаяСтавкаТекущаяПрописью = ЧислоПрописью(Выборка.ТарифнаяСтавкаТекущая, , "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2"). Но эти поля есть не во всех документах. И тут возникает ошибка - "Поле объекта не обнаружено". То есть либо формат дат и т.п. надо устанавливать где то в другом месте (где? как?), либо для каждой печатной формы удалять отсутствующие параметры, что лениво. Если можно было бы игнорировать отсутствие параметра в макете, или задавать формат где то еще, то в обработке достаточно было бы только поменять макет, и всё у тебя новый кадровый документ. Подскажите пожалуйста.
1 Lolipop
 
24.12.16
14:13
(0) не заработает, пока все руками не исправишь. Если поля нет, а ты к нему обращаешься - вылетит ошибка. Так что удаляй(так все делают). Либо смотри в синтаксис-помощнике "Попытка"
2 Lolipop
 
24.12.16
14:15
Можешь написать

Попытка
Макет.Параметры.ДатаРожденияРаботника = Формат(Выборка.ДатаРожденияРаботника,"ДЛФ=DD"));
Макет.Параметры.ТарифнаяСтавкаТекущаяПрописью = ЧислоПрописью(Выборка.ТарифнаяСтавкаТекущая, ,);
Исключение
КонецПопытки

НО ЭТО НЕПРАВИЛЬНО, при каждой ошибке заключать в конструкцию.
3 Lolipop
 
24.12.16
14:17
По-моему проще удалить руками код, который не нужен. Чем макеты менять.
4 istenly
 
24.12.16
23:50
Ну может как то можно выборку обработать? Процедуру какую-то сделать? Другие то поля нормально в макет попадают - хочу указываю их в макет, хочу не указываю - никаких ошибок.
5 istenly
 
25.12.16
01:04
Lolipop, спасибо, вариант с попыткой сработал. А почему это неправильно?
6 breezee
 
25.12.16
02:06
(5) Попытка - турдоемкая для системы операция + если кроме вас будет работать еще кто с кодом - офигеет от того, зачем этот код остался
7 h-sp
 
25.12.16
05:33
(4) выборку же вы сами делаете. Какие проблеиы сразу назвать поля в выборке правильно?
8 Лодырь
 
25.12.16
06:16
(7) Вы не оценили юмора вопроса: топикстартер имеет две различные печатные формы. И ему влом заполнять для каждой формы параметры. Поэтому он делает чтонибудь аля
ЗаполнитьЗначенияСвойств(Макет.Параметры, Выборка) и очень печалится, что параметр ТарифнаяСтавкаТекущаяПрописью не может заполнится, тк приходится вызывать функцию не работающую в запросе. А вызывать надо не всегда, тк параметр есть не у всех печ.форм. А проверять какой макет формируется - ему тоже влом, вот такой вот парадокс.
Как в анекдоте про кота наступившего на яйца.