Хранение рисунков в отдельной базе MSSQL с помощью ADODB и Base64Строка


Обработка показывает, каким образом можно хранить рисунки (и не только) в базе MSSQL, а не в базе 1С. Полезно будет тем, у кого такая информация занимает в базе места больше, чем собственно данные.

Руководство решило хранить в базе сканированные копии всех договоров и сопутствующих документов. Все бы ничего, подвязали сканер к 1С, только за год база выросла до 100 гиг. С такой базой ни выгрузку нормально не сделаешь ни базу не поднимешь.

Надо было что-то придумать. Просто хранение файлов на файловом серваке нас не устраивало. Создавать для файлов отдельную базу 1С посчитали нецелесообразным. Решено было хранить данные в отдельной базу MSSQL. Только вот как это делать, никто не знал. На проекте видел несколько обработок, но они только читали данные из MSSQL, а нам нужно в базу писать, да еще и рисунки. Начался поиск решений. В итоге получилось то, что оформлено в данную обработку.

Для работы обработки нужен MSSQL сервер, .Net Framework 1.1 (он содержит ADODB.dll) на клиенте. На сервере создаем базу данных (в моем случае SomeDB) в которой создаем таблицу (в моем случае Pict), в которой создаем 2 колонки для ID рисунка и самого рисунка типа nvarchar(MAX). В обработке заполняем поля выше кнопки "Подключиться к SQL", нажимаем кнопку, в случае успешного подключения вводим имя таблицы, имена столбцов и ИД рисунка (произвольная строка). Выбираем рисунок, видим его внизу слева. Кнопка "Положить в базу" записывает рисунок в БД, кнопка "Выбрать из базы" получит рисунок с введенным ИД из БД и отобразит его в правой части формы. Открываем обработку в конфигураторе, смотрим как все реализовано, ставим плюс мне за труды.

Плюс данного решения - нет необходимости сохранять данные в промежуточный файл для просмотра в 1С.

Минус данного решения - примерный размер базы = размер данных * 3.

Файлы обработки:

-