Не могу скомпилировать код из-за ошибки ниже, проверил что включен tcp/ip, а он включен.
Весь используемый код:
Весь используемый код:
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл: ";
Диалог.Фильтр = "Ексль(*.xls;*.xlsx)|*.xls;*.xlsx";
Диалог.ИндексФильтра = 0;
Диалог.ПредварительныйПросмотр = Ложь;
Диалог.ПроверятьСуществованиеФайла = Истина;
Диалог.МножественныйВыбор = Ложь;
Диалог.ПолноеИмяФайла = ПутьКФайлу;
Если Диалог.Выбрать() Тогда
ПутьКФайлу = Диалог.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзЕксель(Команда)
Если ПутьКФайлу = "" Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Укажите файл загрузки";
Сообщение.Поле = "Объект.ПутьКФайлу";
Сообщение.Сообщить();
Возврат;
КонецЕсли;
Соединение = ПоключитьсяКExcel(ПутьКФайлу);
//в массив структур
Если ВариантЗагрузки = "МассивСтруктур" Тогда
Лист = Соединение["Листы"][0]; // берем нужные нам листы: можем перебирать все их в цикле, либо указывать определенные.
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
МассивДанных = Новый Массив;
Для Сч = 1 по ВсегоСтрок Цикл
Строка = Новый Структура;
Для Сч2 = 1 по ВсегоКолонок Цикл
Строка.Вставить("Колонка" + Строка(Сч2), Лист.Cells(Сч, Сч2).Value);
КонецЦикла;
МассивДанных.Добавить(Строка);
КонецЦикла;
//в двумерный массив
ИначеЕсли ВариантЗагрузки = "ДвумерныйМассив" Тогда
Лист = Соединение["Листы"][0];
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Область = Лист.Range(Лист.Cells(1,1), Лист.Cells(ВсегоСтрок,ВсегоКолонок));
Данные = Область.Value.Выгрузить();
КонецЕсли;
Если Соединение = Неопределено Тогда
Возврат;
КонецЕсли;
ОтключатьсяОтExcel(Соединение);
КонецПроцедуры
&НаКлиенте
Процедура ОтключатьсяОтExcel(Соответстие)
Попытка
Соответстие["Соединение"].DisplayAlerts = 0;
Соответстие["ExcelФайл"].Close();
Соответстие["Соединение"].DisplayAlerts = 1;
Соответстие["Соединение"].Quit();
Соответстие["Соединение"] = Неопределено;
Исключение
Сообщить("Не удалось отключиться от Excel - "+ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаКлиенте
функция ПоключитьсяКExcel(п_Файл)
ПараметрыЕксель = Новый Соответствие;
Попытка
Excel = Новый COMОбъект("Excel.Application");
ПараметрыЕксель.Вставить("Соединение", Excel);
Листы = Новый Массив;
ExcelФайл = Excel.WorkBooks.Open (п_Файл);
ПараметрыЕксель.Вставить("ExcelФайл", ExcelФайл);
Для Сч = 1 По ExcelФайл.Sheets.Count Цикл
Листы.Добавить(ExcelФайл.Sheets(Сч));
КонецЦикла;
ПараметрыЕксель.Вставить("Листы", Листы);
фРезультат = ПараметрыЕксель;
Исключение
Сообщить("Ошибка создания обьекта Microsoft Excel" + ОписаниеОшибки());
фРезультат = Неопределено;
КонецПопытки;
Возврат фРезультат;
КонецФункции
&НаКлиенте
Процедура ПоказатьТабличныйДокумент(Команда)
ДвоичДанные = Новый ДвоичныеДанные(ПутьКФайлу);
АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичДанные);
ТабдДок = ПрочитатьТабличныйДокумент(АдресВХранилище);
КонецПроцедуры
&НаСервере
Функция ПрочитатьТабличныйДокумент(АдресВХранилище)
Файл = ПолучитьИмяВременногоФайла("xlsx");
лДвоичДанные = ПолучитьИзВременногоХранилища(АдресВХранилище);
лДвоичДанные.Записать(Файл);
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
Возврат ТабДок;
КонецФункции
&НаКлиенте
Процедура ТабличныйДокументВТЗ(Команда)
ПреобразоватьТабличныйДокументВТаблицуЗначений();
КонецПроцедуры
Функция ПреобразоватьТабличныйДокументВТаблицуЗначений()
ПоследняяСтрока = ТабДок.ВысотаТаблицы;
ПоследняяКолонка = ТабДок.ШиринаТаблицы;
ОбластьЯчеек = ТабДок.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);
ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
ПостроительОтчета.Выполнить();
ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
КонецФункции
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- 1С8:борьба - личный опыт работы с платформой 1с8
- Малоизвестная хитрость определения модуля и номера строки при возникновении исключения (без запуска отладки и конфигуратора). Несколько очень удобных, но малоиспользуемых возможностей работы в конфигураторе
- Работа с механизмом отладки 1С. Базовые настройки
- Автономный сервер. Часть 1 - новый вариант сервера
- Мультитул - Инструменты для работы с оборудованием и возможности Python в 1С.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) в моём случае это был тонкий клиент, без использования 1с на сервере. Это пример как я нашёл решение к своей проблеме, но спасибо и за ваше пояснение, учту.
если отладка невозможна по протоколу tcp/ip рекомендуется проверить
настроики браузера и очистить кэш 1С Предприятие 8.3 файлом Cleaner1C.bat
если отладка невозможна по протоколу tcp/ip рекомендуется проверить
настроики браузера и очистить кэш 1С Предприятие 8.3 файлом Cleaner1C.bat
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот