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