8.х Как добавить картинку для вывода на печать в печатную форму документа?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Гелий, 31 авг 2015.

  1. TopicStarter Overlay
    Гелий
    Offline

    Гелий

    Регистрация:
    1 апр 2013
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте. Попробую подробнее расписать всю задачку, а вопрос в последнем абзаце, всё читать не обязательно.
    Подсунули мне задачку доделать нормально печатную форму для конфигурации PDM Управление инженерными данными, документ "Извещение об изменении". Печатная форма мерзопакостная просто, по сути является чертёжной рамкой. В стандартном варианте выводится в Word'овский документ, но так как рамки там ни в какие ГОСТы не лезут, то и начали с ним извращаться.
    Так появился HTML макет (в рисунок не попал), но не прокатил, так как рамка просто растягивалась, но ничего не переносилось на следующие листы как надо.
    Потом кем-то был создан макет табличного документа, но перенос не работал всё равно, так как самое важное поле "содержание изменения" шло одним огромным куском текста, который получался из HTML.
    Долго думал как в такой ситуации сделать перенос нормально - более менее красиво получилось с помощью разбиения большой строки в массив строк и его последующего обхода.

    Теперь возник следующий вопрос, который не позволяет закрыть задачу: В это поле должна добавляться картинка (судя по всему некий чертёж) и при этом умещаться на той же странице (судя по скудной информации). В документе картинка добавляется в HTML документ и вместе с ним спокойно выводится. Мне же надо или достать её из HTML (вообще без малейшего понятия как). Либо получить её из табличной части документа "Картинки содержания", что кажется более простым способом. Но как это сделать? Она имеет два реквизита: "Имя" (типа Строка, неограниченной длинны) и "Данные" (тип Хранилище значения). При попытке получить что-то из переменной "Данные", получаются двоичные данные. Как из всей этой "петрушки" картинку-то получать?! Вроде, элементарная вещь, а за полдня так и не допёр, да ещё и лимит трафика интернета месячный как раз кончился на работе.

    кнф.png
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Какой код у вас получился? Синтаксис-Помощник на тему того, как получить картинку читали?
  3. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Ну Вам надо ролучить из двоичных данных картинку.
    А затем эту картинку разметить в ТБ

    Это пример из СКД
    Там картинка добавляется при выводе. если она уже у Вас есть может этот объект найти и уже туда писать
    Код:
    КартинкаТаблДок = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
                         КартинкаТаблДок.Картинка = Новый Картинка(Данные.Получить()); //тут двоичные даные
                         КартинкаТаблДок.РазмерКартинки = РазмерКартинки.Пропорционально;
    Гелий нравится это.
  4. TopicStarter Overlay
    Гелий
    Offline

    Гелий

    Регистрация:
    1 апр 2013
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    С этим разобрался, картинку получил. А есть ли возможность каким-то образом вывести её в поле, в которое вывел текст, сразу под текстом?
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    ну вы можете картинку сделать на отдельной области. ка ктолько вывели текст, получили облась с картинкой заполнили и вывели
  6. TopicStarter Overlay
    Гелий
    Offline

    Гелий

    Регистрация:
    1 апр 2013
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    У меня форма по сути представляет собой чертежную рамку для формата А4, то есть размеры фиксированные. Не представляю как это сделать. Была бы человеческая форма - так и сделал бы. Сейчас думается мне, что проще было бы каким-то образом нарисовать рамку для Word'а и в документ Word выводить всё, как в оригинале.
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Ну нам не видно макето ви что ка должно быть - по этому нам трудно судить что да как лучше.
    Конеячно можно и в Ворде шаблон делать и заполнять его
  8. TopicStarter Overlay
    Гелий
    Offline

    Гелий

    Регистрация:
    1 апр 2013
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Первый лист.png Вот такой макет надо заполнять. В поле "(18)" выводится текст и туда же надо запихнуть рисунок.
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    НУ да, не айс.
    ну конечно скажем та что навернео удобнее было бы через Word или какое нить другое приложэенеи сделать макет, а потоме го заполнять. что потом если редактировать чтото надо то шаблон подредактировал и все.
    Но там надо смотреть будет наверное в MSDN или еще где специфические функции работы с объектами, типа как картинку добавить и т.д
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Через экселевкий шаблон делайте. Учитывайте то, что строки будут разъезжаться.
  11. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Можно создать макет с (скажем) ячейками 5х5, удобно подгонять под размер страницы, объединить не изменяемые области, в их свойствах вставить картинку.
    Для примера :
    upload_2015-9-2_12-6-11.png

Поделиться этой страницей