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

ПЛАНЫ ОБМЕНА

Автор Гайдар, 08 авг 2016, 10:59

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

Гайдар


ЗДРАВСТВУЙТЕ!

Как сохранить значение реквизита "Комментарий" документа Реализация в основной базе при чтении нового сообщения ? процедуры ниже

Процедура ЗаписатьСообщениеСИзменениями() Экспорт
   
   Сообщить("-------- Выгрузка в узел " + Строка(ЭтотОбъект) + " ------------");
   Каталог = "\\COMP\DATA\";

   ИмяФайла = Каталог + "Message4" +
            СокрЛП(ПланыОбмена.УдаленныеОфисы4.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";
   
   // Создаем объект записи XML
   ЗаписьXML = Новый ЗаписьXML;
   ЗаписьXML.ОткрытьФайл(ИмяФайла);
   ЗаписьXML.ЗаписатьОбъявлениеXML();
   
   // Создаем новое сообщение
   ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
   ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
   Сообщить("    Номер сообщения: " + ЗаписьСообщения.НомерСообщения);
   
   // Получаем выборку изменённых данных
   ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения);
   Дата = НачалоДня(ТекущаяДата()- 86400*30);
    Получатель = сокрлп(записьсообщения.Получатель);
       Пока ВыборкаИзменений.Следующий() Цикл
      Попытка   
      Если ВыборкаИзменений.Получить().Проведен = ложь Тогда
         Продолжить;
      КонецЕсли;

      Если ВыборкаИзменений.Получить().Дата < Дата Тогда
         Продолжить;
      КонецЕсли;
   исключение
      конецпопытки;
      // Записываем данные в сообщение
      ЗаписатьXML(ЗаписьXML, ВыборкаИзменений.Получить());
      
   КонецЦикла;
   
   // Завершаем запись сообщения
   ЗаписьСообщения.ЗакончитьЗапись();
   ЗаписьXML.Закрыть();
   
   Сообщить("-------- Конец выгрузки------------");
КонецПроцедуры // ЗаписатьСообщениеСИзменениями()


Процедура ПрочитатьСообщениеСИзменениями() Экспорт
   
   Каталог = "\\COMP\DATA\";
   
   ИмяАрхива = "Message4" +
           СокрЛП(Ссылка.Код) + "_" + СокрЛП(ПланыОбмена.УдаленныеОфисы4.ЭтотУзел().Код)  + ".zip";
   Попытка
      Архив = Новый ЧтениеZIPФайла(Каталог + ИмяАрхива);
      Архив.ИзвлечьВсе(Каталог);
      Архив.Закрыть();
   Исключение
   КонецПопытки;
   
   ИмяФайла = Каталог + "Message4" +
            СокрЛП(Ссылка.Код) + "_" + СокрЛП(ПланыОбмена.УдаленныеОфисы4.ЭтотУзел().Код) + ".xml";
   
   //Файл = Новый Файл(ИмяФайла);
   //Если Не Файл.Существует() Тогда
   //   
   //   Возврат;
   //   
   //КонецЕсли;   
   
   // Производим попытку открытия файла
   ЧтениеXML = Новый ЧтениеXML;
   Попытка
      
      ЧтениеXML.ОткрытьФайл(ИмяФайла);
      
   

      
   Исключение
      
      Возврат;
      
   КонецПопытки;
   
   Сообщить("-------- Загрузка из " + Строка(ЭтотОбъект) + "------------");
   Сообщить(" - Считывается файл " + ИмяФайла);
   
   // Загрузка из найденного файла
   ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
   
      ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
   
   Если ЧтениеСообщения.Отправитель <> Ссылка Тогда
      
      // Сообщение предназначено не для этого узла
      ВызватьИсключение "Неверный узел";
      
   КонецЕсли;
   
   // Удаляем регистрацию изменений для узла отправителя сообщения
   ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
   
   // Читаем данные из сообщения
   Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
      
            
   
      // Читаем очередное значение
      Данные = ПрочитатьXML(ЧтениеXML);
      
      
      
      
      // Не переносим изменение полученное в главный из неглавного если есть регистрация изменения
      Если Не ЧтениеСообщения.Отправитель.Главный
         И ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
         
         Сообщить("- Изменения отклонены:");
         Продолжить;
         
      КонецЕсли;
      
            
      // Записываем перенесенные данные
      Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
      Данные.ОбменДанными.Загрузка = Истина;
      Данные.Записать();
      
   КонецЦикла;
   
   ЧтениеСообщения.ЗакончитьЧтение();
   ЧтениеXML.Закрыть();

   
   УдалитьФайлы(ИмяФайла);
   УдалитьФайлы(Каталог + ИмяАрхива);
   
   Файл = Новый ТекстовыйДокумент;

   Файл.Прочитать("F:\Обмен\Выгрузки.txt");
   Файл.ДобавитьСтроку(Строка(ТекущаяДата()) + " " + Сред(ИмяФайла, Число(СтрДлина(Каталог))+1));
   Файл.Записать("F:\Обмен\Выгрузки.txt");

   
   Сообщить("-------- Конец загрузки------------");
   


   
КонецПроцедуры // ПрочитатьСообщениеСИзменениями()





cska-fanat-kz

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

Гайдар

а как делать без комментария?
Добавлено: 08 авг 2016, 11:12


Цитата: cska-fanat-kz от 08 авг 2016, 11:08
ну так у вас объект целиком переносится, и реквизит "Комментарий" - в том числе.
а как делать без комментария?

cska-fanat-kz

а хотя бы и...

Данные.ОбменДанными.Загрузка = Истина;
Данные.Комментарий = "";
Данные.Записать();
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Гайдар

Цитата: cska-fanat-kz от 08 авг 2016, 11:14
а хотя бы и...

Данные.ОбменДанными.Загрузка = Истина;
Данные.Комментарий = "";
Данные.Записать();
Так комментарий очистится?  а комментарий в основной базе не пустой , нужно сохранить его как в основной (в основной комментарий меняется вручную

cska-fanat-kz

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

vitasw

наверное нет. комментарий в центральной базе не должен перезаписываться. В КД это решается удалением ПКС "Комментарий"

Гайдар

Цитата: vitasw от 08 авг 2016, 11:45
наверное нет. комментарий в центральной базе не должен перезаписываться. В КД это решается удалением ПКС "Комментарий"
ошибку выдал {ПланОбмена.УдаленныеОфисы4.МодульОбъекта(152)}: Поле объекта не обнаружено (Комментарий)
      Данные.Комментарий = "";

cska-fanat-kz

Цитата: Гайдар от 08 авг 2016, 11:55
Цитата: vitasw от 08 авг 2016, 11:45
наверное нет. комментарий в центральной базе не должен перезаписываться. В КД это решается удалением ПКС "Комментарий"
ошибку выдал {ПланОбмена.УдаленныеОфисы4.МодульОбъекта(152)}: Поле объекта не обнаружено (Комментарий)
      Данные.Комментарий = "";


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

cska-fanat-kz

Цитата: vitasw от 08 авг 2016, 11:45
наверное нет. комментарий в центральной базе не должен перезаписываться. В КД это решается удалением ПКС "Комментарий"

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

Теги:

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

Рейтинг@Mail.ru

Поиск