Home 1C 1с внешние приложения 1С Контрольные вопросы по обмену
1С Контрольные вопросы по обмену PDF Печать E-mail
Автор: А.Волос   

 

 

В 1С для обмена данными весь функционал "вшит" в ядро системы. Имеются все необходимые для этого объекты и методы. Проверьте свои знания ответив на простые контрольные вопросы чтения-записи обмена данных.

 

 

Контрольные вопросы по обмену: Запись в файл.

 

  1. Что нужно передать в параметры функции ExchangePlans.SelectChanges()?
    Что возвращает эта функция? При помощи какого объекта будет получен второй параметр,
    чтобы его можно было передать в эту функцию?
  2.  

  3. Откуда берет данные функция ExchangePlans.SelectChanges()?:
  4.  

  5. Что нужно передать в параметр функции WriteXML() ?
  6.  

  7. Что нужно передать в параметры функции BeginWrite()?
  8.  

  9. Какому типу объекта принадлежат функции BeginWrite() и EndWrite()?
  10.  

  11. Что нужно передать в параметры функции ExchangePlans.DeleteChangeRecords()?
  12.  

  13. Методом какого объекта является функция, при помощи которой создается объект типа ExchangeMessageWriter ?
    Как имя этой функции?
  14.  

  15. Для чего предназначен объект типа  ExchangeMessageWriter ?
  16.  

  17. Объекты каких типов участвуют в этом алгоритме записи данных в файл ?

 


XMLWriter = new XMLWriter()
XMLWriter.OpenFile(FileName);


Node = ExchangePlans.NameOfExchangePlan.FindByCode(CodeOfNode);


MW = ExchangePlans.CreateMessageWriter();
MW.BeginWrite(XMLWriter, Node);


Data = ExchangePlans.SelectChanges(Node, MW.MessageNo);

While Data.Next() Cycle
    Ob = Data.Get();
    WriteXML(XMLWriter, Ob);
EndWhile;


MW.EndWrite();
ExchangePlans.DeleteChangeRecords(Node, MW.MessageNo):


 

Ответы:

 

  1. Что нужно передать в параметр функции ExchangePlans.SelectChanges()?  Что возвращает эта функция?
  2.  

     Ответ: Нужно передать Узел обмена, и Номер сообщения:

             Data = ExchangePlans.SelectChanges(Node, MW.MessageNo);

     

    Причем НомерСообщения будет найден при помощи объекта MW типа ExchangeMessageWriter, как его свойство: MW.MessageNo

    Для этого узла будут выбираться сообщения из таблиц регистрации изменений, но только с номером сообщения равным или большим, чем переданный. Все эти сообщения будут возвращены и сохранены в объекте Выборка (Data) типа Коллекция, в каждом элементе коллекции будет один объект обмена (документ, справочник и тд).


  3. Откуда берет данные функция ExchangePlans. SelectChanges() ?
  4.  

    Data = ExchangePlans.SelectChanges(Node, MW.MessageNo);

     While Data.Next() Cycle
        Ob = Data.Get();
        WriteXML(XMLWriter, Ob);
    EndWhile;

     

    Ответ: Функция SelectChanges() берет данные из Таблиц регистрации изменений.

    В эту таблицу либо автоматически либо вручную записываются все изменения, произошедшие с экземпляром объекта метаданных, то есть с любым документом, справочником и тд.

    В процессе выборки изменений в записи Таблиц регистрации изменений (которые раньше не выгружались и у которых,
    соответственно, в поле таблицы НомерСообщения находится значение Null) проставляется номер сообщения обмена данными,
    в котором должны передаваться изменения.

     

  5. Что нужно передать в параметр функции WriteXML() чтобы сделать одну запись в файл? (файл состоит из многих записей).
  6.  

    Ответ:  Функция WriteXML()  вызывается в цикле много раз.
    Функции WriteXML() надо передать объект XMLWriter и один Объект обмена из выборки для записи

     

  7.  Что нужно передать в параметры функции BeginWrite()?
  8.  

    MW.BeginWrite(XMLWriter, Node);

     

  9.  Какому типу объекта принадлежат функции BeginWrite() и EndWrite()?
  10.  

    К  объекту типа ExchangeMessageWriter.

     

  11. Что нужно передать в параметр функции ExchangePlans.DeleteChangeRecords()?
  12.  

    Ответ: Нужно передать Узел обмена, и Номер сообщения:

            ExchangePlans.DeleteChangeRecords(Node, MW.MessageNo):

     

    Причем НомерСообщения будет найден при помощи объекта MW типа ExchangeMessageWriter, как его свойство: MW.MessageNo


  13.  Методом какого объекта является функция, при помощи которой создается объект типа ExchangeMessageWriter ?
  14. Как имя этой функции?

     

    Ответ: Имя функции CreateMassageWriter(), объекта ExchangePlans типа ExchangePlansManager:

            MW = ExchangePlans.CreateMessageWriter();

     

  15. Для чего предназначен объект типа  ExchangeMessageWriter ?
  16.  

     Предназначен для организации записи сообщения обмена данными.

     

  17. Объекты каких типов участвуют в этом алгоритме записи данных в файл ?  
  18.  

    - XMLWriter
    - ExchangeMessageWriter:
    - ExchangePlanManager  
    - ExchangePlansManager  
    - Объект обмена (Ob) тип ОбъектМетаданных.


Контрольные вопросы по обмену: Чтение из файла.

 

  1. Методом какого объекта является функция, при помощи которой создается объект типа ExchangeMessageReader ?
    Как имя этой функции?
  2.  

  3. Для чего предназначен объект типа  ExchangeMessageReader ?
  4.  

  5. Что нужно передать в параметры функции ExchangePlans.DeleteChangeRecords() при чтении из файла сообщения обмена?
  6.  

  7. В чем разница параметров функции ExchangePlans.DeleteChangeRecords() при записи и при чтении сообщения обмена?
  8.  

  9. Что нужно передать в параметр функции BeginRead()?
  10.  

  11. Какому типу объекта принадлежат функции BeginRead() и EndRead()?
  12.  

  13. Что нужно передать в параметр функции CanReadXML()  ReadXML() ?
  14.  

  15. Что такое DataExchange?
  16.  

  17. Объекты каких типов участвуют в этом алгоритме чтения данных из файла ?
  18.  



XMLReader = new XMLReader()
XMLReader.OpenFile(FileName);


MR = ExchangePlans.CreateMessageReader();

MR.BeginRead(XMLReader);


ExchangePlans.DeleteChangeRecords(MR.Sender, MR.ReceivedNo);

While CanReadXML(XMLReader) Cycle
    Ob = ReadXML(XMLReader);
    Ob.DataExchange.Sender = MR.Sender;
    Ob.DataExchange.Load = True;
    Ob.Write();
EndWhile;


MR.EndRead();



Ответы:

 

  1. Методом какого типа объекта является функция, при помощи которой создается объект типа ExchangeMessageReader ? Как имя этой функции?
  2.  

    CreateMessageReader()  - имя функции при помощи которой создается объект типа ExchangeMessageReader,
    имя функции само говорит для чего она предназначена. Создает объект, с помощью которого может быть произведено
    чтение одного или нескольких сообщений обмена данными.

    Эта функция вызывается при помощи объекта ExchangePlans типа ExchangePlansManager.

            MR = ExchangePlans.CreateMessageReader();


    Для объекта ExchangePlans типа ExchangePlansManager доступен обход коллекции посредством оператора Для каждого … Из … Цикл.
    При обходе выбираются менеджеры планов обмена.
    Возможно обращение к менеджеру плана обмена посредством оператора [...].
    В качестве аргумента передается имя плана обмена, как оно задано в конфигурации.

    Foreach ExchangePlan из Metedata.ExchangePlans Cycle
        ExchangePlanName      = ExchangePlan.Name;
        ExchangePlanManager   = ExchangePlans[ExchangePlanName];
        ExchangePlanSelection = ExchangePlanManager.Select();
        // обработка выборки
    EndCycle;

     

    Или так, что тоже самое:

    Для каждого ПланОбмена из Метаданные.ПланыОбмена Цикл
        ИмяПланаОбмена           = ПланОбмена.Имя;
        МенеджерПланаОбмена = ПланыОбмена[ИмяПланаОбмена];
        ВыборкаПланаОбмена    = МенеджерПланаОбмена.Выбрать();
        // обработка выборки
    КонецЦикла;


  3. Для чего предназначен объект типа  ExchangeMessageReader ?
  4.  

    C помощью этого объекта может быть произведено чтение одного или нескольких сообщений обмена данными.
    При начале чтения BeginRead() он осуществляет проверку правильности задания реквизитов заголовка сообщения и отвергает неправильные сообщения.
    При завершении чтения EndRead() данный объект модифицирует значение реквизита НомерПринятого соответствующего узла плана обмена в соответствии с номером принятого сообщения.

     

  5. Что нужно передать в параметры функции ExchangePlans.DeleteChangeRecords() при чтении из файла сообщения?
  6.  

    Ответ: Узел и НомерСообщения, но уже Узел-отправитель и НомерПринятого сообщения.
    Узел-отправитель (считан из файла сообщения) и НомерПринятого сообщения (считан из файла сообщения):

            ExchangePlans.DeleteChangeRecords(MR.Sender, MR.ReceivedNo);


  7. В чем разница параметров функции ExchangePlans.DeleteChangeRecords() при записи и при чтении сообщения обмена?
  8.  

    Ответ: В обоих случаях передается Узел и НомерСообщения,  но

    - при чтении: Узел-отправитель (считан из файла сообщения) и НомерПринятого сообщения (считан из файла сообщения):

            ExchangePlans.DeleteChangeRecords(MR.Sender, MR.ReceivedNo);

     

    - при записи: Узел-получатель (он найден по коду в Плане обмена) и НомерОтправленного сообщения (будет считан из БД):

            ExchangePlans.DeleteChangeRecords(Node, MW.MessageNo):   

     

  9. Что нужно передать в параметр функции BeginRead()?
  10.  

    В параметр надо передать объект типа XMLReader.

            MR.BeginRead(XMLReader);

     

  11. К объекту какого типа принадлежат функции BeginRead() и EndRead()?
  12.  

    К  объекту типа ExchangeMessageReader

     

  13. Что нужно передать в параметр функции CanReadXML() и ReadXML() ?
  14.  

    В параметр надо передать объект типа XMLReader.

     

  15. Что такое DataExchange?
  16.  

    DataExchange - это объект, который имеет тип DataExchangeParameters и содержит параметры обмена данными,
    которые будут использованы при удалении объекта, на который показывает ссылка.

    DataExchange имеет три свойства: Load (булево), Sender (ПланОбмена.Ссылка), Recipients (НаборУзлов плана обмена).
    Этот объект не может быть создан самостоятельно.

    Объект данного типа представляет собой значение свойства DataExchange объектов, представляющих данные, по которым ведется учет изменений (например документ "Авансовый отчет", справочник "Номенклатура" и тд ).

    Используется для управления обменом данных.
    С помощью данного свойства настраивается:

    - состав узлов-получателей (Recipients), для которых будут регистрироваться изменения данных,
    - узел-отправитель (Sender), из которого получена записываемая информация, а также
    - устанавливается режим Загрузка (Load), указывающий, что выполняется перенос информации.

     

  17. Объекты каких типов участвуют в этом алгоритме чтения данных из файла ?
  18.  

    - XMLReader
    - ExchangeMessageReader
    - ExchangePlansManager
    - ExchangePlanManager
    - DataExchangeParameters

Обновлено 14.12.2014 17:53