Бухгалтерия попросила добавить возможность загрузки картинок для основных средств. Взял за основу несколько строк из "Профессиональной разработки", слегка переделал. В результате добавил управляемую форму элемента справочника ОС, в которой загружаем и просматриваем изображение ОС. В обычных формах (типовых) добавил кнопки для открытия Управляемой Формы. Если при очередном обновлении конфигурации кнопки пропадут, достаточно их будет восстановить.
Сразу оговорюсь что можно пункты с 1 по 6 выполнить через объединение с файлом конфигурации. Итак:
1) в справочник ОС добавляем реквизит "ФайлКартинки" с типом "СправочникСсылка.ХранилищеДополнительнойИнформации"
2) для справочника ОС создаем Управляемую форму элемента справочника.
3) для формы добавляем два реквизита "ИмяФайлаКартинки" и "СсылкаНаКартинку" с типом Строка
4) в форму добавляем ПолеФормы, имеющий вид Поле картинки и связываем с реквизитом формы "СсылкаНаКартинку" (ПутьКДанным). В этом поле будет отображаться картинка ОС.
5) для загрузки и сохранения изображения добавляем две локальные команды ЗагрузитьСДиска и СохранитьНаДиск:
&НаКлиенте
Процедура ЗагрузитьСДиска(Команда)
АдресВХранилище="";
ВыбранноеИмяФайла="";
Если ПоместитьФайл(АдресВХранилище,,ВыбранноеИмяФайла,,УникальныйИдентификатор) Тогда
Файл = новый Файл(ВыбранноеИмяФайла);
ИмяФайлаКартинки = Файл.Имя;
СсылкаНаКартинку = АдресВХранилище;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьНаДиск(Команда)
Если Объект.ФайлКартинки.ИмяФайла = "" Тогда
Предупреждение("У ОС нет сохранненой в базе картинки");
иначе
СсылкаНаФайлВИБ = ПолучитьНавигационнуюСсылку(Объект.ФайлКартинки,"Хранилище");
ПолучитьФайл(СсылкаНаФайлВИБ,Объект.ФайлКартинки.ИмяФайла);
КонецЕсли;
КонецПроцедуры
6) в модуль формы добавляем следующие процедуры:
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(СсылкаНаКартинку) Тогда
УдалитьИзВременногоХранилища(СсылкаНаКартинку);
СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(ТекущийОбъект.ФайлКартинки,"Хранилище");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.ФайлКартинки.ИмяФайла<>"" Тогда
СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.ФайлКартинки,"Хранилище");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(СсылкаНаКартинку) Тогда
ДвоичныеДанные = ПолучитьИзВременногоХранилища(СсылкаНаКартинку);
ХЗ = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
если ТекущийОбъект.файлкартинки.пустая() тогда
НовыйЭлементСпрХранДопИнф = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
НовыйЭлементСпрХранДопИнф.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
НовыйЭлементСпрХранДопИнф.ИмяФайла = ИмяФайлаКартинки;
НовыйЭлементСпрХранДопИнф.Объект = ТекущийОбъект.ссылка;
НовыйЭлементСпрХранДопИнф.Хранилище = ХЗ;
НовыйЭлементСпрХранДопИнф.Наименование = "Изображение "+ТекущийОбъект.Наименование;
НовыйЭлементСпрХранДопИнф.Записать();
ЭлементСпрХранДопИнфСсылка = НовыйЭлементСпрХранДопИнф.Ссылка;
иначе
ЭлементСпрХранДопИнф = ТекущийОбъект.файлкартинки.ПолучитьОбъект();
ЭлементСпрХранДопИнф.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
ЭлементСпрХранДопИнф.ИмяФайла = ИмяФайлаКартинки;
ЭлементСпрХранДопИнф.Объект = ТекущийОбъект.ссылка;
ЭлементСпрХранДопИнф.Хранилище = ХЗ;
ЭлементСпрХранДопИнф.Наименование = "Изображение "+ТекущийОбъект.Наименование;
ЭлементСпрХранДопИнф.Записать();
ЭлементСпрХранДопИнфСсылка = ЭлементСпрХранДопИнф.ссылка;
КонецЕсли;
ТекущийОбъект.Файлкартинки = ЭлементСпрХранДопИнфСсылка;
КонецЕсли;
КонецПроцедуры
7) В основных формах справочника добавляем кнопки для открытия нашей формы:
-для формы списка
СсылкаНаОС = ЭлементыФормы.СправочникСписок.ТекущаяСтрока;
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаОС);
ОткрытьФорму("Справочник.ОсновныеСредства.Форма.ФормаИзображения",ПараметрыФормы);
-для формы элемента
ПараметрыФормы = Новый Структура("Ключ", СправочникОбъект.Ссылка);
ОткрытьФорму("Справочник.ОсновныеСредства.Форма.ФормаИзображения",ПараметрыФормы);
8) Для реквизита Объект справочника ХранилищеДополнительнойИнформации добавляем тип СправочникСсылка.ОсновныеСредства
Можно просто в конфигураторе через сравнение и объединение с конфигурацией из файла 1Cv8.cf добавить нашу упрвляемую форму, и добавить кнопки (пункт 7) и тип СправочникСсылка.ОсновныеСредства для реквизита Объект спр. ХранилищеДополнительнойИнформации (пункт 8). Внимание! При сравнении галочки ставим как на фотографии 3.png
P.S. Аналогично можно для любого справочника добавить возможность сохранять изображения.