Как реализовать в форме элемента справочника выбор картинок
Рассмотрим ситуацию на таком примере: в конфигурации есть сотрудники, нужно, чтобы к каждому сотруднику «цеплялась» его фотография. Исходные фотографии в формате jpg храним в папке photo внутри папки с базой.
Последовательность действий по шагам: 1) Сначала нужно в глобальном модуле объявить глобальную переменную КаталогФотографий: Перем КаталогФотографий Экспорт; 2) Затем в предопределенной процедуре глобального модуля ПриНачалеРаботыСистемы() нужно подготовиться к работе с фотографиями: КаталогФотографий = КаталогБазыДанных()+"photo\”; Если (ФС.СуществуетФайл(КаталогФотографий+”.")=0) Тогда ФС.СоздатьКаталог(КаталогФотографий); КонецЕсли;
Здесь мы присваиваем начальное значение переменной КаталогФотографий и создаем папку photo внутри папки с базой, если таковой нет. 3) В справочник «Сотрудники» добавляем новый реквизит ИмяВыбрФайла (строка длиной 50 символов) – здесь мы будем хранить имя выбранного файла с фотографией сотрудника. 4) Открываем форму элемента справочника Сотрудники, вкладку Диалог. Создаем в диалоге новый элемент форме с типом Картинка и идентификатором Фотография, под ним кнопку с заголовком Фотография и вызовом функции Фото() в поле Формула: на закладке «Дополнительно», а также вторую кнопку со знаком Х в поле «Заголовок» и вызовом функции УдалитьФото() в поле Формула: на закладке «Дополнительно». 5) Займемся кодом. Код вставляется на вкладке Модуль формы элемента справочника. Как должно быть понятно из п.4, нам нужны две функции: Фото() и УдалитьФото(). Вот код первой из них:
Процедура Фото() ИмяВыбрФайла
= "”; ИмяПути = "”; Если ФС.ВыбратьФайлКартинки(0, ИмяВыбрФайла, ИмяПути, "Выберите файл”, "jpg”, )=1 Тогда Фотография.Загрузить(ИмяПути+ИмяВыбрФайла); КонецЕсли; Фотография.РежимРисования(3); КонецПроцедуры
Вот код второй процедуры
Процедура УдалитьФото() А=СоздатьОбъект("Картинка”); Фотография.УстановитьКартинку(А); КонецПроцедуры
6) Теперь нам осталось внести изменения в предопределенную процедуру ПриОткрытии() формы элемента справочника:
Если ПустоеЗначение(ИмяВыбрФайла) = 0 Тогда ФайлФото=КаталогФотографий+СокрЛП(ИмяВыбрФайла); Если ФС.СуществуетФайл(ФайлФото)=1 Тогда Фотография.Загрузить(КаталогФотографий+ФС.НайтиПервыйФайл(ФайлФото)); КонецЕсли; КонецЕсли;
Эту вставку можно сделать в самом конце процедуры ПриОткрытии(), перед КонецПроцедуры. Если в вашей конфигурации в модуле формы выбранного справочника процедура ПриОткрытии() отсутствует, то ее нужно создать в таком виде:
Процедура ПриОткрытии() Если ПустоеЗначение(ИмяВыбрФайла) = 0 Тогда ФайлФото=КаталогФотографий+СокрЛП(ИмяВыбрФайла); Если ФС.СуществуетФайл(ФайлФото)=1 Тогда Фотография.Загрузить(КаталогФотографий+ФС.НайтиПервыйФайл(ФайлФото)); КонецЕсли; КонецЕсли; КонецПроцедуры
|