Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как присвоить указанный уникальный идентификатор объекту?          
Gigi Подменю пользователя
сообщение 14.06.19, 17:15
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Всем привет!
Никто не подскажет как это сделать?
Дело в чем ...
Хотя ладно .... скину часть задачи
Вот эту часть

Функция Сериализация(СоединениеCOM,СериализуемыйОбъектИлиСсылка) Экспорт
//============================
    //Многие говорят "Попытка/Исключение " это "Манера плохого тона". Но при этом не понимают, что хороший тон еще нужно заслуживать.
    //А те которые на пример написали функцию:  "ТипЗнч(Значение)" другого тона точно не зауживают.
    //Поэтому вынужден был в таком тоне....  И хороший программист итак поймет почему решил только в таком тоне.
    Попытка знОбъектИлиСсылка=СериализуемыйОбъектИлиСсылка.ПолучитьОбъект(); Исключение знОбъектИлиСсылка=СериализуемыйОбъектИлиСсылка    КонецПопытки;
//============================
    Если СоединениеCOM=Неопределено Тогда
        Дерево=СериализаторXDTO.ЗаписатьXDTO(знОбъектИлиСсылка);
        ЗаписьXML=Новый ЗаписьXML;
        ЗаписьXML.УстановитьСтроку();
        ФабрикаXDTO.ЗаписатьXML(ЗаписьXML,Дерево);  //Сообщить(Ф.Параметры);
    Иначе
        Дерево=СоединениеCOM.СериализаторXDTO.ЗаписатьXDTO(знОбъектИлиСсылка);
        ЗаписьXML = СоединениеCOM.NewObject("ЗаписьXML");
        ЗаписьXML.УстановитьСтроку();
        СоединениеCOM.ФабрикаXDTO.ЗаписатьXML(ЗаписьXML,Дерево);
    КонецЕсли;
//============================
    Возврат ЗаписьXML.Закрыть();
КонецФункции

Функция Десериализация(СоединениеCOM,ТекстXML,ВозвратСсылкаОбъект) Экспорт
//============================    
Если СоединениеCOM=Неопределено Тогда
    ПарсерXML=Новый ЧтениеXML;
    ПарсерXML.УстановитьСтроку(ТекстXML); //Сообщить(ТекстXML+Символы.ПС+Строка(ПарсерXML)+" - "+ТипЗнч(ПарсерXML));
Иначе
    ПарсерXML = СоединениеCOM.NewObject("ЧтениеXML");
    ПарсерXML.УстановитьСтроку(ТекстXML); //Сообщить(ПарсерXML);    
КонецЕсли;
//============================
    Пока ПарсерXML.Прочитать() Цикл
    Если ПарсерXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    МетаОбъект=ПарсерXML.Имя;  //Сообщить(МетаОбъект);
    Прервать;
    КонецЕсли;
    КонецЦикла;
//============================
    Если СоединениеCOM=Неопределено Тогда
        Объект=СериализаторXDTO.ПрочитатьXML(ПарсерXML);
    Иначе
        Объект=СоединениеCOM.СериализаторXDTO.ПрочитатьXML(ПарсерXML);
    КонецЕсли;
//============================
ПарсерXML.Закрыть();
//============================
//Сообщить(МетаОбъект);
    Если Найти(МетаОбъект,"Catalog")>0 или Найти(МетаОбъект,"Document")>0 Тогда
        Если  ВозвратСсылкаОбъект="Ссылка" Тогда  Значение=Объект.Ссылка; Иначе Возврат Значение=Объект; КонецЕсли;
    Иначе
        Значение=Объект;
    КонецЕсли;
//============================
    //Сообщить(Строка(Значение)+" - "+ТипЗнч(Значение));
Возврат Значение;
КонецФункции


Дело в том, что при перезаписи имеющихся объектов в базе приема по данным объектов базы источника, нужна предварительная десериализация.
Которая осуществляется не по коду или номеру, а по уникальному идентификатору.
Поэтому если на пример у принятого из базы источника документа записанного в XML, на пример номер: "00000002". И если документ с таким же номером имеется в базе приема то команда:
Объект=СериализаторXDTO.ПрочитатьXML(ПарсерXML);

Не вернет его как Объект с номером "00000002". А вместо этого вернет пустое значение объекта.
Поэтому нужно как то при создании нового объекта принудительно записать тот идентификатор который указан в данных XML
Вот собственно и весть вопрос.
Короче ... КАК ОБЪЕКТУ ПРИСВОИТЬ УКАЗАННЫЙ ИДЕНТИФИКАТОР И ТАК ЕГО И ЗАПИСАТЬ.
Никто не подскажет как можно это сделать по быстрому.
Буду признателен!


Gigi @ Сегодня, 16:46 * ,
Молчание не всегда золото ... че нет отклика?


Gigi @ Сегодня, 17:10 * ,
Видимо уже не рабочее время...
Ладно... я тоже закруглюсь ...
Но буду признателен за отклик ..

Gigi Подменю пользователя
сообщение 16.06.19, 13:12
Сообщение #2

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Gigi @ 14.06.19, 18:15 * ,
С темой уже разобрался.
Это тестовая запись в модуле объекта
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ЭтотОбъект.Номер="" тогда         
    СтрокаGUID = "4f589c45-8e93-11e9-8e27-94de80d781f5";
    НовыйGUID= Новый УникальныйИдентификатор(СтрокаGUID);
    НоваяСсылка = Документы["ДокИмя"].ПолучитьСсылку(НовыйGUID);
    ЭтотОбъект.УстановитьСсылкуНового(НоваяСсылка);
    //ЭтотОбъект.ОбменДанными.Загрузка = Истина;
КонецЕсли;
КонецПроцедуры

Но по поводу импорта-экспорта данных есть пару вопросов..
Но это во первых другая тема...
Во вторых стоящие вопросы требуют капитального ознакомления с кодом, над которым работал аж целую неделю.
Так что, может выйду на форум и задам их. Правда что бы было понятно, придется скинуть не мало кодовых строк.
Ладно ... позже может выйду на форум создав другую тему.
И буду признателен за отклик!
Пока!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 18.04.24, 10:14
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!