Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 20:14

Помогите со справочником

Автор Абылайхан, 21 июл 2015, 14:37

0 Пользователей и 1 гость просматривают эту тему.

Абылайхан

Хочу создать простой справочник с БИН и Наименованиями контрагентов, заполнить их с помощью файла Excel. Как это сделать с помощью импорта экспорта фала excel&

cska-fanat-kz

ну взять стандартную обработку
подготовить эксельку нужной структуры и вперед
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Абылайхан

Цитата: cska-fanat-kz от 21 июл 2015, 15:04
ну взять стандартную обработку
подготовить эксельку нужной структуры и вперед

Создал Справочник с 2 реквизитами БИН и наименование и добавил 2 кнопки Обзор и Заполнить, теперь не получается забить информацией эти реквизиты.Не знаю как в цикле задать запись в этот справочник.

Перем   ПутьКФайлу;
Процедура ДействияФормыОбзор(Кнопка)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "Текст(*,xls)|*.xls";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл";
Если ДиалогОткрытияФайла.Выбрать() Тогда

ПутьКФайлу=ДиалогОткрытияФайла.ПолноеИмяФайла;

КонецЕсли;
КонецПроцедуры

Процедура ДействияФормыЗаполнить(Кнопка)
//Если ПустаяСтрока(ИмяФайла) Тогда
//  Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
//  Возврат;
//КонецЕсли;
имяФайла= ПутьКФайлу;
Попытка
// Загрузка Microsoft Excel
Состояние("Загрузка Microsoft Excel...");
ExcelПриложение = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

Попытка
// Открытие файла Microsoft Excel
Состояние("Открытие файла Microsoft Excel...");
ExcelФайл = ExcelПриложение.WorkBooks.Open(имяФайла);
Исключение
Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;

Попытка
// Обработка файла Microsoft Excel
Состояние("Обработка файла Microsoft Excel...");
// Читаем данные первого листа книги
ExcelЛист = ExcelФайл.Sheets(1);

// Определить количество строк и колонок выбранного листа книги Excel
xlCellTypeLastCell = 11;
ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
Исключение
Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
// Закрыть COM соединение для экономии памяти
ExcelПриложение.Quit();
КонецПопытки;

// Создание описателя типов для таблицы значений
КЧ = Новый КвалификаторыЧисла(15,2);
КС = Новый КвалификаторыСтроки(300);
КД = Новый КвалификаторыСтроки(15);

Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
Массив.Очистить();
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
Массив.Добавить(Тип("Дата"));
ОписаниеТиповД = Новый ОписаниеТипов(Массив, , ,КД);

ТаблСпр = Новый ТаблицаЗначений;
// Очистить предыдущие значения
//ТаблицаДокумента.Очистить();
//ТаблицаДокумента.Колонки.Очистить();

// Создать колонки табличного документа
//ТаблСпр.Колонки.Добавить("БИН",ОписаниеТиповС,"БИН",15);
//ТаблСпр.Колонки.Добавить("Наименование",ОписаниеТиповС,"Наименование",300);
//
zz=0;
// Последовательное чтение строк с выбранного листа
Для Строка = 1 По ExcelПоследняяСтрока Цикл

// Обработка нажатия Ctrl + Break
ОбработкаПрерыванияПользователя();

// Добавить данные в табличную часть экранной формы
//если zz=0 тогда
Стр=ТаблСпр.Добавить();
//Стр.Номер = Строка;

Попытка
//ББ=ПреобразоватьВСтроку(ExcelЛист.Cells(Строка, 1).Value);
// ББ=ПреобразоватьЧисло(ExcelЛист.Cells(Строка, 1).Value);
ББ=ExcelЛист.Cells(Строка, 1).Value;
Стр.БИН = ББ;
Стр.Наименование = ExcelЛист.Cells(Строка, 2).Value;

//сообщить("zz="+zz+" "+строка);
zz=1;
Исключение
// Не редко происходит ошибка конвертации отдельной ячейки документа
Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;

// Отобразить информацию о ходе выполнения обработки
Состояние("Обработка файла Microsoft Excel : "
+ "строка " + Строка + " из " + ExcelПоследняяСтрока);

КонецЦикла;

// Закрыть COM соединение для экономии памяти
ExcelПриложение.Quit();

КонецПроцедуры

vitasw

О! теперь другой колинкор... значит что-то умеете.


Для Каждого ТекСтрока Из ТаблСпр Цикл
    СпрОб=Справочники.<ИмяВашегоСправочника>.СоздатьЭлемент();
    СпрОб.Наименование=ТекСтрока.Наименование;
    СпрОб.БИН=ТекСтрока.БИН;
    СпрОб.Записать();
КонецЦикла

cska-fanat-kz

зачем что-то писать?
если в стандартной обработке ЗагрузкаДанныхИзТабличногоДокумента (название по памяти) есть режим загрузки в справочник.
надо только правильно настроить соответствие колонок Экселя и реквизитов справочника!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

или у вас спортивный интерес самому написать обработку?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Абылайхан

Цитата: vitasw от 21 июл 2015, 15:26
О! теперь другой колинкор... значит что-то умеете.


Спасибо, получилось)
Добавлено: 22 июл 2015, 06:39


Цитата: cska-fanat-kz от 22 июл 2015, 06:13
зачем что-то писать?
если в стандартной обработке ЗагрузкаДанныхИзТабличногоДокумента (название по памяти) есть режим загрузки в справочник.
надо только правильно настроить соответствие колонок Экселя и реквизитов справочника!

Да я бы с радостью использовал, если бы знал что такая обработка есть) Кстати не нашел что-то такой обработки( Видите ли недостаток знаний приходится замещать копипастированием чужого кода и переделывания)

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Абылайхан

Цитата: cska-fanat-kz от 22 июл 2015, 07:00
Диски ИТС не приходят?

Спасибо, я недавно начал заниматься 1С, буду иметь ввиду.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск