Картинки в 1С

     Иногда можно довольно-таки ехидно использовать свойства и методы объектов, казалось бы, для этого не предназначенные. 

     Далее описан способ, с помощью которого можно организовать автоматический подбор сертификатов к расходным накладным. Пример взят из оригинальной конфигурации, написанной для ООО "Натэкспо" (оптовая торговля алкоголем).

     При печати накладной, помимо обычных таблиц для собственно накладной и счета-фактуры (см. здесь) я создаю еще один объект "Таблица" для сертификатов. В нее я вставляю объект "Рисунок" и растягиваю его по самые … границы листа. А теперь для чего все это. При формировании печатных форм, как обычно, организуется цикл перебора строк табличной части документа:

СписокСертификатов=СоздатьОбъект("СписокЗначений");

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

     . . . . .

     . . . . .

        // Имя файла сертификата - реквизит справочника партий товаров

        // Т.к. фирма - импортер, все импортные товары поступают по ГТД -

        // одной для каждой партии. Чтобы узнать какой сертификат (справка

        // к ГТД и т.д.) надо приложить к комплекту документов, надо найти с

        // какой партией этот товар поступил. Когда партия найдена …

       ИмяФайла=СокрЛП(Партия.ФайлСертификатов)

       Если (ПустаяСтрока(ИмяФайла)=0)

       и (ФС.СуществуетФайл(ИмяФайла)=1) Тогда

                 Если СписокСертификатов.НайтиЗначение(ИмяФайла)=0 Тогда

                      СписокСертификатов.ДобавитьЗначение(ИмяФайла);

                 КонецЕсли;

        КонецЕсли;

КонецЦикла;

     Во время выполнения этого цикла, попутно, формирую список сертификатов - список наименований файлов рисунков отсканированных сертификатов. Сертификаты можно сканировать на любом сканере и сохранять, практически, в любом графическом формате (например, в документации указаны форматы *.bmp, *.emf, *.wmf, *.ico, *.dib, *.rle, но можно и в других). Когда я внедрял эту феньку, мы сканировали сканером принтера HP1100 и сохраняли в монохромный рисунок самого экономичного (как говорят в рекламах) формата. 

     Когда формирование списка сертификатов завершено, организую цикл перебора значений списка и вывод картинок в таблицу:

ТаблицаСертификатов=СоздатьОбъект("Таблица");

Для Н=1 по СписокСертификатов.РазмерСписка() Цикл

     ИмяФайла=СписокСертификатов.ПолучитьЗначение(Н);

     ТаблицаСертификатов.ВывестиСекцию("Страница");

КонецЦикла;

Остался пустяк, из-за которого все и городили. Откроем окно свойств рисунка вставленного в таблицу:

 

     

     Здесь, на закладке "Текст" можно вставить имя процедуры (доступной в модуле, из которого печатаем), например, такой как у меня. А в процедуре в эту картинку загрузить файл сертификата. Например, вот так:

 

     Процедура ВыбранныйСертификат(ФайлКартинки)

          ФайлКартинки.Загрузить(ИмяФайла);

     КонецПроцедуры

 

Чтобы переменная ИмяФайла была доступна, ее следует описать оператором Перем.

 

     Вот собственно и все. Получившийся документ будет состоять из страниц с картинками сертификатов.

     У описанного приема масса достоинств: главное - машина сама подберет необходимый комплект документов (не ошибаясь и ничего не забывая). Не нужен ксерокс (правда, нужен сканер, но у него нет расходных материалов, да и стоит он дешевле), а печатать можно хоть на матричном принтере. На лазерном - печать лучше ксерокса.

 

     Этот прием можно применить для печати, например, стандартного договора для нового клиента (договор можно заполнить с обеих сторон реквизитами справочников). Можно, например, отсканировать документы сотрудников (страницу паспорта, свидетельство о браке и т.п.) или их личные фотографии и использовать для формирования выходных форм (анкета сотрудника с фотографией - так в кино, обычно, показывают). Прайс с картинками товаров - народ будет визжать от восторга. Если Вы что-нибудь строите - снимите этапы строительства (хотя бы на Полароид) и пусть заказчик попробует не подписать процентовку. Да мало ли до чего еще может додуматься человек с интеллектом!

Автор: Балуев Сергей        

 TopList                                    Оглавление

© 2000 ООО "Магистраль АН" т./ф. (095) 567-10-49 1c@mag.aha.ru
Дата последнего изменения: мая 12, 2002