можно ли сохранить печатную форму документа в 1с(допустим в переменную) для того чтобы в будущем можно было распечатать его с изменениями которые я внёс перед печатью.
(1) К слову, вот идея с хранением в типовом регистре сведений, схожая с моей: http://infostart.ru/public/359613/. То есть можно даже не создавать свой регистр сведений, а использовать для хранения печатных форм подходящий для этих целей РС "Версии объектов".
Если твое "будущее" не ограничивается текущим сеансом, то какая, нафиг, переменная?
Тебе придется сначала сохранить табдок в mxl-файл на диске.
А дальше решаешь стандартную проблему хранения любых файлов в 1С:
- либо запихиваешь его в базу в поле типа ХранилищеЗначения (желательно - в отдельный справочник/регистр сведений)
- либо складываешь в предопределенный каталог на сервере, а в 1С хранишь пути
Выбор зависит от степени файлопомоечности.
(5) Эта функция сериализации была оставлена для совместимости с 1С версии 7.7, она прекрасна и быстра, однако использовать её не рекомендуется. Опять же, сериализованное значение надо где-то хранить.
На мой взгляд, для решения данной задачи следует создать свой регистр сведений с измерениями "Документ" (ссылка на документ) и "ПечатнаяФорма" (название печ.формы, строка), ресурсами "РаспечатаннаяПечатнаяФорма" (бесконечная строка, в неё помещаем отредактированный табличный документ в сериализованном виде) и "Автор". Такой вариант удобнее для доработки и не затрагивает конфигурацию поставщика, обмены и прочие вещи.
(6) При этом измерение "Документ" можно сделать необязательным для заполнения и хранить версии отчётов, например "Оборотно-сальдовой ведомости" для возможности удобного контроля, "не поплыла ли она". Регистр, соответственно, в этом случае делаем периодическим.
(6) А почему ее не рекомендуют использовать? Она есть, быстрая, готовая, простая в исполнении.. одним словом - пользуйся!
Пс.В СП ни слова ни сказано, что ее не рекомендуется использовать.. Я пока вижу одни плюсы)
В СП ни слова ни сказано, что ее не рекомендуется использовать
Значит, у нас разные СП.
Примечание:
Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется
Да и нет никакого смысла ее использовать. В 8-ке есть своя сериализация через XML. А ЗначениеВСтрокуВнутр() - это устаревшая семерочная. Теоретически могут задиприкейтить в очередном релизе. Или забудут сериализацию новых объектов через нее реализовать :)
И пихать в строковый реквизит неограниченной длины - это тоже семерочная практика.
В 8-ке специально для таких вещей хранилище значений придумали - с поддержкой сжатия
В принципе, можно попробовать табличный документ в хранилище значений засунуть напрямую, без явной сериализации или сохранения в mxl. По-идее, он должен сериализоваться автоматически. И десериализоваться при извлечении.
(10) Про Хранилище значений Вы правы, но в данном случае я всё же за строку, поскольку такой вариант функциональней: можно быстро глянуть на сохранённое значение прямо в регистре, наведя мышку на сохранённое значение, и так же быстро "скопипастить" значение в текстовый файл и сравнить с другим файлом через "Файл\Сравнить файлы". С Хранилищем значения такое не пройдёт.
(10) Да, и про то, почему нежелательно использовать "ЗначениеВСтрокуВнутр" , "ЗначениеИзСтрокиВнутр" Вы хорошо, объяснили сомневающимся. Вообще мой опыт подсказывает, что если 1С что-либо рекомендует, лучше принимать эти рекомендации как руководство к действию, обязательному для исполнения :-)
Для сохранения во внешних файлах, на мой взгляд, следует использовать функции ЗначениеВФайл("...путь к файлу...", ОтредактированныйТабличныйДокумент) и ЗначениеИзФайла("... путь к файлу..."). Тут, опять же, надо подумать, как называть файлы... можно UUID документа+ наименование печатной формы + штамп даты-времени... или что-то вроде того. Но я всё же за регистр.