Здравствуйте, сегодня мы создадим конфигурацию системы 1С, в которой будет реализована возможность загрузки данных из .xlsx файлов, а также изображений в расширении .png .jpg. Начнём.
Создание информационной базы
Для начала нужно создать информационную базу в приложении 1С, в нашем случае на учебной версии программы.
Открываем приложение 1С:Предприятие. Перед вами откроется данное окно, а это значит, что вы успешно запустили программу, поздравляем!
Далее заходим в конфигурацию нашей информационной базы.
Я уже создал ряд нужных мне элементов для выгрузки xlsx. Нужны справочники и соответствующие им реквизиты, это вы можете узнать в самом xlsx файле, а именно наименование колонок. Главный справочник с нужным вам названием и реквизитами и дополнительные с данными, которых может быть большое разнообразие, всё зависит от ваших нужд.
Конфигурирование базы
Заходим в свойства конфигурации и далее спускаемся в самый низ до параметров совместимости и выставляем такие же настройки как на скрине.
Создание формы справочника
Создаем форму списка справочника и добавляем нужные реквизиты в список элементов формы, у меня получилось так:
Создание команды
Создаем на форме команду под названием ЗагрузитьДанные и добавляем её на форму. Она добавится в виде формы.
Заходим в свойства команды и добавляем действие на клиенте. Откроется окно написания кода.
Далее создайте вышеуказанные на скриншоте процедуры, в них мы будем писать код.
Написание кода
Для начала опишем процедуру на сервере, в ней мы создаем диалог загрузки файла и получаем результат выбора, а после вызываем процедуру на сервере.
Разберем построчно.
1. Создание диалога выбора файла, в нем пользователь будет выбирать загружаемый файл.
2. Отключаем множественный выбор, чтобы пользователь мог выбрать только один файл.
3. Определяем фильтр, чтобы можно выбрать только табличные документы нужного нам расширения.
4. Ссылаемся на функцию и отображаем диалог выбора файла.
Мы написали код на клиенте для диалога выбора файла, далее же мы написали код для сервера.
Вначале мы проверяем выбран ли файл пользователем, если выбран, запоминаем имя файла в переменной ИмяФайла, а если нет, то мы сообщаем пользователю что файл не выбран и прекращаем выполнение кода. Далее если мы получаем имя файла, то создаем новый табличный документ и считываем файл, имя которого узнали ранее. После идёт цикл, рассмотрим как считывать строчки.
Мы создаём элемент в главном справочнике, после мы можем обращаться к нему, через символ "." выбрать нужный нам элемент и спарсить с таблицы с помощью команды область().Текст. Если же нам надо записать в элемент, который является ссылкой, то нужно вначале проверить есть ли этот элемент в справочнике, а после если нет записать также как и в главный справочник. А чтобы уже сделать так, чтобы элемент выбирался из справочника, то используем найти по наименованию и присваиваем в нужное значение. В конце же, чтобы записать используем команду записать(). Следующий этап тестирование данного решения оставляю на вас, если всё было сделано правильно, то всё должно работать.
Возможность добавления картинки
Создаем справочник с изображениями, реквизит которого будут в формате хранилище данных, а также реквизит в главном справочнике с названием "Фото", тип которого будет ссылка на хранилище значения в справочнике Файлы.
Далее создаем в главном справочнике форму элемента справочника.
И именно в форме создаем реквизит Картинка, тип которого строка, а вид "поле картинки". Перенесите реквизит на форму и после поставьте галочку "гиперссылка" в свойствах реквизита. Получится данный элемент формы.
Далее создайте процедуру на клиенте для события "по нажатию" и вставьте нижеуказанный код.
&НаКлиенте
Процедура ФотоНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; ИмяФайла = "";
ПутьКФайлу = "";
Если ПоместитьФайл(ПутьКФайлу, ИмяФайла, Истина) = Истина Тогда
Фото = ПутьКФайлу;
УстановитьКартинку();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьКартинку()
НовыйФайлКартинки = Справочники.Файлы.СоздатьЭлемент();
НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Фото));
Фото = ПоместитьВоВременноеХранилище(НовыйФайлКартинки.Файл.Получить());
НовыйФайлКартинки.Записать();
Объект.Картинка = НовыйФайлКартинки.Ссылка;
КонецПроцедуры
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Фото = ПолучитьНавигационнуюСсылку(Объект.Картинка, "Файл"); Элементы.Фото.РазмерКартинки = РазмерКартинки.АвтоРазмер;
КонецПроцедуры
Данный код поможет добавлять и сохранять изображения, но годится только для учебного или же личного проекта, не советую использовать в коммерции. Всего доброго!