Ошибка при вызове метода контекста открытьфайл xml

Ошибка при создании xml ☑ 0

SFilchakov

10.06.16

22:32

Всем привет!

Хочу кое что в хмл запихнуть.

Пишу в модуле объекта обработки

Процедура СоздатьФайлДанныхВыгрузки(СтруктураВыгрузки)

    ЗаписьXML=Новый ЗаписьXML();

    ЗаписьXML.ОткрытьФайл(«d:\doc.xml»);

КонецПроцедуры

\\\\

И сразу падает:

Ошибка при вызове метода контекста (ОткрытьФайл)

    ЗаписьXML.ОткрытьФайл(«d:\doc.xml»);

по причине:

Каталог не обнаружен ‘d:\doc.xml’

//////

Хотя все примеры по создания файла xml так и начинаются:

ЗаписьXML=Новый ЗаписьXML();

    ЗаписьXML.ОткрытьФайл(«d:\doc.xml»);

///

Пробовал и так:

ЗаписьXML=Новый ЗаписьXML;

    ЗаписьXML.ОткрытьФайл(«d:\doc.xml»);

То же самое.

Подскажите, что не так?

1

Dmitry1c

10.06.16

22:33

наклонная черта в другую сторону..

2

Dmitry1c

10.06.16

22:35

или контекст на сервере

3

SFilchakov

10.06.16

22:38

Что значит контекст на сервере?

Это в модуле обработки на 8.3

Поменял наклон, тоже самое.

4

Лефмихалыч

10.06.16

22:38

(0) это все происходит на сервере приложений, а там все не так, как у тебя на клиенте

5

SFilchakov

10.06.16

22:40

Это надо делать на клиенте что ли?

6

SFilchakov

10.06.16

22:42

Спасибо, теперь понял.

А как же желать загрузку выгрузку по регламентному заданию через файл xml? если регламентное задание крутится на сервере, а файл можно создать только на клиенте и перейти с сервера на клиент нельзя?

7

Лефмихалыч

10.06.16

23:05

(6) файл можно создать и на сервере. Просто надо создавать его на дисках и в папках, которые существуют на сервере

8

Лефмихалыч

10.06.16

23:06

+(7) даже — не просто существуют, а еще и права на запись в них должны быть у пользователя, под которым запущена служба сервера приложений (ragent)

9

SFilchakov

10.06.16

23:15

А где этого пользователя можно посмотреть?

10

Стальная Крыса

11.06.16

04:18

На том компьютере, где работает сервер 1С

Открытие файла пдф на сервере

Я

Eskeych

03.10.22 — 13:34

Хочу сделать открытие пдф документа и подпись ецп в http запросе. для этого мне нужно выполнить код

ЗаписьПДФ = Новый ЗаписьPDF();

ЗаписьПдф.Открыть(АдресКФайлуНаПК)

ну и дальше выполняется код

тут вылезла ошибка: «ошибка вызова метода контекста открыть()»

в синтакс-помощнике доступность стоит веб-сервис, сервис, тонкий клиент

Eskeych

1 — 03.10.22 — 13:38

ЗаписьPDF (PDFWriter)

Открыть (Open)

Вариант синтаксиса: Открыть файл

Синтаксис:

Открыть(<ИмяФайла>)

Параметры:

<ИмяФайла> (необязательный)

Тип: Строка.

Имя файла для записи PDF-документа.

Вариант синтаксиса: Установить поток

Синтаксис:

Открыть(<Поток>)

Параметры:

<Поток> (необязательный)

Тип: Поток, ПотокВПамяти, ФайловыйПоток.

Поток для записи PDF-файла.

Описание:

Открывает PDF-документ для записи.

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

Тонкий клиент, веб-клиент, сервер, толстый клиент.

См. также:

ЗаписьPDF, метод ОткрытьАсинх

ЗаписьPDF, метод НачатьОткрытие

Использование в версии:

Доступен, начиная с версии 8.3.16.

Описание изменено в версии 8.3.18.

Воть :)

Мультук

2 — 03.10.22 — 13:39

(0)

1) Сервер и клиент физически разные компьютеры?

2) АдресКФайлуНаПК = «c:123.pdf»; //Лежит на локальном компьютере

или

   АдресКФайлуНаПК = «servermydoc123.pdf»; //Лежит в сети, доступен учетке от которой крутится 1с на сервере

Garykom

3 — 03.10.22 — 13:44

(0) Вот ты и столкнулся что PDF не подходящий для подписи…

Eskeych

4 — 03.10.22 — 13:46

(3) яы его интерактивно выбирал и подписывал. Но в http запросе не хочет открывать.

Eskeych

5 — 03.10.22 — 13:47

(2) на локальном компе лежит. я имер ввиду на сервере &НаСервере вот это)

Garykom

6 — 03.10.22 — 13:48

(4) Под http запросом подразумеваешь http-сервис?

А он от чьего имени работает?

Eskeych

7 — 03.10.22 — 13:49

(2) на апаче развернул сервер, и на этом же пк хочу подписать. 2) АдресКФайлуНаПК = «c:123.pdf»; //Лежит на локальном компьютере вот этот вариант

Eskeych

8 — 03.10.22 — 13:50

(6) да, http-сервис. Вызываю с браузера) В каком смысле от чьего имени вызываю?)

Garykom

9 — 03.10.22 — 13:50

(7) А апач на попытку получить этот «c:123.pdf» что скажет?

Garykom

10 — 03.10.22 — 13:51

(9)+ Точнее апач дергает 1С от какого юзера, с какими правами и видимостью/доступом?

Eskeych

11 — 03.10.22 — 13:53

(9) это намек на то что бы прописать сетевой пусть к файлику?

(10) это демка БП с полными правами

Eskeych

12 — 03.10.22 — 13:53

файловая, дальше все будет в грм

Eskeych

13 — 03.10.22 — 13:57

Кстати, я думал передать файлик во временное хранилище и оттуда его запульнуть в записьPDF.Открыть(адресВремХран), по сути тогда 1с уже будет видеть этот файл. Взлетит или нет?)

Kassern

14 — 03.10.22 — 13:58

(13) Это проверить меньше минуты, дольше наверное пост сюда написать)

Eskeych

15 — 03.10.22 — 14:03

(14) не, ругается)

Eskeych

16 — 03.10.22 — 14:25

ап)

Сергиус

17 — 03.10.22 — 15:08

(15)Какой путь в АдресКФайлуНаПК?

Eskeych

18 — 03.10.22 — 15:29

(17) на раб столе C:UsersNewDesktopcovd.pdf

Eskeych

19 — 03.10.22 — 15:32

может быть у апача нет доступа к файлу? и нужно его как-нибудь дать?)

Kassern

20 — 03.10.22 — 15:37

(19) пробовали создать общую папку доступную всем?

Kassern

21 — 03.10.22 — 15:38

И покажите как вы через хранилище пробовали, скиньте кусок кода, как вы передавали с директивами и получали ДД.

mikecool

22 — 03.10.22 — 15:40

(15) значит тебе нельзя ((

Ногаминебить

23 — 03.10.22 — 15:42

(15) записьPDF.Открыть(адресВремХран)

Так сюда не адрес нужен, а имя файла вроде как. Надо файл временный на сервере создать, его заполнить и потом к имени обращаться.

Kassern

24 — 03.10.22 — 15:43

(23) я потому и просил, чтобы он кусок кода скинул. Может он из тех, кто на переменных экономит))

Eskeych

25 — 03.10.22 — 15:43

(21) та его уже затер, много попыток. Хочу попробовать вот так сделать:  

ИмяВременногоФайла = КаталогВременныхФайлов() + «.pdf»;

ДвоичныйФайл = СтрокаНабора.Файл.Получить();

ДвоичныйФайл.Записать(ИмяВременногоФайла);

Eskeych

26 — 03.10.22 — 15:43

это на инфостарте нашел

Eskeych

27 — 03.10.22 — 15:44

(23) пробовал прописывать файл C:UsersNewDesktopcovd.pdf вот так прям не видит и все. Пишет что {ФормированиеТестовыхДанных HTTPСервис.Customers.Модуль(84)}: Ошибка при вызове метода контекста (Открыть)

Kassern

28 — 03.10.22 — 15:48

В общем код должен быть примерно таким

&НаКлиенте

Процедура ПрочитатьФайлНаКлиенте()

Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

    Диалог.Заголовок = «Выберите файл PDF»;

    Диалог.ПолноеИмяФайла = «»;

    Диалог.ПредварительныйПросмотр = Истина;

    //Диалог.Фильтр=»» — тут свой формат pdf можете прописать

    ВыбранФайл=Диалог.Выбрать();

    Если ВыбранФайл Тогда

        Файл=Новый Файл(Диалог.ПолноеИмяФайла);

        ДД=Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла);

        Адрес=ПоместитьВоВременноеХранилище(ДД,УникальныйИдентификатор);

        ЗагрузитьФайлНаСервере(Адрес);

    КонецЕсли;

КонецПроцедуры

&НаСервере

Процедура ЗагрузитьФайлНаСервере(Адрес)

    

    ДД=ПолучитьИзВременногоХранилища(Адрес);

    Поток=ДД.ОткрытьПотокДляЧтения();

    ЗаписьПДФ = Новый ЗаписьPDF();

        ЗаписьПдф.Открыть(Поток);

КонецПроцедуры

Eskeych

29 — 03.10.22 — 15:53

(28) с потоком может и сработать. Но есть одно НО) я не могу получить файл на сервере сразу. ругается. хотел двоичные данные сделать, он говорит, что ошибка при вызове конструктора (двоичные данные). Все таки проблема в доступе к файлу?

писал так ДД = Новый ДвоичныеДанные(«C:UsersNewDesktopcovd.pdf»);

Eskeych

30 — 03.10.22 — 15:54

(29) или меня уже плавит?

Kassern

31 — 03.10.22 — 15:55

(29) Вы код целиком покажите, вы этот кусок где запускали, на клиенте, или на сервере?

Ногаминебить

32 — 03.10.22 — 15:55

Патамушта тогда надо ИмяВременногоФайла = КаталогВременныхФайлов() + «КакоетоКлевоеИмя.pdf»; И его уже туда, где щас юзерслалала

Eskeych

33 — 03.10.22 — 15:58

(31) это все http запрос. выполняется все на сервере, как я понял.

Функция GetcustomersListGetCustomersList(Запрос)  

    ПутьКФайлыПодписанный = «192.168.50.104обменcontract_offer-29-51 — копия.pdf»; //пробовал закинуть в общую папку  

    //ДД = Новый ДвоичныеДанные(«C:/Users/New/Desktop/contract.pdf»); // это получаю с пк

    //КопироватьФайл(«C:/Users/New/Desktop/contract_offer-29-51.pdf», ПутьКФайлыПодписанный);

    Адрес = ПоместитьВоВременноеХранилище(ПутьКФайлыПодписанный);

    ДанныеСертификата = ДанныеСертификата();

    Штамп = Штамп(ДанныеСертификата.Наименование, ДанныеСертификата.ДанныеСертификата);

    ПутьКаталога = КаталогВременныхФайлов() + «.pdf»;

    //ДД.Записать(ПутьКаталога);

    

    МенеджерКриптографии = Новый МенеджерКриптографии(ДанныеСертификата.ИмяПрограммы, «», ДанныеСертификата.ТипПрограммы);

    МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = «145236»;

    

    ПодписьPDF = Новый ОписаниеПодписиPDF;

    ПодписьPDF.Имя = «ПодписьДоговора»;    

    ПодписьPDF.Сертификат = Новый СертификатКриптографии(ДанныеСертификата.ДанныеСертификата);

    ПодписьPDF.ТипПодписи = ТипПодписиPDF.Сертифицирующая;

    ПодписьPDF.БлокировкаДокумента = Истина;

    ПодписьPDF.Верх = 5;

    ПодписьPDF.Лево = 70;  

    ПодписьPDF.НомерСтраницы = 1;

    

    ЗаписьPDF = Новый ЗаписьPDF();

    ЗаписьPDF.Открыть(ПутьКаталога);

    //

    //ЗаписьPDF.ЗаписатьПодпись(МенеджерКриптографии, ПодписьPDF, Штамп);

    //ЗаписьPDF.Закрыть();

    

    Массив = Новый Массив;

    Массив.Добавить(«ываываыв»);

    

    ЗаписьJSON = Новый ЗаписьJSON;

    ЗаписьJSON.УстановитьСтроку();

    ЗаписатьJSON(ЗаписьJSON, Массив);

    СтрокаДляОтвета = ЗаписьJSON.Закрыть();

    

    Ответ = Новый HTTPСервисОтвет(200);

    Ответ.Заголовки.Вставить(«Content-type», «application/JSON;  charset=utf-8»);

    Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

    Возврат Ответ;            

    
КонецФункции

Eskeych

34 — 03.10.22 — 16:00

функция передолюана уже во все дыры, не ругайтесь, почищу потом)

Kassern

35 — 03.10.22 — 16:01

(33) Сделайте простенькую проверку.

Файл = Новый файл(ПутьДоФайла);

Файл.Существует() — что выдает?

Kassern

36 — 03.10.22 — 16:02

Скорее всего юзвер, под которым запускается служба апача у вас системная учетная запись, у нее нет прав на чтение этого файла, вот вы и любаетесь с последствиями.

Eskeych

37 — 03.10.22 — 16:03

(35) пробовал создавать, ругается на Новый Файл

Eskeych

38 — 03.10.22 — 16:03

Сейчас скину точную ошибку

Eskeych

39 — 03.10.22 — 16:04

Ошибка при вызове конструктора (ФАйл) вот что пишет

Eskeych

40 — 03.10.22 — 16:06

(36) апач запущен кстати от имени системы, а не юзера

Kassern

41 — 03.10.22 — 16:08

(40) попробуйте от админа запустить и протестить

Eskeych

42 — 03.10.22 — 16:16

и апач и 1с запущены от имени админа

Ivan_495

43 — 03.10.22 — 16:22

путь пропиши d:имя.pdf

Eskeych

44 — 03.10.22 — 16:32

(43) не не работает, даже в папках с общим доступом.

Ivan_495

45 — 03.10.22 — 16:35

с клиента попробуй

Kassern

46 — 03.10.22 — 16:38

(44) можете в base64 передать данный pdf файл и тогда http сервис его без проблем скушает и обработает)

Eskeych

47 — 03.10.22 — 16:44

(46) сейчас пилю регистр в котором буду хранить двоичные данные файлов. и из них формировать док и отправлять. Отпишусь если получится)

Eskeych

48 — 03.10.22 — 17:15

В общем на каталог временных фалов тоже ругается.

    НаборЗаписей = РегистрыСведений.БК_РегистрСведений1.СоздатьНаборЗаписей();

    НаборЗаписей.Прочитать();

    ИмяВремХранилища = КаталогВременныхФайлов() + «namefile.pdf»;

    Строка = НаборЗаписей[0];

    ДвочиныйФайл = Строка.Файл.Получить();

    
    Если ДвочиныйФайл <> Неопределено Тогда

        
        ДвочиныйФайл.Записать(ИмяВремХранилища);

        
    КонецЕсли;

Eskeych

49 — 03.10.22 — 17:16

видимо что-то реально с доступом к папкам

Kassern

50 — 03.10.22 — 17:27

(48) зачем что-то записывать, когда есть поток?

Eskeych

51 — 03.10.22 — 17:34

Попытка записи в поток не поддерживающий запись — ответ

Garykom

52 — 03.10.22 — 19:05

(18) >на раб столе C:UsersNewDesktopcovd.pdf

Ты в курсе что рабочий стол одного юзера недоступен другому без админских прав?

Eskeych

53 — 04.10.22 — 09:07

(52) все было запущено от админа и 1с и апач. Кстати указал каталог временных файлов при публикации. ПДФ вроде как открыл, но не хочет писать подпись

Garykom

54 — 04.10.22 — 09:41

Fram

55 — 04.10.22 — 11:15

Интересно все что тс пишет происходит и делается в пределах одной системы. А то все обсуждение можно затирать если это не так )

Eskeych

56 — 04.10.22 — 11:42

(54) в общем сделал и то и то, не пашет. Текущий код:

    НаборЗаписей = РегистрыСведений.БК_РегистрСведений1.СоздатьНаборЗаписей();

    НаборЗаписей.Прочитать();

    

    ИмяВремХранилища = КаталогВременныхФайлов() + «namefile.pdf»;

    Строка = НаборЗаписей[0];

    ДвочиныйФайл = Строка.Файл.Получить();

        

    Каталог = КаталогВременныхФайлов();

    ИмяФайла = Строка(Новый УникальныйИдентификатор) + «.pdf»;

    ИмяПромеж = Каталог + ИмяФайла;

    ДвочиныйФайл.Записать(ИмяПромеж);

    ДанныеСертификата = ДанныеСертификата();

    Штамп = Штамп(ДанныеСертификата.Наименование, ДанныеСертификата.ДанныеСертификата);

        

    МенеджерКриптографии = Новый МенеджерКриптографии(«Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider», «», 80);

    МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = «145»;  

        

    ПодписьPDF = Новый ОписаниеПодписиPDF;

    ПодписьPDF.Имя = «ПодписьДоговора»;    

    ПодписьPDF.Сертификат = Новый СертификатКриптографии(ДанныеСертификата.ДанныеСертификата);

    ПодписьPDF.ТипПодписи = ТипПодписиPDF.Сертифицирующая;  

    //ПодписьPDF.БлокировкаДокумента = Истина;

    //ПодписьPDF.Верх = 5;

    //ПодписьPDF.Лево = 70;  

    //ПодписьPDF.НомерСтраницы = 1;

    

    ЗаписьPDF = Новый ЗаписьPDF();

    ЗаписьPDF.Открыть(ИмяПромеж);    

    ЗаписьPDF.ЗаписатьПодпись(МенеджерКриптографии, ПодписьPDF, Штамп);

    ЗаписьPDF.Закрыть();

    

    Массив = Новый Массив;

    Массив.Добавить(«ываываыв»);

    

    ЗаписьJSON = Новый ЗаписьJSON;

    ЗаписьJSON.УстановитьСтроку();

    ЗаписатьJSON(ЗаписьJSON, Массив);

    СтрокаДляОтвета = ЗаписьJSON.Закрыть();

    

    Ответ = Новый HTTPСервисОтвет(200);

    Ответ.Заголовки.Вставить(«Content-type», «application/JSON;  charset=utf-8»);

    Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

    Возврат Ответ;

из ДД собираю док. Уже ОТКРЫВАЕТ но, не хочет записывать, права на папку и файлы я дал.

Вылетает при выполнении кодманды «ЗаписьPDF.ЗаписатьПодпись(МенеджерКриптографии, ПодписьPDF, Штамп);»

он создает файл. Сохраняет его отображает штамп. Но не доподписывает. подпись оставляет но при проверке пишет что подпись недействительна.

если это все подписывать обработкой то все норм. Кстати, после того как http сервис вываливает с этой ошибкой «Ошибка при вызове метода контекста (ЗаписатьПодпись)» . Нужно чистить кеш иначе даже обработка выдает ошибку 0х00000000 тип оне находит контейнер сетрификата.

Eskeych

57 — 04.10.22 — 11:44

Ошибка при получении свойства сертификата (0x00000000) вот ошибка. Решается если добавить заново базу в список estart

  

Garykom

58 — 04.10.22 — 13:56

(56) Ты понимаешь что фоновое подписание «на сервере» это не тривиальная задача?

пиши микросервис на Go как я делал в свое время https://github.com/Garykom/mdlp

 

Денис Кузевич

Заглянувший

Сообщений: 4
Авторитет:

0

Регистрация: 10.10.2012

Хочу сообщить о небольшой проблеме в обработке загрузки данных в БП3.0.

В ситуации когда Сервер 1С Предприятия находится на одном физическом сервере, а клиенты запускаются на другом, то при выборе файла данных появляется ошибка:
Не удалось прочитать данные из файла:
   C:\Users\user\Documents\unload_20150112_150805.xml
   Ошибка: {ВнешняяОбработка.ЗагрузкаДанных.МодульОбъекта(349)}: Ошибка при вызове метода контекста (ОткрытьФайл): Файл не обнаружен ‘C:\Users\user\Documents\unload_20150112_150805.xml’

Связано с тем, что код чтения файла выполняется на сервере, а путь получен на клиенте, соответственно файла на сервере не существует!
На данный момент решил проблему, размещением файлов выгрузки в сетевой папке, видимой с обоих серверов, но правильней было бы переписать выгрузку с использованием временного хранилища.

 

В обработке на основной форме сверху есть режим. Надо переключить «На клиенте»

 

Артём Бавенд

Заглянувший

Сообщений: 971
Авторитет:

5

Регистрация: 07.06.2012

Здравствуйте.

Прошу выслать обработки: загрузка в бп 3,0 и 2,0
Также, прошу выслать: методичку обмена АА-БП
Также, прошу выслать сегодняшний вебинар.
Благодарю.

 

Артём Бавенд

Заглянувший

Сообщений: 971
Авторитет:

5

Регистрация: 07.06.2012

Технология загрузки Корректировок. Почему, когда загружается корректировка реализации, она подтягивает за собой первоначальный документ, на основании которого была создана корректировка? Нарушает систему работы, если используется запрет на изменение или создание документов в закрытом периоде, а документ находится как раз в закрытом. А без загрузки этого документа, корректировка грузится не корректно. Во первых не подставляется документ основание. И даже если его подставить вручную, то документ корректировки перезаполняется по этому документу основанию… короче его значения, которые из альфы приходят, полностью заменяются значенимями из вновь подставленного документа основания, т.о. корректировка теряет смысл и приходится делать ее вручную в БП.

 

Элина Мухамедзянова

Заглянувший

Сообщений: 168
Авторитет:

0

Регистрация: 29.07.2011

#5



0


27.01.2015 14:58:05

Цитата
Артём Бавенд пишет:
Здравствуйте.

Прошу выслать обработки: загрузка в бп 3,0 и 2,0
Также, прошу выслать: методичку обмена АА-БП
Также, прошу выслать сегодняшний вебинар.
Благодарю.

Добрый день.

Выслала на почту.

 

Элина Мухамедзянова

Заглянувший

Сообщений: 168
Авторитет:

0

Регистрация: 29.07.2011

#6



0


27.01.2015 17:53:49

Цитата
Артём Бавенд пишет:
Технология загрузки Корректировок. Почему, когда загружается корректировка реализации, она подтягивает за собой первоначальный документ, на основании которого была создана корректировка? Нарушает систему работы, если используется запрет на изменение или создание документов в закрытом периоде, а документ находится как раз в закрытом. А без загрузки этого документа, корректировка грузится не корректно. Во первых не подставляется документ основание. И даже если его подставить вручную, то документ корректировки перезаполняется по этому документу основанию… короче его значения, которые из альфы приходят, полностью заменяются значенимями из вновь подставленного документа основания, т.о. корректировка теряет смысл и приходится делать ее вручную в БП.

Артём,

Воспроизвести вашу ситуацию не удалось. Просьба проверить загрузку снова с обработкой, высланной нами ранее.
Когда загружается корректировка реализации, она подтягивает за собой первоначальный документ — все верно. Документ нужен для нахождения уникальной ссылки в таблице соответствий. В последующем он подтягивается в реквизит «Основание» в корректировке. Этот документ не должен загружаться/изменяться в бухгалтерию, так как стоит дата запрета изменений (регламентная операция «Дата запрета изменения данных» в бухгалтерии).

 

Роман Батов

Заглянувший

Сообщений: 9
Авторитет:

0

Регистрация: 16.03.2015

Здравствуйте.
Прошу ВАС выслать обработку загрузки в БП 3.0 , методичку по обмену АА-БП
Заранее спасибо.

 

Добрый день, Роман.
Обработки и методическое пособие высланы на Ваш почтовый ящик.

 

Роман Батов

Заглянувший

Сообщений: 9
Авторитет:

0

Регистрация: 16.03.2015

Спасибо Вам огромное за оперативность

 

#10



0


17.03.2015 14:13:12

Добрый день, вышлите пожалуйста обработку загрузки в БП 3.0 , методичку по обмену АА-БП.

 

#11



0


17.03.2015 14:39:18

Добрый день, Алексей.
Просьба прислать регистрационный номер вашего программного продукта на alfa@rarus.ru. При наличии у вас активной технологической поддержки обработки вам вышлют ответным письмом.

 

Артём Бавенд

Заглянувший

Сообщений: 971
Авторитет:

5

Регистрация: 07.06.2012

#12



0


06.04.2015 09:58:33

Цитата
Элина Мухамедзянова пишет:

Цитата
Артём Бавенд пишет:
Технология загрузки Корректировок. Почему, когда загружается корректировка реализации, она подтягивает за собой первоначальный документ, на основании которого была создана корректировка? Нарушает систему работы, если используется запрет на изменение или создание документов в закрытом периоде, а документ находится как раз в закрытом. А без загрузки этого документа, корректировка грузится не корректно. Во первых не подставляется документ основание. И даже если его подставить вручную, то документ корректировки перезаполняется по этому документу основанию… короче его значения, которые из альфы приходят, полностью заменяются значенимями из вновь подставленного документа основания, т.о. корректировка теряет смысл и приходится делать ее вручную в БП.

Артём,

Воспроизвести вашу ситуацию не удалось. Просьба проверить загрузку снова с обработкой, высланной нами ранее.
Когда загружается корректировка реализации, она подтягивает за собой первоначальный документ — все верно. Документ нужен для нахождения уникальной ссылки в таблице соответствий. В последующем он подтягивается в реквизит «Основание» в корректировке. Этот документ не должен загружаться/изменяться в бухгалтерию, так как стоит дата запрета изменений (регламентная операция «Дата запрета изменения данных» в бухгалтерии).

Здравствуйте.
БП 2,0
Корректировки перегружаются некорректно. Пример. В БП период закрыт по 31 марта 2015. Делаю загрузку. Перегружается документ корректировки, который корректирует заказ-наряд от декабря 2014 года. Итог: Корректировка загружается с ошибкой: «Проведение документа «Корректировка реализации 00000000003 от 31.03.2015 10:44:00»:
Не заполнено значение реквизита «Документ реализации»!»
Документ загружается, но не проводится, т.к. в нем оказывается не заполнен реквизит Основание. А не заполняется он, т.к. закрыт период. Если период открыт, то все грузится корректно.
Поднимаю снова данную тему, прошу решить проблему.

Изменено: Артём Бавенд06.04.2015 09:59:02

 

#13



0


06.04.2015 16:42:42

Добрый день, Артём.

Ваше сообщение передано разработчику, ответ будет дан в этой ветке форума.

 

Александра Олифер

Посетитель

Сообщений: 138
Авторитет:

30

Регистрация: 16.10.2012

#14



0


07.04.2015 10:46:10

Цитата
Александра Олифер пишет:
Добрый день, Артём.

Ваше сообщение передано разработчику, ответ будет дан в этой ветке форума.

На типовой конфигурации данная ситуация не воспроизводится, необходимо удаленное подключение. Пришлите, пожалуйста, параметры подключения на alfa@rarus.ru

Ситуация. По расписанию регламентного задания выполняется обмен по плану обмена. В процессе обмена читается..должен читаться xml. Но обмен не выполняется по причине ошибки чтения файла: В ЖР более подробно: «{ОбщийМодуль.УправлениеОбменом.Модуль}: Ошибка при вызове метода контекста (ОткрытьФайл) по причине: по причине: Ошибка при выполнении файловой операции  ‘\servобмен
ame.xml'» Чтение выполняется в ЗУП (8.2). Выгрузка из 8.1. В чем может быть причина ошибки? Форматы xml платформ? Или что-то другое?

может банально доступа нет к этой папке?

Ну вроде ж русским языком написано: «Ошибка при выполнении *файловой* операции». Нет там этого файла.

Все там есть, доступ к папке для всех полный

Файл не занят другим приложением, доступен к изменению, хотя это не требуется.

И, кстати, попытался прочитать его просто, выполнив кусок кода в режиме предприятия (ЧтениеXML.ОткрытьФайл(…)). Все ок.

*предположение* у тебя НАСТРОЕН АВТОМАТИЧЕСКИЙ обмен. Который ПОЧЕМУ-ТО не завершился. Этот файл заблокирован ЭТИМ процессом. НАДО: перегрузить сервер 1С.

Обмен завершился. Я же ошибку показал. Файл не заблокирован — 100%

Ладно, замяли. Видно, что никто не сталкивался.

Тэги:

Комментарии доступны только авторизированным пользователям

03.10.2017

    Снимок.JPG

В статье представлен простенький пример передачи файла с клиента на сервер и с сервера на клиент. Плюс к этому разобраны методы работы с записью XML.
Платформа 8.3.10.2466.
Конфигурация Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.49.21).

Большинство новичков-программистов, рано или поздно столкнется с проблемой передачи файла с клиента на сервер или в противоположную сторону! Необходимость передачи файла, скорее всего, возникнет после того, как программист на своем мониторе увидит ошибку вида:

ВнешняяОбработка.XML.Форма.Форма.Форма(61)}: Ошибка при вызове метода контекста (ОткрытьФайл);

Ошибка довольно простая и заключается в том, что находясь на сервере, программист пытается добраться до файла, лежащего у него на компе (на клиенте)! Выход из такой ситуации напрашивается сам собой — передать файл на машину-сервер!

Надеюсь, данная статья станет кому-нибудь полезной и поможет не забуксовать, столкнувшись с проблемой переноса. Ну и как маленький «бонусик» есть пример работы с xml (возможно тоже будем кому-то полезен, в частности для новичка)!

Это мой первый опыт в написании мини статьи, поэтому прошу строго не судить) 

Весь программный код лежит в модуле формы:
 

&НаКлиенте
Процедура СоздатьXMLФайл(Команда)

ДиалогВыбораФайла=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);  // выбор каталога
ДиалогВыбораФайла.Заголовок = "Выберите каталог!";
Если ДиалогВыбораФайла.Выбрать() Тогда
Путь = ДиалогВыбораФайла.Каталог + "ФайлXML.xml";    // присваиваем переменной путь выбранного каталога + имя будущего файла
КомандаДляСозданияФайла = "dir>" + Путь;
КомандаСистемы(КомандаДляСозданияФайла ,Путь); // создаем файл на компе
КонецЕсли;

КонецПроцедуры


&НаКлиенте
Процедура ВыгрузитьВXML(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл для записи в него данных из 1с!";
Если Диалог.Выбрать() Тогда
Путь = Диалог.ПолноеИмяФайла; // выбираем созданный нами файлик для записи в него данных из 1с в формате xml
АдресВременногоХранилища = "";
ПоместитьФайл(АдресВременногоХранилища, Путь,,Ложь, ЭтаФорма.УникальныйИдентификатор); // помещаем наш файл во временное хранилище (для его передачи на сервер)

Адрес = ВыгрузитьВXMLНаСервере(АдресВременногоХранилища);

Двоичное=ПолучитьИзВременногоХранилища(Адрес);  // по адресу временного хранилища получаем двоичные данные
Двоичное.Записать(Путь); // перезаписываем наш файлик на клиенте
КонецЕсли;
КонецПроцедуры

&НаСервере
Функция  ВыгрузитьВXMLНаСервере(АдресВременногоХранилища)

ДД = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);  // вытаскиваем на сервере из временного хранилища как двоичные данные
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml"); // получаем имя временного файла на сервере
ДД.Записать(ИмяВременногоФайла);                        // записываем двоичные данные
//перенос файла с клиента на сервер завершен, на сервере создался файл с путем в переменной - "ИмяВременногоФайла"

Запрос = Новый Запрос;       // Запросом вытаскиваем в выборку любые данные
Запрос.Текст =  "ВЫБРАТЬ
|    РеализацияТоваровУслуг.Ссылка,
|    РеализацияТоваровУслуг.Контрагент,
|    РеализацияТоваровУслуг.Номер,
|    РеализацияТоваровУслуг.Организация,
|    РеализацияТоваровУслугТовары.Номенклатура,
|    РеализацияТоваровУслугТовары.ЕдиницаИзмерения,
|    РеализацияТоваровУслугТовары.Количество,
|    РеализацияТоваровУслугТовары.Цена,
|    РеализацияТоваровУслугТовары.Сумма
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|        ПО (РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка)
|ГДЕ
|    РеализацияТоваровУслуг.Дата = &Дата";
Запрос.УстановитьПараметр("Дата", '20230312235959');
Результат = Запрос.Выполнить().Выбрать();

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяВременногоФайла);  // Открываем наш "серверный" файл для записи
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Реализация");

Пока Результат.Следующий() Цикл  // в цикле заполняем ЗаписьXML данными из выборки
ЗаписьXML.ЗаписатьНачалоЭлемента("Контрагент");
ЗаписьXML.ЗаписатьАтрибут("Контрагент",Строка(Результат.Контрагент));
ЗаписьXML.ЗаписатьАтрибут("Номер",Строка(Результат.Номер));
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЦикла;

ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();

// передаем заполненный на сервере файлик назад на клиент через временноехранилище:
Двоичное=Новый ДвоичныеДанные(ИмяВременногоФайла);  // получаем двоичные данные из файла
Адрес = ПоместитьВоВременноеХранилище(Двоичное, ЭтаФорма.УникальныйИдентификатор); // кидаем двоичные данные во врем. хранилище
Возврат Адрес;

КонецФункции




&НаКлиенте
Процедура ЗагрузитьИзXML(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл для чтения из него данных в 1с!";
Если Диалог.Выбрать() Тогда
Путь = Диалог.ПолноеИмяФайла;
КонецЕсли;

ЧтениеXML = Новый ЧтениеXML;

ЧтениеXML.ОткрытьФайл(Путь); // открываем файл для чтения

Пока ЧтениеXML.Прочитать() Цикл  // в цикле читаем данные с нашего файла и делаем с ними все, что душе угодно!
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
///обработка
КонецЦикла;
ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.Текст Тогда
////обработка
ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.КонецЭлемента Тогда
////обработка
КонецЕсли ;
КонецЦикла;
КонецПроцедуры

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста неизвестный идентификатор формы
  • Ошибка при вызове метода контекста область
  • Ошибка при вызове метода контекста начатьчтение неизвестный получатель
  • Ошибка при вызове метода контекста остатки
  • Ошибка при вызове метода контекста напечатать