Имя: Пароль:
1C
1С v8
v8: Регл.задание (сохранить файл) не работает в клиент-серверной базе
0 dft2014
 
13.07.14
17:18
БП 3.0 управляемое приложение.

Подскажите, как сохранить файл в клиент-серверной базе. Сейчас файл не сохраняется. Но если базу запускаю в файловом варианте, то все сохраняется куда надо. Я так понимаю, что надо с сервера передать файл на клиент. Но как это сделать?

Предистория: есть регламентное задание, которое обращается в ОбщийМодуль (в ОбщемМодуле стоит флаг "сервер"), в котором написаны:
-Процедура ЗапросДубликатов()
-Функция ПередатьФайлыДубликатов()

Также в модуле менеджера документа "РеализацияТоваровИУслуг" написана Функция СформироватьДокументДубликатов() , в которой и формируется файл.

Как сделать, чтобы файл сохранялся при запуске базы в клиент-серверном варианте?

Вот код:


// (написано в ОбщемМодуле
Процедура ЗапросДубликатов() Экспорт
    
    МассивДляПередачи   =  РегистрыСведений.ЗапросДубликатов.ПолучитьДокументыДляПередачи();
    ПередатьФайлыДубликатов(МассивДляПередачи);
    
КонецПроцедуры


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


// (написано в модуле менеджера документа "Реализация товаров и услуг"
Функция СформироватьДокументДубликатов(ОбъектПечати) Экспорт  
    
    Массив = Новый Массив;
    Массив.Добавить(ОбъектПечати);
    
    ТабДок = Неопределено;
    ТабДок = Документы.РеализацияТоваровУслуг.ПечатьАктаОбОказанииУслугИзмененный(Массив,Новый СписокЗначений);  
    
    Если ТабДок  = Неопределено Тогда
        Возврат Новый  Структура("Адрес,ИмяФайла",Неопределено,Неопределено);
    КонецЕсли;
    
    ИмяФайла = ПолучитьНаименование(ОбъектПечати);
    Если ПустаяСтрока(ИмяФайла) = 0 Тогда
        
        АдресВременногоКаталога = "C:\TEMP\" + ИмяФайла + "_" + Каталог + ".pdf";
        
        ТабДок.Записать(АдресВременногоКаталога,ТипФайлаТабличногоДокумента.PDF);
        
        Возврат Новый Структура("Адрес,ИмяФайла",АдресВременногоКаталога,ИмяФайла + ".pdf");
    иначе
        Возврат 0;
    КонецЕсли;
    
КонецФункции  
// )написано в модуле менеджера документа "Реализация товаров и услуг"
1 dft2014
 
13.07.14
17:20
Советовали использовать временное хранилище, но как?
2 dft2014
 
13.07.14
17:25
Опечатка: Функция СформироватьДокументДубликатов() написана тоже в ОбщемМодуле. А в модуле менеджера документа "РеализацияТоваровИУслуг" написана Функция ПечатьАктаОбОказанииУслугИзмененный().
3 Dmitry1c
 
13.07.14
17:28
АдресВременногоКаталога = "C:\TEMP\" + ИмяФайла + "_" + Каталог + ".pdf";

это он будет делать там, где установлен сервер 1С и под пользователем usr1cv8

так что если у пользователя usr1cv8 нет прав, то запись файла будет невозможна
4 dft2014
 
13.07.14
17:30
Вот функция, в которой формируется сам табличный документ (она прописана в модуле менеджера документа "Реализация товаров и услуг"):

Функция ПечатьАктаОбОказанииУслугТаня(МассивОбъектов, ОбъектыПечати)  Экспорт
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб            = Истина;
    ТабличныйДокумент.ОриентацияСтраницы    = ОриентацияСтраницы.Портрет;
    ТабличныйДокумент.ИмяПараметровПечати    = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт";
    
    Макет = УправлениеПечатью.ПолучитьМакет("Документ.РеализацияТоваровУслуг.ПФ_MXL_Акт_Изм1");  
    ПараметрыПечати = Новый Структура();
    ДанныеАктаОбОказанииУслуг = ПолучитьДанныеДляПечатнойФормыАктОбОказанииУслуг(ПараметрыПечати, МассивОбъектов);
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    Возврат ТабличныйДокумент;
КонецФункции
5 PR
 
13.07.14
17:33
(0) А вот это вот душераздирающее "HELP!!!" в сабже зачем?
Что бы никто не испытывал иллюзий на тему сетевой воспитанности ТС?
6 dft2014
 
13.07.14
17:33
(3) На сервер 1С захожу под полными правами. Запускаю базы на самом сервере 1С. Далее запускаю регламентное задание на файловой базе - все формируется. Если же запускаю на серверной базе - то не сохраняется!
7 dft2014
 
13.07.14
17:34
Я так понимаю, что надо формировать табличный документ на сервере, а затем для сохранения передавать его на клиент. Подскажите, пож-та, как это сделать!!!
8 dft2014
 
13.07.14
17:36
Файл формируется в модуле менеджера документа "Реализация товаров и услуг" (см.пост(4)), что дальше с ним делать?
9 dft2014
 
13.07.14
17:39
(3) я захожу на сервер 1С под пользователем 1cserver, т.к. у нас именно под ним запущен сервер 1С. Но в саму программу захожу под своей учеткой (у меня тоже полные права). Это правильно?
Непонятно, что за пользователь usr1cv8, о котором Вы пишите в (3).
10 dft2014
 
13.07.14
17:40
(5) Это крик души!!! Т.к. ОЧЕНЬ нужна помощь!!!
11 PR
 
13.07.14
17:52
(10) Странный ты человек. Вот у меня твой вопль изначально отбил всякое желание помогать.
12 dft2014
 
13.07.14
17:56
Если ставлю &НаКлиенте:

&НаКлиенте
Функция СформироватьДокументДубликатов(ОбъектПечати) Экспорт

То выдает кучу синтаксических ошибок, например:
Процедура или функция с указанным именем не определена (СформироватьДокументДубликатов) (Проверка: Сервер)
13 alle68
 
13.07.14
18:09
Что в сообщении об ошибке при выполнении задания написано, если она, конечно, есть?
14 dft2014
 
13.07.14
18:14
(13) Ошибки никакой не выдает, пишет, что регл.задание выполнено, но ничего не создает на диске.
15 alle68
 
13.07.14
18:36
Значение "АдресВременногоКаталога" известно, где файл ищется?
16 Dmitry1c
 
13.07.14
18:39
(9) >пользователь usr1cv8

пользователь, от имени которого запускается процесс rphost.exe, который в вашем случае и пытается сохранить файл.
17 Wobland
 
13.07.14
18:40
>ПечатьАктаОбОказанииУслугТаня
господа гардемарины! а у нас сегодня без фото взлетает?
18 dft2014
 
13.07.14
18:47
Добавила строчки для помещения файла в хранилище (смотрите комментарий в коде ниже). Извлечение из хранилища делаю в той же функции. Это правильно?

Функция СформироватьДокументДубликатов(ОбъектПечати) Экспорт  
    
    Массив = Новый Массив;
    Массив.Добавить(ОбъектПечати);
    
    ТабДок = Неопределено;
    ТабДок = Документы.РеализацияТоваровУслуг.ПечатьАктаОбОказанииУслугИзмененный(Массив,Новый СписокЗначений);  
    
    Если ТабДок  = Неопределено Тогда
        Возврат Новый  Структура("Адрес,ИмяФайла",Неопределено,Неопределено);
    КонецЕсли;
    
    ИмяФайла = ПолучитьНаименование(ОбъектПечати);
    Если ПустаяСтрока(ИмяФайла) = 0 Тогда
        
        АдресВременногоКаталога = "C:\TEMP\" + ИмяФайла + "_" + Каталог + ".pdf";
        
        ТабДок.Записать(АдресВременногоКаталога,ТипФайлаТабличногоДокумента.PDF);
        
        // вот здесь добавила во временное хранилище(Начало
        АдресТабДок = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(АдресВременногоКаталога));
        Двоичное=ПолучитьИзВременногоХранилища(АдресТабДок);
        // вот здесь добавила во временное хранилище)Конец
        
        
        Возврат Новый Структура("Адрес,ИмяФайла",АдресВременногоКаталога,ИмяФайла + ".pdf");
    иначе
        Возврат 0;
    КонецЕсли;
    
КонецФункции
19 dft2014
 
13.07.14
18:49
(15) Да, я явно указываю путь для сохранения и имя файла:
АдресВременногоКаталога = "C:\TEMP\" + ИмяФайла + "_" + Каталог + ".pdf";

(16) Подскажите, как и где посмотреть от имени какого пользователя у нас запускается rphost.exe?
20 Wobland
 
13.07.14
18:50
(18) это такая мантра - сунуть в хранилище, вынуть из хранилища? бессмысленно
21 Escander
 
13.07.14
18:54
(17) тебе нужно мужское фото топлесс? Ты чего это?
22 Wobland
 
13.07.14
18:56
(21) та не.. теперь я уверен, что нас водят за нос по поводу пола. вон в прошлой теме автор не скрывался
23 PR
 
13.07.14
18:56
(21) О чем тебе говорит 8-й символ поста (18)?
24 Escander
 
13.07.14
18:56
(20) так, стоп, какое в хранилище-из хранилища! У регламентного задания откуда возникнет клиент?
25 dft2014
 
13.07.14
18:57
(20) А как правильно сделать?
(17),(21) Если это так важно, то я - девушка. Фото (лица) будет всем помогавшим и принимавшим активное участие (без пошлостей).
26 Wobland
 
13.07.14
18:57
dft2014    
Вроде прояснилось: зашла на сам сервер 1С и запустила это регл.задание под СВОЕЙ учеткой. В результате оказалось, что файлы сохраняются не в моем каталоге, а в каталоге пользователя 1cserver:

C:\Users\1cserver\AppData\Local\Temp

====
к чему бы это?..
27 Escander
 
13.07.14
18:57
(23) оно не определилось со своим полом до сих пор но уже одинэсит?
28 dft2014
 
13.07.14
18:58
(24) Регламентное, в клиент-серверной базе, всегда отрабатывает на сервере, если я правильно логику 1С понимаю. В хранилище я поместила. А как теперь его сохранить и вытащить из хранилища?
29 dft2014
 
13.07.14
18:59
(27) В профиле по-умолчанию всегда мужской пол, при регистрации на форуме, а поменять в карточке пол - не дает. Вот и мучаюсь )))
30 Wobland
 
13.07.14
19:00
(28) так сохраняй, без всяких хранилищ
31 PR
 
13.07.14
19:00
(25) Мадам, вы привносите в процесс коммерческую составляющую, торгуясь насчет фото.
Фото — это просто ритуал такой, а не какая-то безразмерная ценность :))
А вы им машете, как США санкциями перед Россией :))
32 Escander
 
13.07.14
19:00
(25).1 никак! у тебя клиента нет!

есть следующие варианты:
1.пиши куда тебе нужно, но на каталог получатель нужны права у того от имени кого запущен процесс - rphost (если нужно он подтвердит).
2. писать в базу, например в РС у которого есть реквизит - Хранилище значений.
3.Слать файло по почте.
33 dft2014
 
13.07.14
19:01
(26) Это моя другая тема: это если из файловой копии запускать (я тогда не могла разобраться куда сохраняет). А сейчас пытаюсь отладить на клиент-серверной базе.
34 Escander
 
13.07.14
19:01
(29) по умолчанию читают СП
35 dft2014
 
13.07.14
19:01
(30) КАК???
36 Wobland
 
13.07.14
19:01
(33) то есть, взаимопонимание с сервером не было достигнуто, хотя всё стало понятно?
37 Wobland
 
13.07.14
19:02
(35) .Записать()
38 rphosts
 
13.07.14
19:02
(32).1 подтверждаем
39 dft2014
 
13.07.14
19:03
(32) Подскажите, как и где посмотреть от имени какого пользователя у нас запускается rphost.exe? Или это будет тот же пользователь, от имени которого запускается сервер 1С?
40 Wobland
 
13.07.14
19:04
кстати, о пошлостях. старинный йумор. пикантная вставка на ассемблере
http://compuhumour.narod.ru/listing/prog_party.html
41 Escander
 
13.07.14
19:04
(39) d lbcgtnxtht
42 Escander
 
13.07.14
19:04
в диспетчере задач, например...
или в администрировании - список служб
43 dft2014
 
13.07.14
19:05
(37) Записать() что? Вот так не записывает в клиент-серверной базе:

АдресВременногоКаталога = "C:\TEMP\" + ИмяФайла + "_" + Каталог + ".pdf";
ТабДок.Записать(АдресВременногоКаталога,ТипФайлаТабличногоДокумента.PDF);
АдресТабДок = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(АдресВременногоКаталога));
44 Escander
 
13.07.14
19:06
(40) сунул-высунул.... пикантно, если вы поняли о чём я
45 Wobland
 
13.07.14
19:06
(43) ну не записывает, так не записывает, что уж поделать
46 Escander
 
13.07.14
19:06
(43) третья строка лишняя
47 Wobland
 
13.07.14
19:07
(43) ещё можно получать имя временного файла. туда точно можно будет
48 Wobland
 
13.07.14
19:07
+(46) а то склещивание случится
49 Escander
 
13.07.14
19:09
(47) моветон писать в каталог временных файлов... если не хочешь сразу удалять.
50 Escander
 
13.07.14
19:09
(48) эээээ, ну короче ты меня понял....

ещё-бы дедлуком девушку пугал.
51 dft2014
 
13.07.14
19:09
(42) В диспетчере у нас пользователь 1cserver, у него полные права.

(32) Объясните, пож-та фразу "пиши куда тебе нужно, но на каталог получатель нужны права у того от имени кого запущен процесс - rphost (если нужно он подтвердит).":

Я захожу через удаленное подключение на сервер 1С под учеткой 1cserver. Далее запускаю под своей учеткой клиент-серверную базу (не 1cserver) и регламентное задание. Этого достаточно?
52 Wobland
 
13.07.14
19:10
(49) я не наю, что там мадам планирует с ними делать. знакомые слова из (0) не вошли в мой разум
53 dft2014
 
13.07.14
19:10
(46) Тогда без этой лишней строчки остается исходный код в (0), но он не срабатывает на клиент-серверной базе!!!
54 Wobland
 
13.07.14
19:12
(53) не срабатывает? это ЖР так сказал?
55 Escander
 
13.07.14
19:12
(51) .1 все процессы сервера от пользователя 1cserver? - НЕ ВЕРЮ!

.2 например так:С:\OUT_FILE\23_59_59\
56 Escander
 
13.07.14
19:13
(53) НЕ ВЕРЮ!!!
57 dft2014
 
13.07.14
19:14
(54) В ЖР вообще ничего не пишется!
58 Wobland
 
13.07.14
19:15
(57) задание не запустилось штоль? а мы тут страдаем все
59 Escander
 
13.07.14
19:15
(58) кста, а что там консоль регламентны заданий говорит?
60 dft2014
 
13.07.14
19:16
(59) У меня нет консоли под упр.приложение (((
61 Escander
 
13.07.14
19:16
самое главное, а какая платформа-то? а то девушка имеет **** с 8.5.3.1068 а я тут голов ломаю
62 Wobland
 
13.07.14
19:17
(60) запусти в обычном
(61) это плохо? вчера взгромоздил себе поиграться
63 dft2014
 
13.07.14
19:17
(58) Запустилось, в ЖР написано, что Регл.задание запустилось и закончилось.
Факт - что на файловой копии все тоже самое работает!!!
64 dft2014
 
13.07.14
19:18
(61) 8.2.19
65 Wobland
 
13.07.14
19:18
(63) и чего врём? ищи файл
66 Escander
 
13.07.14
19:18
(62).1 опередил...
.2 игрался в пятницу... у меня с хранилищем какая-то шняга была невнятная... но т.к. ухожу в отпуск не разобрался.
67 Escander
 
13.07.14
19:20
к записи табличного документа есть в СП примечание: Не поддерживается сохранение в PDF картинок типа Метафайл.


у вас там не метафайл сохраняется?
68 Escander
 
13.07.14
19:21
лана мне через 4 часа за руль, пойду покимарю
69 Wobland
 
13.07.14
19:21
(67) дык, то ж про картинки а не пдф целиком.. не?
70 dft2014
 
13.07.14
19:24
(69) У меня PDF
71 Wobland
 
13.07.14
19:27
(70) где лежит?
72 dft2014
 
13.07.14
19:31
(71) Не поняла вопроса...
73 Wobland
 
13.07.14
19:32
шайтан-вьюером посмотреть? только быстро
74 dft2014
 
13.07.14
19:33
(73) Вы о чем???
75 dft2014
 
13.07.14
19:34
Ключевой момент, что на на файловой копии, которую я разместила на том же 1С сервере, все работает!!!
76 Wobland
 
13.07.14
19:36
(74) team viewer, ammyy
77 Wobland
 
13.07.14
19:36
а то я до сотни не дотерплю. а финал узнать хочется
78 dft2014
 
13.07.14
19:40
(76) Не установлен и политикой безопасности - запрещено (((
79 alle68
 
13.07.14
19:45
У учётки, запустившей агента 1с (последняя колонка в консоли служб), на папку "С:\TEMP" есть права?
Какое полное имя разыскиваемого файла (Каталог чему равен)?
80 dft2014
 
13.07.14
20:41
(79) Права полные. Каталог C:\TEMP. Полное имя файла получается: 2_460050_20140605_976_aktcs_МО4.pdf
81 Escander
 
13.07.14
20:44
(78) тимвьювер не обязательно ставить, можно и запустить и этого хватит
82 dft2014
 
13.07.14
20:45
Мне кажется, тут дело не в правах, а в том, что в управляемом приложении, в клиент-серверной базе, нельзя сохранить файл явно. Надо каким-то образом использовать временное хранилище.
83 dft2014
 
13.07.14
20:45
(81) политикой безопасности не запустится, да он и не установлен и прав нет установить.
84 dft2014
 
13.07.14
20:47
Пробовала указывать и каталог C:\Users\1cserver\AppData\Local\Temp - результат нулевой.
85 Escander
 
13.07.14
20:47
(83) его не нужно устанавливать!!! достаточно запуститьь экзешник
86 Escander
 
13.07.14
20:47
(82) >нельзя сохранить файл явно.

как хорошо что я про такое не знал, когджа подобное реализовывал
87 dft2014
 
13.07.14
20:48
(85) Пробовала и не раз - безопасники все отрубили.
88 dft2014
 
13.07.14
20:51
(86) А как же вот это (читать внизу): http://wiki.kint.ru/index.php/Работа_с_хранилищем_значений_в_1Cv82

"В управляемом приложении реализован новый механизм работы с файлами. Он обеспечивает обмен файлами между информационной базой и клиентским приложением. Особенностью данного механизма является то, что он ориентирован на использование в тонком клиенте и Веб-клиенте и разработан с учетом ограничений на работу с файлами, накладываемыми веб-браузерами.
Механизм представляет собой набор методов, с помощью которых можно поместить данные, хранящиеся локально у пользователя, во временное хранилище информационной базы, перенести эту информацию из временного хранилища в базу данных и получить ее обратно на компьютер пользователя. Наиболее распространенные прикладные задачи, решаемые этим механизмом, – это хранение сопроводительной информации, например, изображений товаров, связанных с договорами документов и т. п.
"
89 Escander
 
13.07.14
20:54
(87) явным образом из пользовательского режима запустит тот код который у тебюя в регламентном не отрабатывает - имхается, что права у вас мягко говоря не полные
90 hhhh
 
13.07.14
20:54
(87) но точно у пользователя usr1cv8 сервера есть полные права на диск C: сервера?
91 Escander
 
13.07.14
20:55
(88) какое мне доло до 100500 объяснений почему это не должно работать если у меня это работает
92 Escander
 
13.07.14
20:56
(90) да там упоротые безопасники закрыли всё а крайней сделали 1С
93 hhhh
 
13.07.14
20:56
(88) на сервере у папки C:\temp сделайте свойства, закладка безопасность, там нажмите Дополнительно и скрин сюда выложите.
94 Escander
 
13.07.14
20:59
dft2014, когда сервер 1С запущен с ключом дебаг попытка выполнить (89) покажет где проблема
95 dft2014
 
13.07.14
21:02
(93)Скрин завтра с утра выложу, т.к. сейчас не на работе. Но там 100% полные права у папки C:\temp, т.к. еще в пятницу я таким образом сама проверила доступ и среди пользователей был и пользователь 1cserver. Кстати под ним же, если это имеет значение, заущен и агент 1С (я тоже лично проверяла).
96 dft2014
 
13.07.14
21:03
(94) Сервер с этим ключом у нас запущен, но в отладку на серверной базе не заходит. Хотя и флажки на предметах отладки стоят и прочее. Поэтому отлаживаю на файловой копии.
97 dft2014
 
13.07.14
21:04
(90) Полностью на диск С у пользователя 1cserver прав нет.
98 hhhh
 
13.07.14
21:06
(97_ тога проверьте наследование у папки c:\temp если задано наследование, убейте его.
99 dft2014
 
13.07.14
21:08
(98) Хорошо, завтра спрошу у админов.

Также у меня не отправляется почта из 1С из этой же клиент-серверной базы, хотя из файловой копии все отправляется. Я тему создала v8: v8: Отправка почты из 1С на серверной базе не срабатывает но вопрос так и остался нерешенным...
100 Escander
 
13.07.14
21:08
(96) сделай контрольный вывод хоть после каждой строки кода....

насчёт отладка не срабатывает - перезапустите сервер 1С
101 dft2014
 
13.07.14
21:13
(100) Уже и перезагружали и чего только не делали - не хочет в отладке работать на сервере!

А что именно выводить?
102 Escander
 
13.07.14
21:16
(101) Сообщить("Строка №101 выполнена");
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой