Добавление сканированных изображений напрямую со сканера в документ «Расход из кассы», для вывода их при печати РКО. Сделано для УНФ 1.4, но аналогичным образом можно сделать и на других типовых конфигурациях.





Заказчик попросил сделать в УНФ 1.4. механизм печати сканированных документов в печатной форме РКО. Отсканированные файлы должны сохранятся в ИБ прямо со сканера. Эта статья содержит все материалы для реализации этой задачи.

В УНФ 1.4 есть  встроенный механизм работы с файлами — Справочник «Файлы», который нам подходит для реализации поставленной задачи. У справочника «Файлы» есть реквизит «ВладелецФайла», в Типе этого реквизита указаны те документы, для которых надо сохранять файлы. Добавим в свойстве Тип документ «РасходИзКассы».

Добавление документа в тип реквизита

Теперь нужно добавить документ «РасходИзКассы» в общую команду «ПрисоединенныеФайлы».

Переходим к объекту «Общие команды ->ПрисоединенныеФайлы», открываем свойство «Тип параметра команды» и также ставим галочку напротив нашего документа.

Добавление документа в общую команду

Создаем внешнюю печатную форму. Копируем механизм формирования печатной формы из типовой конфигурации УНФ в нашу печатную форму:Процедура Печать, Функция СформироватьПечатнуюФорму. В функцию СформироватьПечатнуюФорму добавляем код для вывода на печать наших отсканированных файлов:

Запрос.УстановитьПараметр("ВладелецФайла", ТекущийДокумент);

Расширения = Новый Массив;
Расширения.Добавить("JPG");
Расширения.Добавить("BMP");
Расширения.Добавить("PNG");
Расширения.Добавить("GIF");

Расширения.Добавить("jpg");
Расширения.Добавить("bmp");
Расширения.Добавить("png");
Расширения.Добавить("gif");

Запрос.УстановитьПараметр("Расширения", Расширения);
Запрос.Текст = "ВЫБРАТЬ 
| Файлы.Наименование КАК Имя, 
| Файлы.ТекущаяВерсияРасширение КАК Расширение, 
| Файлы.ТекущаяВерсия, | Файлы.Ссылка, 
| ХранимыеФайлыВерсий.ХранимыйФайл КАК СканИзображение 
|ИЗ 
| Справочник.Файлы КАК Файлы 
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХранимыеФайлыВерсий КАК ХранимыеФайлыВерсий 
| ПО Файлы.ТекущаяВерсия = ХранимыеФайлыВерсий.ВерсияФайла 
|ГДЕ 
| Файлы.ВладелецФайла = &ВладелецФайла 
| И Файлы.ТекущаяВерсияРасширение В(&Расширения) 
| И НЕ Файлы.ПометкаУдаления";

Выборка = Запрос.Выполнить().Выбрать();

ОбластьСкана = Макет.ПолучитьОбласть("СканЛист");
Пока Выборка.Следующий() Цикл 
// + Это код по выводу изображения из БД  
        Карт = Выборка.СканИзображение.Получить();
Если Карт <> Неопределено Тогда 
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

// Преобразовываем файл в изображение   
                ОбластьСкана.Рисунки.D1.Картинка = Новый Картинка(Карт, Истина);

ТабличныйДокумент.Вывести(ОбластьСкана);

// + Этот текст необходим для вывода на печать   
                Элемент = ОбъектыПечати.НайтиПоЗначению(ТекущийДокумент);
Если Элемент = Неопределено Тогда    
                        ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ=") + Выборка.Имя;
Иначе    
                        ИмяОбласти = Элемент.Представление + Выборка.Имя;
КонецЕсли;

ОбъектыПечати.Добавить(ТекущийДокумент, ИмяОбласти);

НомерСтрокиОкончание = ТабличныйДокумент.ВысотаТаблицы;
ТабличныйДокумент.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти;
// - Этот текст необходим для вывода на печать  
 КонецЕсли;
// - Это код по выводу изображения из БД 
КонецЦикла; 

В УНФ 1.4.2.22 и выше появились проблемы с внешними печатными формами из за кода в общем модуле «ОбщегоНазначения» в функции «ПроверитьПроведенностьДокументов». Там есть такой запрос:

 

ШаблонЗапроса =
"ВЫБРАТЬ 
| Документ.Ссылка КАК Ссылка 
|ИЗ | &ИмяДокумента КАК Документ 
|ГДЕ 
| Документ.Ссылка В(&МассивДокументов) 
| И (НЕ Документ.Проведен)";

Этот запрос работает с ошибкой с документами в которых есть реквизит с именем «Документ». Можно выйти из этой ситуации переименовав в запросе «Документ» например на «Док123». Вот так получится:

 

ШаблонЗапроса =
"ВЫБРАТЬ 
| Док123.Ссылка КАК Ссылка 
|ИЗ | &ИмяДокумента КАК Док123
|ГДЕ 
| Док123.Ссылка В(&МассивДокументов) 
| И (НЕ Док123.Проведен)";

 

Только так наша печатная форма заработает с нашим документом. Надеюсь в будущем разработчики 1С исправят этот Баг.

В прикрепленном файле лежит полностью рабочая внешняя печатная форма.  Чтобы файлы сохранялись сразу при сканировании, необходимо в «Настройках» -> «Персональные настройки» настроить ваш сканер.

Настройки

 

Выбор настроек сканирования

Настройки сканирования

Добавить внешнюю печатную форму можно в режиме пользователя в меню «Администрирование -> Дополнительные отчеты и обработки».

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *