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

Как реализовать период в плане обмена

Автор Черника, 23 мар 2022, 12:53

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

Черника

Всем здравствуйте, прошу помощи!
Как реализовать выбор периода в плане обмена.
Заранее спасибо!

Процедура ЗаписатьСообщениеСИзменениями() Экспорт 

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "--------- Выгрузка в узел" + Строка(ЭтотОбъект) + "--------";
Сообщение.Сообщить();
Каталог = КаталогВременныхФайлов();
ИмяФайла = Каталог + ?(Прав(Каталог, 1)= "\","","\") + "Message" + СокрЛП(ПланыОбмена.ДокументыРКО.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();


ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Номер сообщения: " + ЗаписьСообщения.НомерСообщения;
Сообщение.Сообщить();

ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель,ЗаписьСообщения.НомерСообщения);
Пока ВыборкаИзменений.Следующий() Цикл
ЗаписатьXML(ЗаписьXML,ВыборкаИзменений.Получить());
КонецЦикла;


ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();



Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "--------- Конец выгрузки ---------";
Сообщение.Сообщить();

//Имена сообщений: MessageКодУзлаОтправителя_КодУзлаПолучателя.xml

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

Процедура ПрочитатьСообщениеСИзменениями() Экспорт 

Каталог = КаталогВременныхФайлов();

ИмяФайла = Каталог + ?(Прав(Каталог, 1)= "\","","\") + "Message" + СокрЛП(ПланыОбмена.ДокументыРКО.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";   

Файл = Новый Файл(ИмяФайла);
Если Не Файл.Существует() Тогда
Возврат;
КонецЕсли;

ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.ОткрытьФайл(ИмяФайла);

Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Невозможно открыть файл обмена данными.";
Сообщение.Сообщить();

Возврат;

КонецПопытки;

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "------- Загрузка из " + Строка(ЭтотОбъект) + "-------";
Сообщение.Сообщить();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = " - Считывается файл " + ИмяФайла;
Сообщение.Сообщить();

ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

Если ЧтениеСообщения.Отправитель <> Ссылка Тогда
ВызватьИсключение "Неверный узел";
КонецЕсли;

ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);

Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл

Данные = ПрочитатьXML(ЧтениеXML);

Если Не ЧтениеСообщения.Отправитель.Главный И
ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "- Изменения отклонены";
Сообщение.Сообщить();

Продолжить;
КонецЕсли;

Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Запись();

КонецЦикла;

ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
УдалитьФайлы(ИмяФайла);

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "--------- Конец загрузки ---------";
Сообщение.Сообщить();

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

temrmal

Вы имеете ввиду период изменений?
нет таких данных в плане обмена. Там есть только измененные объекты как перечень

Оптимус

Цитата: temrmal от 25 мар 2022, 16:26нет таких данных в плане обмена
А есть ли в таком случае подходящая внешняя обработка для обмена?

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск