Вносим изменения в три процедуры модуля формы:
Процедура КоманднаяПанельДополнительныхФайловОткрытьФайлы(Кнопка)
// { Админ [14.04.2011 11:36:35]
ВыделенныеСтроки = ЭлементыФормы.ДополнительныеФайлы.ВыделенныеСтроки;
ОбъектФайла = ЭлементыФормы.ДополнительныеФайлы.ТекущиеДанные;
ТипОбъекта = ТипЗнч(ОбъектФайла.Ссылка.Объект);
// для ОСТов нельзя рушить иерархию папок на сервере, поэтому для них путь прописан в имени файла
// для остальных все файлы находятся в одной папке на сервере (не распределены по подпапкам)
Если ТипОбъекта = Тип("СправочникСсылка.СерииНоменклатуры") Тогда
ИмяКаталога = "F:\Сертификаты";
ИначеЕсли ТипОбъекта = Тип("СправочникСсылка.СпецификацииНоменклатуры") Тогда
ИмяКаталога = "F:\папка обмена\Чертежи\Эскизы сварных кромок";
ИначеЕсли ТипОбъекта = Тип("СправочникСсылка.ОСТ") Тогда
ИмяКаталога = "";
КонецЕсли;
Если ВыделенныеСтроки = Неопределено Тогда
ОткрытьФайлДополнительнойИнформации(ИмяКаталога, ОбъектФайла.ИмяФайла);
Иначе
Если ВыделенныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Для каждого СсылкаФайл из ВыделенныеСтроки Цикл
ОткрытьФайлДополнительнойИнформации(ИмяКаталога, ОбъектФайла.ИмяФайла);
КонецЦикла;
КонецЕсли;
Возврат;
// } Админ [14.04.2011 11:36:35]
РаботаСФайлами.ОткрытьФайлы(ЭлементыФормы.ДополнительныеФайлы.ТекущиеДанные, ЭлементыФормы.ДополнительныеФайлы.ВыделенныеСтроки, Ложь);
КонецПроцедуры
Показать
Процедура ДополнительныеФайлыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
НовоеРасширениеФайла = РаботаСФайлами.ПолучитьРасширениеФайла(ЭлементыФормы.ДополнительныеФайлы.ТекущиеДанные.ИмяФайла);
Если Не ОтменаРедактирования
И РаботаСФайлами.НельзяИзменятьРасширение(мТекущееРасширениеФайла, НовоеРасширениеФайла) Тогда
Отказ = Истина;
ЭлементыФормы.ДополнительныеФайлы.ТекущаяКолонка = ЭлементыФормы.ДополнительныеФайлы.Колонки.ИмяФайла;
Возврат;
КонецЕсли;
Если Не ОтменаРедактирования
И НоваяСтрока
И ЭлементыФормы.ДополнительныеФайлы.ТекущиеДанные.Хранилище.Получить() = Неопределено Тогда
// { Админ [14.04.2011 11:36:35]
// ничего не проверяем - позволяем не заполнять ячейку Хранилище - комментарим код от 1с:
//Отказ = Истина;
//Предупреждение("Необходимо выбрать файл.");
//ЭлементыФормы.ДополнительныеФайлы.ТекущаяКолонка = ЭлементыФормы.ДополнительныеФайлы.Колонки.ИмяФайла;
//Возврат;
// } Админ [14.04.2011 11:36:35]
КонецЕсли;
ПередОкончаниемРедактирования(Элемент, НоваяСтрока, Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл);
КонецПроцедуры
Показать
Процедура ДополнительныеФайлыИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
Диалог = РаботаСФайлами.ПолучитьДиалогВыбораФайлов(Ложь);
Если Не Диалог.Выбрать() Тогда
Возврат;
КонецЕсли;
// { Админ [14.04.2011 11:36:35]
Попытка
ТекОбъект = ЭлементыФормы.ДополнительныеФайлы.ТекущиеДанные;
//ТекОбъект.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла), Новый СжатиеДанных);
Если ТипЗнч(ОбязательныеОтборы.Объект) = Тип("СправочникСсылка.ОСТ") Тогда
// для ОСТов нельзя рушить иерархию папок на сервере, поэтому для них путь прописываем в имени файла
ТекОбъект.ИмяФайла = Диалог.ПолноеИмяФайла;
Иначе
// для остальных все файлы находятся в одной папке на сервере (не распределены по подпапкам)
ТекОбъект.ИмяФайла = Сред(Диалог.ПолноеИмяФайла, СтрДлина(Диалог.Каталог) + 1);
КонецЕсли;
Исключение
Сообщить("" + ОписаниеОшибки());
КонецПопытки;
Возврат;
// } Админ [14.04.2011 11:36:35]
Попытка
ТекОбъект = ЭлементыФормы.ДополнительныеФайлы.ТекущиеДанные;
ТекОбъект.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла), Новый СжатиеДанных);
ТекОбъект.ИмяФайла = Сред(Диалог.ПолноеИмяФайла, СтрДлина(Диалог.Каталог) + 1);
Исключение
Сообщить("" + ОписаниеОшибки());
КонецПопытки;
Ответ = Вопрос("Удалить файл источник?",РежимДиалогаВопрос.ДаНетОтмена,,КодВозвратаДиалога.Нет,"Удаление файла");
Если Ответ = КодВозвратаДиалога.Да Тогда
УдалитьФайлы(Диалог.ПолноеИмяФайла);
КонецЕсли;
КонецПроцедуры
Показать
и добавляем процедуру:
// { Админ [09.09.2011 11:28:42]
// Данная процедура скопирована из общего модуля РаботаСФайлами, но в отличие от нее открывает файл
// не Эксплорером, а приложением, ассоциированным с расширением файла. Причина в том, что при запуске
// Эксплорера пользователя выбрасывает на рабочий стол сервера.
//
// Открывает переданный файл на диске с учетом типа файлов. Файлы, с которыми
// может работать 1С:Предприятие открываются в 1С:Предприятии. Остальные файлы
// пытаются открыться зарегистрированным для них в системе приложением.
//
// Параметры
// ИмяКаталога – Строка, содержащая путь к каталогу файла на диске.
// ИмяФайла – Строка, содержащая имя файла, без имени каталога.
//
Процедура ОткрытьФайлДополнительнойИнформации(ИмяКаталога, ИмяФайла)
Если ИмяКаталога = "" Тогда
// это хранилище для справочника ОСТ, в имени файла прописан полный путь
ЗапуститьПриложение(ИмяФайла);
Возврат
КонецЕсли;
ПолноеИмяФайла = РаботаСФайлами.ПолучитьИмяФайла(ИмяКаталога, РаботаСФайлами.УдалитьЗапрещенныеСимволыИмени(ИмяФайла));
РасширениеФайла = Врег(РаботаСФайлами.ПолучитьРасширениеФайла(ИмяФайла));
Если РасширениеФайла = "MXL" Тогда
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ПолноеИмяФайла);
ТабличныйДокумент.Показать(ИмяФайла, Лев(ИмяФайла, СтрДлина(ИмяФайла) - 4));
ИначеЕсли РасширениеФайла = "TXT" Тогда
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ПолноеИмяФайла);
ТекстовыйДокумент.Показать(ИмяФайла, Лев(ИмяФайла, СтрДлина(ИмяФайла) - 4));
Иначе
ЗапуститьПриложение(ПолноеИмяФайла);
КонецЕсли;
КонецПроцедуры // ОткрытьФайлДополнительнойИнформации()
Показать