Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.07.19;
Скачать: [xml.tar.bz2];

Вниз

Помогите улучшить код на 1c. Быстродействие   Найти похожие ветки 

 
12 ©   (2009-05-18 09:13) [0]

Надо мне из excel загрузить в справочники инфу
1с путем не знаю, но написал следующее (че хаха, пол дня писал.. )
Вот этот код на этом файле работает 4 часа
т.е. 4 часа магазин работать не будет. В военное время - за это расстреляли бы :)

//*******************************************
Процедура ДобавитьНоменклатуру(ВхГруппа, ВхНаименование, ВхАртикул)
 перем Код;
СпНомен = СоздатьОбъект("Справочник.Номенклатура");
СпНомен.ИспользоватьРодителя(ВхГруппа);
СпНомен.Новый();
СпНомен.Наименование = ВхНаименование;
СпНомен.Артикул = ВхАртикул;
СпНомен.ПолнНаименование = ВхНаименование;
Код = СпНомен.Код;
СпНомен.Записать();
СпНомен.НайтиПоКоду(Код,0);
 СпЕдин = СоздатьОбъект("Справочник.Единицы");
 СпЕдин.ИспользоватьВладельца(СпНомен);
 СпЕдин.Новый();
  СпОКЕИ = СоздатьОбъект("Справочник.ОКЕИ");
  СпОКЕИ.найтипонаименованию("шт.");
  СпОКЕИ = СпОКЕИ.ТекущийЭлемент();
 СпЕдин.ОКЕИ= СпОКЕИ;
 СпЕдин.ШтрихКод = ВхАртикул;
 СпЕдин.Записать();
СпНомен.БазоваяЕдиница = спЕдин.ТекущийЭлемент();
СпНомен.Записать();
КонецПроцедуры

//================================================================================ =============

Процедура Сформировать()
 
СпНоменГр = СоздатьОбъект("Справочник.Номенклатура");
СпНоменГр.НоваяГруппа();
СпНоменГр.Наименование = "Май2009";
СпНоменГр.Записать();

 Excel = СоздатьОбъект("Excel.Application");
 Excel.Workbooks.Open(Сокрлп("D:\1c\1.xls"));
 Книга = Excel.ActiveWorkbook;
 Строк = Excel.Cells.CurrentRegion.Rows.Count;
 //Строк = 300;
 СчЦикл = 0;
 ГруппаНов = "";
 ГруппаСтар = "";
 Сообщить(ТекущееВремя());
 Для СчЦикл = 2 По Строк-1 Цикл
  ГруппаНов = Excel.Cells(СчЦикл, 2).Value;
  Если ГруппаНов<>ГруппаСтар Тогда
      ГруппаСтар = ГруппаНов;
 РабНоменГр = СоздатьОбъект("Справочник.Номенклатура");
 РабНоменГр.ИспользоватьРодителя(СпНоменГр);
 РабНоменГр.НоваяГруппа();
 РабНоменГр.Наименование = ГруппаНов;
 РабНоменГр.Записать();
  КонецЕсли;
ДобавитьНоменклатуру(РабНоменГр, Excel.Cells(СчЦикл, 8).Value, Excel.Cells(СчЦикл, 1).Value);
//Состояние(СчЦикл);
 КонецЦикла;
 Сообщить(ТекущееВремя());
 Excel.Visible = 1;
КонецПроцедуры


 
tesseract ©   (2009-05-18 10:45) [1]

Excel конечно протормаживает. Загружай из csv или подключайся по ODBC к книге.


 
12 ©   (2009-05-18 11:00) [2]

знать бы как это делается..
Может, в текстовый файл тогда записать и оттуда считывать?


 
tesseract ©   (2009-05-18 11:29) [3]


> в текстовый файл тогда записать и оттуда считывать?


Csv и есть текстовый файл :-) Разделённый точкой с запятыми. А по ODBC ты просто плоскую выборку получишь. 1c OLE держит на ура-ура! Восьмёрка и Com научилась нормально держать.


 
test ©   (2009-05-18 17:31) [4]

tesseract ©   (18.05.09 11:29) [3]
Если она держит OLE то чтобы не создать экземпляр Excel и напрямую через Васик и т.д. не грузить?


 
test ©   (2009-05-18 17:33) [5]

tesseract ©   (18.05.09 11:29) [3]
ЗЫ Com то зачем удаленный Excel юзать?


 
tesseract ©   (2009-05-18 17:46) [6]


> ЗЫ Com то зачем удаленный Excel юзать?


Во первых он не удалённый. Com шибко быстрее OLE, но 7.7 его не держит напрямую.


 
12 ©   (2009-05-19 14:10) [7]

Ничего не стал менять - некогда было и не охота, тем более время все-таки не военное :)
На работе сделалось все за час.

Сильно разочаровался в своем домашнем компе.. Вроде и брал недавно, и винт достаточно быстрый, и памяти 2 гига, и проц 2х ядерный по 2.5..
Из-за чего такая разница..


 
tesseract ©   (2009-05-19 14:43) [8]


> Сильно разочаровался в своем домашнем компе..


Следовало разочароваться в своих руках. Пошто машину загадил кривым кодом ? :-)


 
test ©   (2009-05-19 14:47) [9]

12 ©   (19.05.09 14:10) [7]
Тебе бы своим кодом супер компьютеры тестить, куда там Каспарову. Вот же талант пропадает!


 
12 ©   (2009-05-20 09:16) [10]

Есть такое понятие - надо сделать вчера. :)
Ну, это к делу не относится,
я спрашивал, почему такая разница во времени..
Мне же сказали про руки, Каспарова ..
Родственники Копира?


 
test ©   (2009-05-20 09:36) [11]

12 ©   (20.05.09 09:16) [10]
Разница по времени потому что машины по разному настроены, алгоритм не оптимален. Выбирай что тебе больше нравиться. А машину ты свою домашнюю конечно круто положил! Это ж надо машина уровня сервака 2000 года легла от формирования Excel файла.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.07.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
15-1242503724
TRSteep
2009-05-16 23:55
2009.07.19
ОКВЭД регистрация ИП


2-1243323681
b/@.
2009-05-26 11:41
2009.07.19
Можно ли импортировать ActiveX по другому ?


4-1212148677
ShaGunRe
2008-05-30 15:57
2009.07.19
Как получить информацию о подключения флеш-устройства к компу


2-1243343409
Alex_C
2009-05-26 17:10
2009.07.19
Перетаскивание формы за угол


2-1242918381
Alex_C
2009-05-21 19:06
2009.07.19
Парсинг HTML





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский