|
Загрузить изображения в справочник Основные средства | ☑ | ||
---|---|---|---|---|
0
1c-programm
25.07.18
✎
10:33
|
Добрый день!
Никак не могу загрузить картинку из диска С есть папки, название папок переименованы как Инвентарный номер ОС. в каждой папке картинки. Есть реквизит Путь, там я указываю путь к этим папкам. еще есть табличная часть, туда я перебираю все папки по Инвентарному номеру. перем Подключение; Процедура КнопкаВыполнитьНажатие(Кнопка) ТЗФайлов = Новый ТаблицаЗначений; КвалификаторыСтроки = Новый КвалификаторыСтроки(9); ОписаниеСтроки = Новый ОписаниеТипов("Строка", ,КвалификаторыСтроки); ТЗФайлов.Колонки.Добавить("ПолноеИмяФайла", Новый ОписаниеТипов("Строка")); ТЗФайлов.Колонки.Добавить("ИнвентарныйНомер", ОписаниеСтроки); Путь = Путь; МассивФайлов = НайтиФайлы(Путь, "*.*", Истина); Если Путь = Неопределено Тогда Сообщить("Укажите путь файла!") КонецЕсли; Для Каждого НайденныйФайл Из МассивФайлов Цикл Если НайденныйФайл.ЭтоКаталог() Тогда НоваяСтрока = ТЗФайлов.Добавить(); НоваяСтрока.ИнвентарныйНомер = НайденныйФайл.Имя; НоваяСтрока.ПолноеИмяФайла = НайденныйФайл.ПолноеИмя; КонецЕсли; КонецЦикла; Запрос = Новый Запрос(); Запрос.Текст ="ВЫБРАТЬ | ТЗФото.ПолноеИмяФайла, | ТЗФото.ИнвентарныйНомер |ПОМЕСТИТЬ ВТ_ТЗФото |ИЗ | &ТЗФото КАК ТЗФото |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ИнвентарныйНомер, | ВТ_ТЗФото.ПолноеИмяФайла, | ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство |ИЗ | ВТ_ТЗФото КАК ВТ_ТЗФото | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних | ПО ВТ_ТЗФото.ИнвентарныйНомер = ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ИнвентарныйНомер"; Запрос.УстановитьПараметр("ТЗФото",ТЗФайлов); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл СтрокаТЧ = ОС.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТЧ,Результат); КонецЦикла; Для Каждого Файл из МассивФайлов Цикл Если Файл.ЭтоФайл() Тогда Сообщить(Файл.ПолноеИмя); КонецЕсли; КонецЦикла; КонецПроцедуры Функция ЗагрузитьФайл(Подключение, ИмяФайлаСПутем, ИнвентарныйНомер) Попытка // проверяем, существует ли таблица и если нет, создаем ТекстЗапроса = "if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Files]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) | |CREATE TABLE [dbo].[Files] ( | [InventarnyiNomer] [char] (9) COLLATE Cyrillic_General_CI_AS NULL , | [PolnoeImya] [char] (36) COLLATE Cyrillic_General_CI_AS NULL , | [OsnovnoeSredstvo] [char] (100) COLLATE Cyrillic_General_CI_AS NULL |) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]"; Подключение.Execute(ТекстЗапроса); ФайлНаДиске = Новый Файл(ИмяФайлаСПутем); //В таблице tImage поле Data имеет тип image (бинарный тип данных), в этом поле и будут храниться двоичные данные. ТекстЗапроса = "insert into Files (InventarnyiNomer, PolnoeImya, OsnovnoeSredstvo) values ('" + ОС.ИнвентарныйНомер + "',GETDATE())"; Команда = Новый COMОбъект("ADODB.Command"); Команда.ActiveConnection = Подключение; //задается строка подключения к БД Команда.CommandTimeout = 900; Команда.CommandText = ТекстЗапроса; Команда.CommandType = 1; Команда.NamedParameters = true; Поток = СоздатьПоток(ИмяФайлаСПутем); локПотокБайт = Новый ComSafeArray(Поток.Read()); //поток двоичных данных Параметр = СоздатьПараметр("@fFile", 205, локПотокБайт); //205 - adLongVarBinary Параметр.Size = локПотокБайт.GetLength(); Команда.Parameters.Append(Параметр); Команда.Execute(); //выполение запроса Исключение Сообщить("" + ОписаниеОшибки()); Возврат Ложь; КонецПопытки; Возврат Истина; конецфункции Все файлы получила, теперь не могу сохранить в базу, и не знаю куда сохранить. Помогите пжл! |
|||
1
Cyberhawk
25.07.18
✎
10:42
|
В реквизит типа "ХранилищеЗначения" сохраняй. Обычно это справочник с таким реквизитом, а связь с объектом БД либо через подчинение, либо через регистр сведений
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |