Медленная переброска номенклатуры.

Новая тема
"Уважаемый ALL!<br><br>Вознокла проблема, перебраски номенклатуры из БЭСТ-ПРО в 1С Педприятие (Торговля +Склад версия 9.2). Написал обработку по созданию новой карточки в справочнике номенклатура. Процесс переброски 34000 записе занял 1ч. 45 мин. Такая скорость подходит. А когда добал ко всему этому еще и 4 цены то процесс затянулся более чем на 10 часов. :o( А это никуда не годится.<br><br>Как можно сделать добавление цен более быстрым.<br><br><br><br>Далее представлен кос самой процедуры:<br><br><br><br>Процедура ДобавитьНом(арт,наим,полн,сгтд,сстр, отдел,еи,ц0,ц1,ц2,ц3); <br><br>//ДобавитьНом(наим, пнаим, арт, страна, сертификат, нгтд, гигсер, сербэст, оргсер, аос, регном, срокдейтв);<br><br><br><br>if (ном.НайтиПоКоду(арт,)=0) and (номрод.Найтипокоду(отдел,)=1) then<br><br>   ном.Новый();<br><br>//******************************************************************************<br><br>   ном.Родитель= номрод.ТекущийЭлемент();<br><br>   ном.Код=арт;<br><br>   ном.артикул=арт;<br><br>   ном.наименование= наим;<br><br>   Ном.ПолнНаименование = полн;<br><br>// Обработка ГТД            <br><br>if сгтд <>'' then <br><br>  if гтд.НайтиПоНаименованию(сгтд,,)=1 тогда<br><br>     Ном.НомерГТД=гтд.ТекущийЭлемент()<br><br>   else                              <br><br>   гтд.Новый();<br><br> гтд.Наименование=сгтд;<br><br> гтд.Комментарий=сгтд;<br><br> гтд.Записать();<br><br> гтд.НайтиПоНаименованию(сгтд,,);<br><br>    Ном.НомерГТД=гтд.ТекущийЭлемент();<br><br>endif;<br><br>endif;<br><br>// завершение обработки ГТД<br><br><br><br>// Страна происхождения<br><br>if сстр <>"""" then<br><br>if Оксм.НайтиПоНаименованию(сстр,,)=1 тогда<br><br>     Ном.СтранаПроисхождения=Оксм.ТекущийЭлемент()<br><br>   else                              <br><br>   оксм.Новый();<br><br>// оксм.Код=кодстр;<br><br>   оксм.Наименование=сстр;<br><br> оксм.Записать();<br><br> оксм.НайтиПоНаименованию(сстр,,);<br><br>    Ном.СтранаПроисхождения=Оксм.ТекущийЭлемент();<br><br>endif;<br><br><br><br>endif;<br><br>// завершение обработки СтранаПроисхождения<br><br><br><br>ном.Записать();<br><br><br><br><br><br>//Базовая ЕИ<br><br>if (еи<>"""") and (Океи.НайтиПоНаименованию(еи,,)=1) then <br><br>//  Сообщить(еи+"|"+Океи.код ,"i");<br><br>  ЕдНом.Новый();<br><br>  ЕдНом.Владелец=Ном.ТекущийЭлемент();<br><br>  Едном.Океи=Океи.ТекущийЭлемент();<br><br>  ЕдНом.Коэффициент=1;<br><br>  Едном.Записать();<br><br>endif; <br><br> ном.БазоваяЕдиница=Едном.ТекущийЭлемент();<br><br> Ном.записать();<br><br> <br><br>//цена0<br><br>  цена.Новый();<br><br>  цена.Владелец=Ном.ТекущийЭлемент();<br><br>  цена.валюта = рубль;<br><br>  цена.процент = 0;<br><br>  цена.ТипЦен = тц0;<br><br>  цена.Записать();<br><br>  цена.Единица.Установить(ТекущаяДата(),ном.БазоваяЕдиница);<br><br>  Цена.цена.Установить(ТекущаяДата(),ц0);                  <br><br>  цена.Записать();<br><br>//цена1<br><br>  цена.Новый();<br><br>  цена.Владелец=Ном.ТекущийЭлемент();<br><br>  цена.валюта = рубль;<br><br>  цена.процент = 0;<br><br>  цена.ТипЦен = тц1;<br><br>  цена.Записать();<br><br>  цена.Единица.Установить(ТекущаяДата(),ном.БазоваяЕдиница);<br><br>  Цена.цена.Установить(ТекущаяДата(),ц1);                  <br><br>  цена.Записать();<br><br>//цена2<br><br>  цена.Новый();<br><br>  цена.Владелец=Ном.ТекущийЭлемент();<br><br>  цена.валюта = рубль;<br><br>  цена.процент = 0;<br><br>  цена.ТипЦен = тц2;<br><br>  цена.Записать();<br><br>  цена.Единица.Установить(ТекущаяДата(),ном.БазоваяЕдиница);<br><br>  Цена.цена.Установить(ТекущаяДата(),ц2);                  <br><br>  цена.Записать();<br><br>//цена3<br><br>  цена.Новый();<br><br>  цена.Владелец=Ном.ТекущийЭлемент();<br><br>  цена.валюта = рубль;<br><br>  цена.процент = 0;<br><br>  цена.ТипЦен = тц3;<br><br>  цена.Записать();<br><br>  цена.Единица.Установить(ТекущаяДата(),ном.БазоваяЕдиница);<br><br>  Цена.цена.Установить(ТекущаяДата(),ц3);                  <br><br>  цена.Записать();<br><br><br><br>endif;<br><br><br><br>КонецПроцедуры<br><br><br><br>Буду очень благодарен за любые мысли и предложения по этомк поводу."
Поставить процесс работы со справочникам в транзакцию:<br><br>НачатьТранзакцию()<br><br>..........<br><br>ЗафиксироватьТранзакцию()
"Как правильно использоватьтранзакции:<br><br> -Вставить НачатьТранзакцию() В начало процедуры , а ЗафиксироватьТранзакцию() в конце;<br><br>или <br><br>Обработку каждого справочника заключить в<br><br>НачатьТранзакцию() <br><br>.......... <br><br>ЗафиксироватьТранзакцию() <br><br>Как правильно?<br><br>"
Всё, разобрался. Спасибо за идею. Скорость замечательная, жду завершения обработки.
Рад, что у вас усе получилось
Читают тему
(гостей: 1)

Быстрый переход