Имя: Пароль:
1C
1С v8
Выбор каталога и его сохранение
0 demous
 
08.02.12
09:00
Задача в том, что бы в справочнике контрагенты можно было выбирать папку с файлами в сети, и путь к ней сохранялся, сделал я следующим образом - создал кнопку и к ней процедуру на нажатие

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

проблема в том, что он сохраняет путь одинаковый для всех контрагентов, подскажите как исправиться что бы он мог сохранятся разным на все позиции справочника, а то контрагентов порядка 500
1 Ненавижу 1С
 
гуру
08.02.12
09:02
(0) как ты это себе представляешь?
2 Fish
 
гуру
08.02.12
09:02
(0) ИР? :))
3 Wobland
 
08.02.12
09:03
завести путь для каждого ктонрагента
4 demous
 
08.02.12
09:05
папки созданы уже для каждого одноименные, но он при выборе в каком-то из контргаентов, тот же самый путь высвечивает и в других контрагентах
5 demous
 
08.02.12
09:05
как ты это себе представляешь? - нажимаешь на кнопку, и тебе открывается каталог с файлами для этого контрагента... открываешь другого контрагента, делаешь то же нажатие кнопки, и открывается каталог с файлами для него
6 Fish
 
гуру
08.02.12
09:06
Так и задавай значение каталога перед открытием диалога в зависимости от контры.
7 demous
 
08.02.12
09:08
Fish - имеешь ввиду прописать в коде ПередОткрытием Если контрагент ХХХ Тогда ЗапуститьПриложение("C:\"); Иначе и т.п. ????
8 Fish
 
гуру
08.02.12
09:08
ДиалогВыбораФайла (FileDialog)
Каталог (Directory)
Использование:

Чтение и запись.
Описание:

Тип: Строка.
Содержит значение текущего каталога. В режиме выбора каталога может использоваться для определения выбранного каталога.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
Примечание:

В режиме запуска "Веб-клиент" позволяет только получить значение текущего каталога.
9 Fish
 
гуру
08.02.12
09:10
Перед ДиалогВыбораКаталога.Выбрать() пищешь:
Если контра = Пупкин Тогда
ДиалогВыбораКаталога.Каталог = "С:\Пупкин";
....

И т.п.
10 Fish
 
гуру
08.02.12
09:12
+(9) Только хорошо бы еще проверить, существует ли такой каталог.
11 demous
 
08.02.12
09:12
И код на 500 контров не захламит модуль?)
12 Fish
 
гуру
08.02.12
09:12
(11) Оптимизируй
13 Wobland
 
08.02.12
09:13
ДиалогВыбораКаталога.Каталог="c:\"+Контрагент.Наименование?
14 Fish
 
гуру
08.02.12
09:13
Например, храни каталог в реквизите контры - тогда кода будет одна строка :)))
15 Fish
 
гуру
08.02.12
09:14
Или (13) :))
16 Fish
 
гуру
08.02.12
09:17
(11) А вообще ты прав - программный код это зло, только захламляющее модули. Идеальный модуль не должен содержать никакого кода :)))
17 demous
 
08.02.12
09:18
Wobland

ДиалогВыбораКаталога.Каталог="c:\"+Контрагент.Наименование?

Можете подсказать правильное написание данного варианта?(( очень благодарен буду
18 Wobland
 
08.02.12
09:21
предлагаю такое написание данного варианта:
ДиалогВыбораКаталога.Каталог="c:\Контры\Контра_"+Наименование
19 Fish
 
гуру
08.02.12
09:24
(18) Будет весело, если в наименовании попадется слэш или еще какой спецсимвол например :))))
20 Wobland
 
08.02.12
09:25
а, ну да. СтрЗаменить() не забыть ещё
21 Rie
 
08.02.12
09:25
(0) Для начала - где это у тебя написано?
22 Fish
 
гуру
08.02.12
09:28
Имхо проще завести реквизит, т.к. Наименование теоретически может поменяться. Если реквизит пустой - заполнять его при выборе каталога. Таким образом для каждого контры надо будет всего один раз выбрать соответствующий каталог.
23 Rie
 
08.02.12
09:30
(22) О реквизите - уже было: v8: Гиперссылка на каталог ( в форме Справочника )

(0) Кстати, а зачем ты создаёшь новую ветку по той же самой проблеме?
24 Fish
 
гуру
08.02.12
09:32
(23) М-да. Там вроде последним постом: "Спасибо большое за помощь, все получилось"
Видимо не получилось :))))
25 demous
 
08.02.12
09:36
Процедура КаталогДляПолученияФайловНачалоВыбора(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   РежимДиалога = РежимДиалогаВыбораФайла.ВыборКаталога;
   ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(РежимДиалога);
   ДиалогВыбораКаталога.Каталог="D:\Договора\"+Наименование;
   Если ДиалогВыбораКаталога.Выбрать() Тогда
   КаталогДляПолученияФайлов = ДиалогВыбораКаталога.Каталог;
   КонецЕсли;
КонецПроцедуры

Вот работает так как и требовалось)))
По старой ветке выяснилась проблема описанная в шапке данной темы
26 Wobland
 
08.02.12
09:38
(25) что будешь делать, когда диска Д не будет?
27 Rie
 
08.02.12
09:44
(25) А в этой ветке какая проблема выясняется?

Так, чтобы лишних постов не плодить:
- реквизит в справочнике Контрагенты для хранения папки с договорами создан?
- этот реквизит называется КаталогДляПолученияФайлов?
- данными поля ввода КаталогДляПолученияФайлов является именно этот реквизит?
- этот код, который в (0) и в (25) - находится в модуле формы элемента справочника?

Если ответы на все эти вопросы - "Да", то в написанное в (0) насчёт "одного и того же для всех" - не верю.
28 Fish
 
гуру
08.02.12
09:47
(26) +100 Или какой-нибудь шаловливый админ папочку "Договора" переименует?
29 Rie
 
08.02.12
09:53
Кстати, если эти договоры нужны в базе - то почему бы их прямо в ХранилищеЗначения не запихнуть? Пусть в самой базе и хранятся...
30 demous
 
08.02.12
10:36
Если ответы на все эти вопросы - "Да", то в написанное в (0) насчёт "одного и того же для всех" - не верю. - это все Да, и написанное в шапке факт...
Fish - админ не переименует, на изменение папки права даны одному человеку, в базу не хочется пихать по той причине, что эти договора будут в отсканнированном виде, получается - 500 контрагентов ( минимальный договор 10 листов, средний 20-25 ) то есть 500 * 15 = 7500 изображений находятся в хранилище, не хочется этого делать...
31 demous
 
08.02.12
10:37
(26) Сейчас на Д, к вечеру перенесем на сервер...
32 Wobland
 
08.02.12
10:43
>админ не переименует,
это не повод писать г-код
33 Wobland
 
08.02.12
10:45
+(32) в похожей ситуации я использую константу - путь к каталогу выгрузки
34 Rie
 
08.02.12
10:47
(30) Ну, значит, один и тот же каталог выбирали для всех. Или же ответ не "Да" хотя бы на один из вопросов. Или же для контрагента заводится не папка, а просто файл, и выбирать, соответственно, надо именно файл. Чудес не бывает.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс