Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помощь с кодом 1С

ОШИБКА:
Поле объекта не обнаружено (ИмяФайла)
{Обработка.ЗагрузкаДанныхМатериал.Форма.Форма.Форма(39)}: ПутьКфайлу = ОписаниеПомещенногоФайла.ИмяФайла;
КОД:
&НаКлиенте
Процедура ЗагрузкаДанных(Команда)
// Создаем новый табличный документ
ТабДок = Новый ТабличныйДокумент;

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

// Вызов серверной процедуры для загрузки данных
ЗагрузкаДанныхНаСервере(ТабДок, ПутьКфайлу);

// Уведомление пользователя об успешной загрузке
ПредупреждениеАсинх("Загрузка данных завершена.");
КонецПроцедуры

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

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

// Получаем путь к файлу
ПутьКфайлу = ОписаниеПомещенногоФайла.ИмяФайла; // Используем свойство ИмяФайла

Если ПутьКфайлу = "" Тогда
Сообщить("Не удалось определить путь к файлу.");
Возврат;
КонецЕсли;

// Отображаем путь к файлу в интерфейсе
Элементы.ПолеПутьКФайлу.Значение = ПутьКфайлу;
КонецПроцедуры

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

// Чтение данных из файла
ТабДок.Прочитать(ПутьКфайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);

// Построение запроса для обработки данных
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область("Материалы"));
ПостроительЗапроса.Выполнить();

// Выгрузка данных в таблицу
ТаблицаМатериалов = ПостроительЗапроса.Результат.Выгрузить();

// Обработка данных и добавление в справочник "Материалы"
Для каждого СтрокаМатериала Из ТаблицаМатериалов Цикл
Если Справочники.Материалы.НайтиПоНаименованию(СтрокаМатериала.ТипМатериала) = Справочники.Материалы.ПустаяСсылка() Тогда
НовыйМатериал = Справочники.Материалы.СоздатьЭлемент();
НовыйМатериал.ТипМатериала = СтрокаМатериала.ТипМатериала;
НовыйМатериал.ПроцентБракаМатериала = СтрокаМатериала.ПроцентБракаМатериала;
НовыйМатериал.Записать();
Иначе
Сообщить("Тип материала: " + СтрокаМатериала.ТипМатериала + " уже есть в базе.");
КонецЕсли;
КонецЦикла;
КонецПроцедуры

По дате
По рейтингу
Аватар пользователя
Знаток
1мес
Изменено

О том как именно можно выгрузить из 1С в ClickHouseDB, PostgreSQL или MySQL вам лучше читать в этой статье. Они очень доходчиво все объяснили, советую изучить данную статью kimkarus.ru/kak-vygruzit-iz-1s-v-clickhousedb-postgresql-ili-mysql/ Их сайт удобен, предлагают множество решений.

Аватар пользователя
Профи
4мес

Ставишь точку останова в в строчке с ошибкой и смотришь что у тебя в ОписаниеПомещенногоФайла. Вообще чего у тебя процедуры в модуле форму экспортные?