![]() |
|
Импорт из exel | ☑ | ||
---|---|---|---|---|
0
Vitalii72
21.06.16
✎
13:21
|
Доброе время суток, знаю тем много, но не смог найти решение. В общем есть таблица в exel, необходимо часть импортировать в справочник контрагенты, причём часть в реквизиты типа "наименование" и т.п., а вторую часть в табличную часть. Нашёл типовую обработку ЗагрузкаДанныхИзТабличногоДокумента, ей можно это сделать, но только в ручную выгружать в каждого контрагента, а их там тысячи 2 где то.
Подскажите пожалуйста, чем можно импортировать такую таблицу, файл известный, столбики тоже. Видел в интернете код обработки, но там видел только в реквизиты или только в табличную часть, а чтобы так в месте не смог найти. |
|||
1
Amra
21.06.16
✎
13:22
|
Пишется за полчаса с перекурами
|
|||
2
Vitalii72
21.06.16
✎
13:23
|
Хотя бы пример схожий, дальше сам буду разбираться или почитать где )
|
|||
3
Fedor-1971
21.06.16
✎
14:34
|
(2)конфигурация на УФ или ОФ?
|
|||
4
Fedor-1971
21.06.16
✎
14:39
|
(0) идея следующая:
Находишь перебор файла Exel из 1С - гугл выдаёт кучу ссылок Ищешь элемент в справочнике Контрагенты по нужным тебе параметрам из файла Exel получаешь объект из ссылки на элемент исправляешь наименование или добавляешь строку в ТЧ записываешь объект элемента справочника. Профит |
|||
5
Vitalii72
21.06.16
✎
14:46
|
Вот нашёл примерно как можно выгрузить из экселя:
// Пытаемся подключиться к Excel. Попытка ExcelПриложение = Новый COMОбъект("Excel.Application"); Книга = ExcelПриложение.Workbooks.Open(ПутьКФайлу); Лист = Книга.WorkSheets(1); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; ExcelПриложение.Application.Visible = Ложь; ExcelПриложение.Application.DisplayAlerts = Ложь; // По координатам "последней" ячейки (SpecialCells(11)) получаем // количество используемых колонок и строк ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; // Указываем номер строки, с которой начинается чтение листа НомерПервойСтроки = 1; // Указываем номера колонок, данные из которых будем читать КолонкаНаименованиеПолное = 2; КолонкаАртикул = 5; КолонкаЦена = 8; // Добавляем номенклатуру в систему СчетчикСтрок = НомерПервойСтроки; Пока СчетчикСтрок <= ВсегоСтрок Цикл НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); // Мы по координатам (номер строки, номер колонки) находим ячейку и читаем её значение НоваяНоменклатура.НаименованиеПолное = СокрЛП(Лист.Cells(СчетчикСтрок, КолонкаНаименованиеПолное).Value); НоваяНоменклатура.Артикул = СокрЛП(Лист.Cells(СчетчикСтрок, КолонкаАртикул).Value); НоваяНоменклатура.Цена = СокрЛП(Лист.Cells(СчетчикСтрок, КолонкаЦена).Value); Попытка НоваяНоменклатура.Записать(); Исключение СообщениеПользователю = Новый СообщениеПользователю; СообщениеПользователю.Текст = "Не удалось записать номенклатуру + " + НоваяНоменклатура.НаименованиеПолное + "! " + ОписаниеОшибки(); СообщениеПользователю.Сообщить(); КонецПопытки; СчетчикСтрок = СчетчикСтрок + 1; КонецЦикла; // Закрываем книгу и эксель ExcelПриложение.ActiveWorkbook.Close(); ExcelПриложение.Quit(); Сейчас ищю, как записать данные в табличную часть. |
|||
6
Vitalii72
21.06.16
✎
14:47
|
(3) Конфигурация самописная
|
|||
7
Amra
21.06.16
✎
14:58
|
(6) Емкий ответ. С такими познаниями лучше отойти и ничего не трогать
|
|||
8
Fedor-1971
21.06.16
✎
14:58
|
(5) вместо
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); // Мы по координатам (номер строки, номер колонки) находим ячейку и читаем её значение НоваяНоменклатура.НаименованиеПолное = СокрЛП(Лист.Cells(СчетчикСтрок, КолонкаНаименованиеПолное).Value); НоваяНоменклатура.Артикул = СокрЛП(Лист.Cells(СчетчикСтрок, КолонкаАртикул).Value); НоваяНоменклатура.Цена = СокрЛП(Лист.Cells(СчетчикСтрок, КолонкаЦена).Value); Попытка НоваяНоменклатура.Записать(); Исключение СообщениеПользователю = Новый СообщениеПользователю; СообщениеПользователю.Текст = "Не удалось записать номенклатуру + " + НоваяНоменклатура.НаименованиеПолное + "! " + ОписаниеОшибки(); СообщениеПользователю.Сообщить(); КонецПопытки; Вставь свою работу со справочником, только учти ты отыскал обработку для ОФ (6) ну тогда сам знаешь как преобразовать найденное к условиям твоей конфигурации |
|||
9
RomaH
naïve
21.06.16
✎
15:06
|
CSAМассив= ТекЛист.Range(ТекЛист.Cells(СтруктураЗагрузки.НачальнаяСтрока, 1), ТекЛист.Cells(СтруктураЗагрузки.ПоследняяСтрока, СтруктураЗагрузки.ПоследнийСтолбец)).Value;
МассивКолонок = CSAМассив.Выгрузить(); ОбщееКоличествоКолонок = CSAМассив.GetUpperBound(0); ОбщееКоличествоСтрок = CSAМассив.GetUpperBound(1); ЗагрузитьДанныеИзЕкселяВДокумент(МассивКолонок,ОбщееКоличествоКолонок,ОбщееКоличествоСтрок,СтруктураЗагрузки); вот - клиент - сервер |
|||
10
Smallrat
21.06.16
✎
15:42
|
Макет = Новый ТабличныйДокумент;
Макет.Прочитать("d:\Книга1.xlsx"); ПостроительЗапроса = Новый ПостроительЗапроса(); ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Макет.Область()); ПостроительЗапроса.Выполнить(); ВыборкаДанные = ПостроительЗапроса.Результат.Выбрать(); Пока ВыборкаДанные.Следующий() Цикл Сообщить(ВыборкаДанные.Имя); Сообщить(ВыборкаДанные.Количество); КонецЦикла; тут надо добавить только передачу файла с клиента на сервер, лень было писать |
|||
11
ДемонМаксвелла
21.06.16
✎
15:45
|
Исправьте название темы
|
|||
12
Tatitutu
21.06.16
✎
16:11
|
Прыг-Скок...или из MS EXCEL в 1С (8.2) (открытый код)
http://catalog.mista.ru/public/399457/ |
|||
13
Vitalii72
22.06.16
✎
05:57
|
(7) Вам мозг не давит не на что? Можно подумать вы сами как родились шпили в 1с как бог ))).
(8) (9) (10) (12) Спасибо за ответы! |
|||
14
Vitalii72
22.06.16
✎
14:48
|
(10) Ещё раз спасибо тебе, тему можно закрывать ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |