Modber Сообщество
профессионалов по 1С

v8: Загрузка данных из EXCEL в табличную часть документа 1с 8.2

  
Сообщений: 41

+2
Нужно заполнить данными табличную часть в документе "Заказ покупателя"- Товары по кнопке из Excell данных. Выполнять по полю "Артикул", а синхронизация поиска по справочнику "Номеклатура"
Сообщений: 50

0
Рекомендую посетить Инфостар. Именно там видел уже готовое решение, но нужно будет слегка подкорректировать.
Сообщений: 10

0
ИМХО зависит от конфигурации. В УТ11 есть мастер (по крайней мере для цен номенклатуры точно работает), там можно просто из Excel'я скопировать столбцы и все.
Сообщений: 34

+3
Для импорта данных из Excel используем следующую функцию:

//Номер листа в книге Excel для получения данных
НомерЛиста = 1;

//Пытаемся подключиться к Excel
Попытка
Excel = новый COMОбъект(«Excel.Application»);
Исключение
Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
Возврат;
КонецПопытки;

//Подключились удачно, открываем файл
Excel.Workbooks.Open(ИмяФайла);

//Открываем необходимый лист
Excel.Sheets(НомерЛиста).select();

//Получим количество строк и колонок.
//В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
Если Версия = «8» тогда
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
Конецесли;

//Для установки цен необходимо создать документ "Установка цен номенклатуры"
//Заполним шапку документа, в т.ч. заполним тип цены и валюту
ТипЦеныРозничный = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
НоваяСтрока = ДокументУстановкиЦенГривна.ТипыЦен.Добавить();
НоваяСтрока.ТипЦен = ТипЦеныРозничный;
ДокументУстановкиЦенГривна.Дата = ТекущаяДата();
ВалютаГривна = Справочники.Валюты.НайтиПоКоду(«980»);

//определим по файлу в каких колонках необходимые данные
НомерКолонкиКодаТовара = 1;
НомерКолонкиНаименованияТовара = 2;
НомерКолонкиЦеныТовара = 3;

// Выбираем данные из файла
Для а = НомерСтрокиТЧ по ФайлСтрок Цикл

//Полуим данные из соответсвующих ячеек
КодТовара = СокрЛП(Excel.Cells(а,НомерКолонкиКодаТовара).Value);
НаименованиеТовара = СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияТовара).Value);
Цена = Число(Excel.Cells(а,НомерКолонкиЦеныТовара).Value);

Товар = Справочники.Номенклатура.ПустаяСсылка();

// Ищем товар в справочнике по коду
Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);

// Если не нашли по коду, то ищем по наименованию
Если Товар.Пустая() Тогда
Товар = Справочники.Номенклатура.НайтиПоНаименованию(тНаименование, Истина);
Конецесли;

//Если не нашли создаем новый
Если Товар.Пустая() Тогда
Товар = Справочники.Номенклатура.СоздатьЭлемент();
Товар.Код = КодТовара;
Товар.Наименование = НаименованиеТовара;
Товар.НаименованиеПолное = НаименованиеТовара;
Товар.Записать();
Конецесли;

//Запишем товар и цену в документ установки цен
НоваяСтрока = ДокументУстановкиЦенГривна.Товары.Добавить();
НоваяСтрока.Валюта = ВалютаГривна;
НоваяСтрока.Цена = Цена;
НоваяСтрока.Номенклатура = Товар.Ссылка;
НоваяСтрока.ТипЦен = ТипЦеныРозничный;
Конеццикла;

//Если в документе есть товары записываем и проводим
Если Не(ДокументУстановкиЦенГривна.Товары.Количество() = 0) Тогда
ДокументУстановкиЦенГривна.Записать(РежимЗаписиДокумента.Запись);
ДокументУстановкиЦенГривна.Записать(РежимЗаписиДокумента.Проведение);
Конецесли;

//Закрываем Excel
Excel.ActiveWorkbook.Close();
В начало страницы 
|
Перейти на форум: