Location из МИС

Автор notebook_d, 24.10.14, 10:30:36

« назад - далее »

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

notebook_d

Добрый день!

Возможно ли получить Location материала из справочника МИС по его атрибуту "Код"?
Вариант с Select-ом не подходит, так как планируется автоматическое создание необходимых материалов из справочника МИС в ЛОЦМАН! Выбирать материалы из Справочника как-то не рационально.

Manuylov

поиск по коду материала
          // ищем в материалах
          WriteStatus('Поиск материала "' + OboznDSE + '" в справочнике МиС по материалам...');
          //Выполнить поиск
          BOQuery := BOMat.NewQuery;
          //Заголовок запроса
          BOQuery.Request.Topic := 'Search';
          // ищем в экземплярах
          BOQuery.Request.Attributes.Add('SearchType', '0'); // 0 материалы
          BOQuery.Request.Attributes.Add('SearchContext', '0');  // 0 Материалы
          // 3 - по коду материала;
          BOQuery.Request.Attribute['SearchConditions'].Attributes.Add('SearchCondition', '3');
          BOQuery.Request.Attribute['SearchConditions'].Attribute[
            'SearchCondition'].Attributes.Add('Condition', '1');   // 1 - начинается с ...
          BOQuery.Request.Attribute['SearchConditions'].Attribute[
            'SearchCondition'].Attributes.Add('Value', OboznDSE);
          //Выполним запрос                 
          BOMat.ExecuteQuery(BOQuery, ErrorCode, ErrorMessage);
          if BOQuery.Response.Count > 0 then
          begin
            stProduct := BOQuery.Response.Objects.Item[0].DisplayName;
            stLocation := BOQuery.Response.Objects.Item[0].ClassID +
              ':' + BOQuery.Response.Objects.Item[0].ObjectID;
          end
          else // не нашли
            raise Exception.CreateFmt('"%s" с шифром "%s" не найден в БД Лоцман и Справочнике МиС.',
              [SType_MaterialKD, OboznDSE]);


параметры поиска по коду экземпляра
        WriteStatus('Поиск материала "' + OboznDSE + '" в справочнике МиС по экземплярам...');
        BOQuery := BOMat.NewQuery;
        //Заголовок запроса
        BOQuery.Request.Topic := 'Search';
        // ищем в экземплярах
        BOQuery.Request.Attributes.Add('SearchType', '4'); // 4 Экземпляры сортаментов
        BOQuery.Request.Attributes.Add('SearchContext', '0');  // 0 Материалы
        BOQuery.Request.Attribute['SearchConditions'].Attributes.Add('SearchCondition', '3');
        // 3 - по коду экземпляра сортамента;
        BOQuery.Request.Attribute['SearchConditions'].Attribute[
          'SearchCondition'].Attributes.Add(
          'Condition', '0');   // 0 - полное совпадение
        BOQuery.Request.Attribute['SearchConditions'].Attribute['SearchCondition'].Attributes.Add(
          'Value', OboznDSE);

+ Благодарностей: 1

notebook_d

Да спасибо. С материалами разобрался - все работает. В этом направлении копал, чуть-чуть не докрутил.
Location для материала строится довольно просто stLocation := BOQuery.Response.Objects.Item[0].ClassID + ':' + BOQuery.Response.Objects.Item[0].ObjectID;
А вот как для экземпляра сортамента строиться Location?

Manuylov

также, т.к. возвращается объект того же класса