|
Чтение данных из xlsx файла в справочник номенклатура | ☑ | ||
---|---|---|---|---|
0
Hammond
07.10.20
✎
19:19
|
Добрый Вечере. Нужна помощь новичку 1с.
есть задание, суть которого: 1. создание внешней обработки 2. сделать поле "путь к файлу", при помощи которого через диалоговое окно windows указать на файл, который при нажатии на "открыть" открывается 3. сделать поле вид цены, которая через вложенный список показывает виды цены, находящиеся в документах 4. Ключ поиска, вложенный список с заранее известными атрибутами 5. Перезапись дублей. булево значение, должно быть истинно 6. сделать на форме кнопку "загрузить" Это все я сделал, но столкнулся с трудностями дальше При нажатии на кнопку «Загрузить» указанный файл считывается, и для каждой строчки создается отдельный элемент справочника «Номенклатура». При этом загружается изображение товара и устанавливается основным для карточки товара. В справочнике «Номенклатура» должна строиться иерархия товаров в соответствии с данными в файле (колонка «Группа»). Для каждого товара должна регистрироваться цена продажи по выбранному виду цен. Перед загрузкой данных по товару должен происходить поиск по указанному пользователем ключу. Если товар найден в справочнике, то проверяется флаг «Перезаписывать дубли». Если флаг установлен – найденный элемент перезаполняется, иначе просто пропускается. Если такой товар не найден, то создается новый товар. Помогите с кодом, не понимаю, как это сделать |
|||
1
МихаилМ
07.10.20
✎
19:24
|
вы каждый день тут попрошайничаете
|
|||
2
Hammond
07.10.20
✎
19:27
|
бывает иногда)
|
|||
3
hhhh
07.10.20
✎
19:39
|
(2) на сайте 1clancer пишешь задачу, тебе за пару часов сделают. И по цене там немного, пару-тройку тысяч.
|
|||
4
Hammond
07.10.20
✎
19:47
|
Да я понимаю, что можно купить работу, но я сам хочу разобраться с ней.
просто нуждаюсь в каких-то советах по выполнению. мне бы разобраться с кнопкой загрузить, чтобы она считывала и записывала, все остальное я, думаю, сделаю сам. читал много всего в интернете, писал некоторый функции, но сталкивался с проблемами, которые не в силах пофиксить. |
|||
5
Chameleon1980
07.10.20
✎
19:50
|
ну и пиши что не получается, а не всю портянку с заланием
|
|||
6
Hammond
07.10.20
✎
19:59
|
Хорошо
использую данный код для Выбора файла, все работает &НаКлиенте Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка=ложь; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл"; Диалог.ПолноеИмяФайла = ""; Фильтр = "XLSX (*.xlsx)|*.xlsx"; Диалог.Фильтр = Фильтр; Диалог.МножественныйВыбор = Ложь; Диалог.Каталог = "C:\"; Если Диалог.Выбрать() Тогда Объект.ПутьКФайлу = Диалог.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры дальше при помощи данного кода открываю файл для просмотра Процедура ПутьКФайлуОткрытие(Элемент, СтандартнаяОбработка) // текСтрока = Элементы.Выбрать.ТекущаяСтрока; ИмяФайла = Объект.ПутьКФайлу; ЗапуститьПриложение(ИмяФайла); КонецПроцедуры это все работает легко и понятно. дальше использую найденный в интернете код: Функция ИзExcelВТаблицу(Объект.ПутьКФайлу, НомерСтраницы = 1, ПерСтрокаЗаголовок = Ложь , ФормаИндикатора = Неопределено) Попытка Док = ПолучитьCOMОбъект(Объект.ПутьКФайлу); Исключение Сообщить("Произошла ошибка при обращение к Excel:" + Символы.ПС + ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; ЗакрытьФормуИндиктаора = Ложь; Если ФормаИндикатора = Неопределено тогда ЗакрытьФормуИндиктаора = Истина; // ФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных"); ФормаИндикатора.Открыть(); КонецЕсли; ФормаИндикатора.КомментарийЗначения = "Загрузка данных из Excel..."; ТЗ = Новый ТаблицаЗначений(); Страница = Док.Sheets(НомерСтраницы); МакСтрок = Страница.UsedRange.Rows.Count; // макс. колич. строк МакСтолб = Страница.UsedRange.Columns.Count; // макс. колич. столбцов Для Столбец = 1 по МакСтолб цикл ИмяСтолбца = "Столбец_" + Столбец; Если ПерСтрокаЗаголовок тогда ИмяСтолбца = Страница.Cells(1,Столбец).Value; ИмяСтолбца = СокрЛП(ИмяСтолбца); ИмяСтолбца = СтрЗаменить(ИмяСтолбца," ","_"); КонецЕсли; ТЗ.Колонки.Добавить(ИмяСтолбца, Новый ОписаниеТипов("Строка")); КонецЦикла; НачальнаяСтрока = 1; Если ПерСтрокаЗаголовок тогда НачальнаяСтрока = 2; КонецЕсли; Для НомСтрока = НачальнаяСтрока по МакСтрок цикл СтрТЗ = ТЗ.Добавить(); Для НомСтолбец = 1 по МакСтолб цикл Данные = Страница.Cells(НомСтрока,НомСтолбец).Value; СтрТЗ[НомСтолбец-1] = Данные; КонецЦикла; ФормаИндикатора.ЭлементыФормы.Индикатор.Значение = НомСтрока/МакСтрок * 100; КонецЦикла; Если ЗакрытьФормуИндиктаора тогда ФормаИндикатора.Закрыть(); КонецЕсли; Возврат ТЗ; КонецФункции Ругается на "Объект.ПутьКФайлу" в параментрах процедуры. там нужно указать путь до файла exel, который у меня хранится в объект.путькфайлу, но указать его не получается |
|||
7
acht
07.10.20
✎
20:03
|
(4) > читал много всего в интернете, писал некоторый функции,
Ну, значит, о синтаксе параметров процедур и функций знаешь. Продолжай. |
|||
8
Hammond
07.10.20
✎
20:43
|
разместил в модуле объекта
Функция ИзExcelВТаблицу(ИмяФайла, НомерСтраницы = 1, ПерСтрокаЗаголовок = Ложь , ФормаИндикатора = Неопределено) Экспорт и Функция ЭлементСправочника(Номенклатура = "",ИмяЭлемента, ИмяРодителя = Неопределено, Параметры = Неопределено, СоздатьЕслиНетЭлемента=Истина) Экспорт в модуле формы написал &НаСервере Процедура ЗагрузитьОбъект() ЗагрузитьОбъект = РеквизитФормыВЗначение("Объект"); ЗагрузитьОбъект.ИзExcelВТаблицу (); ЗагрузитьОбъект.ЭлементСправочника (); КонецПроцедуры &НаКлиенте Процедура Загрузить(Команда) ПроверитьЗаполнение(); ЗагрузитьОбъект(); КонецПроцедуры Все сохраняется, но при нажатии на кнопку загрузить появляется ошибка "Недостаточно фактических параметров" |
|||
9
lEvGl
гуру
07.10.20
✎
23:32
|
А со списком видов цен сделал? Как?
|
|||
10
hhhh
07.10.20
✎
23:42
|
(8) посчитай сколько параметров ты здесь задал
ЗагрузитьОбъект.ИзExcelВТаблицу (); и сколько должно быть. |
|||
11
Злопчинский
07.10.20
✎
23:49
|
(0) то что ты написал это есть практически штатная УНФ "загрузка из внешних источников".
|
|||
12
Chameleon1980
08.10.20
✎
05:25
|
копипастеры, которые даже задумываться не хотят
|
|||
13
Alexsandriv
04.12.20
✎
16:00
|
Hammond у тебя получилась программа?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |