helpf.pro
Регистрация

не получается прикрепить файл в 1с 7.7

Nastenok
18.03.2010 18:37Прочитано: 7631
Доброго времени суток.
Никак не могу разобраться:
нужно чтобы одни пользователи прикрепляли файл, а другие -этот файл просматривали.

Может кто подскажешь, где я заблуждаюсь
1. выбрать файл
2. путь и имя файла поместить в реквизиты док. (1 реквизит или 2?)
3. ЗАПУСТИТЬ ПРИЛОЖЕНИЕ(Путь+Имя файла)
и далее открыть файл
Yandex
Возможно, вас также заинтересует
Реклама на портале
IKSparrow
18.03.2010 21:12Ответ № 1
Если мне не изменяет память, то хранилища подобного хранилищу в 1С 8, в семёрке нет. Поэтому, прикрепить файл и внедрить его в базу не получится. Вроде. Хотя могу ошибаться. Поэтому, максимум получится сохранить как раз путь и имя файла в обычных реквизитах типа строка.
Диалог открытия и выбора файла будет выглядеть так:
Код 1C v 7.x
 
Каталог = "";
ИмяФайла = "";
Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог, "Выберите файл", "*.xml|*.xml", , ) = 0 Тогда
// Пользователь файл не выбрал
Возврат;
КонецЕсли;
ПолноеИмяФайла = Каталог + ИмяФайла;

IKSparrow
18.03.2010 21:15Ответ № 2
А запустить приложение можно попробовать таким образом:
Код 1C v 7.x
 
КомандаСистемы("cmd.exe");
IKSparrow
18.03.2010 21:17Ответ № 3
Только тут проблема одна - если пользователи работают в сети, то такие ссылки на файлы должны быть в формате UNC и храниться в сети. Пример - \\server\share\file.doc
Иначе, у каждого будет создаваться ссылка на путь в стандартном формате. И иные пользователи не смогут увидеть такие файлы.
E_Migachev
19.03.2010 08:25Ответ № 4
Вот как я делал для 8.0(для 7.7 не долго переделать + IKSparrow дал уже наброски):
Для каждого контрагента в сетевой папке хранились все документы(договора, приложения, соглашения и т.д.)

Код 1C v 8.х
  Процедура ПриОткрытии()
заголовок="Документы контрагента "+контр;
// мТекущийКаталог = Путь к сетевой папке, + Парам - я использовал как Код контрагента т.е.
//Заходим в общую папку, а там куча папок(наименование код контрагента), а в ней документы по ним
мТекущийКаталог = константы.ПутьКАрхивуКонтрагентов.Получить()+"\"+парам;
//Если в общем каталоге НЕТ ПАПКИ КОНТРАГЕНТА, ТО СОЗДАЕМ ЕЕ
КаталогНаДиске = Новый Файл(мТекущийКаталог);
Если НЕ каталогНаДиске.Существует() Тогда
СоздатьКаталог(мТекущийКаталог);
КонецЕсли;
//Заполним список существующих файлов, процедура ниже
ЗаполнитьТаблицуДаннымиТекущегоКаталога(мТекущийКаталог);
КонецПроцедуры


// Процедура добавления нового файла в общий каталог с файлами
Процедура ФайлыНажатие(Элемент)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
ДиалогОткрытияФайла.Каталог=константы.Путьктиповымдоговорам.Получить();
Фильтр = "Все (*,*)|*.*";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл";

Если ДиалогОткрытияФайла.Выбрать() Тогда
ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
максдлин=стрдлина(ПутьКФайлу);
миндлин=стрдлина(ДиалогОткрытияФайла.Каталог);
ФайлН = прав(ПутьКФайлу,максдлин-миндлин);
КонецЕсли;
копироватьфайл(ПутьКФайлу, Строка(мТекущийКаталог+"\"+файлН));
ЗаполнитьТаблицуДаннымиТекущегоКаталога(мТекущийКаталог);
КонецПроцедуры

//Этой процедурой считывались все файлы и папки из общего каталога и заполнялась ТЗ файлов
Процедура ЗаполнитьТаблицуДаннымиТекущегоКаталога(мТекущийКаталог)
тз.Очистить();
макс="*";
МассивНайденных = НайтиФайлы(мТекущийКаталог, макс);
Для Каждого Файл из МассивНайденных Цикл
если файл.расширение="" тогда
рд_ТЗ= тз.добавить();
рд_ТЗ.Название = файл.имябезрасширения;
рд_ТЗ.ФайлОтчета = файл.полноеимя;
рд_ТЗ.путь = файл.путь;
если файл.этокаталог() тогда
рд_ТЗ.ФлагКаталога = 1;//это папка
иначе
рд_ТЗ.ФлагКаталога = 0;//это не папка
конецесли;
конецесли;
КонецЦикла;
КонецПроцедуры

//При двойном щелчке в ТЗ на имени файла выполнятся:
Процедура открытьТБ(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
если ВыбраннаяСтрока.ФлагКаталога = "1" тогда
мТекущийКаталог = ВыбраннаяСтрока.ФайлОтчета;
ЗаполнитьТаблицуДаннымиТекущегоКаталога(мТекущийКаталог);
иначе
ЗапуститьПриложение(ВыбраннаяСтрока.ФайлОтчета);
конецесли;
КонецПроцедуры
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.