Имя: Пароль:
1C
 
Запись табличного документа в файл.
0 Shalun
 
naïve
27.03.26
14:36
Всем привет!
Спецы! Кто может подсказать? Есть обработка, с таким кодом:

Попытка
   ТабДок.Записать(ПутьКФайлу,
        ТипФайлаТабличногоДокумента.XLS);
   Сообщить("Записан новый файл в " + ПутьКФайлу);
Исключение
   Сообщить(ОписаниеОшибки());
КонецПопытки;

Раньше работало все норм, файл записывался, но вот сегодня чет перестал записывать. В Исключение не уходит, вроде как файл записывает без ошибок, но файла нет. :-( Папку с указанным путем к файлу программа открывает, но она пустая. Т.е. папки не попутал. Доступ к папке разумеется есть в том числе и у USR1CV8 (клиент-серверная база).
Кто может подсказать, что могло случиться, в каком направлении копать?
1 spiller26
 
27.03.26
14:58
(0) Управляемые формы?
2 Shalun
 
naïve
27.03.26
15:04
(1) да, управляемые. А какое это имеет значение, если запись идет из модуля объекта?
3 Garykom
 
гуру
27.03.26
15:09
(0) Копать в сторону логов:
ПутьКФайлу
Новый СистемнаяИнформация()
КаталогВременныхФайлов()
ИмяКомпьютера()
и т.д.

Причем прямо там же где ТабДок.Записать() вызывается
4 Garykom
 
гуру
27.03.26
15:14
100% глупая ошибка в имени файла
Ну там разделитель каталога забыл или еще что
5 Кирпич
 
27.03.26
15:12
пишешь на сервере, а ждешь файл на клиенте. или наоборот
6 Garykom
 
гуру
27.03.26
15:16
(5) это надо быть сильно глупым и совсем не понимать клиент-сервер
у меня было что вместо Каталог+"\"+ИмяФайла умудрялся писать в Каталог+ИмяФайла
В итоге ждешь в шаре Каталог а файлик лежит уровнем выше с именем другим
7 Кирпич
 
27.03.26
15:24
(6) ну кто то не понимает про слеши, а кто то клиент сервер не понимает. эт нормально.
просто писано всё было на локальной базе, скорее всего. а там и сервер и клиент - один хрен. но настал момент запуска на сервере...
8 Shalun
 
naïve
27.03.26
15:34
(6) СПАСИБО! Так и вышло, файл лежит уровнем выше с другим именем, забыли поставить "\". :-)))) Пипец, позорище.... :-))))))))))))
9 Garykom
 
гуру
27.03.26
15:35
(7) клиент-сервер это архитектурная ошибка (не знать что код выполняется на другом компе)

а кривой ПутьКФайлу это локальная, любой может скосячить

можно запросить темп каталог у системы
или взять его с настроек
и не убедиться что там есть слеш в конце (прямой или обратный в зависимости от системы)
добавить имя файла и удивляться
10 PLUT
 
гуру
27.03.26
15:40
(0) подсказываем....

1) например, удалить папку предполагаемого назначения...
по идее, при записи (ТабДок.Записать(...)) по указанному пути должна воскреснуть папка (Каталог) и в ней должен появиться файл.
если папка не воскресла и не свалилась попытка в исключение, значит папка воскресла в другом месте (на сервере, например)

2) добавить магическое заклинание в Попытку  и после Сообщить(....)

ЗапуститьПриложение(ПутьКФайлу);
11 Кирпич
 
27.03.26
15:42
(9) человек не знает как в отладчике посмотреть значение переменной. может он и про клиент-сервер не знает
12 lubitelxml
 
27.03.26
15:46
(8) интересно тогда а как раньше все норм было? Без слеша записывалось в нужное место...
13 Garykom
 
гуру
27.03.26
15:55
(12) например в настройках каталог был со слешем
14 Shalun
 
naïve
27.03.26
15:55
(12) Дело в том, что ПутьКФайлу это переменная, в которой хранится сам адрес. Этот адрес задается вручную в форме и сохраняет последнее значение. Поскольку редко этот адрес меняем, я да же не думал об этом. Но кто-то видимо поменял...
Надо как то продумать другой алгоритм, с защитой от таких глупых ошибок.
15 Fedor-1971
 
27.03.26
16:12
(14) Голубой наив предполагать, что пользователи не накосячат
Просто проверяй последний символ, там, где должен быть путь и будет тебе счастье