Необходимы некоторые манипуляции с базой:
- В перечислениях «ВидыДополнительнойИнформацииОбъектов» Добавить Значение Ссылка;
- В форме «ФормаСпискаФайловИИзображений» справочника «ХранилищеДополнительнойИнформации» добавить реквизит «Ссылки» с типом «СправочникСписок.ХранилищеДополнительнойИнформации»;
Добавляем новую страницу и выводим на нее реквизит «Ссылки» Рисунок № 2
И добавляем в модуль формы следующее:
Процедура СсылкиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)   
              
               Если НоваяСтрока Тогда
                               Элемент.ТекущиеДанные.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Ссылки;
               КонецЕсли;
КонецПроцедуры
Процедура СсылкиИмяФайлаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
КонецПроцедуры
Процедура СсылкиИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)  
               Диалог = РаботаСФайлами.ПолучитьДиалогВыбораФайлов(Ложь);
              
               Если Не Диалог.Выбрать() Тогда
                               Возврат;
               КонецЕсли;
              
              
               ТекОбъект = ЭлементыФормы.Ссылки.ТекущиеДанные;
               //            ТекОбъект.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла), Новый СжатиеДанных(9));
               ТекОбъект.ИмяФайла = Диалог.ПолноеИмяФайла;
              
               ПолучитьИмяФайлаМассив = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Диалог.ПолноеИмяФайла,"\");
               ПозицияИмяФайла = ПолучитьИмяФайлаМассив.Количество()-1;
               ПолучитьИмяФайла  = СокрЛП(ПолучитьИмяФайлаМассив[ПозицияИмяФайла]);
               ИмяФайлаБезРасширения =  Лев(ПолучитьИмяФайла,СтрДлина(ПолучитьИмяФайла)-4);
               ТекОбъект.Наименование = ИмяФайлаБезРасширения;
              
КонецПроцедуры
Процедура СсылкиВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)                             СтандартнаяОбработка=Ложь;
                               //ЗапуститьПриложение(ЭлементыФормы.Ссылки.ТекущиеДанные.ИмяФайла);
                               КоманднаяПанельСсылокОткрыть("");
КонецПроцедуры
Процедура СсылкиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)     
               Если ВладелецФормы <> Неопределено Тогда
                               Оповестить("ОбновитьФорму", Новый Структура("ИмяЭлемента","ИзмененСписокСправочникаХранилищеДопИнформации"),мОбъектОтбора);
               КонецЕсли;
КонецПроцедуры
Процедура СсылкиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа)
              
КонецПроцедуры
Процедура СсылкиПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
                               ПередОкончаниемРедактирования(Элемент, НоваяСтрока, Перечисления.ВидыДополнительнойИнформацииОбъектов.Ссылки);
КонецПроцедуры
Процедура КоманднаяПанельСсылокОткрыть(Кнопка) 
              
               ИмяФайла =  ЭлементыФормы.Ссылки.ТекущиеДанные.ИмяФайла;
               ВыбФайл = Новый Файл(ИмяФайла);
               Если ВыбФайл.Существует() Тогда
                               ЗапуститьПриложение(ИмяФайла);
               ИначеЕсли Лев(ИмяФайла,2) = "L:" Тогда
                                НовоеИмя = "Имя Каталога" + Сред(ИмяФайла,3);
                                ВыбФайлНовый = Новый Файл(НовоеИмя);
                                Если ВыбФайлНовый.Существует() Тогда
                                               ЗапуститьПриложение(НовоеИмя);
                               КонецЕсли;
               ИначеЕсли Лев(ИмяФайла,2) = "Y:" Тогда
                                НовоеИмя = "Имя Каталога" + Сред(ИмяФайла,3);
                                ВыбФайлНовый = Новый Файл(НовоеИмя);
                                Если ВыбФайлНовый.Существует() Тогда
                                               ЗапуститьПриложение(НовоеИмя);
                                КонецЕсли;
    ИначеЕсли Лев(ИмяФайла,2) = "Z:" Тогда
                                НовоеИмя = "Имя Каталога" + Сред(ИмяФайла,3);
                                ВыбФайлНовый = Новый Файл(НовоеИмя);
                                Если ВыбФайлНовый.Существует() Тогда
                                               ЗапуститьПриложение(НовоеИмя);
                                КонецЕсли;
               КонецЕсли;
              
КонецПроцедуры
Процедура СсылкиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)  
              
               ОформлениеСтроки.Ячейки.ИмяФайла.ОтображатьКартинку = Истина;
               ОформлениеСтроки.Ячейки.ИмяФайла.ИндексКартинки = РаботаСФайлами.ПолучитьИндексПиктограммыФайла(РаботаСФайлами.ПолучитьРасширениеФайла(ДанныеСтроки.Ссылка.ИмяФайла));
КонецПроцедуры
Процедура КоманднаяПанельДополнительныхФайловПоказывать(Кнопка)
              
               Объект = ЭлементыФормы.ДополнительныеФайлы.ТекущиеДанные.Ссылка.ПолучитьОбъект();
              
               //Если НЕ Объект.ЭтоНовый() и Не (РольДоступна("ПолныеПрава") ИЛИ Ин_Общиймодуль.ПроверитьПраво("00063",глЗначениеПеременной("глТекущийПользователь"))) Тогда
               //            Возврат;
               //КонецЕсли;
              
               Если Объект.Наименование = "Показывать" Тогда
                               Объект.Наименование = "";
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Пометка = Ложь;
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Картинка = БиблиотекаКартинок.СнятаПометка;
               ИначеЕсли ЗначениеЗаполнено(Объект.Наименование) Тогда       
                              
                               Режим = РежимДиалогаВопрос.ДаНет;
                               Текст = "Записать в наименование ""Показывать""?";
                               Ответ = Вопрос(Текст, Режим, 0);
                               Если Ответ = КодВозвратаДиалога.Нет Тогда
                                               Возврат;
                               КонецЕсли;
                               Объект.Наименование = "Показывать";
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Пометка = Истина;
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Картинка = БиблиотекаКартинок.УстановленаПометка;
               Иначе
                               Объект.Наименование = "Показывать";
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Пометка = Истина;
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Картинка = БиблиотекаКартинок.УстановленаПометка;
               КонецЕсли;
               Объект.Записать();
              
КонецПроцедуры
Процедура УстановитьКнопкуПоказывать(Элемент);
              
               Если Элемент.ТекущиеДанные <> Неопределено Тогда
                               Если Элемент.ТекущиеДанные.Наименование = "Показывать" Тогда
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Пометка = Истина;
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Картинка = БиблиотекаКартинок.УстановленаПометка;
                                               Иначе
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Пометка = Ложь;
                              ЭлементыФормы.КоманднаяПанельДополнительныхФайлов.Кнопки.Показывать.Картинка = БиблиотекаКартинок.СнятаПометка;
                               КонецЕсли;
               КонецЕсли;
              
КонецПроцедуры
Процедура СсылкиПриАктивизацииСтроки(Элемент)  
              
               Если Элемент.ТекущиеДанные = Неопределено Тогда
                               Если ВладелецФормы <> Неопределено Тогда
                                              Оповестить("ОбновитьФорму", Новый Структура("ИмяЭлемента","ИзмененСписокСправочникаХранилищеДопИнформации"),мОбъектОтбора);
                               КонецЕсли;
               КонецЕсли;
КонецПроцедуры
Процедура СсылкиПослеУдаления(Элемент) 
               Если ВладелецФормы <> Неопределено Тогда
                               Оповестить("ОбновитьФорму", Новый Структура("ИмяЭлемента","ИзмененСписокСправочникаХранилищеДопИнформации"),мОбъектОтбора);
               КонецЕсли;
КонецПроцедуры
Указываем путь к хранилищу и нажимаем выполнить. дожидаемся сообщения "Все ОК" и наслаждаемся облегченной базой, все файлы будут перенесены и заменены на ссылки.
Переносит все имеющееся файлы и изображения, хранящиеся в справочнике хранилище дополнительной информации в папку, указанную в строке, при этом если это документ с организацией, то в каталоге создастся папка с наименованием организации, а если это справочник или документ без организации, то папка с названием типа объекта (например, Номенклатура)
Для корректной работы всех пользователей в сети необходимо выбирать общий ресурс хранения файлов с корректными правами доступа.
Тестировалась на конфигурации Управление производственным предприятием, редакция 1.3 с версии 1.3.98.1 и старше.
Проверено на следующих конфигурациях и релизах:
- Управление производственным предприятием, редакция 1.3, релизы 1.3.97.2
Вступайте в нашу телеграмм-группу Инфостарт
 
                                 
                                     
                                    