Exemple #1
0
BOOST_FIXTURE_TEST_CASE(test7, base_fixture_t)
{
  TStringList Lines;
  Lines.SetSorted(true);
  if (1)
  {
    Lines.SetDuplicates(dupAccept);
    Lines.Add(L"aaa");
    Lines.Add(L"aaa");
    Lines.Add(L"bbb");
    BOOST_CHECK(3 == Lines.GetCount());
    BOOST_CHECK(0 == Lines.IndexOf(L"aaa"));
    BOOST_CHECK(2 == Lines.IndexOf(L"bbb"));
  }
  Lines.Clear();
  if (1)
  {
    Lines.SetDuplicates(dupIgnore);
    Lines.Add(L"aaa");
    Lines.Add(L"aaa");
    Lines.Add(L"bbb");
    BOOST_CHECK(2 == Lines.GetCount());
    BOOST_CHECK(1 == Lines.IndexOf(L"bbb"));
  }
  Lines.Clear();
  if (1)
  {
    Lines.SetDuplicates(dupError);
    Lines.Add(L"aaa");
    Lines.Add(L"bbb");
    BOOST_CHECK_THROW(Lines.Add(L"aaa"), std::exception);
  }
}
Exemple #2
0
void __fastcall TfMain::FormClose(TObject *Sender, TCloseAction &Action)
{
	TFile f;
	TStringList* sl = new(TStringList);

	for(int i = 0; i < lvLib->Items->Count; i++)
		sl->Add(lvLib->Items->Item[i]->SubItems->Strings[0] + '=' +
			lvLib->Items->Item[i]->SubItems->Strings[1] + '/' +
			lvLib->Items->Item[i]->SubItems->Strings[2]);

	sl->SaveToFile(ExtractFileDir(Application->ExeName) + "\\Library.lb");
	sl->Clear();

	sl->Add("Login="******"Pass="******"Pass="******"RememberPass=1");
	else
		sl->Add("RememberPass=0");
	sl->Add("Server=" + leServer->Text);

	sl->SaveToFile(ExtractFileDir(Application->ExeName) + "\\Settings.ini");

	sl->~TStringList();
}
//---------------------------------------------------------------------------
void __fastcall TChatRoomForm::UpdateUserList()
{
  TStringList *UserNames;
  String UserName;

  UserNames = NULL;

  if (ChatRoomUsersDestroyed || !this || !UserListBox)
    return;

  UserListBox->Items->BeginUpdate();
  try
  {
    UserListBox->Clear();
    UserNames = TChatRoomUsers::Instance()->GetUserNames();

    for (int i = 0; i < UserNames->Count; i++)
      UserListBox->Items->Add(UserNames->Strings[i]);
  }
  __finally
  {
    UserListBox->Items->EndUpdate();
    UserNames->Clear();
    delete UserNames;
  }
};
Exemple #4
0
void TIniFile::ReadSectionNames(const wxString &Section, TStringList &Strings)
{
	wxString N;
	wxString V;
	int I;

	// Assert( !! Strings , SStringsUnassignedError );
	Strings.BeginUpdate();
	try
	{
		Strings.Clear();
		if (FFileBuffer->Count() > 0)
		{
			I = GetSectionIndex(Section);
			if (I != -1)
			{
				++I;
				while ((I < FFileBuffer->Count()) && !IsSection
				  (FFileBuffer->Item(I)))
				{
					N = GetName(FFileBuffer->Item(I));
					if (N != EmptyStr)
					{
						Strings.Add(N);
					}
					++I;
				}
			}
		}
	} /* ? *//* FINALLY */
	catch (...)
	{
		Strings.EndUpdate();
	}
}
Exemple #5
0
void TIniFile::ReadSections(TStringList &Strings)
{
	long I;
	wxString Section;

	// Assert( !! Strings , SStringsUnassignedError );
	Strings.BeginUpdate();
	try
	{
		Strings.Clear();
		if (FFileBuffer->Count() > 0)
		{
			I = 0;
			while ((I < FFileBuffer->Count()))
			{
				if (IsSection(FFileBuffer->Item(I)))
				{
					Section = Trim(FFileBuffer->Item(I));
					Delete(Section, 0, 1);
					Delete(Section, Length(Section) - 1, 1);
					Strings.Add(Trim(Section));
				}
				++I;
			}
		}
	} /* ? *//* FINALLY */
	catch (...)
	{
		Strings.EndUpdate();
	}
}
Exemple #6
0
// ---------------------------------------------------------------------------
void TClientGood::DataIn(int col, TObject *Sender) {

	UnicodeString s;
	TStringList *sld = fFindOrders->slspsk;
	sld->Clear();
	s = DataOut(col);

	if (s != "") {
		sld->DelimitedText = s; // получаем старые данные
	}

	// вот теперь можно пробовать добавить новые данне
	if (fUserList->Visible) {
		// надо выбрать только чекнутые
		for (int i = 0; i < fUserList->clUsers->Count; i++) {
			if (fUserList->clUsers->Checked[i]) {
				TryAdd(sld, fUserList->clUsers->Items->Strings[i], Sender);
			}
		}
	}
	else
		TryAdd(sld, fConnect->curUser->login, Sender);

	s = sld->DelimitedText;

	// здесь получившиеся данные надо писать прямо в объект
	DataIn(col, s);
}
TStringList* TCommThread::GetAvailableDevicesNames(bool IncludeSerial, bool IncludeParallel, TStringList * AvaiableDevicesNames)
{
        TRegistry       *Registro = new TRegistry();
        TStringList     *StringsTemp = new TStringList();
        int Indice;
        if (AvaiableDevicesNames!=NULL)
                AvaiableDevicesNames->Clear();
        else
                AvaiableDevicesNames = new TStringList();

        Registro->RootKey=HKEY_LOCAL_MACHINE;

        if(IncludeSerial==true)
        {
                StringsTemp->Clear();

                Registro->OpenKey("hardware\\devicemap\\serialcomm",false);
                Registro->GetValueNames(StringsTemp);

                for (Indice=0;Indice<StringsTemp->Count;Indice++)
                        AvaiableDevicesNames->Add(Registro->ReadString(StringsTemp->Strings[Indice]));
                Registro->CloseKey();
        }

        if(IncludeParallel==true)
        {
                StringsTemp->Clear();

                Registro->OpenKey("hardware\\devicemap\\parallel ports",false);
                Registro->GetValueNames(StringsTemp);

                for (Indice=0;Indice<StringsTemp->Count;Indice++)
                        AvaiableDevicesNames->Add(ExtractFileName(Registro->ReadString(StringsTemp->Strings[Indice])));
                Registro->CloseKey();
        }
        AvaiableDevicesNames->Sort();
        delete Registro;
        delete StringsTemp;
        return AvaiableDevicesNames;

}
Exemple #8
0
void __fastcall TfMain::FormShow(TObject *Sender)
{
	TStringList* sl = new(TStringList);
	sl->NameValueSeparator = '=';

	TFile f;

	if(f.Exists(ExtractFileDir(Application->ExeName) + "\\Library.lb")){
		sl->LoadFromFile(GetCurrentDir() + "\\Library.lb");

		for(int i = 0; i < sl->Count; i++){
			TListItem* Item = lvLib->Items->Add();
			Item->Caption = ExtractFileName(sl->Names[i]);
			Item->GroupID = 0;
			Item->SubItems->Add(sl->Names[i]); //path [0]

			TStringList* ss = new(TStringList);
			ss->NameValueSeparator = '/';
			ss->Add(sl->ValueFromIndex[i]);

			Item->SubItems->Add(ss->Names[0]); //bookmark [1]
			Item->SubItems->Add(ss->ValueFromIndex[0]); //size [2]

			ss->~TStringList();
		}
	}

	sl->Clear();

	if(f.Exists(ExtractFileDir(Application->ExeName) + "\\Settings.ini")){
		sl->LoadFromFile(GetCurrentDir() + "\\Settings.ini");

		leLogin->Text = sl->ValueFromIndex[0];
		lePass->Text = sl->ValueFromIndex[1];
		if(sl->ValueFromIndex[2] == "1")
			cbRememberPass->Checked = true;
		else
            cbRememberPass->Checked = false;
		leServer->Text = sl->ValueFromIndex[3];
	}

	sl->~TStringList();
}
Exemple #9
0
/*=============================================================================
*NAME		:TYSIniFile::ReadStringList
			:
*MODULE		:YSIniFiles.cpp
			:
*FUNCTION	:文字列リスト読み込み処理関数です
			:
*PROCESS	:・文字列リスト読み込み処理です。
			:
*INPUT		:const CString section	:セクション名
*INPUT		:const CString iname	:Ident名
*INPUT		:TStringList& slist		:設定クラス
			:
*RETURN		:読み込み行数
			:
*PROGRAMMED	:Y.Sasai
*HISTORY	:
*ID -- DATE ------- NOTE ------------------------------------------------------
*00 03.02.13 Y.Sasai Ver.0.90 初期作成
*/
int TYSIniFile::ReadStringList( const CString section, const CString iname, TStringList& slist )
{
	int result = 0;																				// 2003.02.13 Y.Sasai Ver.0.90 初期化だ
	CString ident;
	CString txt;

	slist.Clear();																				// 2003.02.13 Y.Sasai Ver.0.90 全消去だ
	while ( true ) {
		ident = iname + Number[result];															// 2003.02.13 Y.Sasai Ver.0.90 Ident名作成
		if ( ValueExists( section, ident ) == false ) {											// 2003.02.13 Y.Sasai Ver.0.90 Ident名がなかったら…
			break;																				// 2003.02.13 Y.Sasai Ver.0.90 ぬけるぞ
		}
		txt = ReadString( section, ident, "" );													// 2003.02.13 Y.Sasai Ver.0.90 文字列読み込み
		slist.Add( txt );																		// 2003.02.13 Y.Sasai Ver.0.90 追加だ
		result++;																				// 2003.02.13 Y.Sasai Ver.0.00 加算だ
	}

	return ( result );																			// 2003.02.13 Y.Sasai Ver.0.90 おわりだ
}
Exemple #10
0
/* Read all Names of one Section */
void TIniFile::ReadSection(const wxString &Section, TStringList &Strings)
{
	int I;
	wxString N;
	Strings.BeginUpdate();
	Strings.Clear();
	if (FFileBuffer->Count() > 0)
	{
		I = GetSectionIndex(Section);
		if (I != -1)
		{
			++I;
			while ((I < FFileBuffer->Count()) && !IsSection
			  (FFileBuffer->Item(I)))
			{
				N = GetName(FFileBuffer->Item(I));
				if (N != EmptyStr)
					Strings.Add(N);
				++I;
			}
		}
	}
}
void __fastcall TFrListMail::RzToolButton1Click(TObject *Sender)
{   TMemoryStream *pms= new TMemoryStream();
	TStringList *LS =new TStringList();
	struct rMail rMail;
	AnsiString NewFileName;
	int i,viTmpMINfTurn;
	AnsiString vsQRaspRaspNameRTF;
	//Если распоряжение уже рассылалось, то не рассылать, если не имеешь на то дополнительных прав.
 /*			vsSQLQw="SELECT Id24NameStatus FROM bm_Rasp   "
					" WHERE Idn=:D0 ; ";
 Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
 Qw->Parameters->Items[0]->Value= IdRasp;
 Qw->Open();
 if((Qw->Fields->Fields[0]->AsInteger==5448350)&&(!MainForm->flEditAllRasp))  	// Id24NameStatus=5448350//На утверждении
 {ShowMessage(AnsiString("Это распоряжени уже разосланно на утверждение")); return; }
 */ //Просто не Enable кнопку рассылки
	///





 if (pcSoglasovanieRassilka->ActivePage==tsSoglasovanie)
 {      ///проверка на отсутствие "_Копия" и "Новый подписной индекс"
	 StartProcedure:
	  vsSQLQw =   " SELECT TOP 1 Idn  FROM bm_RaspDetail "
				  " WHERE idRasp=:D0 AND DateDel is NULL "
				  " AND  LTRIM(RTRIM(NameRaspDetail)) LIKE '%_Копия%'; ";    //? Копия_
	   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
	   Qw->Parameters->Items[0]->Value=IdRasp;
	   Qw->Open();
	  if(Qw->RecordCount>0)// { ShowMessage("Рассылка невозможна. \n В названиях подписных индексов присутствует слово '_Копия'"); return;}
		 {
		if (MessageDlg("Рассылка невозможна. \n В названиях  присутствует слово '_Копия'. Редактировать?",mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0)!=mrYes)
		  {return;}else
			 {
			  {try{Opts.Clear();locvalues[0]=Variant(Qw->Fields->Fields[0]->AsInteger);FrBisniessMenedger->QRaspDetail->Locate("Idn",locvalues,Opts);}catch(...){};};
			  FrBisniessMenedger->btUpdRaspDetailClick(Sender);
			  goto StartProcedure;
			 }
         }



	  vsSQLQw =   " SELECT TOP 1 Idn, isnull(PIdn,0)  FROM bm_RaspDetail "
				  " WHERE idRasp=:D0 AND DateDel is NULL "
				  " AND LTRIM(RTRIM(NameRaspDetail))='Новый подписной индекс' ; ";
	   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
	   Qw->Parameters->Items[0]->Value=IdRasp;
	   Qw->Open();
	  if(Qw->RecordCount>0)
		 {
			if (MessageDlg("Рассылка невозможна. \n В названиях подписных индексов присутствует 'Новый подписной индекс'. Удалить?",mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0)!=mrYes)
			  {	if (MessageDlg(" Редактировать  'Новый подписной индекс'?",mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0)!=mrYes)
				   {return;}else
				{
					  {try{Opts.Clear();locvalues[0]=Variant(Qw->Fields->Fields[0]->AsInteger);FrBisniessMenedger->QRaspDetail->Locate("Idn",locvalues,Opts);}catch(...){};};
					  FrBisniessMenedger->btUpdRaspDetailClick(Sender);
					  goto StartProcedure;
			    }


			  }//Сделать переход к редактированию.
			else
			  {   int TmpIdnPIForDel,TmpIdnComplForDel;
				  TmpIdnComplForDel=0;
				  TmpIdnPIForDel=Qw->Fields->Fields[0]->AsInteger;
				  TmpIdnComplForDel=Qw->Fields->Fields[1]->AsInteger;

				  vsSQLQw = " DECLARE @Idn int; SET @Idn=:D0; "
				  " DELETE FROM bm_RaspDetail "
				  " WHERE Idn=@Idn OR PIdn=@Idn; ";
				   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
				   Qw->Parameters->Items[0]->Value=TmpIdnPIForDel;
				   Qw->ExecSQL();

				   if(TmpIdnComplForDel>0)
					  {
						  vsSQLQw=	" DECLARE  @IdInsMod int, @Idn int, @CostWithNDS money, @CostWithoutNDS money, @CostMINWithNDS money, @CostMINWithoutNDS money"
						  " SET @Idn=:D0"
						  " SET @IdInsMod=:D1"
						  " SELECT  @CostWithoutNDS=SUM(CostWithoutNDS),@CostWithNDS=SUM(CostWithNDS),@CostMINWithoutNDS=SUM(CostMINWithoutNDS),@CostMINWithNDS=SUM(CostMINWithNDS)"
						  " FROM bm_RaspDetail"
						  " WHERE fType=2 AND PIdn =@Idn and  DateDel is null;"
							" UPDATE bm_RaspDetail SET"
							"	 CostWithNDS =@CostWithNDS "
							"	,CostWithoutNDS =@CostWithoutNDS "
							"	,CostMINWithNDS =@CostMINWithNDS "
							"	,CostMINWithoutNDS =@CostMINWithoutNDS "
							"	,DateMod = GetDate() "
							"	,IdMod =@IdInsMod "
							"	WHERE Idn= @Idn ;" ;
						  Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
						  Qw->Parameters->Items[0]->Value=TmpIdnComplForDel;
						  Qw->Parameters->Items[1]->Value=PermisHdr.KeyUserStartProgramm;;
						  Qw->ExecSQL();
					   }
				   ShowMessage("Подписной индекс с наименованием 'Новый подписной индекс' удален.\n Рассылка запустится повторно. ");
				   goto StartProcedure;
//				   return;
              }
		 }

//Проверка что поле Состав ПИ заполненно у всех.

	 vsSQLQw =   " SELECT top 1 Idn FROM bm_RaspDetail WHERE IdRasp=:D0 AND DateDel IS NULL and fType=2 and CompositionOfPI=0 ";
				   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
				   Qw->Parameters->Items[0]->Value=IdRasp;
				   Qw->Open();
 if((Qw->RecordCount>0)&&((QListRaspVidRasp->AsInteger==4742151)||(QListRaspVidRasp->AsInteger==4742153)))
   {ShowMessage(AnsiString("В распоряжении не у всех подписных индексов указан \"Cостав ПИ\".\n Вам необходимо заполнить это поле."));
	return;
   }

///Проверка наличия кодов Axapta

		 vsSQLQw =   " SELECT Idn FROM bm_RaspDetail WHERE IdRasp=:D0 AND DateDel IS NULL AND fType=3 AND (ItemIdAxapta ='' OR ItemIdAxapta is NULL OR IdnAxapta is NULL)";
				   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
				   Qw->Parameters->Items[0]->Value=IdRasp;
				   Qw->Open();

		 if(Qw->RecordCount>0){ShowMessage(AnsiString("Не у всех номенклатур проставлены коды Axapta. Рассылка распоряжения на утверждение невозможна.")); return;}

///




//Проверка заполненности всех полей комментариев и распоряжени
   QListRasp->Close();
   QListRasp->Parameters->Items[0]->Value=IdRasp;
   QListRasp->Open();




 //Проверка наличия ценового комитета.

	 vsSQLQw =   " SELECT Idn FROM bm_RaspDetail WHERE IdRasp=:D0 AND DateDel IS NULL ";
				   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
				   Qw->Parameters->Items[0]->Value=IdRasp;
				   Qw->Open();

				   //if(QListRasp->Active==false){QListRasp->Open(); }
				   //int ttt= QListRaspVidRasp->AsInteger;
				  // int yyy=Qw->RecordCount;
 if((Qw->RecordCount>0)&&((QListRaspVidRasp->AsInteger==4742151)||(QListRaspVidRasp->AsInteger==4742153)))
   {
	 vsSQLQw =   " SELECT Idn FROM bm_ListMail WHERE IdRasp=:D0 AND DateDel IS NULL AND fType=3/*Ценовой комитет*/ ";
				   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
				   Qw->Parameters->Items[0]->Value=IdRasp;
				   Qw->Open();

	 if(Qw->RecordCount==0){ShowMessage(AnsiString("Не заполнен список ценового комитета. Рассылка распоряжения на утверждение невозможна.")); return;}
	}

 //

/*
//Проверка заполненности всех полей комментариев и распоряжени
   QListRasp->Close();
   QListRasp->Parameters->Items[0]->Value=IdRasp;
   QListRasp->Open();
 */
   QListComments->Close();
   QListComments->Parameters->Items[0]->Value=IdRasp;
   QListComments->Open();

   fAllEntering=true;//Флаг проверки заполненности всех полей
   //Проверка распоряжения
	   if((QListRaspId256TypeRasp->AsInteger)==0)        fAllEntering=false;           //Тип распоряжения
	   // Есть всегда if(Trim(QListRaspId24City->AsInteger)==0) fAllEntering=false;    //Город
	   if(Trim(QListRaspRaspNameRTF->AsString)=="")      fAllEntering=false;           //Наименование распоряжения
	   if(Trim(QListRaspContentTargetRTF->AsString)=="") fAllEntering=false;           // Цели распоряжения
	   if(Trim(QListRaspId24NameStatuser->AsString)=="") fAllEntering=false;           // (Предлагаю:, Приказываю: и прочее)
	   if(Trim(QListRaspContentRTF->AsString)=="")       fAllEntering=false;           // Содержание распоряжения
	   if((QListRaspEmplDol->AsInteger)==0)              fAllEntering=false;           //Должность утверждающего
	   if((QListRaspIdEmplUsers->AsInteger)==0)          fAllEntering=false;           // ФИО утверждающего
/*   ///проверка на отсутствие "_Копия" и "Новый подписной индекс"
	  vsSQLQw =   " SELECT  Idn  FROM bm_RaspDetail "
				  " WHERE idRasp=:D0 AND DateDel is NULL "
				  " AND ((LTRIM(RTRIM(NameRaspDetail))='Новый подписной индекс') OR (LTRIM(RTRIM(NameRaspDetail)) LIKE '%_Копия%')); ";
	   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
	   Qw->Parameters->Items[0]->Value=IdRasp;
	   Qw->Open();
	  if(Qw->RecordCount>0) { ShowMessage("Рассылка невозможна. \n В названиях подписных индексов присутствуют 'Новый подписной индекс' или '_Копия'"); return;}


   */
  ///
	  QAddFilesEXEL->Close();
	  QAddFilesEXEL->Parameters->Items[0]->Value=IdRasp;
	  QAddFilesEXEL->Open();

	 if ((QListRaspVidRasp->AsInteger==4742152/*"Распоряжение о выпуске нового продукта" После набора статистики переделать под таблицу прав*/)&&(QAddFilesEXEL->RecordCount<1))//Продукт
	  {
	   ShowMessage("Рассылка невозможна. \n Необходимо указать прикрепленный файл EXEL"); return;//Наличие прикрепленного файла

	  }
   ///

     ///
	  QAddFilesDOC->Close();
	  QAddFilesDOC->Parameters->Items[0]->Value=IdRasp;
	  QAddFilesDOC->Open();

	 if ((QListRaspVidRasp->AsInteger==4742440/*"Техническое задание на разработу в Отдел разработки и сопровождения программных продуктов" После набора статистики переделать под таблицу прав*/)&&(QAddFilesDOC->RecordCount<1))//Продукт
	  {
	   ShowMessage("Рассылка невозможна. \n Необходимо указать прикрепленный файл DOC"); return;//Наличие прикрепленного файла

	  }
   ///

   //Проверка распоряжения
   if ((QListRaspVidRasp->AsInteger==4742151)||((QListRaspVidRasp->AsInteger==4742153)))//Цена
	  {
	   //Проверка по комментариям  Тип цены. 1-Базовая;2-Бюджетная;3-Со скидкой. Стандартная;4-Со скидкой. Расчётная
	   if ((QListCommentsTypeCost->AsInteger==3)||((QListCommentsTypeCost->AsInteger==4)))
		  {
		   if(((QListCommentsId256NameDiscount->AsInteger)==0)&&(QListCommentsTypeCost->AsInteger==3)) fAllEntering=false;  //Код из Lib256 с Видом скидки
		   if(((QListCommentsId256NameAction ->AsInteger)==0)&&(QListCommentsTypeCost->AsInteger==4)) fAllEntering=false;  //Код из Lib256 с Видом скидки
		   if((QListCommentsId256CostDiscount->AsInteger)==0) fAllEntering=false;  //Код из Lib256 с описанием размера скидки
		   if((QListCommentsDateRealization->AsDateTime)==TDateTime(1900, 01, 01)) fAllEntering=false;  //Срок реализации
		   if(Trim(QListCommentsPrognozEffects->AsString)=="") fAllEntering=false; //Прогноз эффективности
		   if(Trim(QListCommentsGrantingConditions->AsString)=="") fAllEntering=false; // Условия скидки
		//Пооверяем CheckBox'ы
		  //	vsSQLQw = " SELECT (isnull(A.id256TextActionPurpose,0)+isnull(A.id256TextGroupClients,0)+isnull(A.id256TextAdvancementChannel,0))id256Text,A.TypeFiеld "
		  vsSQLQw =   " SELECT  DISTINCT A.TypeFiеld "
					  " FROM bm_CheckLists A "
					  "	LEFT JOIN bm_CommentsCheckLists B ON B.IdCheckLists=A.Idn "
					  "	LEFT JOIN bm_Comments C ON C.Idn= B.IdComments "
					  " WHERE C.idRasp=:D0 AND B.DateDel is NULL ";
		   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
		   Qw->Parameters->Items[0]->Value=IdRasp;
		   Qw->Open();
		   if (Qw->RecordCount<3) fAllEntering=false; //Если заполнено меньше 3 CheckBox'ов
		   Qw->Close();

		///
		   if (QListCommentsTypeCost->AsInteger==4)  //Проверяем соответствуют ли продукты в таблицы прогнозируемых затрат и у подписных индексов
			  {										// при типе распоряжения 4-Со скидкой. расчетное-
			  bool fProduce=true;//Флаг соответствия продуктов. true-соответствуют

			  vsSQLQw =   " SELECT  DISTINCT IdProduce "
						  " FROM bm_PredictedDebit  "
						  " WHERE idRasp=:D0 AND DateDel is NULL ";
			   Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
			   Qw->Parameters->Items[0]->Value=IdRasp;
			   Qw->Open();
			  vsSQLQw =   " SELECT  DISTINCT idAdvProduceClass "
						  " FROM bm_RaspDetail  "
						  " WHERE idRasp=:D0 AND DateDel is NULL ";
			   Qw2->Close();Qw2->SQL->Clear();Qw2->SQL->Add(vsSQLQw);
			   Qw2->Parameters->Items[0]->Value=IdRasp;
			   Qw2->Open();

			   if(Qw->RecordCount!=Qw2->RecordCount) fProduce=false;
			   while(Qw->Eof==false)
			   {
			   vsSQLQw =  " SELECT  TOP 1 idAdvProduceClass "
						  " FROM bm_RaspDetail  "
						  " WHERE idRasp=:D0 AND idAdvProduceClass=:D1 AND DateDel is NULL ";
			   Qw2->Close();Qw2->SQL->Clear();Qw2->SQL->Add(vsSQLQw);
			   Qw2->Parameters->Items[0]->Value=IdRasp;
			   Qw2->Parameters->Items[1]->Value=Qw->Fields->Fields[0]->AsInteger;
			   Qw2->Open();
			   if(Qw2->RecordCount>0) fProduce=false;
			   Qw->Next();}

			   Qw->Close();
			   Qw2->Close();


			  if (!fProduce) { if(MessageDlg("Продукты в подписных индексах и в прогнозируемых затратах не соответствуют. Продолжить рассылку?",mtInformation,TMsgDlgButtons()<<mbYes<<mbNo,0)!=mrYes) {Abort();return;}}
			  }//if (QListCommentsTypeCost->AsInteger==4)
		  }//if ((QListCommentsTypeCost->AsInteger==3)||((QListCommentsTypeCost->AsInteger==4)))
	   ///
	  }//if (QListRaspVidRasp->AsInteger==0)//Цена
   ///


///
  if (!fAllEntering)
	 {
	  ShowMessage(AnsiString("Не все поля заполнены. Рассылка распоряжения на утверждение невозможна."));

	  //--- первая часть марлезонского балета
	  if ((QListRaspId256TypeRasp->AsInteger)==0)
		 {ShowMessage("Не выбран тип распоряжения...");}
	  if (Trim(QListRaspRaspNameRTF->AsString)=="")
		 {ShowMessage("Не указано наименование распоряжения...");}
	  if (Trim(QListRaspContentTargetRTF->AsString)=="")
		 {ShowMessage("Не указана цель распоряжения...");}
	  if (Trim(QListRaspId24NameStatuser->AsString)=="")
		 {ShowMessage("Не указано ''Предлагаю:'', ''Приказываю:'' и прочее...");}
	  if (Trim(QListRaspContentRTF->AsString)=="")
		 {ShowMessage("Не указано ''Содержание распоряжения''...");}
	  if ((QListRaspEmplDol->AsInteger)==0)
		 {ShowMessage("Не указана ''Должность утверждающего''...");}
	  if ((QListRaspIdEmplUsers->AsInteger)==0)
		 {ShowMessage("Не указаны ''ФИО утверждающего''...");}

	  //--- вторая часть марлезонского балета
	  if (((QListCommentsId256NameDiscount->AsInteger)==0)&&(QListCommentsTypeCost->AsInteger==3))
		 {ShowMessage("Не указан ''Код из Lib256 с Видом скидки''...");}
	  if (((QListCommentsId256NameAction ->AsInteger)==0)&&(QListCommentsTypeCost->AsInteger==4))
		 {ShowMessage("Не указан ''Код из Lib256 с Видом скидки''...");}
	  if ((QListCommentsId256CostDiscount->AsInteger)==0)
		 {ShowMessage("Не указан ''Код из Lib256 с описанием размера скидки''...");}
	  if ((QListCommentsDateRealization->AsDateTime)==TDateTime(1900, 01, 01))
		 {ShowMessage("Не указан ''Срок реализации''...");}
	  if (Trim(QListCommentsPrognozEffects->AsString)=="")
		 {ShowMessage("Не указан ''Прогноз эффективности''...");}
	  if (Trim(QListCommentsGrantingConditions->AsString)=="")
		 {ShowMessage("Не указаны ''Условия скидки''...");}
	  //конец балета - занавес

	  return;
	  }
///Проверка дробности цены
	QNE->Close();
	QNE->Parameters->Items[0]->Value=IdRasp;
    QNE->Open();
	QNE->First();
	while(QNE->Eof==false)
	   {if((((QNECostWithNDS->AsCurrency*100)%1)>0)||(((QNECostWithoutNDS->AsCurrency*100)%1)>0))
	   {ShowMessage("Сохранение невозможно. \n Сперва приведите значения цен с НДС и без НДС для номенклатурных единиц к целым копейкам."); return; }
	   QNE->Next();}
///////////////////////////


   /////Запись текста письма в БД
   vsSQLQw = "DECLARE @IdRasp int, @PermisHdr int;"//, @MailPathAddFiles text, @MailText text ; " //Нельзя создавать переменную типа text
				" SET @IdRasp =:D0; SET @PermisHdr =:D1;"// SET @MailPathAddFiles =:D2; SET @MailText =:D3; "
				" UPDATE bm_ListMail SET MailPathAddFiles=:D2, MailText=:D3, DateMod=GetDate(), IdMod= @PermisHdr WHERE IdRasp=@IdRasp ";
   Qw->Close();
   Qw->SQL->Clear();
   Qw->SQL->Add(vsSQLQw);
   Qw->Parameters->Items[0]->Value = IdRasp;
   Qw->Parameters->Items[1]->Value = PermisHdr.KeyUserStartProgramm;

	LS->Clear();        
	pms->Position=0;
	LS->SaveToStream(pms);
	pms->Position=0;
	Qw->Parameters->Items[2]->LoadFromStream(pms,ftMemo);
	pms->Clear();
	pms->Position=0;
	reContentRTF->Lines->SaveToStream(pms);
	pms->Position=0;
	Qw->Parameters->Items[3]->LoadFromStream(pms,ftMemo);
	pms->Clear();
	Qw->ExecSQL();
	Qw->Close();
    LS->Clear();

  RzPanel300->Visible=true;

  rMail=MainForm->CreateMail(IdRasp,1);
 
  ///// рассылаем распоряжение лицам с минимальным порядком очереди fTyrn, но не 0
  vsSQLQw=" SELECT MIN(fTurn) FROM bm_ListMail"
			" WHERE  DateDel is null"
			" AND IdRasp=:D0"
			" AND ( fType=0 OR fType=2) "
			" AND fTurn>0"
			" AND (fResault=0 OR fResault is NULL )";
 Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
 Qw->Parameters->Items[0]->Value= IdRasp;
 Qw->Open();
 viTmpMINfTurn=Qw->Fields->Fields[0]->AsInteger;
	QEmplUserDol2->First();
	while((QEmplUserDol2->Eof==false))
		 {
		  if ((Trim(QEmplUserDol2Mail->AsString) != "") && (QEmplUserDol2fTurn->AsInteger == viTmpMINfTurn))
			 {
			  rMail.ResiveName        = QEmplUserDol2FamIO->AsString;
			  rMail.ResiveMailAddress = QEmplUserDol2Mail->AsString;
			  vsSQLQw = "UPDATE bm_ListMail SET DateSheet = GetDate() "
						"WHERE Idn = :D0;";
			  Qw->Close();
			  Qw->SQL->Clear();
			  Qw->SQL->Add(vsSQLQw);
			  Qw->Parameters->Items[0]->Value = QEmplUserDol2Idn->AsString;
			  Qw->ExecSQL();
			  MainForm->SendEmail(&rMail);
			  }
		  QEmplUserDol2->Next();
		  }


  //Рассылаем замещающим утверждающих
  QEmplUserDol3->First();
	while((QEmplUserDol3->Eof==false))
	  {if ((Trim(QEmplUserDol3Mail->AsString)!="")&&(QEmplUserDol3fTurn->AsInteger==viTmpMINfTurn))
		 { rMail.ResiveName=QEmplUserDol3FamIO->AsString;
		   rMail.ResiveMailAddress=QEmplUserDol3Mail->AsString;

		   MainForm->SendEmail(&rMail);
		 }
   QEmplUserDol3->Next();
	  }
 ////
  ///Выставляем распоряжению состояние-в рассылке-
			vsSQLQw="UPDATE bm_Rasp  SET "
					"  Id24NameStatus=5448350"//На утверждении
					" ,DateSheet= GetDate() "
					" ,IdSheet=:D0  "
					" WHERE Idn=:D1 ; ";
 Qw->Close();Qw->SQL->Clear();Qw->SQL->Add(vsSQLQw);
 Qw->Parameters->Items[0]->Value= PermisHdr.KeyUserStartProgramm;
 Qw->Parameters->Items[1]->Value= IdRasp;
 Qw->ExecSQL();
///

 RzPanel300->Visible=false;

 ShowMessage("Рассылка писем по листу согласования начата.");
}// if (pcSoglasovanieRassilka->ActivePage=tsSoglasovanie)
 if (pcSoglasovanieRassilka->ActivePage==tsRassilka)
 { MainForm->Sheet(IdRasp);
    
 }
}
Exemple #12
0
//---------------------------------------------------------------------------
void __fastcall TFormOptsOplata::UpdateTable(TStringGrid* pTab)
{
  ClearTable(pTab);

  int i,j;
  TStringList* listIDStud = new TStringList;
  TStringList* listIDOpts = new TStringList;
  listIDOpts->Clear();
  listIDStud->Clear();

  ZMySqlQuery->SQL->Clear();
  ZMySqlQuery->SQL->Add("SELECT id FROM "+opts.DBStudTable+" WHERE deleted=0 AND grpid="+ToStr(AnsiString(IDGroup)));
  ZMySqlQuery->Active=true;
  for (i=1;i<=ZMySqlQuery->RecordCount;i++)
  {
    ZMySqlQuery->RecNo=i;
    listIDStud->Add(AnsiString(ZMySqlQuery->Fields->FieldByNumber(1)->AsString.ToInt()));
  }

  AnsiString IDOptsStr;
  for (i=0; i<listIDStud->Count; i++)
  {
    ZMySqlQuery->SQL->Clear();
    ZMySqlQuery->SQL->Add("SELECT idopts FROM "+opts.DBPayFacts+" WHERE deleted=0 AND idstud="+ToStr(listIDStud->Strings[i]));
    ZMySqlQuery->Active=true;

    for (j=1; j<=ZMySqlQuery->RecordCount;j++)
    {
      ZMySqlQuery->RecNo=j;
      IDOptsStr = ZMySqlQuery->Fields->FieldByNumber(1)->AsString;
      if (listIDOpts->IndexOf(IDOptsStr)==-1)
        listIDOpts->Add(IDOptsStr);
    }
  }


  int numCurRow=0;
  listIDs->Clear();
  listIDs->Add("NULL");
  listRealIDs->Clear();
  listRealIDs->Add("NULL");

for (j=0; j<listIDOpts->Count; j++)
{
  ZMySqlQuery->SQL->Clear();
  ZMySqlQuery->SQL->Add("SELECT id,idgroup,datestart,dateend,commoncountmoney FROM "+opts.DBPayOpts+" WHERE deleted=0 AND id="+ToStr(listIDOpts->Strings[j])+" ORDER BY datestart");
  ZMySqlQuery->Active=true;

  for (i=1;i<=ZMySqlQuery->RecordCount;i++)
  {
    ZMySqlQuery->RecNo=i;
    numCurRow++;
    pTab->RowCount=numCurRow+1;

    listIDs->Add(AnsiString(ZMySqlQuery->Fields->FieldByNumber(1)->AsString.ToInt()));
    pTab->Cells[0][numCurRow]=numCurRow;
    pTab->Cells[1][numCurRow]=WCGetTitleForKeyNum(GROUPS,ZMySqlQuery->Fields->FieldByNumber(2)->AsString.ToInt());
    pTab->Cells[2][numCurRow]=GetPeriodStr(ZMySqlQuery->Fields->FieldByNumber(3)->AsString,ZMySqlQuery->Fields->FieldByNumber(4)->AsString);
    pTab->Cells[3][numCurRow]=ZMySqlQuery->Fields->FieldByNumber(5)->AsString;

    pTab->Refresh();
  }
}
  delete listIDOpts;
  delete listIDStud;

  StrGridOptsClick(StrGridOpts);
}
Exemple #13
0
//执行任务
bool __fastcall BeginJob(
    int JobMode,              //工作模式.1:本地文件模式;2:FTP文件模式
    AnsiString ListFileName,  //列表文件名
    AnsiString BillName,      //话单类型名称
    AnsiString DBName,        //数据库连接名
    AnsiString TableName,     //表名
    AnsiString LogFileName,   //日志文件名
    AnsiString TempPath,      //临时目录
    bool TransFieldValue,     //是否对字段值进行翻译
    int  MaxError,            //导入时允许的最大错误数
    bool VerifyFile,          //是否对文件进行格式检查
    AnsiString FTPServer,     //已配置好的FTP服务器名称,FTP文件模式
    AnsiString DirList,       //取文件的目录列表
    int FTPRetryCount         //列FTP文件时允许的最大重试次数
    )
{
  SaveLog(("开始运行任务."\
          "\n话单类型:" + BillName +
          "\n数据库连接:" + DBName +
          "\n导入到表:" + TableName +
          "\n日志文件:" + LogFileName +
          "\n导入数据库允许的最大错误数:" + IntToStr(MaxError) + "\n"
          "\n临时文件放置在:" + TempPath + "驱动器\n"
          ).c_str());
  if(JobMode == 1)
  {
    SaveLog(("话单文件列表是" + ListFileName + ".\n").c_str());
  }
  else if(JobMode == 2)
  {
    SaveLog(("搜索目录列表是" + DirList + "\n" +
      "FTP服务器:" + FTPServer).c_str());
  }  
  bool Result = false;
  frmMain     = NULL;
  TStringList * FileList = NULL;
  TIdFTP      * IdFTP    = NULL;
  try
  {
    frmMain = new TfrmMain(Application);
    if(TempPath != "")
    {
      if(!DirectoryExists(TempPath) && !CreateDir(TempPath))
        SaveLog(("指定的临时文件夹无效,已改为使用默认的临时文件夹:" + frmMain->TempDirectory + "\n").c_str());
      else
      {
        if(TempPath.SubString(TempPath.Length(),1) != "\\")
          TempPath = TempPath + "\\";
        frmMain->TempDirectory = TempPath;
      }
    }
    if(!frmMain->DBConfig->IsDBNameExists(DBName))
      throw new Exception("在配置文件中找不到" + DBName + "的配置信息");
    frmExportToDB = new TfrmExportToDB(NULL);
    frmExportToDB->txtDBServer->Text = frmMain->DBConfig->GetDBAttributeValue(DBName,"Server");
    if(frmExportToDB->txtDBServer->Text == "")
      throw new Exception("没有为" + DBName + "配置服务器地址");
    frmExportToDB->cbxDBType->ItemIndex =
      frmExportToDB->cbxDBType->Items->IndexOf(
        frmMain->DBConfig->GetDBAttributeValue(DBName,"DBType"));
    if(frmExportToDB->cbxDBType->ItemIndex < 0)
    {
      throw new Exception("为" + DBName + "配置的数据库类型不正确");
    }
    FileList = new TStringList;
    if(JobMode == 1)
    {
      FileList->LoadFromFile(ListFileName);
      for(int n = FileList->Count - 1;n > -1;n--)
      {
        if(FileList->Strings[n] == "")
          FileList->Delete(n);
      }
    }
    else  //FTP模式
    {
      if(!frmMain->FTPConfig->IsFTPNameExists(FTPServer))
      {
        throw new Exception("在FTP配置文件中找不到指定的FTP服务器");
      }
      IdFTP = new TIdFTP(NULL);
      IdFTP->Host = frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"Server");
      try
      {
        IdFTP->Port = StrToInt(frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"Port"));
      }
      catch(...)
      {
        IdFTP->Port = 21;
      }
      IdFTP->Username = frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"UserName");
      IdFTP->Password = frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"Password",true);
      IdFTP->Passive  = frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"Mode").UpperCase() == "PASV";
      AnsiString FTPString  = "ftp://" +
        frmMain->FTPConfig->EncryFTPString(IdFTP->Username) + ":" +
        frmMain->FTPConfig->EncryFTPString(IdFTP->Password) + "@" + IdFTP->Host + ":" + IntToStr(IdFTP->Port);
      AnsiString PasvString;
      if(IdFTP->Passive)
        PasvString = "|PASV|";
      else
        PasvString = "||";
      int ErrCount = 0;
      while(true)
      {
        AnsiString Status;
        TStringList * FTPDirList  = new TStringList;
        AnsiString CurFTPPath     = "";
        AnsiString SearchFileName = "";
        try
        {
          if(IdFTP->Connected())
            IdFTP->Disconnect();
          Status = "连接FTP服务器" + IdFTP->Host;
          SaveLog((Status + "\n").c_str());
          IdFTP->Connect(true,FTPTimeout);
          Status = "获取FTP文件列表";
          SaveLog((Status + "\n").c_str());
          FTPDirList->Clear();
          FTPDirList->LoadFromFile(DirList);
          AnsiString FileName;
          for(int n = FTPDirList->Count - 1;n > -1;n--)
          {
            if(FTPDirList->Strings[n] == "")
              FTPDirList->Delete(n);
          }
          FileList->Clear();
          if(FTPDirList->Count == 0)
            FTPDirList->Add("");
          for(int n = 0;n < FTPDirList->Count;n++)
          {
            CurFTPPath = FTPDirList->Strings[n];            
            if(CurFTPPath == "")
            {
              CurFTPPath     = "/";
              SearchFileName = "";
            }
            else
            {
              int pos = StrRScan(CurFTPPath.c_str(),"/",-1);
              if(pos > -1)
              {
                SearchFileName = CurFTPPath.SubString(pos + 2,CurFTPPath.Length() - pos - 1);
                CurFTPPath     = CurFTPPath.SubString(1,pos + 1);
              }
              else
              {
                SaveLog(("搜索路径[" + CurFTPPath + "]不正确,已跳过该行\n").c_str());
                continue;
              }
            }
            Status = "获取文件列表" + CurFTPPath + SearchFileName;
            try
            {
              IdFTP->ChangeDir(CurFTPPath);
            }
            catch(Exception * E)
            {
              if(E->Message.Pos("No such file or directory.") > 0)
              {
                SaveLog(("搜索路径[" + CurFTPPath + "]不正确,服务器上没有找到该目录,已放弃对该目录的搜索\n").c_str());
                continue; 
              }
              else
              {
                throw new Exception(E->Message);
              }
            }
            if(SearchFileName != "" && SearchFileName.Pos("*") < 1 && SearchFileName.Pos("?") < 1)
            {
              //检查SearchFileName在FTP上是否是目录
              IdFTP->List(NULL,"",true);
              for(int k = 0;k < IdFTP->DirectoryListing->Count;k++)
              {
                FileName = IdFTP->DirectoryListing->Items[k]->FileName;
                if(FileName == "." || FileName == "..")
                  continue;
                if(FileName.LowerCase() == SearchFileName.LowerCase() && IdFTP->DirectoryListing->Items[k]->ItemType == ditDirectory) //SearchFileName是一个目录
                {
                  CurFTPPath = CurFTPPath + FileName + "/";
                  SearchFileName = "";
                  IdFTP->ChangeDir(CurFTPPath);
                  break;
                }
              }
            }
            IdFTP->List(NULL,SearchFileName,true);
            int FileCount = 0;
            for(int k = 0;k < IdFTP->DirectoryListing->Count;k++)
            {
              FileName = IdFTP->DirectoryListing->Items[k]->FileName;
              if(FileName == "." || FileName == ".." || IdFTP->DirectoryListing->Items[k]->ItemType == ditDirectory) //目录
                continue;
              FileList->Add(FTPString + CurFTPPath + PasvString + FileName);
              ++FileCount;
            }
            SaveLog((CurFTPPath + SearchFileName + "  找到" + IntToStr(FileCount) + "个文件").c_str());
          }
          delete IdFTP;
          IdFTP = NULL;
          delete FTPDirList;
          FTPDirList = NULL;
          SaveLog(("共搜索到" + IntToStr(FileList->Count) + "个文件.\n").c_str());
          for(int n = 0;n < FileList->Count;n++)
          {
            SaveLog(("找到文件:" + GetFullFTPFileName(FileList->Strings[n])).c_str());
          }
          break;
        }
        catch(Exception * E)
        {
          ++ErrCount;
          if((FTPRetryCount > 0 && ErrCount > FTPRetryCount) || (FTPRetryCount == 0 && ErrCount > 1000))
          {
            if(FTPDirList != NULL)
            {
              delete FTPDirList;
              FTPDirList = NULL;
            }
            ProcessExitCode = 5;
            throw new Exception(Status + "发生错误:" + E->Message);
          }
          else
          {
            SaveLog((Status + "发生错误:" + E->Message + "  重试" + IntToStr(ErrCount) + "\n").c_str());
          }
        }
      }
    }
    frmExportToDB->txtDBUserName->Text = frmMain->DBConfig->GetDBAttributeValue(DBName,"UserName");
    frmExportToDB->txtDBPassword->Text = frmMain->DBConfig->GetDBAttributeValue(DBName,"Password",true);
    frmExportToDB->cbxDataBases->Items->Add(frmMain->DBConfig->GetDBAttributeValue(DBName,"DataBase"));
    frmExportToDB->cbxDataBases->ItemIndex = 0;
    frmExportToDB->txtDBPort->Text = frmMain->DBConfig->GetDBAttributeValue(DBName,"Port");
    frmExportToDB->txtTableName->Text = TableName;
    frmExportToDB->txtMaxError->Text = IntToStr(MaxError);
    frmExportToDB->cbxTransFieldValue->Checked = TransFieldValue;
    if(frmExportToDB->LoadFileList(FileList,BillName))
    {
      if(SlentMode)
      {
        if(!frmExportToDB->ManualStartJob())
        {
          if(frmExportToDB->TermByUser)
          {
            ProcessExitCode = 98;
            throw new Exception("任务被用户中止");
          }
          else
          {
            throw new Exception("发生错误");
          }
        }
      }
      else
      {
        frmExportToDB->btnStartClick(NULL);
        frmExportToDB->ShowModal();
      }
      Result = true;
    }
    else
    {
      ProcessExitCode = 5;
      throw new Exception("加载文件列表失败");
    }
  }
  catch(Exception * E)
  {
    ShowErrorMessage(Application->Handle,(E->Message).c_str(),false,99);
    if(ProcessExitCode == 0)
      ProcessExitCode = 99;
    Result = false;
  }
  SaveLog("*****************任务结束.*******************");
  if(IdFTP != NULL)
  {
    delete IdFTP;
    IdFTP = NULL;
  }
  if(FileList != NULL)
  {
    delete FileList;
    FileList = NULL;
  }
  if(frmExportToDB != NULL)
  {
    delete frmExportToDB;
    frmExportToDB = NULL;
  }
  if(frmMain != NULL)
  {
    delete frmMain;
    frmMain = NULL;
  }
  return Result;
}
Exemple #14
0
// ---------------------------------------------------------------------------
TClientOrder::TClientOrder() {
	listOfGoods = new TList();

	sgZak = fFindOrders->sgo;
	sgGoo = fFindOrders->sgg;

	changed = fFindOrders->cbZakazChanged;

	clmanagers = fFindOrders->frSpisokManagers->CheckListBox1;
	clnotes = fFindOrders->frSpisokNotes->CheckListBox1;

	int row = sgZak->Row;

	UnicodeString beginDate, endDate, orderdata;

	beginDate = FormatDateTime("yyyymmdd000000",
		fFindOrders->DateTimePicker1->DateTime);
	endDate = FormatDateTime("yyyymmdd235959",
		fFindOrders->DateTimePicker2->DateTime);

	// здесь надо вызвать функцию сервера "Найти заказ по точному номеру"

	number = sgZak->Cells[0][row]; // номер то нужен!!! из строки

	orderdata = ClientModule1->ServerMethods1Client->FindOrders(beginDate,
		endDate, number);

	slo = new TStringList();
	slo->StrictDelimiter = true;
	slo->Delimiter = '|';
	slo->DelimitedText = orderdata;

	date = slo->Strings[1];
	vntr = slo->Strings[2];
	agent = slo->Strings[3];
	otvets = slo->Strings[4];
	managers = slo->Strings[5];
	sms = slo->Strings[6];
	mobile = slo->Strings[7];
	notes = slo->Strings[8];
	typePriceKod = slo->Strings[9];

	slo->Clear();
	String s = "Номер заказа=" + number;
	s += "|Дата=" + date;
	s += "|Внутренний заказ=" + vntr;
	s += "|Контрагент=" + agent;
	s += "|Ответственный=" + otvets;
	s += "|Менеджеры=" + managers;
	s += "|КолвоSMS=" + sms;
	s += "|Мобтел=" + mobile;
	s += "|Записки=" + notes;
	s += "|КодТипаЦен=" + typePriceKod;
	slo->DelimitedText = s;

	// Получаем строку с информацией о товарных строках
	goodsarray = ClientModule1->ServerMethods1Client->FindGoods(number,
		beginDate, endDate);
	TStringList *sl = fFindOrders->sl;

	sl->Clear();
	sl->DelimitedText = goodsarray;

	sgGoo->ColCount = slg->Count;

	int Ccount = slg->Count;
	beginCountOfGoods = (sl->Count / Ccount);

	// заполняем поля товарных строк
	for (int i = 0, j = 0; i < beginCountOfGoods; i++) {
		TClientGood *g = new TClientGood(); // создаем товарную строку
		TStringList *s = new TStringList(); // создаем список строк

		// формируем список строк товарной строки из большого стринглиста
		for (int k = 0; k < Ccount; k++)
			s->Add(sl->Strings[j++]);

		g->DataIn(s); // вносим данные в объект товарной строки
		listOfGoods->Add(g); // добавляем товарную строку в список заказа
		g->index = i;
	}

	// сохраняем позицию последней товарной строки
	fFindOrders->StartRemakeRow = listOfGoods->Count + 1;
};