ТабличныйДокумент.Прочитать Ошибка при вызове метода контекста

1. Gallina 02.11.10 18:24 Сейчас в теме
Помогите решить проблему!!

{Форма.ФормаСписокСтандартныхЦенников.Форма(105)}: Ошибка при вызове метода контекста (Прочитать)
ТабДок.Прочитать(ПолноеИмяФайла);
по причине:
Каталог не обнаружен 'C:\Documents and Settings\Owner\Desktop\Таблица.mxl'


&НаСервере
Функция ЗагрузитьТабДокИзФайла(ПолноеИмяФайла)
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПолноеИмяФайла);
Возврат ТабДок;
КонецФункции
Pro100calk; +1 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. DJDUH 17 24.02.16 12:29 Сейчас в теме
(1) Gallina, проблема доступа сервера к Вашему рабочему столу.
Swetlana; +1 Ответить
11. ZergKRSK 129 24.02.16 12:35 Сейчас в теме
(10) DJDUH, разжевали же уже что проблема в отсутствии такого каталога на сервере.
2. grigruss 03.11.10 08:59 Сейчас в теме
Доступ к рабочему столу (Desktop) разрешен далеко не каждой программе. Перенеси табличку на диск D:\ и будет счастье. Можно и на диске С:\, но тогда лучше в корне создать новую папку и кинуть табличку туда.
3. Gallina 04.11.10 16:22 Сейчас в теме
В файловом варианте базы - ошибке не было, все работало, а в клиент-серверном ошибка.
Нашла решение на одном форуме, правда не очень оптимальное но рабочее. Может кому-нибудь будет нужно.

&НаКлиенте
Процедура ДобавитьМакетИзФайла(Команда)
....
      Адрес = "";
      ПоместитьФайлВВремХранилище(Адрес, ПолноеИмяФайла);
      ЗагрузитьТабДокИзФайла(ПолноеИмяФайла,Адрес);
...
КонецПроцедуры

&НаКлиенте
Процедура ПоместитьФайлВВремХранилище(Адрес,ПолноеИмяФайла)
	ПоместитьФайл(Адрес,ПолноеИмяФайла,,Ложь);
КонецПроцедуры 

&НаСервере
Процедура ЗагрузитьТабДокИзФайла(ПолноеИмяФайла,Адрес)
	ИмяВременогоФайла = ПолучитьИмяВременногоФайла(".mxl");	
	Файл = ПолучитьИзВременногоХранилища(Адрес);
	Файл.Записать(ИмяВременогоФайла);
	ТабДок = Новый ТабличныйДокумент;
	ТабДок.Прочитать(ИмяВременогофайла);	
КонецПроцедуры

Показать
mike40; agentesecreto; user1314022; json; cheburashka; 1c_partnerupp; Asenka; IgorXml; Arkadiy_B; AndrewVVS; kentavr27; viking(j); V1TAL1K; Umka-Kate; Mart; +15 Ответить
4. 1_C 15.02.13 13:55 Сейчас в теме
(3) Gallina, в конце он выдает мне следующую ошибку
{Форма.Форма.Форма(98)}: Ошибка при вызове метода контекста (Прочитать)
ТабДок.Прочитать(ИмяВременногофайла);
по причине:
Ошибка при выполнении файловой операции


как думаете из-за чего??
6. bird21 42 11.12.13 11:08 Сейчас в теме
(3) Gallina, Да, проблема имеет место быть: в файловом варианте работает нормально, в серверном выдает ошибку. Метод, описанный автором темы помогает решить проблему.
14. SinChao 14.09.17 16:36 Сейчас в теме
(3)
&НаСервере Процедура ЗагрузитьТабДокИзФайла(ПолноеИмяФайла,Адрес) ИмяВременогоФайла = ПолучитьИмяВременногоФайла(".mxl"); Файл = ПолучитьИзВременногоХранилища(Адрес); Файл.Записать(ИмяВременогоФайла); ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ИмяВременогофайла); КонецПроцедуры


А мне этот способ помог.

1С клиент-сервер. Файл mxl прочитался... спасибо...
5. Crazy_Max 82 15.02.13 15:07 Сейчас в теме
Думается мне, у процесса 1С нет доступа к файлу. Попробуй для папки, в которой лежит файл, выполнить в консоли винды команду "cacls "%ПутьДоПапки%" /g Все:f /t
7. йцукенн 11.12.13 21:00 Сейчас в теме
Проверьте права пользователя который выполняет данныю операцию
8. dger2002 08.02.16 15:55 Сейчас в теме
Еще проблема может быть в различиях расширения исходного файла и временного на сервере, недавно столкнулся с такой ошибкой, исходный файл либо xls либо xlsx либо mxl, а у временного расширение не было указано, и появлялась такая же ошибка
Innuil; user1133108; nekit_rdx; Infinita; gulagm; +5 Ответить
9. kashun_a_c 24.02.16 12:21 Сейчас в теме
Нет, проблема в том что при выполнении на сервере, файл ищется там где установлена серверная часть 1С, поэтому и выдается ошибка.
Swetlana; chudnovsky; malenushka1; antz; +4 Ответить
12. xaxerep 01.11.16 04:56 Сейчас в теме
У меня такая ошибка была с файловой базой, Текстовый Документ пытался читать файл из каталога для временных файлов.
Сначала запускалась внешняя программа процедурой ЗапуститьПриложение, которая формирует файл, потом ТекстовыйДокумент этот файл читал. Проблема решилась установкой парамета ДождатьсяЗавершения у процедуры ЗапуститьПриложение.
13. Boneman 298 01.11.16 20:22 Сейчас в теме
(12) за 6 лет, топикстартер не только проблему давно решил, но уже мог и в декрет сходить, и ребенка в первый класс отдать.
JinAir7460; +1 Ответить
15. Chameleon1980 28.11.18 21:25 Сейчас в теме
все дело в расширении файла
pyrkin_vanya; +1 Ответить
16. Serge_ASB 23.05.19 15:11 Сейчас в теме
Вариант:
нужно было загрузить в документ данные из файла XLS(x)...

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

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

&НаСервере	
Процедура ЗаполнитьТаблицыФормы()
	
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	Попытка
		// Выполняется долго на больших файлах.
		ТабличныйДокумент.Прочитать(АдресВремФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);   

		ОбластьФайла = ТабличныйДокумент.ПолучитьОбласть("Лист1"); //У меня лист файла был один, и не стал заморачиваться на программное получение его имени
		КолВоСтрокФайла = ОбластьФайла.ПолучитьРазмерОбластиДанныхПоВертикали();
		КолВоКолонокФайла = ОбластьФайла.ПолучитьРазмерОбластиДанныхПоГоризонтали();
	Исключение
		Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
		Возврат;// Новый ТаблицаЗначений;
	КонецПопытки;
	
	//Пробежим в цикле строки и колонки Таб. документа. Здесь возможны варианты. 
	Для Стр = 1 по КолВоСтрокФайла Цикл 
		
		Для Кол = 1 по КолВоКолонокФайла Цикл 
			
			Область = ОбластьФайла.ПолучитьОбласть("R"+Стр+"C"+Кол);
				
			ТекущаяОбласть = Область.ТекущаяОбласть;
			Попытка
				ЗначениеЯчейки = ТекущаяОбласть.Значение;        // Число, Дата.
			Исключение
				ЗначениеЯчейки = СокрЛП(ТекущаяОбласть.Текст);    // Строка, Булево. (Булево как строка "ИСТИНА"/"ЛОЖЬ")
				Если ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
									
					Если ТипЗнч(ЗначениеЯчейки) = Тип("Строка") Тогда
						ЗначениеЯчейки = СокрЛП(ЗначениеЯчейки);
					КонецЕсли;
				Иначе
					ЗначениеЯчейки = Неопределено;
				КонецЕсли;
			КонецПопытки;
КонецЦикла;
КонецЦикла;


Показать
nemo888; user1571738; JinAir7460; +3 Ответить
17. JinAir7460 30.07.19 17:56 Сейчас в теме
18. mmtv68 54 21.01.20 20:22 Сейчас в теме
//для случае работы на тонком клиенте
&НаКлиенте
Процедура ИзФайла(Команда)
	
	  Оповещение = Новый ОписаниеОповещения("ВыборФайла3",ЭтаФорма);
	  
	  НачатьПомещениеФайла(Оповещение,,,ИСТИНА);
	
КонецПроцедуры


&НаСервере
Процедура ВыборФайла3(п1,п2,п3,п4) экспорт
	
	Если НЕ п1 Тогда
		Возврат
	КонецЕсли;

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

	
	ЭтаФорма.ТабДок.Прочитать(АдресФайлаНаСервере);
	
	
КонецПроцедуры	
Показать
19. Art3082 23.01.20 13:00 Сейчас в теме
Загрузка файла Excel на форму в табличный документ, загрузка данных с формы в Таблицу значений для дальнейшей обработки:


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

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбораЗавершение(МассивФайлов, ДопПараметры) Экспорт
	Если МассивФайлов = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Объект.ФайлExcel = МассивФайлов[0];

	ДвоичныеДанные = Новый ДвоичныеДанные(Объект.ФайлExcel);

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

	СкопироватьФайлНаСервер(АдресФайла);

	Элементы.ТабДок.Редактирование = Истина;
	
КонецПроцедуры

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

	ДвоичныеДанныеФайла.Записать(АдресФайлаНаСервере);

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

&НаСервере
Процедура ЗагрузитьВДокументНаСервере()
	ТабЗначений = Новый ТаблицаЗначений;    
	
	ПоследняяСтрока = ТабДок.ВысотаТаблицы;
	ПоследняяКолонка = ТабДок.ШиринаТаблицы;
	
	ОбластьЯчеек = ТабДок.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка); 
	ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);  
	ПостроительОтчета = Новый ПостроительОтчета; 
	ПостроительОтчета.ИсточникДанных = ИсточникДанных;
	ПостроительОтчета.Выполнить();
	
	ТабЗначений = ПостроительОтчета.Результат.Выгрузить();

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


Показать
nemo888; Bac3; user1004898; +3 Ответить
20. dime2 26 13.04.20 23:50 Сейчас в теме
В клиент-серверном варианте процесс сервера запущен от другого пользователя. Чаще всего это USR1CV8. Вот у него и нет прав на файл.
21. Трактор 1247 09.02.22 21:36 Сейчас в теме
Ошибка при вызове метода контекста (Записать): Установлен безопасный режим. Выполнение операции запрещено

То есть. Надо установить опасный режим. Делов-то!
22. user2060221 01.03.24 10:48 Сейчас в теме
Ошибка при вызове метода контекста (ПолныйКод)
{Документ.Начисления.Форма.ФормаДокумента.Форма(890)}: КодМесяца = Строка.МесяцНачисления.ПолныйКод();
{Документ.Начисления.Форма.ФормаДокумента.Форма(1480)}: ИтогНачисл(ТекСтр);
по причине:
Элемент не выбран!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот