procedure GrantInvestmentChooseGeneral( aMustBeGrantInvestCode: boolean;
                                        var aUnclassified: boolean);
var
  xGrantInvestment_Id: string;
begin

    try
      //если код субсидии не заполнен
      if (Trim(CDSListField_Grantinvestment_Code_Get) = '') then begin
        // echange #2362
        // если код субсидии не заполнен и во втором разряде стоят значения 0
        // или 2 - заполняем код субсидии системным значением
        // echange #2362 + #2520
        // если код субсидии не заполнен и если в л/с в первом разряде
        // не О или Ц - заполняем код субсидии системным значением
        if (not aMustBeGrantInvestCode)
          then DoGrantInvestmentSetSystem//( cds);
          else aUnclassified := True;
      end else begin
        // если код субсидии найден - пробуем найти его в справочнике
        // exchange #2655 - ищем код раздельно в орг. от системного кода субсидии
        case DoSearchGrantInvestmentCode( {cds, }TRUE, TRUE) of
          // Exchange #2362
          // код субсидии указан, но не найден в справочнике
          // и если в л/с во втором разряде стоит 0 или 2 - подставлять
          // системный код субсидии (пп.3)
          // echange #2362 + #2520
          // если код субсидии не заполнен и если в л/с в первом разряде
          // не О или Ц - заполняем код субсидии системным значением
          0: if (not aMustBeGrantInvestCode)
               then DoGrantInvestmentSetSystem//( cds);
               else begin
                 aUnclassified := True;
                 CDSListField_Message(
                       'Код субсидии: ' + CDSListField_Grantinvestment_Code_Get//cds.FieldByName('Grantinvestment_Code').AsString
                      +' не найден в базе данных');
               end;

          1: DoUpdateGrantInvestmentType;//( cds)

        else begin  //>1
              // код указан, но в бд найдено несколько кодов
              // выбираем из диалога
              xGrantInvestment_Id :=
                    GetGrantInvestmentIdEx(
                          FORMAT( '№ %s  Дата: %s Сумма = %s',
                                  [ cdsList.FieldByName('Doc_Number').asString,
                                    cdsList.FieldByName('Doc_Date').asString,
                                    cdsList.FieldByName('Amount').asString]),
                          CDSListField_Budget_Id_Get,
                          CDSListField_Org_Id_Get,
                          CDSListField_Grantinvestment_Code_Get);
              if (xGrantInvestment_Id <> '') then begin
                DoGrantInvestmentSetID( {cds,} xGrantInvestment_Id);
                (*
                sql := 'Select G.FType From Grantinvestment G Where G.Id = ?';
                Query.AddStr(GrantInvestment_Id);
                Xml := CreateOleObject('Microsoft.XmlDom');
                Xml.LoadXML(Query.Run(sql));
                cds.Edit;
                cds.FieldByName('Grantinvestment_Id').AsString := Trim(GrantInvestment_Id);
                cds.FieldByName('Grantinvestment_Type').AsString :=
                  Xml.documentElement.childNodes.Item[0].getAttribute('FTYPE');
                cds.Post;
                *)
              end else begin
                CDSListField_Message('Код субсидии не выбран из справочника');
                aUnclassified := True;
              end;
            end;
        end;//case//
      end;
      except
        ExceptionProc( 'GrantInvestmentChooseGeneral');
    end;

end;

begin
end.
