1с ошибка при выполнении файловой операции значение данного типа невозможно преобразовать как файл

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

Ваша задача обычно решается таким кодом:

&НаКлиенте
Процедура ВыбратьФайл(Команда)

    НачатьПодключениеРасширенияРаботыСФайлами(Новый ОписаниеОповещения(
        "ОповещениеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект));

КонецПроцедуры // ВыбратьФайл()

&НаКлиенте
Процедура ОповещениеПодключенияРасширенияРаботыСФайлами(Подключено, 
    ДополнительныеПараметры) Экспорт

    Если Подключено Тогда

        Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        Диалог.Заголовок = НСтр("ru='Выберите файл загрузки в формате (*.xls, *.xlsx, *.xml, *.csv, *.txt)'");
        Диалог.ПолноеИмяФайла = "";
        Диалог.МножественныйВыбор = Ложь;
        Диалог.ПредварительныйПросмотр = Истина;
        Диалог.Фильтр = "Формат (*.xls;*.xlsx;*.xml;*.csv;*.txt)|*.xls;*.xlsx;*.xml;*.csv;*.txt|"; 
        Диалог.Показать(Новый ОписаниеОповещения("ОповещениеВыборФайла", ЭтотОбъект));

    Иначе

        // Сообщить что не удалось подключить расширение

    КонецЕсли;

КонецПроцедуры // ОповещениеПодключенияРасширенияРаботыСФайлами()

&НаКлиенте
Процедура ОповещениеВыборФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

    Если ВыбранныеФайлы = Неопределено Тогда
        Возврат;
    КонецЕсли;    

    Если ВыбранныеФайлы.Количество() = 1 Тогда

        НачатьПомещениеФайла(Новый ОписаниеОповещения("ОповещениеВыборФайлаНаСервере", ЭтотОбъект), 
            , // Можно указать строковой реквизит тогда адрес будет так же в этом реквизите 
            ВыбранныеФайлы[0], 
            Ложь, 
            УникальныйИдентификатор);

    Иначе
        // Сообщить что можно выбрать только один файл
    КонецЕсли;

КонецПроцедуры // ОповещениеВыборФайла() 

&НаСервере
Процедура ОповещениеВыборФайлаНаСервере(Результат, Адрес, ВыбранноеИмяФайла, 
    ДополнительныеПараметры) Экспорт

    ПутьКФайлу = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
    ДвоичныеДанные.Записать(ПутьКФайлу); 

    ТекстовыйДокумент = Новый ТекстовыйДокумент();
    ТекстовыйДокумент.Прочитать(ПутьКФайлу);
    Содержимое = ТекстовыйДокумент.ПолучитьТекст();

    УдалитьФайлы(ПутьКФайлу);

КонецПроцедуры // ОповещениеВыборФайлаНаСервере() 

P.S. Прикрепил ссылку на пример обработки.

Я
   andryscha1c

07.10.22 — 12:38

При сохранении pdf файла на диск периодически получаем ошибку, в чем могут быть причины, явных причин нет, так как это происходит не со всеми файлами. Кто сталкивался?

Ошибка получения файлов

по причине:

Ошибка при выполнении файловой операции  ‘/e1cib/tempstorage/a6ecfa55-14fa-452b-8859-84f9e7b555fe?seanceId=1ce7618b-b2f9-48e9-8617-097488327ef4’. Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено)

   SiAl-chel

1 — 07.10.22 — 12:57

(0) В ХранилищеЗначений — неопределено.

В коде надо перед сохранением файла проверять что сохраняется.

   Garykom

2 — 07.10.22 — 15:34

(0) кэш почистился

или у вас там кластер и поток на другой рабочий сервер улетел ))

   andryscha1c

3 — 07.10.22 — 18:20

(1) если в отладке смотреть все верно там Неопределено.

Решение помогло это https://forum.infostart.ru/forum9/topic222349/

   Garykom

4 — 07.10.22 — 19:24

(3) дык писал же что кэш почистился

временное хранилище оно чистится после окончания (не сразу да, еще какое то время доступно) если не указать идентификатор формы, тогда когда ее закрыть чистится

   Garykom

5 — 07.10.22 — 19:25

(4) *после окончания вызова сервера

   andryscha1c

6 — 07.10.22 — 23:36

(4) подумал про кэш тот что у пользователя, чистил не помогло.

   andryscha1c

7 — 07.10.22 — 23:36

(1) (5)

всем спасибо! вопрос закрыт.

  

andryscha1c

8 — 07.10.22 — 23:40

(5) да, там на моменте вопроса, когда путь сохранения файла указываешь, хранилище переходило в Неопределено. (4) это же вы имели ввиду?

    ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов;

    ПараметрыДиалога.Заголовок = НСтр(«ru = ‘Выберите путь для сохранения файла’; en = ‘Select the path to save the file’»);

    НачатьПолучениеФайлаССервера(ДанныеФайла.АдресВоВременномХранилище, СтруктураИмениФайла.Имя, ПараметрыДиалога);

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
&НаКлиенте Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт     АдресВременногоХранилища="";         ПечатьНаСервере(ИдентификаторКоманды,МассивОбъектов,АдресВременногоХранилища);         НачатьПолучениеФайлаССервера(АдресВременногоХранилища);     КонецПроцедуры   &НаСервере Процедура ПечатьНаСервере(ИдентификаторКоманды,МассивОбъектов,АдресВременногоХранилища)                 Для Каждого ДокОбъект Из МассивОбъектов Цикл         Данные = ПолучитьДанные(ДокОбъект);                 Если данные <> Неопределено Тогда             Word = Новый COMОбъект("Word.Application");             Макет = ПолучитьМакетСервер(ИдентификаторКоманды);             временныйПуть = КаталогВременныхФайлов();             имяВременногоФайла = временныйПуть + "gph.docx";             имяВременногоФайлаPDF = временныйПуть + "gph.pdf";             Макет.Записать(имяВременногоФайла);             ТекДок = Word.Documents.ADD(имяВременногоФайла);                         ЗначениеВЗакладку(ТекДок,"НомерДоговора", Данные.НомерДоговора);             ЗначениеВЗакладку(ТекДок,"НомерДоговора2", Данные.НомерДоговора);             ЗначениеВЗакладку(ТекДок,"НомерДоговора3", Данные.НомерДоговора);             ЗначениеВЗакладку(ТекДок,"ДатаДокумента", Формат(Данные.Дата, "ДЛФ=ДД"));             ЗначениеВЗакладку(ТекДок,"ДатаДокумента2", Формат(Данные.Дата, "ДЛФ=ДД"));             ЗначениеВЗакладку(ТекДок,"ДатаДокумента3 ", Формат(Данные.Дата, "ДЛФ=ДД"));             ЗначениеВЗакладку(ТекДок,"ДатаДокумента4", Формат(Данные.Дата, "ДЛФ=ДД"));             ЗначениеВЗакладку(ТекДок,"ПолноеНаименованиеОрганизации", Данные.НаименованиеПолное);             ЗначениеВЗакладку(ТекДок,"ПолноеНаименованиеОрганизации2", Данные.НаименованиеПолное);             ЗначениеВЗакладку(ТекДок,"КраткоеНаименованиеОрганизации", Данные.НаименованиеСокращенное);             КраткоеФИОФизЛица = ФамилияИнициалы(Строка(Данные.ФизическоеЛицо));             ЗначениеВЗакладку(ТекДок,"КраткоеФИОФизЛица", КраткоеФИОФизЛица);             ЗначениеВЗакладку(ТекДок,"КраткоеНаименованиеОрганизации2", Данные.НаименованиеСокращенное);                         ЗначениеВЗакладку(ТекДок,"АдресОрганизации", Данные.ЮрАдрес);             ЗначениеВЗакладку(ТекДок,"ИНН", Данные.ИНН);             ЗначениеВЗакладку(ТекДок,"КПП", Данные.КПП);             ЗначениеВЗакладку(ТекДок,"КраткоеФИОФизЛица2", КраткоеФИОФизЛица);             ЗначениеВЗакладку(ТекДок,"КратФИОФизЛица", КраткоеФИОФизЛица);             ЗначениеВЗакладку(ТекДок,"ФИОФизЛица", Данные.ФизическоеЛицо);             ЗначениеВЗакладку(ТекДок,"АдресФизЛица", Данные.АдресФизЛица);               ЗначениеВЗакладку(ТекДок,"ИННФЛ", Данные.ИННФЛ);                         ЗначениеВЗакладку(ТекДок,"ДанныеПаспортаФизЛица", Данные.Паспорт);                                             ТекДок.Tables(2).Select();             СписокПодарков = СтруктураПодарки(ДокОбъект);             I = 1;             Для Каждого Подарок Из СписокПодарков Цикл                 word.selection.InsertRowsBelow(1);                 word.selection.rows(1).cells(1).Range.Text = I;                 word.selection.rows(1).cells(2).Range.Text = Строка(Подарок.Значение.Название);                 word.selection.rows(1).cells(3).Range.Text = Строка(Подарок.Значение.Количество);                 word.selection.rows(1).cells(4).Range.Text = Строка(Подарок.Значение.ИмуществоЦенаПоступления);                 word.selection.rows(1).cells(5).Range.Text = Строка(Подарок.Значение.Сумма);                 I = I + 1;             КонецЦикла;                         Range = ТекДок.Range();             Table = Range.Tables(5);             СтрокаОбразец = Table.Rows(1);             Для Каждого Подарок из СписокПодарков Цикл                 НоваяСтрока = Table.Rows.Add(СтрокаОбразец);                 НоваяСтрока.Cells(1).Range.Text = Строка(Подарок.Значение.Название);                             КонецЦикла;                         СтрокаОбразец.Delete();                             ТекДок.Fields.Update();             //ТекДок.ExportAsFixedFormat(имяВременногоФайлаPDF , 17);                         //Word.ActiveWindow.View.ShowFieldCodes = False;             //Word.Visible=Истина;             ТекДок.SaveAs2(имяВременногоФайлаPDF,17);             ТекДок.Close(Ложь);                                     Word.Application.Quit(0);                                     ДвоичныеДанные = Новый ДвоичныеДанные(имяВременногоФайлаPDF);             АдресВременногоХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные,КаталогВременныхФайлов()+"gph.pdf");           КонецЕсли;     КонецЦикла;                     КонецПроцедуры

Содержание:

1.       Об ошибке при выполнении файловой операции

2.       Устранение «Ошибки при выполнении файловой операции» в 1С 8.3   

1.    Об ошибке при выполнении файловой операции

Приветствую, коллеги! В данной статье будет описана ошибка «Ошибка при выполнении файловой операции», и подробно рассмотрены способы ее устранения.

Когда происходит обновление конфигураций в 1С 8, по завершении обновления, часто появляется ошибка, которая гласит «Ошибка при выполнении файловой операции – файл не содержит доступных обновлений».  

2.    Устранение «Ошибки при выполнении файловой операции» в 1С 8.3

Рассмотрим методы, при помощи которых, можно устранить ошибку при выполнении файловой операции в 1С.

Итак, первый способ – это попробовать сделать обновление при помощи файлов по обновлению вида «релиз 1с*.cfu». Если это не помогло, то можно попробовать обновить систему при помощи общего файла вида «полный релиз 1С*.cf».

Вторым способом будет проверка на соответствие общей версии системы 1С с минимальными требованиями версии конфигурации 1С, которую обновляем.

Третий способ устранения ошибки при выполнении файловой операции в 1С – более сложный, но действенный. Необходимо открыть в конфигурацию от поставщика в режиме Конфигуратора. Если ошибка всё так же появляется, то необходимо удалить конфигурацию поставщика, а затем опять установить. По сути, в данном варианте «вытягивается» последняя, рабочая версия данной конфигурации и обновление будет завершено без ошибок.

Рассмотрим подробнее третий способ. Пусть у нас уже есть некоторая конфигурация 1С KORG 1-ой версии, которая работает, но нужно поставить 2-ю версию, то есть обновить версию конфигурации 1С 8.3. Когда происходит обновление, всплывает ошибка «Ошибка при выполнении файловой конфигурации». Порядок действий в этом случае:

1.     скачать релиз 1С KORG с версией 1*.cf;

2.     копируем нашу базу данных;

3.     в конфигураторе, который соответствует обновляемой базе, переходим по пути: «Конфигурация → Поддержка → Настройки поддержки → Снять с поддержки». В случае, если кнопка для снятия с поддержки недоступна, необходимо сперва включить возможные изменения. После этого нужно дать согласие, если система 1С будет уточнять что-либо или подтверждать действия;

4.     Далее переходим по следующему пути: «Конфигурация → Сравнить и объединить с конфигурацией из файла…». Здесь необходимо выбрать файл «полный релиз 1С KORG версии 1*.cf»;

5.     Далее перед нами появится окно, в котором система 1С будет запрашивать постановление на учёт для поддержки, на это уведомление обязательно отвечаем согласием;

6.     В случае, если наша конфигурация является типовой, откроется окно по сравнению конфигураций. В нем обязательно убираем все «галочки». Далее последует объединение конфигураций;

7.     В новом окне кликаем на «Сохранить изменения»;

8.     Ещё раз сохраняем базу данных;

9.     Обновляем конфигурацию 1С стандартным способом.

Если всё сделать, согласно инструкции выше, то в вашей конфигурации 1С 8.3 «Ошибка при выполнении файловой операции» больше не возникнет. Спасибо за внимание!

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Обновлено 15.10.2020

1с логотип

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Рунета Pyatilistnik.org. В прошлый раз мы с вами разобрали, что из себя  представляет файловая система raw, и как ее исправить, чтобы восстановить свои данные. Двигаемся дальше и поговорим сегодня на тему  капризности 1С, точнее на капризную работу в рамках Windows Server 2016. Я рассмотрю причину и устранение периодически повторяющейся ошибки на сервере 1С 8.3 «Ошибка при выполнении файловой операции«. Ее я стал встречать после обновления с Windows Server 2012 R2 д 2016. Думаю мой опыт сэкономит вам часик серфинга по интернету.

Описание проблемы

В моей компании заканчивается обновление операционных систем у виртуальных серверов, с Windows Server 2012 R2 на Windows Server 2016, я понимаю, что поддержка первых еще будет несколько лет, но хочется уже не делать это в последний момент, а слегка опережать, да и уже давно пора стремиться к Windows Server 2019. Сервера 1С не были исключением, обновление происходило по быстрому варианты. Тут подразумевается накатывание более новой версии ОС по верх старой, тут мы убивали двух зайцев:

  1. Получали свежую версию ОС
  2. Оставляли весь софт на сервере, и не требовалась его переустановка

В случае чего всегда можно было откатиться из снапшота на момент проведения работ, благо ESXI 6.5 это помогает делать в два клика. Все прекрасно обновилось и сервер зажил новой жизнью. В какой-то момент при запуске клиента 1С 8.3 на RDS ферме, стала появляться ошибка:

Ошибка при выполнении файловой операции

Ошибка при выполнении файловой операции в 1С 8.3

Устранение проблемы

Начав изучать данный вопрос мы не стали откатываться к бэкапу, так как данная проблема возникала не постоянно, а через некоторые промежутки и была вызвана явно не переходом на более новую версию операционной системы. Подняв исторические данные в системе заявок, я нашел похожую, где решением ошибки был перенос базы данных 1С на другой диск. Меня это заинтересовало и я стал прикидывать, что же могло быть в той ситуации. Через минут 20 я нашел одну закономерность, что на всех проблемных хостах был установлен компонент Windows дедупликации, как раз на тех дисках, где располагались базы данных 1С.

Я для тестирования отключил дедупликацию и вернул все в исходное состояние, и о чудо ошибка при выполнении файловой операции больше не появлялась. Все те же действия я произвел и на остальных серверах.

запуск сборки мусора на томе

Вывод: Windows Дедупликация и 1С просто не совместимы друг с другом, это нужно запомнить

Из дополнительных методов я могу вам посоветовать еще очистку кэша 1С. Еще в на умных сайтах советуют на серверах, где используется 1С отключать протокол IPv6 на сетевых интерфейсах, но лично я не понимаю этого прикола, так как сама Microsoft советует по возможности этого не делать, в виду того, что очень многие ее сервисы и компоненты Windows в приоритете используют именно его, меньше будет проблем с DNS и Active Directory.

Вообще если у вас виртуальные сервера лежат на системе хранения данных, то у нее должна быть своя функция дедупликации и использовать лучше и правильнее ее. Если у вас есть другие варианты решения данной проблемы, то пишите их в комментариях. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Выскакивает ошибка при попытке сохранения картинки на диск. Ошибка такого характера —

{Справочник.Товары.Форма.ФормаЭлемента.Форма(63)}: Ошибка при вызове метода контекста (ПолучитьФайл)
ПолучитьФайл (СсылкаНаФайлВИБ, Объект.ИмяФайлаКартинки);
по причине:
Ошибка при выполнении файловой операции ‘/e1cib/data/Справочник.Товары.ФайлКартинки?ref=»a25100115b79455911e0ee7de52ab47e»‘

Код 1C v 8.х

 
&НаКлиенте
Процедура ЗагрузитьСДиска(Команда)

АдресВХранилище = "";
ВыбранноеИмяфайла = "";

Если ПоместитьФайл(АдресВХранилище, , ВыбранноеИмяФайла, , УникальныйИдентификатор) Тогда
Файл = Новый Файл(ВыбранноеИмяФайла);
ИмяФайлаКартинки = Файл.Имя;
СсылкаНаКартинку = АдресВХранилище;

Модифицировать = Истина;
КонецЕсли;

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

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Если ЭтоАдресВременногоХранилища (СсылкаНаКартинку) Тогда
ДвоичныеДанные = ПолучитьИзВременногоХранилища (СсылкаНаКартинку);
ТекущийОбъект.ФайлКартинки = Новый ХранилищеЗначения (ДвоичныеДанные, Новый СжатиеДанных(9));
ТекущийОбъект.ИмяФайлаКартинки = ИмяФайлаКартинки;
КонецЕсли;

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

&НаСервере
Процедура ПриЗаписиНаСервере (Отказ, ТекущийОбъект, ПараметрыЗаписи)

Если ЭтоАдресВременногоХранилища(СсылкаНаКартинку) Тогда
УдалитьИзВременногоХранилища (СсылкаНаКартинку);
СсылкаНаКартинку = ПолучитьНавигационнуюСсылку (ТекущийОбъект.Ссылка, "ФайлКартинки");
КонецЕсли;

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

&НаСервере
Процедура ПриСозданииНаСервере (Отказ, СтандартнаяОбработка)

Если Объект.ИмяФайлаКартинки <> "" Тогда
СсылкаНаКартинку = ПолучитьНавигационнуюСсылку (Объект.Ссылка, "ФайлКартинки");
КонецЕсли;

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

&НаКлиенте
Процедура СохранитьНаДиск(Команда)

Если Объект.ИмяФайлаКартинки = "" Тогда
Предупреждение ("У поставщика нет сохраненной в базе картинки");
Иначе
СсылкаНаФайлВИБ = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ФайлКартинки");
ПолучитьФайл (СсылкаНаФайлВИБ, Объект.ИмяФайлаКартинки);
КонецЕсли;

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

Код написан по книжке,поэтому не могу понять,что я делаю не так. Помоги пожалуйста.

0

31.10.2014 — 10:46


Люди добные и не очень, ай нид ваш хелп. Второй день мудохаюсь, а просветление не приходит.

Имеется база 1С 8.
платформа (8.3.5.1119)
конфигурация бухгалтерия (2.0.62.4)
крутится на терминалке в sql-базе
Для экспериментов сделал себе копию базы на том же sql-сервере (из бекапов рабочей). Далее, при попытке обновления базы из шаблона до 2.0.62.5 релиза получаю ругань:
«c:documents and settingsuserlocal settingtemp1v8_2b_2c.tmp»
Причем если, снять конфигурацию с поддержки, и внести какие-нибдуь изменения ручками, то все нормально сохраняется и работает.
Что делал:
— удалял, добавлял базу в консоли сервера;
— чистил этот самый temp, выставлял на него права всем все можно;
— игрался с путями к файлам sql-базы (пробовал создавать в разных папках, в т.ч. рядом с рабочей базой);
— открывать конфигуратор не на терминале, а на машине через сеть;
нифига не помогает.

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

Но таки хочется понять, как с этим бороться? Ведь если не дай бог придется восстанавливать рабочую базу и оно вылезет, и чего делать тогда?

1

31.10.2014 — 10:54

т.е. вот такую ругань я имел в виду:
«ошибка при выполнении файловой операции ‘c:documents and settingsuserlocal settingtemp1v8_2b_2c.tmp’»

2

31.10.2014 — 17:43

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

зы: это все к тому, что ты все прекрасно описал и платформу и конфигурацию и sql упомянул, и терминал.. молодец, чЁ.

только про антивирус на сервере ни слова. Про его наличие/отсутствие. про его настройки/исключения в случае наличия.
ни гу-гу.
:)

3

01.11.2014 — 08:49

Нету антивируса на сервере. На локальной аваст стоит.

4

03.11.2014 — 00:27

все еще актуально

5

03.11.2014 — 17:07

проверить базу чинилкой не пробовали ?
http://helpme1c.ru/kak-sdelat-testir…-redakciya-3-0

http://1c-sfera.ru/index.php/adminis…-v-nej-oshibki

ЗЫ база в дт выгружается?

6

03.11.2014 — 20:21

Было такое же, кстати, недавно. Проверки ничего не находили, все выгружалось-загружалось, а при обновлении стабильно валилось с аналогичной ошибкой во временном файле.
Так и не решили, с админом искали и ничего не нашли в тот момент, потом та виртуалка рухнула, а на текущей вроде все обновляется.
На 8.3.4 было, кстати.

7

04.11.2014 — 10:07

Цитата:

Сообщение от 101 Посмотреть сообщение

ЗЫ база в дт выгружается?

в том то и прикол, что

Цитата:

Сообщение от gamletspb Посмотреть сообщение

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

и да, на ошибки проверял, никаких проблем не обнаружено

8

04.11.2014 — 10:38

хмм мну бы посмотрел на бэкапирование обоими способами, скуль, выгрузка в дт
ЗЫ еще бы и конфигурацию отдельно в цф выгружал

9

04.11.2014 — 10:50

Цитата:

Сообщение от 101 Посмотреть сообщение

хмм мну бы посмотрел на бэкапирование обоими способами, скуль, выгрузка в дт ЗЫ еще бы и конфигурацию отдельно в цф выгружал

я могу все это сделать, только что мне это даст в плане решения проблемы?

10

04.11.2014 — 11:07

(9) две разных копии БД и еще одну чистую конфигурацию
ЗЫ сдается мне что при переносе на другой сервер и залитие в SQL предварительно запустив исправление целостности на файловой базе — ошибка исчезнет
ЗЫЫ еще сдается мне проверку на обновление таки проверить … возможно конфигурация поставщика не была обновлена и/или не до конца, в похожих случаях пробую на копии накатить поверх ЦФ от полного нового релиза — пока помогало

11

04.11.2014 — 12:37

Мне кажется ТИИ ведь никак не проверяет конфигурацию поставщика?

А то в свете — (0) «Причем если, снять конфигурацию с поддержки, и внести какие-нибдуь изменения ручками, то все нормально сохраняется и работает» похоже на глюканувшую конфигурацию поставщика. так что (10) +

12

08.11.2014 — 20:44

Ну вроде удалось победить проблему, по крайней мере на тестовой базе все заработало.
Для этого пришлось выгрузить конфигурацию и ИБ в файл. Потом нафиг удалить(!) базу SQL, создать ее занова, и только тогда загружать в нее ранее выгруженные конфигурацию и ИБ. Перед загрузкой еще пришлось перезагрузить сервисы скуля и 1С, иначе вываливалось с ошибкой. При этом база ужалась в 10! раз (с 59Гб до 5Гб), обновление накатилось нормально, и вроде все данные на месте, ничего не поехало.

Что интересно, скульную базу, перед тем как полностью грохнуть, пробовал чистить и ужимать по всякому, но даже после удаления всех данных (путем удаления базы 1С в режиме очистки базы) ее размер оставался больше 50 Гб. При этом все проверки ТИИ проходили нормально. Вобщем, поразвлекался на выходных на славу. Всем спасибо за внимание, надеюсь кому-нибудь мой опыт будет полезен.

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

Ваша задача обычно решается таким кодом:

&НаКлиенте
Процедура ВыбратьФайл(Команда)

    НачатьПодключениеРасширенияРаботыСФайлами(Новый ОписаниеОповещения(
        "ОповещениеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект));

КонецПроцедуры // ВыбратьФайл()

&НаКлиенте
Процедура ОповещениеПодключенияРасширенияРаботыСФайлами(Подключено, 
    ДополнительныеПараметры) Экспорт

    Если Подключено Тогда

        Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        Диалог.Заголовок = НСтр("ru='Выберите файл загрузки в формате (*.xls, *.xlsx, *.xml, *.csv, *.txt)'");
        Диалог.ПолноеИмяФайла = "";
        Диалог.МножественныйВыбор = Ложь;
        Диалог.ПредварительныйПросмотр = Истина;
        Диалог.Фильтр = "Формат (*.xls;*.xlsx;*.xml;*.csv;*.txt)|*.xls;*.xlsx;*.xml;*.csv;*.txt|"; 
        Диалог.Показать(Новый ОписаниеОповещения("ОповещениеВыборФайла", ЭтотОбъект));

    Иначе

        // Сообщить что не удалось подключить расширение

    КонецЕсли;

КонецПроцедуры // ОповещениеПодключенияРасширенияРаботыСФайлами()

&НаКлиенте
Процедура ОповещениеВыборФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

    Если ВыбранныеФайлы = Неопределено Тогда
        Возврат;
    КонецЕсли;    

    Если ВыбранныеФайлы.Количество() = 1 Тогда

        НачатьПомещениеФайла(Новый ОписаниеОповещения("ОповещениеВыборФайлаНаСервере", ЭтотОбъект), 
            , // Можно указать строковой реквизит тогда адрес будет так же в этом реквизите 
            ВыбранныеФайлы[0], 
            Ложь, 
            УникальныйИдентификатор);

    Иначе
        // Сообщить что можно выбрать только один файл
    КонецЕсли;

КонецПроцедуры // ОповещениеВыборФайла() 

&НаСервере
Процедура ОповещениеВыборФайлаНаСервере(Результат, Адрес, ВыбранноеИмяФайла, 
    ДополнительныеПараметры) Экспорт

    ПутьКФайлу = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
    ДвоичныеДанные.Записать(ПутьКФайлу); 

    ТекстовыйДокумент = Новый ТекстовыйДокумент();
    ТекстовыйДокумент.Прочитать(ПутьКФайлу);
    Содержимое = ТекстовыйДокумент.ПолучитьТекст();

    УдалитьФайлы(ПутьКФайлу);

КонецПроцедуры // ОповещениеВыборФайлаНаСервере() 

P.S. Прикрепил ссылку на пример обработки.

Я
   andryscha1c

07.10.22 — 12:38

При сохранении pdf файла на диск периодически получаем ошибку, в чем могут быть причины, явных причин нет, так как это происходит не со всеми файлами. Кто сталкивался?

Ошибка получения файлов

по причине:

Ошибка при выполнении файловой операции  ‘/e1cib/tempstorage/a6ecfa55-14fa-452b-8859-84f9e7b555fe?seanceId=1ce7618b-b2f9-48e9-8617-097488327ef4’. Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено)

   SiAl-chel

1 — 07.10.22 — 12:57

(0) В ХранилищеЗначений — неопределено.

В коде надо перед сохранением файла проверять что сохраняется.

   Garykom

2 — 07.10.22 — 15:34

(0) кэш почистился

или у вас там кластер и поток на другой рабочий сервер улетел ))

   andryscha1c

3 — 07.10.22 — 18:20

(1) если в отладке смотреть все верно там Неопределено.

Решение помогло это https://forum.infostart.ru/forum9/topic222349/

   Garykom

4 — 07.10.22 — 19:24

(3) дык писал же что кэш почистился

временное хранилище оно чистится после окончания (не сразу да, еще какое то время доступно) если не указать идентификатор формы, тогда когда ее закрыть чистится

   Garykom

5 — 07.10.22 — 19:25

(4) *после окончания вызова сервера

   andryscha1c

6 — 07.10.22 — 23:36

(4) подумал про кэш тот что у пользователя, чистил не помогло.

   andryscha1c

7 — 07.10.22 — 23:36

(1) (5)

всем спасибо! вопрос закрыт.

  

andryscha1c

8 — 07.10.22 — 23:40

(5) да, там на моменте вопроса, когда путь сохранения файла указываешь, хранилище переходило в Неопределено. (4) это же вы имели ввиду?

    ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов;

    ПараметрыДиалога.Заголовок = НСтр(«ru = ‘Выберите путь для сохранения файла’; en = ‘Select the path to save the file'»);

    НачатьПолучениеФайлаССервера(ДанныеФайла.АдресВоВременномХранилище, СтруктураИмениФайла.Имя, ПараметрыДиалога);

TurboConf — расширение возможностей Конфигуратора 1С

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
    АдресВременногоХранилища="";    
    ПечатьНаСервере(ИдентификаторКоманды,МассивОбъектов,АдресВременногоХранилища);    
    НачатьПолучениеФайлаССервера(АдресВременногоХранилища);     
КонецПроцедуры
 
&НаСервере
Процедура ПечатьНаСервере(ИдентификаторКоманды,МассивОбъектов,АдресВременногоХранилища)
        
        Для Каждого ДокОбъект Из МассивОбъектов Цикл
        Данные = ПолучитьДанные(ДокОбъект);
        
        Если данные <> Неопределено Тогда
            Word = Новый COMОбъект("Word.Application");
            Макет = ПолучитьМакетСервер(ИдентификаторКоманды);
            временныйПуть = КаталогВременныхФайлов();
            имяВременногоФайла = временныйПуть + "gph.docx";
            имяВременногоФайлаPDF = временныйПуть + "gph.pdf";
            Макет.Записать(имяВременногоФайла);
            ТекДок = Word.Documents.ADD(имяВременногоФайла);
            
            ЗначениеВЗакладку(ТекДок,"НомерДоговора", Данные.НомерДоговора);
            ЗначениеВЗакладку(ТекДок,"НомерДоговора2", Данные.НомерДоговора);
            ЗначениеВЗакладку(ТекДок,"НомерДоговора3", Данные.НомерДоговора);
            ЗначениеВЗакладку(ТекДок,"ДатаДокумента", Формат(Данные.Дата, "ДЛФ=ДД"));
            ЗначениеВЗакладку(ТекДок,"ДатаДокумента2", Формат(Данные.Дата, "ДЛФ=ДД"));
            ЗначениеВЗакладку(ТекДок,"ДатаДокумента3 ", Формат(Данные.Дата, "ДЛФ=ДД"));
            ЗначениеВЗакладку(ТекДок,"ДатаДокумента4", Формат(Данные.Дата, "ДЛФ=ДД"));
            ЗначениеВЗакладку(ТекДок,"ПолноеНаименованиеОрганизации", Данные.НаименованиеПолное);
            ЗначениеВЗакладку(ТекДок,"ПолноеНаименованиеОрганизации2", Данные.НаименованиеПолное);
            ЗначениеВЗакладку(ТекДок,"КраткоеНаименованиеОрганизации", Данные.НаименованиеСокращенное);
            КраткоеФИОФизЛица = ФамилияИнициалы(Строка(Данные.ФизическоеЛицо));
            ЗначениеВЗакладку(ТекДок,"КраткоеФИОФизЛица", КраткоеФИОФизЛица);
            ЗначениеВЗакладку(ТекДок,"КраткоеНаименованиеОрганизации2", Данные.НаименованиеСокращенное);            
            ЗначениеВЗакладку(ТекДок,"АдресОрганизации", Данные.ЮрАдрес);
            ЗначениеВЗакладку(ТекДок,"ИНН", Данные.ИНН);
            ЗначениеВЗакладку(ТекДок,"КПП", Данные.КПП);
            ЗначениеВЗакладку(ТекДок,"КраткоеФИОФизЛица2", КраткоеФИОФизЛица);
            ЗначениеВЗакладку(ТекДок,"КратФИОФизЛица", КраткоеФИОФизЛица);
            ЗначениеВЗакладку(ТекДок,"ФИОФизЛица", Данные.ФизическоеЛицо);
            ЗначениеВЗакладку(ТекДок,"АдресФизЛица", Данные.АдресФизЛица);  
            ЗначениеВЗакладку(ТекДок,"ИННФЛ", Данные.ИННФЛ);            
            ЗначениеВЗакладку(ТекДок,"ДанныеПаспортаФизЛица", Данные.Паспорт);
                    
            
            ТекДок.Tables(2).Select();
            СписокПодарков = СтруктураПодарки(ДокОбъект);
            I = 1;
            Для Каждого Подарок Из СписокПодарков Цикл
                word.selection.InsertRowsBelow(1);
                word.selection.rows(1).cells(1).Range.Text = I;
                word.selection.rows(1).cells(2).Range.Text = Строка(Подарок.Значение.Название);
                word.selection.rows(1).cells(3).Range.Text = Строка(Подарок.Значение.Количество);
                word.selection.rows(1).cells(4).Range.Text = Строка(Подарок.Значение.ИмуществоЦенаПоступления);
                word.selection.rows(1).cells(5).Range.Text = Строка(Подарок.Значение.Сумма);
                I = I + 1;
            КонецЦикла;
            
            Range = ТекДок.Range();
            Table = Range.Tables(5);
            СтрокаОбразец = Table.Rows(1);
            Для Каждого Подарок из СписокПодарков Цикл
                НоваяСтрока = Table.Rows.Add(СтрокаОбразец);
                НоваяСтрока.Cells(1).Range.Text = Строка(Подарок.Значение.Название);                
            КонецЦикла;            
            СтрокаОбразец.Delete();    
            
            ТекДок.Fields.Update();
            //ТекДок.ExportAsFixedFormat(имяВременногоФайлаPDF , 17);
            
            //Word.ActiveWindow.View.ShowFieldCodes = False;
            //Word.Visible=Истина;
            ТекДок.SaveAs2(имяВременногоФайлаPDF,17);
            ТекДок.Close(Ложь);
                        
            Word.Application.Quit(0);
            
            
            ДвоичныеДанные = Новый ДвоичныеДанные(имяВременногоФайлаPDF);
            АдресВременногоХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные,КаталогВременныхФайлов()+"gph.pdf");
 
        КонецЕсли;
    КонецЦикла;    
 
    
        
 
КонецПроцедуры

Нужно скопировать все файлы из всей номенклатуры в табличной части и прикрепить их к документу (этому же). При копировании меняю родителя файла на документ, остальные поля без изменения. Файлы копируются, но выдается ошибка при попытке предпросмотра. Пытался скопировать простую картинку. Со стороны пользователя, крепится без всяких косяков, значит что-то не так делаю в коде. Текст ошибки: Ошибка при выполнении файловой операции  ‘/e1cib/tempstorage/a0833b85-9030-4bcf-a474-d89989e67807’. Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено) Код: &НаКлиенте

Сколько платят за решение вопроса?

Разве у справочника нет метода Копировать вместо СоздатьЭлемент?

поищи ссылки на справочник файлов, возможно надо еще в РСы писать

и вот это Спр.ФайлХранилище = Выборка.ФайлХранилище; если тип ХЗ, не взлетит

Файлы Номенклатуры и файлы документа хранятся в разных справочниках

Попробуй получить ХЗ, поместить во временное ХЗ и потом поместить в новый элемент справочника.

Не хилый запрос в цикле, руки оторвать..

Ошибка: Каталог не обнаружен ‘e1cib empstorageee970c5d-3c36-4784-b24a-eb0d8f37905c’ e1cib empstorageee970c5d-3c36-4784-b24a-eb0d8f37905c это адрес, полученный в АдресФайлаВоВременномХранилище ДвоичныеДанные = Неопределено Складывается впечатление, что не находится сам файл который я пытаюсь записать.

Этот запрос написан для тестирования, чтобы видеть все значения, которые хранит справочник. В работу соответственно пойдет общий запрос перед циклом.

ты путаешь ХЗ и временное хранилище, не надо так получи из реквизита

ДвоичныеДанные выходят пустые в обоих случаях. В случае получения ДД из временного «Каталог не найден» (теперь понятно почему) В случае получения ДД из ХранилищеЗначения.Получить Файлы записываются. Но выходит та самая ошибка в первом посте. «Ошибка при выполнении файловой операции…Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено)»

Конфа: 1С:Управление небольшой фирмой, редакция 1.6 + CRM, редакция 2.0 (1.6.6/2.0.12) (1.6.6.45) Справочник НоменклатураПрисоединенныеФайлы Там только два реквизита ХранилищеЗначений — ФайлХранилище(который и пытаюсь получить) и ТекстХранилище.

Тэги: 1С 8

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

  • 1с ошибка при выполнении запроса post к ресурсу e1crdbg rdbg
  • 1с ошибка при выполнении запроса post к ресурсу e1cib logform недостаточно свободной памяти
  • 1с ошибка при выполнении запроса get к ресурсу e1cib types
  • 1с ошибка при вызове метода контекста установитьзначениепараметра
  • 1с ошибка при вызове метода контекста удалитьфайлы