Я загружаю в 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();
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьСотрудников(Команда)
ИмяФайла = ЭтаФорма.ПутьКФайлу;
нФайл = Новый Файл(ИмяФайла);
Если Не нФайл.Существует() Тогда
Возврат;
КонецЕсли;
ДвоичДанные = Новый ДвоичныеДанные(ИмяФайла);
ЗагрузитьСотрудниковНаСервере(ДвоичДанные, нФайл.Расширение);
КонецПроцедуры
ПоказатьДорогие модераторы прошу вас не убирать этот вопрос т.к я начинающий программист , код сбросил для того чтобы если вдруг в нем ошибка люди подскажут .
Делаю я все это не в справочнике а в обработке ЗагрузкаИзЭксель
Ниже привожу скриншот того что я сделал.
Прикрепленные файлы:
![](/upload/forum/upload/375/375d07f3792299341be87bfbcb721316.png)
![](/upload/forum/upload/9ca/9ca4077763efcac5af9a8d5c1be4fcbe.png)
По теме из базы знаний
- Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)
- Доработка документа "Требование-накладная" для выгрузки табличной части в Excel
- Универсальная загрузка данных формата Excel
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
- Умная Загрузка Номенклатуры - с автопоиском реквизитов из Excel, загрузка изображений и документов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
&НаКлиенте ...
ДвоичДанные = Новый ДвоичныеДанные(ИмяФайла);
Адрес = ПоместитьВоВременноеХранилище(ДвоичДанные, УникальныйИдентификатор);
ЗагрузитьСотрудниковНаСервере(Адрес, нФайл.Расширение);
...
&НаСервере ...
ДвоичДанные = ПолучитьИзВременногоХранилища(Адрес);
Передавай через временное хранилище.
ДвоичДанные = Новый ДвоичныеДанные(ИмяФайла);
Адрес = ПоместитьВоВременноеХранилище(ДвоичДанные, УникальныйИдентификатор);
ЗагрузитьСотрудниковНаСервере(Адрес, нФайл.Расширение);
...
&НаСервере ...
ДвоичДанные = ПолучитьИзВременногоХранилища(Адрес);
Передавай через временное хранилище.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот