Вопрос: Как реализовать отображение разных печатных форм в зависимости от реквизита документа. К примеру если реквизит "Вид документа" = Основной - то одни печатные формы, если "Вид документа" = Дополнительный , то другие печатные формы.
Правильного способа в документации по БСП не нашел. Кто сталкивался, подскажите как лучше это реализовать?
вариант 1 - реализовать логику печати различного макета в зависимости от реквизита в самой команде печати. Т.е. пользователь видит одну команду, а алгоритм в зависимости от реквизита объекта формирует тот или иной макет (думаю наиболее оптимально).
вариант 2 - добавляем команды печати для разных документов, затем на самой форме отлавливаем их в элементах формы, и в зависимости от реквизита объекта, скрываем недопустимые.
вариант 3 - в командах печати делаем проверки на реквизит, и если он не подходит, то просто выводим сообщение пользователю типа "Не для этого типа документа в поле ягодка росла"
(1) Посмотрите, есть ли у добавляемой команды колонка УсловияВидимости - в 2.4 точно есть. Не уверен в 2.2 уже была или нет.
Если есть, то можно задать простые условия на равенство с помощью ДобавитьУсловиеВидимостиКоманды. И этот реквизит должен быть в списках с флагом Использовать всегда, чтобы даже при отключенной видимости был доступен.
(1)В типовых в процедуре ДобавитьКомандыПечати как раз и ставят условия к примеру на всякие константы и функциональные опции. По идее также можно сделать проверку на реквизит документа, но ДобавитьКомандыПечати - функция общая для списков и для документов, а судя по заданию видимость там может отличаться. 2-й момент это - что показывать если документ новый и реквизит определяется в ходе заполнения? Ничего, а после записи обновлять команды печати? Т.е. состав кнопок не определить - остается только менять сами процедуры печати, т.е. кнопку видно, но 1 документ печатается нормально, а второму пустой бланк, в зависимости от реквизита.
(5)Спасибо, оставлю две команды, так у меня реквизит всего два значения может иметь, а уже при нажатии обрабатывать и выводить сообщение в случае ошибки.
вариант 1 - реализовать логику печати различного макета в зависимости от реквизита в самой команде печати. Т.е. пользователь видит одну команду, а алгоритм в зависимости от реквизита объекта формирует тот или иной макет (думаю наиболее оптимально).
вариант 2 - добавляем команды печати для разных документов, затем на самой форме отлавливаем их в элементах формы, и в зависимости от реквизита объекта, скрываем недопустимые.
вариант 3 - в командах печати делаем проверки на реквизит, и если он не подходит, то просто выводим сообщение пользователю типа "Не для этого типа документа в поле ягодка росла"
(2)
интересно, как реализовать путнкт 2? в какой процедуре и как скрыть печ формы?
вариант 2 - добавляем команды печати для разных документов, затем на самой форме отлавливаем их в элементах формы, и в зависимости от реквизита объекта, скрываем недопустимые.