8.х ОБМЕН Проблема обмена в распределенной базе

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем netuser, 17 мар 2010.

  1. TopicStarter Overlay
    netuser
    Offline

    netuser

    Регистрация:
    3 июл 2009
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Доброе время суток.
    У нас стоит распределенная УПП 8.1(32 битная), были проблемы при расчете себестоимости, вылетала ошибка " не хватает памяти", решили проблему написанием внешней обработки,но возникла необходимость в доработки плана обмена, нужно выгружать/загружать измененные записи (регистрацию)региста "Затраты на выпуск продукции", в случае, если объем записей больше 200 000, в общем модуле"Процедуры обмена данными" дописала код:, что не так сделала?
    Код:
    Если ЭтоРИБ Тогда
    
    // Создаем новое сообщение
    
    
    ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
    
    //Ирина +++ 
    //выгрузка данных в хml		
    Каталог = Новый Файл("D:\Exchange");
    Если Каталог.Существует() и Каталог.ЭтоКаталог() Тогда
    ПолноеИмяФайла = "D:\Exchange\DATA.XML";
    Иначе
    Сообщить("Каталог не существует!!!");
    КонецЕсли;
    
    ЗапросПоРегистру = Новый Запрос("ВЫБРАТЬ //ПЕРВЫЕ 20
    |	ЗатратыНаВыпускПродукции.Период,
    |	ЗатратыНаВыпускПродукции.Регистратор,
    |	ЗатратыНаВыпускПродукции.НомерСтроки,
    |	ЗатратыНаВыпускПродукции.Активность,
    |	ЗатратыНаВыпускПродукции.Подразделение,
    |	ЗатратыНаВыпускПродукции.НоменклатурнаяГруппа,
    |	ЗатратыНаВыпускПродукции.Продукция,
    |	ЗатратыНаВыпускПродукции.ХарактеристикаПродукции,
    |	ЗатратыНаВыпускПродукции.СерияПродукции,
    |	ЗатратыНаВыпускПродукции.Спецификация,
    |	ЗатратыНаВыпускПродукции.Заказ,
    |	ЗатратыНаВыпускПродукции.ДокументВыпуска,
    |	ЗатратыНаВыпускПродукции.СтатьяЗатрат,
    |	ЗатратыНаВыпускПродукции.Затрата,
    |	ЗатратыНаВыпускПродукции.ХарактеристикаЗатраты,
    |	ЗатратыНаВыпускПродукции.СерияЗатраты,
    |	ЗатратыНаВыпускПродукции.НоменклатурнаяГруппаНЗП,
    |	ЗатратыНаВыпускПродукции.ЗаказНЗП,
    |	ЗатратыНаВыпускПродукции.ПодразделениеНЗП,
    |	ЗатратыНаВыпускПродукции.Количество,
    |	ЗатратыНаВыпускПродукции.Сумма,
    |	ЗатратыНаВыпускПродукции.КодОперации,
    |	ЗатратыНаВыпускПродукции.ЗатратыВстречногоВыпуска,
    |	ЗатратыНаВыпускПродукции.КосвенныеЗатраты
    |ИЗ
    |	РегистрНакопления.ЗатратыНаВыпускПродукции КАК ЗатратыНаВыпускПродукции
    |ГДЕ
    |	ЗатратыНаВыпускПродукции.Регистратор = &Регистратор");
    ЗапросПоРегистру.УстановитьПараметр("Регистратор",Документы.РасчетСебестоимостиВыпуска);
    Результат = ЗапросПоРегистру.Выполнить();
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ПолноеИмяФайла);
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("_1CV8DtUD", "http://www.1c.ru/V8/1CV8DtUD/");
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("V8Exch", "http://www.1c.ru/V8/1CV8DtUD/");
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8",  "http://v8.1c.ru/data");
    
    
    Выборка = Результат.Выбрать();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("V8Exch:Data");
    ЗаписьXML.ЗаписатьНачалоЭлемента("AccumulationRegisterRecordSet.ЗатратыНаВыпускПродукции");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Filter");
    ЗаписатьXML(ЗаписьXML,Документы.РасчетСебестоимостиВыпуска,"Recorder","",НазначениеТипаXML.Явное);
    ЗаписьXML.ЗаписатьКонецЭлемента(); // Filter
    ЗаписьXML.ЗаписатьНачалоЭлемента("Records");
    Пока Выборка.Следующий() Цикл
    ВыгрузитьЗапись(ЗаписьXML,Выборка,"ЗатратыНаВыпускПродукции"); 
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента(); // Records
    ЗаписьXML.ЗаписатьКонецЭлемента(); // AccumulationSet
    ЗаписьXML.ЗаписатьКонецЭлемента(); // V8Exch:Data
    ЗаписьXML.ЗаписатьКонецЭлемента(); // _1CV8DtUD
    
    ЗаписьXML.Закрыть();	
    //---Ирина
    
    
    
    и еще вот в этом месте вылетает:
    Код:
    Процедура ВыполнитьОбычныйОбменДанными(СтруктураНастроекОбменаДанными)
    
    Если СтруктураНастроекОбменаДанными.ДанныеНастройки.ТипНастройки = Перечисления.ТипыАвтоматическогоОбменаДанными.ОбменЧерезФайловыйРесурс Тогда
    
    СтруктураНастроекОбменаДанными.Вставить("КаталогПроведенияОбменаДанными", "");
    СтруктураНастроекОбменаДанными.Вставить("ИмяВходящегоФайлаОбмена", "");
    ПодготовитьОбменЧерезФайловыйРесурс(СтруктураНастроекОбменаДанными);
    
    //Ирина ++	
    //проверяем на наличие больших записей и в случае их нахождения сбрасываем регистрацию 	
    
    Запрос = Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    |	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗатратыНаВыпускПродукции.НомерСтроки) КАК НомерСтроки,
    |	ЗатратыНаВыпускПродукцииИзменения.Регистратор,
    |	ЗатратыНаВыпускПродукцииИзменения.Узел,
    |	ПОДСТРОКА(ЗатратыНаВыпускПродукцииИзменения.Регистратор.Комментарий,1,50)
    |ИЗ
    |	РегистрНакопления.ЗатратыНаВыпускПродукции.Изменения КАК ЗатратыНаВыпускПродукцииИзменения
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗатратыНаВыпускПродукции КАК ЗатратыНаВыпускПродукции
    |		ПО ЗатратыНаВыпускПродукцииИзменения.Регистратор = ЗатратыНаВыпускПродукции.Регистратор
    |			И (ЗатратыНаВыпускПродукцииИзменения.Регистратор ССЫЛКА Документ.РасчетСебестоимостиВыпуска)
    |
    |СГРУППИРОВАТЬ ПО
    |	ЗатратыНаВыпускПродукцииИзменения.Регистратор,
    |	ЗатратыНаВыпускПродукцииИзменения.Узел,
    |	ПОДСТРОКА(ЗатратыНаВыпускПродукцииИзменения.Регистратор.Комментарий,1,50)";
    
    результат=Запрос.Выполнить().Выбрать();
    
    Если результат.НомерСтроки < 200000 Тогда
    МассивУзлов = Новый Массив();
    МассивУзлов.Добавить(результат.Узел);
    Набор = РегистрыНакопления.ЗатратыНаВыпускПродукции.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(Результат.Регистратор);
    ПланыОбмена.УдалитьРегистрациюИзменений(МассивУзлов,Набор);
    ИначеЕсли  результат.НомерСтроки > 200000 Тогда
    сообщить( "Необходимо загрузить дополнительную информацию");
    КонецЕсли;
    
    //-- Ирина
    
    
    Заранее благодарю!!!
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Можно пойти другим путем - выгружайте за несколько раз.
    Только за этим надо следить - ибо могут данные несогласованные пойти.
  3. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    регистр включен в состав плана обмена?

Поделиться этой страницей