|   |   | 
| 
 | Импорт из 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) Ещё раз спасибо тебе, тему можно закрывать ))     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |