Текстовый документ с ограниченным изменением

Автор Вадим, 17 ноября 2010, 14:45

0 Пользователи и 1 гость просматривают эту тему.

Вадим

Здравствуйте!
Пожалуйсто помогите.
Нужно создать текстовый документ содержащий часть не подлежащую изменению и часть для ввода личных данных.
Пример-договор.
В договоре текст является неизменной частью, а данные о подрядчике вносятся в установленных местах (желательно с автоматическим определением длинны строки).

JohnSUN

И тебе не хворать, тёзка! Пожалусто помогём  ;D

Такая задача имеет множество решений, но главное в них всех - защита от изменения части документа (вверху форума есть ссылка на Часто задаваемые вопросы - так это вот оттуда)

Самое красивое (хотя и не самое быстрое и простое!) решение:
Берем готовый документ со всем нужным форматированием. Это чтобы больше о форматировании не думать.
Перед самой первой строчкой документа вставляем новый лист (Вставка-Разрыв-Разрыв страницы).
На этой чистой странице пишем большими буквами
Заполни таблицу — получи договор или пакет документов или премию или еще что-то по смыслу
и ниже рисуем таблицу такого вида:
НазваниеЗначение
Условия договора
НомерДоговора__
Первая строчка - заголовки колонок (для тех, кто будет потом этим всем пользоваться)
Вторая строчка - название группы параметров. Ведь в договоре, например, этих групп должно быть несколько: "Условия договора", "Исполнитель", "Заказчик"... Это чтобы не лазить по всей таблице вверх-вниз, когда нужно поменять только одно-два значения,
В общем, это все оформительские заморочки. А вот дальше уже интереснее
Начиная с третьей строчки таблицы описываем те самые "личные данные", которые нужны будут по всему тексту документа.
В первой колонке пишем название пользовательской переменной (без пробелов), а во вторую - вставляем поле!
То есть, как в нашем примере, написали одним словом НомерДоговора, выделили его (хоть Ctrl+Home, хоть двойным щелчком мыши), скопировали в буфер обмена (Ctrl+Ins или Ctrl+C или еще как), стрелкой вправо перепрыгнули во вторую колонку, нажали Ctrl+F2 (открыли окошко ввода поля).
Там выбрали закладку Переменные, в тип поля отметили Поле пользователя (это нужно сделать один раз, в следующие разы так оно и будет открываться).
В Название вставляем из буфера обмена наш "НомерДоговора", а в Значение пишем чего-то умолчальное. Я обычно пишу пачку подчеркиваний - если перед печатью значение не изменят, то получат "пустографку".
Формат нужно в зависимости от типа данных в поле. Для номера договора можно, например, указать Текст - что введут, то и получат.
Теперь Enter (Вставить) и Esc (Закрыть).
Tab чтобы начать новую строку...
Трудно только первые три-четыре поля создать, дальше легче.
Когда все переменные параметры будущего документа уже будут собраны в таблицу, нужно будет пройтись по тексту документа и вставить поля на их места.
Находим номер договора (старый, отформатированный), выделяем, жмем те же самые Ctrl+F2, в списке Выбор дважды щелкаем на НомерДоговора.
Что приятно - окно Поля можно даже не закрывать, просто переключаться между ним о окном документа.
Когда закончишь расставлять поля по всему документу - еще проще: выделяешь всё от первой до последней строчки, из меню Вставка выбираешь пункт Раздел, ставишь птичку на Защита от изменений-Защищено.
Сохраняешь.

Теперь чтобы создать новый договор достаточно в таблице на первой странице дважды щелкнуть на нужном поле и ввести нужное значение - по всему документу они поменяются.

Ну, при печати первую страницу можно игнорировать...

Как-то так, в общем
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Вадим


Aville

почитал, очень интересные я тут идеи увидел...
но вот как бы придумать, что-то с правильностью колонтитулов, а именно, я вот в верхний пишу: договор/номер/тип/дата, а в нижний: страница/страниц и почти всегда в PDF вывожу. как мне сделать правильные колонтитулы?
--
Cегодня у меня: LibreOffice | Версия: 4.2.4.2 | ID сборки: 420m0(Build:2) на Ubuntu 14.04 LTS

kompilainenn

Цитата: Aville от  1 июля 2014, 19:07но вот как бы придумать, что-то с правильностью колонтитулов, а именно, я вот в верхний пишу: договор/номер/тип/дата, а в нижний: страница/страниц и почти всегда в PDF вывожу. как мне сделать правильные колонтитулы?
вставьте поля в колонтитулы...принцип тот же самый
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

kompilainenn

мне тут пришел в голову вопрос поинтереснее:
есть у меня шаблон договора, в котором есть условия на все случаи жизни. можно ли сделать так, чтобы
1) по условию, заданному в первой странице (беру пример JohnSUN), некоторый текст УДАЛЯЛСЯ из шаблона, естественно так, чтобы пробелов вместо удаленного текста не оставалось?
2) один из абзацев заполнялся на выбор из нескольких вариантов, которые уже набраны на первой странице и доступны для включения в шаблон?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

#6
Всё верно, хороший договор именно так и делается. Только не "некоторый текст УДАЛЯЛСЯ из шаблона", а "некоторый текст СКРЫВАЛСЯ при просмотре/печати/экспорте в PDF"
Шаблон в этом случае действительно содержит все-все-все возможные формулировки, которые по условиям с первого листа отображаются в тексте или скрываются
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

#7
хм, спасибо, поэксперементирую на работе.
в понятие абзац входит пункт списка? скажем у меня весь договор в пунктах, которые оформлены списком и, скажем, п.3.12 (а всего их с 3.1 до 3.23) нужно скрыть. это получится?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

В смысле, чтобы нумерация при этом сдвинулась дальше по списку?..
Не уверен, что такой геморрой офису под силу... Абзац с номером 3.12 мы, конечно же, скрыть сможем. Но сама нумерация при этом не изменяется - пункт 3.13 и все последующие как нумеровались с учетом невидимого 3.12, так и будут нумероваться. А выкручиваться с вычисляемыми значениями переменных и их отображением в виде номеров пунктов - слишком муторно. Это же надо отследить и все возможные ссылки на эти пункты где-то в тексте.
Нет, настоящий программист за такое не возьмётся: скажет "Нельзя такое сделать"  и займется чем-то более интересным
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от  2 июля 2014, 11:46Нет, настоящий программист за такое не возьмётся: скажет "Нельзя такое сделать"  и займется чем-то более интересным
Да, ты настоящий программист!  :beer:

kompilainenn

Печально, но можно сделать возможно убираемые пункты последними в статье...
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут