| |
Картинки в
1С
Иногда можно довольно-таки ехидно
использовать свойства и методы объектов,
казалось бы, для этого не
предназначенные.
Далее
описан способ, с помощью которого можно
организовать автоматический подбор
сертификатов к расходным накладным.
Пример взят из оригинальной
конфигурации, написанной для ООО "Натэкспо"
(оптовая торговля алкоголем). |
При печати
накладной, помимо обычных таблиц для
собственно накладной и счета-фактуры (см.
здесь) я создаю еще один объект "Таблица"
для сертификатов. В нее я вставляю
объект "Рисунок" и растягиваю его
по самые … границы листа. А теперь для
чего все это. При формировании печатных
форм, как обычно, организуется цикл
перебора строк табличной части
документа:
СписокСертификатов =СоздатьОбъект("СписокЗначений");
ВыбратьСтроки ();
Пока ПолучитьСтроку()
= 1 Цикл
. . . .
.
. . . . .
// Имя файла сертификата - реквизит
справочника партий товаров
// Т.к. фирма - импортер, все импортные
товары поступают по ГТД -
// одной для каждой партии. Чтобы узнать
какой сертификат (справка
//
к ГТД и т.д.) надо приложить к комплекту
документов, надо найти с
//
какой партией этот товар поступил.
Когда партия найдена …
ИмяФайла=СокрЛП(Партия.ФайлСертификатов)
Если
(ПустаяСтрока(ИмяФайла)=0)
и (ФС.СуществуетФайл(ИмяФайла)=1)
Тогда
Если
СписокСертификатов.НайтиЗначение(ИмяФайла)=0
Тогда
СписокСертификатов.ДобавитьЗначение(ИмяФайла);
КонецЕсли;
КонецЕсли;
КонецЦикла;
|
Во время выполнения этого цикла, попутно,
формирую список сертификатов - список
наименований файлов рисунков
отсканированных сертификатов.
Сертификаты можно сканировать на любом
сканере и сохранять, практически, в
любом графическом формате (например, в
документации указаны форматы *.bmp, *.emf, *.wmf,
*.ico, *.dib, *.rle, но можно и в других). Когда я
внедрял эту феньку, мы сканировали
сканером принтера HP1100 и сохраняли в
монохромный рисунок самого
экономичного (как говорят в рекламах)
формата.
Когда
формирование списка сертификатов
завершено, организую цикл перебора
значений списка и вывод картинок в
таблицу: |
ТаблицаСертификатов =СоздатьОбъект("Таблица");
Для
Н=1
по
СписокСертификатов.РазмерСписка()
Цикл
ИмяФайла=СписокСертификатов.ПолучитьЗначение(Н);
ТаблицаСертификатов.ВывестиСекцию("Страница");
КонецЦикла;
Остался
пустяк, из-за которого все и городили.
Откроем окно свойств рисунка
вставленного в таблицу:
|
|
Здесь, на закладке "Текст" можно
вставить имя процедуры (доступной в
модуле, из которого печатаем), например,
такой как у меня. А в процедуре в эту
картинку загрузить файл сертификата.
Например, вот так:
Процедура ВыбранныйСертификат(ФайлКартинки)
ФайлКартинки.Загрузить(ИмяФайла);
КонецПроцедуры
Чтобы
переменная ИмяФайла
была доступна, ее следует описать
оператором Перем.
|
Вот собственно и
все. Получившийся документ будет
состоять из страниц с картинками
сертификатов.
У описанного приема
масса достоинств: главное - машина сама
подберет необходимый комплект
документов (не ошибаясь и ничего не
забывая). Не нужен ксерокс (правда, нужен
сканер, но у него нет расходных
материалов, да и стоит он дешевле), а
печатать можно хоть на матричном
принтере. На лазерном - печать лучше
ксерокса. |
Этот
прием можно применить для печати,
например, стандартного договора для
нового клиента (договор можно заполнить
с обеих сторон реквизитами справочников).
Можно, например, отсканировать
документы сотрудников (страницу
паспорта, свидетельство о браке и т.п.)
или их личные фотографии и использовать
для формирования выходных форм (анкета
сотрудника с фотографией - так в кино,
обычно, показывают). Прайс с картинками
товаров - народ будет визжать от
восторга. Если Вы что-нибудь строите -
снимите этапы строительства (хотя бы на
Полароид) и пусть заказчик попробует не
подписать процентовку. Да мало ли до
чего еще может додуматься человек с
интеллектом! |
Автор:
Балуев Сергей
Оглавление
|