Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 12:23
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Перенос данных из EXEL в 1с  (Прочитано 33353 раз)

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

Оффлайн Елена1000000

  • *
  • Сообщений: 31
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-07
  • Сайт: 
  • Профессия: Бухгалтер

У меня конфигурация Бух 8.2 на полной поддержке. Задача перенести в нее из файла EXEL большой объем данных, 40000 строк. Подскажите с чего начать. Спасибо за любую помощь.


Оффлайн GRADUS

  • *****
  • Сообщений: 699
  • РЕПУТАЦИЯ: 51
  • КПД: 7%
  • Регистрация: 2013-06-08
  • Сайт: 
  • Профессия: Программист 1С
Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)


СтандартнаяОбработка = Ложь;

// Выбор файла Microsoft Excel
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|Документ Excel (*.xlsx)|*.xlsx";
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.ПолноеИмяФайла = ИмяФайла;
Выбор = ВыборФайла.Выбрать();
Если НЕ Выбор Тогда

Возврат;

КонецЕсли;

ИмяФайла = ВыборФайла.ВыбранныеФайлы[0];

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

Процедура Загрузить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);
//КС = Новый КвалификаторыСтроки(200);
//Массив = Новый Массив;
//Массив.Добавить(Тип("Строка"));
//ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
//Массив.Очистить();
//Массив.Добавить(Тип("Число"));
//ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
//массив.Очистить();
//Массив.Добавить(Тип("СправочникСсылка.Номенклатура"));
//ОписаниеТиповНоменкл = Новый ОписаниеТипов(Массив);

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


ТаблицаДокумента.Колонки.Добавить("Склад");
ТаблицаДокумента.Колонки.Добавить("Арктикул");
ТаблицаДокумента.Колонки.Добавить("Цвет"); //,ОписаниеТиповС,"Родитель",20);
ТаблицаДокумента.Колонки.Добавить("Размер1");
ТаблицаДокумента.Колонки.Добавить("Размер2"); 
ТаблицаДокумента.Колонки.Добавить("Размер3");
ТаблицаДокумента.Колонки.Добавить("Размер4");
ТаблицаДокумента.Колонки.Добавить("Размер5");
ТаблицаДокумента.Колонки.Добавить("Размер6");
ТаблицаДокумента.Колонки.Добавить("Цена");




//ТаблицаДокумента.Колонки.Добавить("Склад",ОписаниеТиповС,"Склад", 20);
//
////блицаДокумента.Колонки.Добавить("ОстатокльОригинал",20);
//ТаблицаДокумента.Колонки.Добавить("Остаток",ОписаниеТиповЧ,"Остаток",20);
//ТаблицаДокумента.Колонки.Добавить("ЦенаЗакуп",ОписаниеТиповЧ,"ЦенаЗакуп",20);
//ТаблицаДокумента.Колонки.Добавить("ЦенаПрод",ОписаниеТиповЧ,"ЦенаПрод",20);
//ТаблицаДокумента.Колонки.Добавить("МатериалОригинал",ОписаниеТиповС,"МатериалОригинал",20);
//ТаблицаДокумента.Колонки.Добавить("ЦветОригинал",ОписаниеТиповС,"ЦветОригинал",20);
//ТаблицаДокумента.Колонки.Добавить("РазмерОригинал",ОписаниеТиповС,"РазмерОригинал",20);
//ТаблицаДокумента.Колонки.Добавить("EAN",ОписаниеТиповС,"EAN",20);


Для Строка = 2 По (ExcelПоследняяСтрока) Цикл

Стр=ТаблицаДокумента.Добавить();
//Стр.Номер = Номер;
Попытка
Стр.Склад = СокрЛП(ExcelЛист.Cells(Строка, 1).Value) ;
Стр.Арктикул = СокрЛП(ExcelЛист.Cells(Строка, 2).Value) ;
Стр.Цвет = СокрЛП(ExcelЛист.Cells(Строка, 5).Value) ;
Стр.Размер1 = СокрЛП(ExcelЛист.Cells(Строка, 7).Value) ;
Стр.Размер2 = СокрЛП(ExcelЛист.Cells(Строка, 8).Value) ;
Стр.Размер3 = СокрЛП(ExcelЛист.Cells(Строка, 9).Value) ;
Стр.Размер4 = СокрЛП(ExcelЛист.Cells(Строка, 10).Value) ;
Стр.Размер5 = СокрЛП(ExcelЛист.Cells(Строка, 11).Value) ;
Стр.Размер6 = СокрЛП(ExcelЛист.Cells(Строка, 12).Value) ;
Стр.Цена = СокрЛП(ExcelЛист.Cells(Строка, 15).Value) ;

Исключение;
КонецПопытки;
КонецЦикла;
ExcelПриложение.Quit();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
                | Номенклатура.Ссылка
                |ИЗ
                | Справочник.Номенклатура КАК Номенклатура
                |ГДЕ
                | Номенклатура.Артикул ПОДОБНО &Артикул
                | И Номенклатура.РазмерОригинальный = &Размер";

Запрос1 = Новый Запрос;
Запрос1.Текст = "ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Организация = &Организация
| И ДоговорыКонтрагентов.Владелец = &Владелец";


Документ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();

Если Не ЗначениеЗаполнено(Склад) Тогда
Документ.СкладОрдер = Справочники.Склады.НайтиПоКоду("000000002");
Иначе
Документ.СкладОрдер = Склад;
КонецЕсли;

Если Не ЗначениеЗаполнено(Организация) Тогда
Справочники.Организации.НайтиПоКоду("000000002");
Иначе
Документ.Организация = Организация;
КонецЕсли;

Если Не ЗначениеЗаполнено(Контрагент) Тогда
Документ.Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000003");
Иначе
Документ.Контрагент = Контрагент;
КонецЕсли;
Документ.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;


Запрос1.УстановитьПараметр("Организация",Документ.Организация );
Запрос1.УстановитьПараметр("Владелец",Документ.Контрагент );
Результат = Запрос1.Выполнить();
Выборка = Результат.Выбрать();

Если Выборка.Следующий() Тогда
Документ.ДоговорКонтрагента = Выборка.Ссылка;
КонецЕсли;


//Документ.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Организация",Документ.Организация.Ссылка);
Документ.ПроцентНаценки = 130;
Документ.ОбратныйКурс = 2.2;
Документ.Дата = ТекущаяДата();
Документ.ОтражатьВУправленческомУчете = Истина;
Документ.ОтражатьВБухгалтерскомУчете = Истина;
Документ.ОтражатьВНалоговомУчете = Истина;
Документ.УчитыватьНДС = Истина;

Для Каждого Строка Из ТаблицаДокумента Цикл
Если Строка.Арктикул = "" Тогда
Продолжить;
КонецЕсли;
Если Строка.Склад <> "" Тогда
НомерСклада = Лев(Строка.Склад,Найти(Строка.Склад,".")-1);
Склад = Справочники.Склады.ПустаяСсылка();
Склад = Справочники.Склады.НайтиПоРеквизиту("НомерМагазина",НомерСклада);
Если Не ЗначениеЗаполнено(Склад) Тогда
Сообщить("Не найден Склад под номером: " + НомерСклада);
КонецЕсли;
КонецЕсли;
Для N = 1 По 6 Цикл
Если Строка["Размер"+N] = "0" Тогда
Продолжить;
КонецЕсли;
Запрос.УстановитьПараметр("Артикул",СтрЗаменить(Строка.Арктикул," ","")+"%");
Запрос.УстановитьПараметр("Размер",Строка(N));

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Номенклатура = Справочники.Номенклатура.ПустаяСсылка();
Если Выборка.Следующий() Тогда
Номенклатура = Выборка.Ссылка;
КонецЕсли;
Если ЗначениеЗаполнено(Номенклатура) Тогда
Стр = Документ.Товары.Добавить();
Стр.Номенклатура = Номенклатура;
//Стр.Арктикул = Стр.Номенклатура.Артикул;
Стр.Количество = Строка["Размер"+N];
Стр.ЕдиницаИзмерения = Стр.Номенклатура.ЕдиницаХраненияОстатков;
Стр.Коэффициент = Стр.ЕдиницаИзмерения.Коэффициент;
Стр.ЦенаИзИнвойса = Строка.Цена;
Стр.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
Стр.СкладИзИнвойса = Склад;
Иначе
Сообщить("Арктикул "+Строка.Арктикул+" не найден");
КонецЕсли;
КонецЦикла;
КонецЦикла;

Для Каждого Стр Из Документ.Товары Цикл
Стр.Цена = Окр(Стр.ЦенаИзИнвойса * Документ.ПроцентНаценки / Документ.ОбратныйКурс, -1);
СтрокаТабличнойЧасти = Стр;
// Рассчитать реквизиты табличной части.
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, Документ);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, Документ);
КонецЦикла;

Документ.ПолучитьФорму("ФормаДокумента").Открыть();



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

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Ты бы еще сюда выложил весь код обработки - ЗагрузкаИзТабличногоДокумента :D
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн GRADUS

  • *****
  • Сообщений: 699
  • РЕПУТАЦИЯ: 51
  • КПД: 7%
  • Регистрация: 2013-06-08
  • Сайт: 
  • Профессия: Программист 1С
Ты бы еще сюда выложил весь код обработки - ЗагрузкаИзТабличногоДокумента :D

Да кому оно надо :bleh:

Оффлайн Елена1000000

  • *
  • Сообщений: 31
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-07
  • Сайт: 
  • Профессия: Бухгалтер
Мне надо)

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Сама обработка
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Елена1000000

  • *
  • Сообщений: 31
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-07
  • Сайт: 
  • Профессия: Бухгалтер
Хорошо, начну по порядку с чем столкнулась.
1.Где писать обработку если конфигурация на поддержке?
2.Если взять готовую обработку, то как добавить ее в конфигурацию:
В меню поддержка нет пункта "настройка поддержки".
3.Можно добавить внешнюю обработку в самом Предприятии?
И опять возвращаемся к вопросу: где взять или где разработать или как снять с поддержки!!!
Р.С. Надеюсь на понимание, а не на страшную реакцию B)

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
3.Можно добавить внешнюю обработку в самом Предприятии?

Лучше это!

В предприятии:
Сервис - Дополнительные отчеты и обработки - обработки - Добавить!
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Елена1000000

  • *
  • Сообщений: 31
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-07
  • Сайт: 
  • Профессия: Бухгалтер
Спасибо, пробую ее в самом предприятии..

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
1.Где писать обработку если конфигурация на поддержке?

В конфигураторе (и пофиг что конфигурация на поддержке):
Файл - Новый - Внешняя обработка
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!


Теги:
 

Поиск по бае данных,(полнотекстовый поиск)

Автор kot_ooРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 3889
Последний ответ 19 Май 2014, 15:40
от kot_oo
Как исправить при обновлении ИБ: Ошибка в запросе набора данных по причине: {(58, 2)}: Несовместимые типы "ВЫБОР" <<?>>ВЫБОР

Автор dollРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2122
Последний ответ 01 Янв 2017, 20:27
от Геннадий ОбьГЭС
"Задваивание" данных в отчете

Автор mashencev_antonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 13
Просмотров: 7354
Последний ответ 15 Окт 2015, 11:21
от Mari_beginner
Куда сохраняются данные в режиме работы клиент при выгрузке данных обработкой "Универсальный обмен данными в формате XML"

Автор xDDРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 6962
Последний ответ 13 Ноя 2014, 08:23
от cska-fanat-kz
Как перенести конфу базы данных на новую конфу?

Автор dim3740Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 11
Просмотров: 11263
Последний ответ 23 Авг 2010, 15:41
от mohock

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
47 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 276
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal