1C:Бухгалтерия
1С:CRM ПРОФ, КОРП
1С:ERP Управление предприятием 2
Платформа 1С v8.3
Корп. решения 1С
Здравствуйте. Я очень мало знаю русский. Извините за этого. Я еще новичок в 1С программирование. Есть токая задания "Загрузить данные из эксель". Подробнее: В УТ 10.3 Есть документ поступление товаров услуг. Надо создать кнопку который будить реализовать это: Когда пользователь в новым(пустым) документе нажал эту кнопку открылся окно рабочий стол(компьютера) . Он могла выбрать эксель файл. Потом программ автоматически заполняет табличный часть документа (ПоступлениеТоваровУслуг.Товары)(Колонки номенклатура, количество, цена, сумма). Написал код но есть места который не работает.
что надо писать в скобках?
Как исправится с этим?
Спасиба всем за ранее.
Эксель.Workbooks.Open();
Как исправится с этим?
Спасиба всем за ранее.
Перем СЗ, ТЗ;
Процедура СозданиеТаблицыЗначений()
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ПолноеНаименование",,"ПолноеНаименование");
ТЗ.Колонки.Добавить("Номенклатура",,"Номенклатура");
ТЗ.Колонки.Добавить("Количество",,"Количество");
ТЗ.Колонки.Добавить("Цена",,"Цена");
ТЗ.Колонки.Добавить("Сумма",,"Сумма");
ТЗ.Колонки.Добавить("ПолноеНазвание" ,Новый ОписаниеТипов("СписокЗначений"));
КонецПроцедуры
Функция ПоискПодстроки(Подстрока, ПодстрокаРасшифровка)
ПозицияСимвола = Найти(Подстрока, ",");
ПозицияСимволаРасшифровка = Найти(ПодстрокаРасшифровка, ",");
Если ПозицияСимвола <> 0 Тогда
ПерваяНоменклатура = Лев(Подстрока, ПозицияСимвола - 1);
ПерваяНоменклатураРасшифровка = Лев(ПодстрокаРасшифровка, ПозицияСимволаРасшифровка - 1);
СЗ.Добавить(ПерваяНоменклатура, ПерваяНоменклатураРасшифровка);
Остаток = СтрДлина(Подстрока) - (СтрДлина(ПерваяНоменклатура) + 1);
ОстатокРасшифровка = СтрДлина(ПодстрокаРасшифровка) - (СтрДлина(ПерваяНоменклатураРасшифровка) + 1);
Возврат ПоискПодстроки(Прав(Подстрока, Остаток), Прав(ПодстрокаРасшифровка,ОстатокРасшифровка));
Иначе
СЗ.Добавить(СокрЛП(Подстрока), СокрЛП(ПодстрокаРасшифровка));
Возврат ПозицияСимвола;
КонецЕсли;
КонецФункции // ПоискПодстроки()
Процедура ПереборСтрокВЭксель()
Эксель = Новый COMОбъект("Excel.Application");
Эксель.Workbooks.Open();
Эксель.Sheets(1).Select();
Для Стр = 1 ПО 10 Цикл
СЗ = Новый СписокЗначений;
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.ПолноеНаименование = СокрЛП(Эксель.Cells(Стр,1).Value);
НоваяСтрока.Номенклатура = СокрЛП(Эксель.Cells(Стр,2).Value);
НоваяСтрока.Количество = СокрЛП(Эксель.Cells(Стр,2).Value);
НоваяСтрока.Цена = СокрЛП(Эксель.Cells(Стр,3).Value);
НоваяСтрока.Сумма = СокрЛП(Эксель.Cells(Стр,4).Value);
ПозицияСимвола = ПоискПодстроки(СокрЛП(Эксель.Cells(Стр,1).Value), СокрЛП(Эксель.Cells(Стр,2).Value));
НоваяСтрока.ПолноеНазвание = СЗ;
КонецЦикла;
Эксель.ActiveWorkbook.Close();
Эксель.Application.Quit();
КонецПроцедуры
Процедура ПереборСтрокТЗ()
Для Каждого Ст из ТЗ Цикл
Стр = ЭлементыФормы.Товары.ТекущиеДанные;
Стр.Номенклатура = Ст.Номенклатура;
Стр.Количество = Ст.Количество;
Стр.Цена = Ст.Цена;
Стр.Сумма = Ст.Сумма;
Стр.Записать();
КонецЦикла;
КонецПроцедуры
Процедура ОсновныеДействияФормыЗагрузитьДанные(Кнопка)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Фильтр = "Формат xls (*.xls; *.xlsx)|*.xls;*.xlsx|";
Если Диалог.Выбрать() Тогда
Предупреждение(Диалог.ПолноеИмяФайла,10,"Файл выбран.");
Иначе
Предупреждение("Файл не выбран.");
Возврат;
КонецЕсли;
СозданиеТаблицыЗначений();
ПереборСтрокВЭксель();
ПереборСтрокТЗ();
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Универсальная загрузка данных из Экселя по основным параметрам для УТ 11.5
- Загрузка данных из экселя в Распоряжение на перечисление на карты МИР
- Загрузка из эксель в документ Заказ клиента для УТ 11.4, 11.5, КА 2.4, 2.5, ЕРП 2.4, 2.5
- Загрузка из эксель в документ Приобретение товаров и услуг для УТ 11.5, КА 2.5, ЕРП 2.5
- Загрузка из эксель в документ Приходная накладная для УНФ 3, Розница 3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Спасибо за внимание.
Я путь написал но выдают ошибку {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента.Форма(3391)}: Ошибка при вызове метода контекста (Open)
Эксель.Workbooks.Open(Путь);
по причине:
Произошла исключительная ситуация (Microsoft Excel): Не удалось найти "". Проверьте правильность ввода имени и расположения файла.
При попытке открытия файла из списка недавно использованных файлов убедитесь, что файл не был переименован, перемещен или удален.
Спасибо за внимание.
Я путь написал но выдают ошибку {Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента.Форма(3391)}: Ошибка при вызове метода контекста (Open)
Эксель.Workbooks.Open(Путь);
по причине:
Произошла исключительная ситуация (Microsoft Excel): Не удалось найти "". Проверьте правильность ввода имени и расположения файла.
При попытке открытия файла из списка недавно использованных файлов убедитесь, что файл не был переименован, перемещен или удален.
(4)Сделал ошибка исчезла но сейчас выдают это
{Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента.Форма(3416)}: Значение не является значением объектного типа (Номенклатура)
Стр.Номенклатура = Ст.Номенклатура;
Процедура ПереборСтрокТЗ()
Для Каждого Ст из ТЗ Цикл
Стр = ЭлементыФормы.Товары.ТекущиеДанные;
Стр.Номенклатура = Ст.Номенклатура;
Стр.Количество = Ст.Количество;
Стр.Цена = Ст.Цена;
Стр.Сумма = Ст.Сумма;
Стр.Записать();
КонецЦикла;
КонецПроцедуры
Показать{Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента.Форма(3416)}: Значение не является значением объектного типа (Номенклатура)
Стр.Номенклатура = Ст.Номенклатура;
(3)
А так?
Процедура ОсновныеДействияФормыЗагрузитьДанные(Кнопка)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Фильтр = "Формат xls (*.xls; *.xlsx)|*.xls;*.xlsx|";
Если Диалог.Выбрать() Тогда
Предупреждение(Диалог.ПолноеИмяФайла,10,"Файл выбран.");
Иначе
Предупреждение("Файл не выбран.");
Возврат;
КонецЕсли;
СозданиеТаблицыЗначений();
ПереборСтрокВЭксель(Диалог.ПолноеИмяФайла);
ПереборСтрокТЗ();
КонецПроцедуры
Процедура ПереборСтрокВЭксель(ПолноеИмяФайла)
Эксель = Новый COMОбъект("Excel.Application");
Эксель.Workbooks.Open(ПолноеИмяФайла);
Эксель.Sheets(1).Select();
ПоказатьА так?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот