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