Изображение Основного Средства




Возможность добавлять изображения основных средств.

Бухгалтерия попросила добавить возможность загрузки картинок для основных средств. Взял за основу несколько строк из «Профессиональной разработки», слегка переделал. В результате добавил управляемую форму элемента справочника ОС, в которой загружаем и просматриваем изображение ОС. В обычных формах (типовых) добавил кнопки для открытия Управляемой Формы. Если при очередном обновлении конфигурации кнопки пропадут, достаточно их будет восстановить.

Сразу оговорюсь что можно пункты с 1 по 6 выполнить через объединение с файлом конфигурации. Итак:

1) в справочник ОС добавляем реквизит «ФайлКартинки» с типом «СправочникСсылка.ХранилищеДополнительнойИнформации»

2) для справочника ОС создаем Управляемую форму элемента справочника.

3) для формы добавляем два реквизита «ИмяФайлаКартинки» и «СсылкаНаКартинку» с типом Строка

4) в форму добавляем ПолеФормы, имеющий вид Поле картинки и связываем с реквизитом формы «СсылкаНаКартинку» (ПутьКДанным). В этом поле будет отображаться картинка ОС.

5) для загрузки и сохранения изображения добавляем две локальные команды ЗагрузитьСДиска и СохранитьНаДиск:

&НаКлиенте
Процедура ЗагрузитьСДиска(Команда)
   АдресВХранилище=»»;
   ВыбранноеИмяФайла=»»;
   Если ПоместитьФайл(АдресВХранилище,,ВыбранноеИмяФайла,,УникальныйИдентификатор) Тогда
      Файл = новый Файл(ВыбранноеИмяФайла);
      ИмяФайлаКартинки = Файл.Имя;
      СсылкаНаКартинку = АдресВХранилище;
      Модифицированность = Истина;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура СохранитьНаДиск(Команда)
   Если Объект.ФайлКартинки.ИмяФайла = «» Тогда
      Предупреждение(«У ОС нет сохранненой в базе картинки»);
   иначе
      СсылкаНаФайлВИБ = ПолучитьНавигационнуюСсылку(Объект.ФайлКартинки,»Хранилище»);
      ПолучитьФайл(СсылкаНаФайлВИБ,Объект.ФайлКартинки.ИмяФайла);
   КонецЕсли;
КонецПроцедуры

6) в модуль формы добавляем следующие процедуры:

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   Если ЭтоАдресВременногоХранилища(СсылкаНаКартинку) Тогда
      УдалитьИзВременногоХранилища(СсылкаНаКартинку);
      СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(ТекущийОбъект.ФайлКартинки,»Хранилище»);
   КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Если Объект.ФайлКартинки.ИмяФайла<>»» Тогда
      СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.ФайлКартинки,»Хранилище»);
   КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(СсылкаНаКартинку) Тогда
   ДвоичныеДанные = ПолучитьИзВременногоХранилища(СсылкаНаКартинку);
   ХЗ = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
   если ТекущийОбъект.файлкартинки.пустая() тогда
      НовыйЭлементСпрХранДопИнф = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
      НовыйЭлементСпрХранДопИнф.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
      НовыйЭлементСпрХранДопИнф.ИмяФайла = ИмяФайлаКартинки;
      НовыйЭлементСпрХранДопИнф.Объект = ТекущийОбъект.ссылка;
      НовыйЭлементСпрХранДопИнф.Хранилище = ХЗ;
      НовыйЭлементСпрХранДопИнф.Наименование = «Изображение «+ТекущийОбъект.Наименование;
      НовыйЭлементСпрХранДопИнф.Записать();
      ЭлементСпрХранДопИнфСсылка = НовыйЭлементСпрХранДопИнф.Ссылка;
   иначе
      ЭлементСпрХранДопИнф = ТекущийОбъект.файлкартинки.ПолучитьОбъект();
      ЭлементСпрХранДопИнф.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
      ЭлементСпрХранДопИнф.ИмяФайла = ИмяФайлаКартинки;
      ЭлементСпрХранДопИнф.Объект = ТекущийОбъект.ссылка;
      ЭлементСпрХранДопИнф.Хранилище = ХЗ;
      ЭлементСпрХранДопИнф.Наименование = «Изображение «+ТекущийОбъект.Наименование;
      ЭлементСпрХранДопИнф.Записать();
      ЭлементСпрХранДопИнфСсылка = ЭлементСпрХранДопИнф.ссылка;
   КонецЕсли;
   ТекущийОбъект.Файлкартинки = ЭлементСпрХранДопИнфСсылка;
КонецЕсли;
КонецПроцедуры

7) В основных формах справочника добавляем кнопки для открытия нашей формы:

-для формы списка

 СсылкаНаОС = ЭлементыФормы.СправочникСписок.ТекущаяСтрока;

ПараметрыФормы = Новый Структура(«Ключ», СсылкаНаОС);
ОткрытьФорму(«Справочник.ОсновныеСредства.Форма.ФормаИзображения»,ПараметрыФормы);

-для формы элемента

ПараметрыФормы = Новый Структура(«Ключ», СправочникОбъект.Ссылка);
ОткрытьФорму(«Справочник.ОсновныеСредства.Форма.ФормаИзображения»,ПараметрыФормы);

8) Для реквизита Объект справочника ХранилищеДополнительнойИнформации  добавляем тип СправочникСсылка.ОсновныеСредства

 

Можно просто в конфигураторе через сравнение и объединение с конфигурацией из файла 1Cv8.cf добавить нашу упрвляемую форму, и добавить кнопки (пункт 7) и тип СправочникСсылка.ОсновныеСредства для реквизита Объект спр. ХранилищеДополнительнойИнформации (пункт 8). Внимание! При сравнении галочки ставим как на фотографии 3.png


P.S. Аналогично можно для любого справочника добавить возможность сохранять изображения.

 


2 Comments

  1. CratosX

    (0) В рубрикаторе сразу не приметил назначение — для БГУ, лучше укажи это отдельно в статье.

    И правильнее называть свои объекты и свойства со своим префиксом, например

    NickOmskiy2_ИмяФайлаКартинки и

    NickOmskiy2_СсылкаНаКартинку

    Reply
  2. Sasha255n

    Вообщем то как частный случай могу допустить что данное ТЗ кому то и могло быть поставлено.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *