|
Работа с картинками | ☑ | ||
---|---|---|---|---|
0
kolp821
30.09.11
✎
10:14
|
Подскажите как можно прикрепить скан(картинку) документа к форме самого документа который проводится? если есть пример буду благодарен, так как сам еще не очень разбираюсь в 1С
|
|||
1
jsmith82
30.09.11
✎
10:17
|
1. Толстое приложение или управляемое
2. Как понять фразу "который проводится". Картинка должна появляться в в момент проведения, а потом исчезать? Переформулируй |
|||
2
kolp821
30.09.11
✎
10:20
|
(1) Есть документ в 1с, хочется прикрепить к нему скан документа. как можно это реализовать? тонкий клиент.
|
|||
3
kolp821
30.09.11
✎
10:21
|
(1)Картинка должна сохранится в системе, что бы потом можно было сверится.
|
|||
4
Nallama
30.09.11
✎
10:21
|
(2) Определись с тем, где будешь хранить сканы - внутри базы или вне ее.
|
|||
5
kolp821
30.09.11
✎
10:27
|
(4)Если можно то тот и тот вариант.
|
|||
6
jsmith82
30.09.11
✎
10:29
|
Лукай в УТ 11. Там фича реализована донельзя.
Там правда немного мудрёно, но с отладкой разобраться можно. Самый простой вариант - библиотека стандартных подсистем, но ты наверно с ней вазюкаться будешь. Если грубо, то так 1. Создаёшь справочник Файлы, подчинённый документу 2. В нём есть реквизит ХранилищеЗначения (простой вариант - хранится в базе) 3. В элементе справочника кнопки "Загрузить", "Выгрузить" По кнопке загрузить пользователь выбирает файл, система его хавает и записывает в хранилище значения (найди этот кусок в УТ11). По кнопе "Выгрузить" - выгружает. Начни с этого. Если будут траблы, пиши |
|||
7
Nallama
30.09.11
✎
10:43
|
В БСП много лишнего многовато... я в свое время на этом варианте остановилась:
&НаКлиенте Процедура ПрикрепитьФайл(Команда) #Если ВебКлиент Тогда ПодключитьРасширениеРаботыСФайлами(); #КонецЕсли ФайлВоВременномХранилище = ""; ИмяВыбранногоФайла = ""; ПоместитьФайл(ФайлВоВременномХранилище, , ИмяВыбранногоФайла, Истина, ЭтаФорма.УникальныйИдентификатор); РасширениеФайла = РаботаСоСтроками.ИмяИРасширениеФайла(ИмяВыбранногоФайла,"."); Разделитель = ?(Найти(ИмяВыбранногоФайла,"\") > 0,"\","/"); ИмяФайла = РаботаСоСтроками.ИмяИРасширениеФайла(ИмяВыбранногоФайла,Разделитель); Если РасширениеФайла = Неопределено ИЛИ ИмяФайла = Неопределено Тогда Сообщить("Файл неизвестного типа!"); Возврат; КонецЕсли; ЭтоЗапрещенныйТипФайла = РаботаСоСтроками.ЗапрещенныйТипВложения(РасширениеФайла); Если Не ЭтоЗапрещенныйТипФайла Тогда Элементы.ПрикрепленныеФайлы.ДобавитьСтроку(); СсылкаНаФайл = РаботаСФайлами.ЗаписатьФайлВХранилище(ФайлВоВременномХранилище,ИмяФайла); Элементы.ПрикрепленныеФайлы.ТекущиеДанные.Файл = СсылкаНаФайл; Иначе Сообщить("Файлы типа *." + РасширениеФайла + " запрещено использовать в системе!"); Возврат; КонецЕсли; КонецПроцедуры //ПрикрепитьФайл(Команда) &НаКлиенте Процедура ОткрытьФайл(Команда) #Если ВебКлиент Тогда ПодключитьРасширениеРаботыСФайлами(); #КонецЕсли ФайлВСправочнике = Элементы.ПрикрепленныеФайлы.ТекущиеДанные.Файл; Адрес = ПолучитьНавигационнуюСсылку(ФайлВСправочнике,"Файл"); ИмяФайла = РаботаСФайлами.ПолучитьИмяФайла(ФайлВСправочнике); ПолучитьФайл(Адрес,ИмяФайла,Истина); КонецПроцедуры //ОткрытьФайл(Команда) Функция ЗаписатьФайлВХранилище(ВременноеХранилище,ИмяФайла) Экспорт НовыйФайл = Справочники.ПрикрепленныеФайлы.СоздатьЭлемент(); НовыйФайл.Наименование = ИмяФайла; Данные = ПолучитьИзВременногоХранилища(ВременноеХранилище); УдалитьИзВременногоХранилища(ВременноеХранилище); Хранилище = Новый ХранилищеЗначения(Данные); НовыйФайл.Файл = Хранилище; НовыйФайл.Записать(); Возврат НовыйФайл.Ссылка; КонецФункции // ЗаписатьФайлВХранилище(ВременноеХранилище,ИмяФайла) Функция ПолучитьИмяФайла(Ссылка) Экспорт ПрикрепленныйФайл = Ссылка.ПолучитьОбъект(); Возврат ПрикрепленныйФайл.Наименование; КонецФункции // ПолучитьИмяФайла(Ссылка) |
|||
8
Nallama
30.09.11
✎
10:45
|
(7) последние две функции - серверные
|
|||
9
kolp821
30.09.11
✎
11:02
|
(7) А можно поподробнее что нужно делать.
|
|||
10
Nallama
30.09.11
✎
11:18
|
(9) эээ... общая концепция - в (6), пример кода в (7), так чего ж тебе еще надобно, старче?
|
|||
11
kolp821
03.10.11
✎
13:24
|
Создаю общий модуль РаботаСФайлами, пишу туда:
Функция ЗаписатьФайлВХранилище(ВременноеХранилище,ИмяФайла) Экспорт НовыйФайл = Справочники.ПрикрепленныеФайлы.СоздатьЭлемент(); НовыйФайл.Наименование = ИмяФайла; Данные = ПолучитьИзВременногоХранилища(ВременноеХранилище); УдалитьИзВременногоХранилища(ВременноеХранилище); Хранилище = Новый ХранилищеЗначения(Данные); НовыйФайл.Файл = Хранилище; НовыйФайл.Записать(); Возврат НовыйФайл.Ссылка; КонецФункции // ЗаписатьФайлВХранилище(ВременноеХранилище,ИмяФайла) Функция ПолучитьИмяФайла(Ссылка) Экспорт ПрикрепленныйФайл = Ссылка.ПолучитьОбъект(); Возврат ПрикрепленныйФайл.Наименование; КонецФункции // ПолучитьИмяФайла(Ссылка) Создаю справочник Файлы, добавляю реквизит "Файл" с типом хранилище значений. Делаю команду Прикрепить Файл с текстом &НаКлиенте Процедура ПрикрепитьФайл(Команда) #Если ВебКлиент Тогда ПодключитьРасширениеРаботыСФайлами(); #КонецЕсли ФайлВоВременномХранилище = ""; ИмяВыбранногоФайла = ""; ПоместитьФайл(ФайлВоВременномХранилище, , ИмяВыбранногоФайла, Истина, ЭтаФорма.УникальныйИдентификатор); РасширениеФайла = РаботаСоСтроками.ИмяИРасширениеФайла(ИмяВыбранногоФайла,"."); Разделитель = ?(Найти(ИмяВыбранногоФайла,"\") > 0,"\","/"); ИмяФайла = РаботаСоСтроками.ИмяИРасширениеФайла(ИмяВыбранногоФайла,Разделитель); Если РасширениеФайла = Неопределено ИЛИ ИмяФайла = Неопределено Тогда Сообщить("Файл неизвестного типа!"); Возврат; КонецЕсли; ЭтоЗапрещенныйТипФайла = РаботаСоСтроками.ЗапрещенныйТипВложения(РасширениеФайла); Если Не ЭтоЗапрещенныйТипФайла Тогда Элементы.ПрикрепленныеФайлы.ДобавитьСтроку(); СсылкаНаФайл = РаботаСФайлами.ЗаписатьФайлВХранилище(ФайлВоВременномХранилище,ИмяФайла); Элементы.ПрикрепленныеФайлы.ТекущиеДанные.Файл = СсылкаНаФайл; Иначе Сообщить("Файлы типа *." + РасширениеФайла + " запрещено использовать в системе!"); Возврат; КонецЕсли; КонецПроцедуры //ПрикрепитьФайл(Команда) Но много ошибок, что не так? |
|||
12
Stim213
03.10.11
✎
13:26
|
(0) рекомендую посмотрить УНФ. Там реализован сабж, причем с компонентой сканера. Буквально: Док-добавить файлы-сканировать-ОК
|
|||
13
kolp821
03.10.11
✎
13:34
|
(12) а в каком месте это там реализовано?
|
|||
14
kolp821
04.10.11
✎
15:33
|
Сделал так:
Создал справочник ХранениеФайлов с реквезит ДанныеФайла тип ХранилищеЗначения. В форме елемента это справочника создал две команды ПрочитатьФайлИСохранитьНаДиск и ВыбратьФайлСДискаИЗаписать &НаКлиенте Процедура ПрочитатьФайлИСохранитьНаДиск() Если Объект.Ссылка.Пустая() Тогда Предупреждение(НСтр("ru = 'Данные не записаны'", "ru")); Возврат; КонецЕсли; Если ПустаяСтрока(Объект.ИмяФайла) Тогда Предупреждение(НСтр("ru = 'Имя не задано'", "ru")); Возврат; КонецЕсли; Адрес = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайла"); ПолучитьФайл(Адрес, Объект.ИмяФайла, Истина); КонецПроцедуры &НаКлиенте Процедура ВыбратьФайлСДискаИЗаписать() Перем ВыбранноеИмя; Перем АдресВременногоХранилища; НовыйОбъект = Объект.Ссылка.Пустая(); Если ПоместитьФайл(АдресВременногоХранилища, "", ВыбранноеИмя, Истина) Тогда Объект.ИмяФайла = ВыбранноеИмя; ПоместитьФайлОбъекта(АдресВременногоХранилища); Если НовыйОбъект Тогда ОтобразитьИзменениеДанных(Объект.Ссылка, ВидИзмененияДанных.Добавление); КонецЕсли; КонецЕсли; КонецПроцедуры и &НаСервере // Процедура извлекает данные объекта из временного хранилища, // производит модификацию элемента справочника и записывает его. // // Параметры: // АдресВременногоХранилища – Строка – адрес временного хранилища. // // Возвращаемое значение: // Нет. Процедура ПоместитьФайлОбъекта(АдресВременногоХранилища) ЭлементСправочника = РеквизитФормыВЗначение("Объект"); ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища); ЭлементСправочника.ДанныеФайла = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных()); Файл = Новый Файл(ЭлементСправочника.ИмяФайла); ЭлементСправочника.ИмяФайла = Файл.Имя; ЭлементСправочника.Записать(); Модифицированность = Ложь; УдалитьИзВременногоХранилища(АдресВременногоХранилища); ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); КонецПроцедуры Спасибо всем участникам форума. |
|||
15
kolp821
04.10.11
✎
15:34
|
еще вопрос, а можно реализовать ввод документа через обычный сканер? если да то как.
|
|||
16
Stim213
04.10.11
✎
15:42
|
(15) еще раз - смотри в сторону УНФ. У меня работало даже со снимками из вебкамеры, причем конфигурация "коробочная"
|
|||
17
kolp821
04.10.11
✎
15:44
|
(16) уважаемый Stim213 не могли б подсказать где там искать, не нашел там реализацию сканера. Спасибо.
|
|||
18
Stim213
04.10.11
✎
16:18
|
вечерком
|
|||
19
Stim213
04.10.11
✎
21:29
|
вот как-то так: http://s41.radikal.ru/i093/1110/6c/cfaf4d0b41d0.jpg
|
|||
20
kolp821
04.10.11
✎
22:36
|
(19) но у меня нет варианта со сканера, только 2 первых варианта. Версия конфигурации 1,3. Может нужно что то включить?
|
|||
21
Stim213
04.10.11
✎
22:38
|
(20) сканер подключен к компу?
|
|||
22
kolp821
04.10.11
✎
23:00
|
(21) буду завтра на работе проверю, сканер был отключен. Спс за наводку.
|
|||
23
kolp821
05.10.11
✎
09:56
|
(21) сканер подключен, все ок. Вопрос, как можно эту компоненту перенести в другую конфигурацию?
|
|||
24
Nallama
05.10.11
✎
10:33
|
(23) Первый вариант: делаешь сравнение и объединение своей конфигурации с УНФ, переносишь объекты подсистемы "Работа с файлами", потом запасаешься терпением и разруливаешь повылезавшие зависимости.
Второй: берешь ИТС и внимательно изучаешь методику интеграции БСП. |
|||
25
kolp821
05.10.11
✎
13:11
|
Вопрос всем, внешняя компонента для сканирования нужна? (какие то файлы)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |