Ошибка в коде , Excel

1. DiaDiamond 05.07.22 18:31 Сейчас в теме
Я загружаю в 1с эксель но код правильный жалуется на Модальность и синхронные вызовы подскажите как и где их можно включить пожалуйста .
Я все испробовал.

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

	Попытка
		// Создание COM-объекта
		Эксель = Новый COMОбъект("Excel.Application");
		
		// Отключение вывода предупреждений и вопросов		
		Эксель.DisplayAlerts = 0;
		Эксель.Visible = 0;
	Исключение
   		Return;
	КонецПопытки;

	// Открываем книгу
	Книга = Эксель.Workbooks.Open(ФайлЭксельНаСервере);
		
	// Открываем лист
	Лист = Книга.Sheets(1);
	
	// Определяем количество строк и столбцов
	ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
	ВсегоСтолбцов = Лист.Cells(1,1).SpecialCells(11).Column;
	
	// Перебираем строки
	Для СчетчикСтрок = 2 По ВсегоСтрок Цикл
							
		Организация = Лист.Cells(СчетчикСтрок,1).Value;
		
		ОрганизацияСпр = Справочники.Организации.НайтиПоНаименованию(Организация);
		Имя = Лист.Cells(СчетчикСтрок,2).Value;
		ФИО = Лист.Cells(СчетчикСтрок,3).Value;
		
		// Создаем нового агента в справочнике Агенты
		Агент = Справочники.Агенты.СоздатьЭлемент();
		        
		// Заполняем реквизиты
		Агент.Владелец = ОрганизацияСпр;
		Агент.Наименование = Имя;
		Агент.ФИО = ФИО;
		
		// Записываем
		Агент.Записать();
		
	КонецЦикла;	
		
	// Закрываем книгу
	Эксель.Workbooks.Close();
	
	// Отключаем Эксель
	Эксель.Application.Quit();
	
КонецПроцедуры


// загрузка агентов
&НаКлиенте
Процедура Загрузить(Команда)
	
	ИмяФайла = ЭтаФорма.ПутьКФайлу;
	
	нФайл = Новый Файл(ИмяФайла);
	
	Если Не нФайл.Существует() Тогда
	
		Возврат;	
	
	КонецЕсли; 
	
	ДвоичДанные = Новый ДвоичныеДанные(ИмяФайла);
	
	ЗагрузитьНаСервере(ДвоичДанные, нФайл.Расширение);
	
КонецПроцедуры

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.Заголовок = "Выбор файла";
	Диалог.Фильтр = "Excel файлы(*.xls; *.xlsx)|*.xls;*.xlsx";
	Диалог.ИндексФильтра = 0;
	Диалог.ПредварительныйПросмотр = Ложь;
	Диалог.ПроверятьСуществованиеФайла = Истина;
	Диалог.МножественныйВыбор = Ложь;
	Диалог.ПолноеИмяФайла = ПутьКФайлу;
	
	Если Диалог.Выбрать() Тогда 
	
		ПутьКФайлу = Диалог.ПолноеИмяФайла;
	
	КонецЕсли; 
	
	
	
КонецПроцедуры


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

	Попытка
		// Создание COM-объекта
		Эксель = Новый COMОбъект("Excel.Application");
		
		// Отключение вывода предупреждений и вопросов		
		Эксель.DisplayAlerts = 0;
		Эксель.Visible = 0;
	Исключение
   		Return;
	КонецПопытки;

	// Открываем книгу
	Книга = Эксель.Workbooks.Open(ФайлЭксельНаСервере);
		
	// Открываем лист
	Лист = Книга.Sheets(1);
	
	// Определяем количество строк и столбцов
	ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
	ВсегоСтолбцов = Лист.Cells(1,1).SpecialCells(11).Column;
	
	// Перебираем строки
	Для СчетчикСтрок = 2 По ВсегоСтрок Цикл
							
		ФИО = Лист.Cells(СчетчикСтрок,1).Value;
		Пол = Лист.Cells(СчетчикСтрок,2).Value;
		Если Пол = "М" Тогда
			ПолП = Перечисления.Пол.Мужской;
		Иначе	
			ПолП = Перечисления.Пол.Женский;
		КонецЕсли;
		
		ДатаРождения = Дата(Лист.Cells(СчетчикСтрок,3).Value);
		МестоРождения = Лист.Cells(СчетчикСтрок,4).Value;
		Серия = Лист.Cells(СчетчикСтрок,5).Value;
		Номер = Формат(Лист.Cells(СчетчикСтрок,6).Value, "ЧГ=0");
		ДатаВыдачи = Дата(Лист.Cells(СчетчикСтрок,7).Value);
		СрокДействия = Дата(Лист.Cells(СчетчикСтрок,8).Value);
		Орган = Лист.Cells(СчетчикСтрок,9).Value;

		// Создаем нового клиента в справочнике Клиенты
		Клиент = Справочники.Клиенты.СоздатьЭлемент();
		        
		// Заполняем реквизиты
		Клиент.Наименование = ФИО;
		Клиент.ФИО = ФИО;
		Клиент.Пол = ПолП;
		Клиент.ДатаРождения = ДатаРождения;
		Клиент.МестоРождения = МестоРождения;
		Клиент.СерияПаспорта = Серия;
		Клиент.НомерПаспорта = Номер;
		Клиент.ДатаВыдачи = ДатаВыдачи;
		Клиент.ДатаОкончанияСрокаДействия = СрокДействия;
		Клиент.Орган = Орган;
		
		// Записываем
		Клиент.Записать();
		
	КонецЦикла;	
		
	// Закрываем книгу
	Эксель.Workbooks.Close();
	
	// Отключаем Эксель
	Эксель.Application.Quit();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьКлиенты(Команда)
	ИмяФайла = ЭтаФорма.ПутьКФайлу;
	
	нФайл = Новый Файл(ИмяФайла);
	
	Если Не нФайл.Существует() Тогда
	
		Возврат;	
	
	КонецЕсли; 
	
	ДвоичДанные = Новый ДвоичныеДанные(ИмяФайла);
	
	ЗагрузитьКлиентыНаСервере(ДвоичДанные, нФайл.Расширение);
КонецПроцедуры

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

	Попытка
		// Создание COM-объекта
		Эксель = Новый COMОбъект("Excel.Application");
		
		// Отключение вывода предупреждений и вопросов		
		Эксель.DisplayAlerts = 0;
		Эксель.Visible = 0;
	Исключение
   		Return;
	КонецПопытки;

	// Открываем книгу
	Книга = Эксель.Workbooks.Open(ФайлЭксельНаСервере);
		
	// Открываем лист
	Лист = Книга.Sheets(1);
	
	// Определяем количество строк и столбцов
	ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
	ВсегоСтолбцов = Лист.Cells(1,1).SpecialCells(11).Column;
	
	// Перебираем строки
	Для СчетчикСтрок = 2 По ВсегоСтрок Цикл
		
		// загрузка страны
		Страна = Лист.Cells(СчетчикСтрок,1).Value;    
		СтранаСпр = Справочники.Страны.НайтиПоНаименованию(Страна);   // ищем страну в справочнике по наименованию
		
		Если СтранаСпр = Справочники.Страны.ПустаяСсылка() Тогда
			НоваяСтрана = Справочники.Страны.СоздатьЭлемент();        // создаем новый элемент в справочнике "Страны"
			НоваяСтрана.Наименование = Страна;
			НоваяСтрана.Записать();
			
		    СтранаСпр = НоваяСтрана;
		КонецЕсли; 
		
		// загрузка города
		Город = Лист.Cells(СчетчикСтрок,2).Value;    
		ГородСпр = Справочники.Города.НайтиПоНаименованию(Город);
		
		Если ГородСпр = Справочники.Города.ПустаяСсылка() Тогда
			НовыйГород = Справочники.Города.СоздатьЭлемент();
			НовыйГород.Наименование = Город;
			НовыйГород.Владелец = СтранаСпр.Ссылка;
			НовыйГород.Записать();
			
		    ГородСпр = НовыйГород;
		КонецЕсли; 
		
		// загрузка названия
		НаимОтеля = Лист.Cells(СчетчикСтрок,3).Value;
		
		// загрузка звезды
		Звезда = Лист.Cells(СчетчикСтрок,4).Value;
		Если Звезда = "апартаменты" Тогда
			Звезда = Перечисления.УровеньОтеля.Апартаменты;
		ИначеЕсли Звезда = 5 Тогда	
			Звезда = Перечисления.УровеньОтеля.Звезды5;
		ИначеЕсли Звезда = 4 Тогда	
			Звезда = Перечисления.УровеньОтеля.Звезды4;
		ИначеЕсли Звезда = 3 Тогда	
			Звезда = Перечисления.УровеньОтеля.Звезды3;
		ИначеЕсли Звезда = 2 Тогда	
			Звезда = Перечисления.УровеньОтеля.Звезды2;
		ИначеЕсли Звезда = 1 Тогда	
			Звезда = Перечисления.УровеньОтеля.Звезды1;
		КонецЕсли;
		
		// загрузка адреса
		Адрес = Лист.Cells(СчетчикСтрок,5).Value;
		
		// Создаем новый элемент справочника Отели
		НовыйОтель = Справочники.Отели.СоздатьЭлемент();
		НовыйОтель.Наименование = НаимОтеля;
		НовыйОтель.Страна = СтранаСпр;
		НовыйОтель.Город = ГородСпр;
		НовыйОтель.Звезда = Звезда;
		НовыйОтель.Адрес = Адрес;
		
		НовыйОтель.Записать();
		
	КонецЦикла;	
		
	// Закрываем книгу
	Эксель.Workbooks.Close();
	
	// Отключаем Эксель
	Эксель.Application.Quit();
	
КонецПроцедуры

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

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

	Попытка
		// Создание COM-объекта
		Эксель = Новый COMОбъект("Excel.Application");
		
		// Отключение вывода предупреждений и вопросов		
		Эксель.DisplayAlerts = 0;
		Эксель.Visible = 0;
	Исключение
   		Return;
	КонецПопытки;

	// Открываем книгу
	Книга = Эксель.Workbooks.Open(ФайлЭксельНаСервере);
		
	// Открываем лист
	Лист = Книга.Sheets(1);
	
	// Определяем количество строк и столбцов
	ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
	ВсегоСтолбцов = Лист.Cells(1,1).SpecialCells(11).Column;
	
	// Перебираем строки
	Для СчетчикСтрок = 3 По ВсегоСтрок Цикл
		
		Организация = Справочники.Организации.НайтиПоНаименованию(Лист.Cells(СчетчикСтрок,1).Value);    
		Должность = Лист.Cells(СчетчикСтрок,2).Value;
		Наим = Лист.Cells(СчетчикСтрок,4).Value;
		ФИО = Лист.Cells(СчетчикСтрок,3).Value;
		
		//Лист.Cells(СчетчикСтрок,5).NumberFormat = "m/d/yyyy";
		//ДатаРождения = Дата(Лист.Cells(СчетчикСтрок,5).Value);
		
		НовыйСотр = Справочники.Сотрудники.СоздатьЭлемент();
		НовыйСотр.Организация = Организация;
		НовыйСотр.Наименование = Наим;
		НовыйСотр.ФИО = ФИО;
		//НовыйСотр.ДатаРождения = ДатаРождения;
		НовыйСотр.Должность = Должность;
		
		НовыйСотр.Записать();
		
	КонецЦикла;	
		
	// Закрываем книгу
	Эксель.Workbooks.Close();
	
	// Отключаем Эксель
	Эксель.Application.Quit();
КонецПроцедуры

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


Дорогие модераторы прошу вас не убирать этот вопрос т.к я начинающий программист , код сбросил для того чтобы если вдруг в нем ошибка люди подскажут .
Делаю я все это не в справочнике а в обработке ЗагрузкаИзЭксель
Ниже привожу скриншот того что я сделал.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dyuha 51 05.07.22 18:46 Сейчас в теме
&НаКлиенте ...
ДвоичДанные = Новый ДвоичныеДанные(ИмяФайла);
Адрес = ПоместитьВоВременноеХранилище(ДвоичДанные, УникальныйИдентификатор);
ЗагрузитьСотрудниковНаСервере(Адрес, нФайл.Расширение);
...

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

Передавай через временное хранилище.
3. dyuha 51 05.07.22 19:25 Сейчас в теме
Смотри https://infostart.ru/public/1411881/
блок Работа с Excel через построитель
DiaDiamond; +1 Ответить
Оставьте свое сообщение

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