gifts2017

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

Опубликовал Denis R (Denov) в раздел Программирование - Практика программирования

Заказчик попросил сделать в УНФ 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С исправят этот Баг.

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

Настройки

 

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

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

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

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
РКОСоСканЛистами.epf
.epf 12,23Kb
15.11.12
43
.epf 12,23Kb 43 Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа