1с форматированный документ толькопросмотр не работает
1C8.2.14.519 УП Добрый вечер. Справочник имеет реквизит Текст (Строка) в которой содержится HTML-текст. На форме элемента справочника имею реквизит HTMLТекст типа ФорматированныйДокумент.
Вставляю в него HTML-текст:
Отображается HTML текст, полученный из реквизита объекта справочника как положено. Закинул в командную панель стандартную команду этого реквизита "Печать" и "Предварительный просмотр". Но вот при печати, режутся края. Предполагаю, по умолчанию поля слева, права, вверху и внизу равны 0. В предварительном просмотре это можно отрегулировать, но постоянно это делать не удобно. Как программно установить параметры печати как для ТабличногоДокумента?
Пробовал не заморачиваться с Форматированным Документом и печатал содержимое поля Объект.Текст имеющего вид на форме "Поле HTML документа" командой
Но тоже режутся края. Может в этом случае кто-нибудь программно форматировал параметры печати?
P.S. Было замечено, что при установки полей печати при предварительном просмотре в случае для ФорматированногоДокумента, эти параметры сохранялись в неявном виде и при печати во втором случае из поля HTML документа.
1. обнови платформу. очень уж старенькая
2. Примеры программной установки параметров печати
Зададим для печати принтер, отличный от установленного по умолчанию.
Используем свойство Табличного документа «ИмяПринтера» которое позволяет задать имя принтера известного в системе, на который бедет выводится печать.
Установим количество копий печатуемого документа программно.
Установив признак разбора по копиям для документа.
Если размер бумаги нестандартен (Custom & произвольный размер бумаги ) то укажем значения высоты и ширины страницы (в мм):
Программно управляем вывводом колонтиттула и его содержимым в 1С через свойства «ВерхнийКолонтитул» и «НижнийКолонтитул».
Если свойство АвтоМасштаб имеет значение Ложь или еще не заданно то можно указать значение масштабирования в процентах (через свойство «МасштабПечати»).
Отправим на печать табличный документ непосредственно на принтер.
Для ТабличногоДокумента понятно. Не понятно как для Форматированного Документа.
Для печати форматированного документа используется Internet Explorer, из 1С ,вроде как ,к нему не обратиться :
только в предварительном просмотре можно настроить ручками
Я создала внешнюю печатную форму Акта сверки. И пытаюсь сделать так, чтобы при нажатии в сформированной печатной форме на поле Документ открывался этот документ.
В параметр расшифровки добавила ДокументСсылка и в коде ему присваиваю значение.
Также прописала, что ТабличныйДокумент.ТолькоПросмотр=Истина, НО! Он он все равно открывается доступным для редактирования.
Подскажите пожалуйста, что я делаю не так?
вообще то этим - "ТабличныйДокумент.ТолькоПросмотр=Истина", вы устанавливаете запрет редактирования ячейки с расшифровкой и не более того, а документ в любом случае откроется доступным для редактирования если у пользователя есть на него права
Ну она тоже редактируется к сожалению. Если в Таблица - Вид - Редактирование нажать, то расшифровка открывается. А вот как бы прописать, чтобы автоматом она в этом режиме открывалась?
(5) Vikt0r0vna, табличный документ показывается через команду ТабДок.ПОказать() или через какой-то типовой механизм? Смысл - посмотрите (в отлдадчике перед непосредственным выводом) действительно ли ТабличныйДокумент.ТолькоПросмотр=Истина.
Иногда, при ряде причин, он слетает.
Вообще все как-то странно. Вместо Таб.Показать - типовой механизм. Я только поставлю галочку Защита, один раз сформирую печатную форму и она слетает. Хотя и в коде прописала Защита=Истина.
Отладить обработку не могу. Видимо надо как в 8.1 было. Сначала создавать форму, на ней СсылкаНаОбъект, переписывать обработку и только тогда она в отладчике будет по ошибке останавливаться. Так как когда я ее подключаю во внешние печатные формы, она не останавливается на точках останова. Или я не так как-то мыслю?
Это моя первая внешняя печатная форма на 8.2, до этого только на 8.1 работала.
(7) Vikt0r0vna, "типовой механизм" это видимо какая-то процедура общего модуля (или что-то типа того). Так залезте в него и посмотртие что там происходит.
ЗЫ. Кслову сказать, это Таб.ПОказать() - "типовой механизм" платформы, а остальное - это "процедуры конфигурации" :)
Посмотрю сейчас. Я уже кучу отчетов и печатных форм открыла и все они открываются доступными для редактирования, а когда в Таблица - Вид - Редактирование заходишь, то расшифровки во всех отчетах начинают работать. Может это где-то в правах? Или общих каких-то настройках?
Здравствуйте.
Проблема такая , пользователь открывает форму документа у которого "ЭтаФорма.ТолькоПросмотр=Истина". Все элементы формы заблокированы , кроме Табличной части. По-идее , должно блокироваться все и у все остальные документы в базе ведут себя правильно.
Подскажите , в какую сторону копать ?
В синтаксиспомощнике написано что свойство "ТолькоЧтение" формы блокирует запись всех реквизитов формы в не зависимости от значения их свойства "ТолькоЧтение"
Ну как вру . только что получил нагоняй от руководства за эти художества .
В базе (самописная) присутствует механизм утверждения документов. При открытии документа , если он утвержден , форме ставится признак "ТолькоЧтение".
Везде работает , а именно в этом документе ТЧ не блокируется и пользователи нашли это и радостно подправили утвержденные документы.
А я тут сижу и все это вру .
С чего взял что после "ЭтаФорма.ТолькоПросмотр=Истина" нет еще кода который именно ТЧ разблокирует для редактирования?
(11) По двум причинам :
1. В описании (и полазив по форумам) понял что эта настройка игнорит все остальные "ТолькоПросмотр" других реквизитов.
2. Проверил в отладчике эту и другие формы .
ТАк стоп. Что значит пользователи меняли данные? Если в шапке все кнопки должны быть неактивные? У них даже нет возможности перезаписать документ.
Или твоя ТЧ - это записи регистра сведений?
(23) Нет . они меняют ТЧ (она ж доступна)
потом жмут "ESC" и соглашаются что нужно сохранить.
никаких команд и обработчиков.
(30) не можешь, про Форма.ТолькоПросмотр у тебя уже все элементы формы заблокированы.
А в (0) у тебя у формы явно нет этого признака.
Скорее всего, элементам по-отдельности установили ТолькоПросмотр=Истина, оставив твою ТЧ доступной.
Открой ужо отладчик.
(38) Никто там ничего не делал . я сам писал этот блок. и на 99% документов в базе он работает. только два вида дают осечку и именно по табличной части. остальные реквизиты шапки прекрасно блокируются
(45) че 25 ? Воткни кнопку на форму, ей в формулу Сообщить(ЭтаФорма,ТолькоПросмотр) результат в студию. Это, ежелис отладчиком не знаком
(42) Подписки для таких вещей при разработке я старался не использовать.
Но и возвращаясь к началу , при установке форме режима "ТолькоПросмотр" в Истину настройки реквизитов формы которые "изменяют данные" блокируются безоговорочно.
(51) С этим я не спорю .. зато бывают ошибки программистов , незнанию каких-то нюансов и тому подобные вещи.
(54) Нет тут никаких нюансов.
Все эти "Не верю" и "чудес не бывает" от того, что все наблюдали только так: Ставишь ЭтотОбъект.ТолькоПросмотр = Истина; и получаешь желаемый эффект на всех элементах формы, с учетом (8).
Несколько версий подряд наблюдал за багом - если элементы внутри свертываемой группы, то при разворачивании они становятся доступными.
У тебя две формы, табличные части в которых ведут себя по-разному. Тебе и сравнивать чем они отличаются. Перенеси все на одну форму, упрощай, сравнивай, пока не найдёшь что-то что повлияет на таб. часть, которая не хочет становится только просмотром.
Вот это вот скорее всего. Однажды установленная фишка "ТолькоПросмотр = Истина" вполне возможно "перевознемогается" где-то "ТолькоПросмотр = Ложь". Вот и весь перетц до копейки.
Смотреть подписки, код от ПрисозданииНаСервере до ПриОткрытии. Это, конечно долго, не интересно. Но такая СеЛяВа у программиста. Для ускорения можно попытаться заюзать замер производительности.
Автор, сделай как в (46). И нажми на кнопку. Когда твоя форма якобы заблокирована при доступной ТЧ документа
(57) Я ж писал что я так и делал .
Если вы мне не верите на слово , то зачем тогда все это . ведь я могу и скрин зафотошопить .
(56) Переназначения в коде нет . я побежался отладчиком , потом делал как советовал уважаемый ЁПРСТ , правда еще до того как сюда отписаться . у формы признак "ТтолькоПросмотр" установлен в истину .
(62) Реквизит , это "Объект" который какбы "Основной" , у него априори "Изменяет данные" установлен в истину ..
(44) Хочу увидеть, где ты совершил банальную ошибку и чего не понимаешь, потому как чудес не бывает, тебе уже говорили. Но ты упорно продолжаешь верить в правильность своего кода и настроек, поэтому я делаю вывод: ты либо тролль, либо непробиваемо тупой.
(59) > ведь я могу и скрин зафотошопить ..
Вот и сделай, обидчивый ты наш. Покажи нам, например, значение флага "Изменяет данные".
(59) твое слово чего-то стоит? Тебя задело, что требуют доказательств твоей правоты, что ты все сделал правильно, а виновата платформа 1С? Сядь поплачь.
Здравствуйте.
Проблема такая , пользователь открывает форму документа у которого "ЭтаФорма.ТолькоПросмотр=Истина". Все элементы формы заблокированы , кроме Табличной части. По-идее , должно блокироваться все и у все остальные документы в базе ведут себя правильно.
Подскажите , в какую сторону копать ?
В синтаксиспомощнике написано что свойство "ТолькоЧтение" формы блокирует запись всех реквизитов формы в не зависимости от значения их свойства "ТолькоЧтение"
Ну как вру . только что получил нагоняй от руководства за эти художества .
В базе (самописная) присутствует механизм утверждения документов. При открытии документа , если он утвержден , форме ставится признак "ТолькоЧтение".
Везде работает , а именно в этом документе ТЧ не блокируется и пользователи нашли это и радостно подправили утвержденные документы.
А я тут сижу и все это вру .
С чего взял что после "ЭтаФорма.ТолькоПросмотр=Истина" нет еще кода который именно ТЧ разблокирует для редактирования?
(11) По двум причинам :
1. В описании (и полазив по форумам) понял что эта настройка игнорит все остальные "ТолькоПросмотр" других реквизитов.
2. Проверил в отладчике эту и другие формы .
ТАк стоп. Что значит пользователи меняли данные? Если в шапке все кнопки должны быть неактивные? У них даже нет возможности перезаписать документ.
Или твоя ТЧ - это записи регистра сведений?
(23) Нет . они меняют ТЧ (она ж доступна)
потом жмут "ESC" и соглашаются что нужно сохранить.
никаких команд и обработчиков.
(30) не можешь, про Форма.ТолькоПросмотр у тебя уже все элементы формы заблокированы.
А в (0) у тебя у формы явно нет этого признака.
Скорее всего, элементам по-отдельности установили ТолькоПросмотр=Истина, оставив твою ТЧ доступной.
Открой ужо отладчик.
(38) Никто там ничего не делал . я сам писал этот блок. и на 99% документов в базе он работает. только два вида дают осечку и именно по табличной части. остальные реквизиты шапки прекрасно блокируются
(45) че 25 ? Воткни кнопку на форму, ей в формулу Сообщить(ЭтаФорма,ТолькоПросмотр) результат в студию. Это, ежелис отладчиком не знаком
(42) Подписки для таких вещей при разработке я старался не использовать.
Но и возвращаясь к началу , при установке форме режима "ТолькоПросмотр" в Истину настройки реквизитов формы которые "изменяют данные" блокируются безоговорочно.
(51) С этим я не спорю .. зато бывают ошибки программистов , незнанию каких-то нюансов и тому подобные вещи.
(54) Нет тут никаких нюансов.
Все эти "Не верю" и "чудес не бывает" от того, что все наблюдали только так: Ставишь ЭтотОбъект.ТолькоПросмотр = Истина; и получаешь желаемый эффект на всех элементах формы, с учетом (8).
Несколько версий подряд наблюдал за багом - если элементы внутри свертываемой группы, то при разворачивании они становятся доступными.
У тебя две формы, табличные части в которых ведут себя по-разному. Тебе и сравнивать чем они отличаются. Перенеси все на одну форму, упрощай, сравнивай, пока не найдёшь что-то что повлияет на таб. часть, которая не хочет становится только просмотром.
Вот это вот скорее всего. Однажды установленная фишка "ТолькоПросмотр = Истина" вполне возможно "перевознемогается" где-то "ТолькоПросмотр = Ложь". Вот и весь перетц до копейки.
Смотреть подписки, код от ПрисозданииНаСервере до ПриОткрытии. Это, конечно долго, не интересно. Но такая СеЛяВа у программиста. Для ускорения можно попытаться заюзать замер производительности.
Автор, сделай как в (46). И нажми на кнопку. Когда твоя форма якобы заблокирована при доступной ТЧ документа
(57) Я ж писал что я так и делал .
Если вы мне не верите на слово , то зачем тогда все это . ведь я могу и скрин зафотошопить .
(56) Переназначения в коде нет . я побежался отладчиком , потом делал как советовал уважаемый ЁПРСТ , правда еще до того как сюда отписаться . у формы признак "ТтолькоПросмотр" установлен в истину .
(62) Реквизит , это "Объект" который какбы "Основной" , у него априори "Изменяет данные" установлен в истину ..
(44) Хочу увидеть, где ты совершил банальную ошибку и чего не понимаешь, потому как чудес не бывает, тебе уже говорили. Но ты упорно продолжаешь верить в правильность своего кода и настроек, поэтому я делаю вывод: ты либо тролль, либо непробиваемо тупой.
(59) > ведь я могу и скрин зафотошопить ..
Вот и сделай, обидчивый ты наш. Покажи нам, например, значение флага "Изменяет данные".
(59) твое слово чего-то стоит? Тебя задело, что требуют доказательств твоей правоты, что ты все сделал правильно, а виновата платформа 1С? Сядь поплачь.
Запускаем два сеанса.
про документы.
1. Открываем в одном сеансе форму, в коде которой отрабатывает Форма.ТолькоПросмотр(1);
Если во втором сеансе открыть форму аналогично - то фиг вам, "объект заблокирован"
2. Если во втором сеансе открыть лупой "просмотр документа" с панели инструментов - то норм, откроется.
.
получается что
в 1 - объект жестко связан с формой, объект блокируется, а форма сама по себе имеет флаг 1/0
в 2 - форма документа "оторвана" от объекта, объект не блокируется.
.
вот.
и еще есть режим ОткрытьФорму(Док,параметр,РежимОткрытия=1) - интересно в этом случае форма откроется по 1 или 2?
.
и как располагая контекстом формы открытой только на просмотр узнать - она открыта с блокировкой объекта или нет?
Стучаться в метод Блокировка().
Вопрос порожден написанием ВПФ, которая модифицирует реквизиты документа, в т.ч. лежащие на форме. ВПФ должна корректно работать в разных режимах, и когда в ВПФ передан ГрупповойКонтекст (и форма доступна и только на просмотр) и когда в ВПФ передан документ. В любом случае -на до изменить реквизиты документа. Если форма открыта - то в результате - показать измененную форму.
Открыта форма, только на просмотр. Как узнать в этом же сеансе - форма открыта с блокировкой или без?
.
вроде вот так работает:
Забодался, не получается.
.
Есть родительская форма документа открытая, только на просмотр
Как сделать так, чтобы открыть из ВПФ другую модальную обработку диалоговую, которая изменяет реквизиты исходного документа и показать форму родительского документа в режиме просмотра с уже измененными реквизитами
Формекс есть, 1С++ есть, можно переоткрывать обработки прочее. Должно по возможности все "прозрачно", без лишних морганий.
.
.
И еще вопрос - как программно открыть форму документа (и соотв.справочника тоже, один механизм наверное) - в таком же режиме, как открывается на просмотр с панели инструментов на просмотр "лупой".
(6) Как я понимаю, ты либо открыл на просмотр (лупой), либо на изменение - и тогда нет разницы есть ТолькоПросмотр() или нет.
Наверное, перехватывать при открытии формы, закрывать ее и после закрытия открывать ВПФ
(8) "ты либо открыл на просмотр (лупой), либо на изменение" - нет, есть еще третий вариант ОткрытьФорму(,,1) или в открытой форме Форма.ТолькоПросмотр(1) - и еть большая разница как открыто на просмотр - лупой или программно.
(8) "как программно открыть форму документа (и соотв.справочника тоже, один механизм наверное) - в таком же режиме, как открывается на просмотр с панели инструментов на просмотр "лупой".." - этот вопрос к проблеме с формадокумента+ВПФ не относится, это отдельный вопрос
а если нужно узнать заблокирован ли объект этой формой или какой-то другой, то да: "Стучаться в метод Блокировка()"
на счет побочного эффекта от Форма.ТолькоПросмотр(0) вот
(20) Вообще не понимаю зубоскальства к Чу.
За себя скажу: за 25 лет в семерке - дофига осталось черных зон, с которыми не разбирался в виду ненужности. Ещё больше серых зон, которые просто обходил стороной, где можно было обойтись: быстро сделал, все довольны. Плюс приобретённые серые зоны - 15 лет назад разобрался, а потом ни разу не пригодилось, вот и стёрлось.
"по лупе" - то же самое что ОткрытьФорму с 1 в параметре ТолькоПросмотр.
"показать измененный" - тупо ОткрытьФорму с 1 в параметре ТолькоПросмотр (если эта форма была открыта ранее - она переоткроется т.е. обновится в соответствии с данными и активизируется)
В результате с божей помощью. АнедейАндреича итд, по сущетсу разобрался. Все ожидаемо и логично.
Но есть один затык..
исходные условия теста.
- документ записан.
- открытая форма документа.
тест
1. ОткрытьФорму(,,0) + Форма.ТолькоПросмотр(1) - Объект заблокирован, только просмотр, ВПФ из контекста формы, изменяем реквизиты контекста. Контекст.Форма.Обновить()+Контекст.Записать() - все ок, форма только на просмотр и реквизиты изменены. Все как хотелось.
2. ОткрытьФорму(,,0) - Объект заблокирован, форма доступна редактирование, ВПФ из контекста формы, изменяем реквизиты контекста. Контекст.Форма.Обновить()+Контекст.Записать() - все ок, форма только на доступна на изменение, реквизиты изменены. все как хотелось.
2. ОткрытьФорму(,,1)+Форма.ТолькоПросмотр(1) - Объект свободен (логично), только просмотр, ВПФ из контекста формы изменяем реквизиты контекста. Контекст.Форма.Обновить()+Контекст.Записать() - ничего не ругается, все типа ок, форма только на просмотр и реквизиты НЕ изменены (что как бы тоже логично). Тут как бы понятно, но не то что хотелось.
4. ОткрытьФорму(,,1) - Объект свободен (логично), только просмотр, ВПФ из контекста формы изменяем реквизиты контекста. Контекст.Форма.Обновить()+Контекст.Записать() - ничего не ругается, все типа ок, форма только на просмотр и реквизиты НЕ изменены (что как бы тоже логично). Тут как бы понятно, но не то что хотелось.
5. Лупа "на просмотр" - Объект свободен (логично), только просмотр, ВПФ из контекста формы изменяем реквизиты контекста. Контекст.Форма.Обновить()+Контекст.Записать() - ничего не ругается, все типа ок, форма только на просмотр и реквизиты НЕ изменены (что как бы тоже логично). Тут как бы понятно, но не то что хотелось.
6. Лупа "на просмотр"+Форма.ТолькоПросмотр(1) - Объект свободен (логично), только просмотр, ВПФ из контекста формы изменяем реквизиты контекста. Контекст.Форма.Обновить()+Контекст.Записать() - ничего не ругается, все типа ок, форма только на просмотр и реквизиты НЕ изменены (что как бы тоже логично). Тут как бы понятно, но не то что хотелось.
итого: при изменении реквизитов контекста формы
- обновление реквизитов на форме (и в объекте) ПРОИСХОДИТ когда объект заблокирован, в пп.1,2 - то что надо
- обновление реквизитов на форме (и в объекте) НЕ происходит когда объект свободен, в пп.2-6 - это не устраивает.
Хочется, значит, в пп.2-6 - в ВПФ проверяем свободен ли объект- документ текущего контекста формы (это сумеем), и если объект-документ свободен -
тогда реквизиты объекта меняем не через контекст формы, а через объект (это тоже сумеем). ОК.
. Но после изменения объекта - хочется актуализировать отображение формы, открытой ранее на просмотр, для отображения изменившихся реквизитов.
И тут вот затык - сделать как из ВПФ переоткрыть форму в режиме просмотра?
И что важно - без правки типовой конфы?!
Всем спасибо, кто участвует.
Ёпрсту - по ссылкам знамо вестимо, но у себя не юзаю. Первое - потрому что блокирвоки на документах я уже не помню когда были, в оперативной работе это вообще несущественно. у мняе девки доки открывают на ввод редко, а если и открывают - то непересекающиеся друг с другом по сферам ответсвенности. И быстрый поиск - хотел впилить, даже пробовал, но тоже парктически неактуально ввиду отствуифя значительной ручной работы с ассортиментом
(22) ну, Добропом я по жизни, это на мисте Злопом. А добропом еще на ИС в районе 2008 г. была публикация учета черных бонусов в ppt,в финише слайдов добропом был.. ;-)
(31) что мешает в ПриОткрытии() влепить
Только, на сколько я помню, если в пофигураторе режим редактирования установить только на просмотр (всегда , без лупы) то ты её на редактирование ужо никак не откроешь
(34) ээээ, не втыкаю.
я хочу из DGA - закрыть форму материнского (для ВПФ) контекста (форма документ ана просмотр) и из ВПФ же открыть эту материнскую форму чтобы увидет сделанные изменения.. - как?
(35) не, он тогда по энтеру будет на просмотр открываться, а через шифт+энтер - на редактирование. я так кстати и делаю у ларечников часто. сразу уходить несколько проблем с задним числом.
Да и в 7.7..обычное дело было, для изменения реквизитов дока, открывать тупо форму обработки, которая эммулирует форму самого дока и потом через ссылку дока правит его реквизиты.
Если ты хочешь делать это через контекст открытой формы, то ничто не мешает хранить хоть все значения атрибутов формы где-то еще при открытии впф, потом измененные значения пихай куда угодно, старый контекст закрой, открой новую форму с нужным режимом и перекопируй все атрибуты туда.
(41) "старый контекст закрой, открой новую форму" - ТУТ МНЕ НУЖЕН ТОТ ЖЕ САМЫЙ ОБЪЕКТ-ДОКУМЕНТ-" с нужным режимом " - ну и как это сделать при вызове DGA из "старого контекста". где-то туплю, не получается - потому как форма старого контекста закроется (ДокумКонтекст.Форма.Закрыть()) только тогда, когда ВПФ завершит работу процедуры ПриОткрытии(), а переносить код в после открытия чтобф моргало ченить ненужное на экране - не хочется
(31): ". Но после изменения объекта - хочется актуализировать отображение формы, открытой ранее на просмотр, для отображения изменившихся реквизитов. " -- так уже ж отвечено! см.(28), 2-й абзац.
в сухом остатке:
(46)+: именно так - ничего не надо закрывать, тупо такое же ОткрытьФорму - обновление ранее открытой формы без блыманий и с обновлением.
(0) Бегло прочитал, но так и не понял суть проблемы (может потому что прочитал бегло ;) ).
У меня в ВПФ fr54_ПечатьЧека.ert (у тебя она есть) делается примерно так:
Если передан Контекст, то автоматически обновятся данные на форме документа без всяких "переоткрытий" и "блымканий".
Но в типовой ТИС есть косяк для документа Реализация при передаче данных в ВПФ - вместо Контекст передается ТекущийДокумент() и поэтому возникает блокировка при попытке записать данные через ВПФ в текущий документ.
Решается так (у меня описано в ИзмененияДляКонфигурацииTIS987_54FZ.txt):
Читайте также: