Pascal

В рамках этого раздела будут приведены примеры скриптов (в синтаксисе Pascal), ориентированных на выполнение в среде программы spFlexiCalc.


Запуск системы 1С:Предприятие (в качестве OLE-Automation сервера) и соединение с локальной информационной базой, размещенной в файле C:\1C8.db\HomeLib.

#language PascalScript

Var
  v1C : variant;
  s1CResOpen : integer;
BEGIN
  v1C := CreateOleObject('V82.Application');
  if VariantOk(v1C) then begin
     s1CResOpen:=v1C.Connect('File="C:\1C8.db\HomeLib";Usr="Admin";Pwd="0";');
     v1C.Visible:=true;
  end;
END.

Запуск MS Excel (в качестве OLE-Automation сервера) и запись различных данных в ячейки [1,1], [2,2], [3,3], [4,4], [4,5] листа № 1.

#language PascalScript

Var
   Excel:variant;
   ListExcel:variant;
   V:variant;

BEGIN

  Excel:=Excel_Открыть;
  ListExcel:=Excel_Лист_ПоНомеру_Получить(Excel,1);

  Excel_Лист_Ячейка_КакСтрока_Записать(ListExcel,
                                       1,1,
                                       '2.35',
                                       false,false,false,
                                       0, clRed);

  V:=2.35;
  Excel_Лист_Ячейка_КакVariant_Записать(ListExcel,
                                       2,2,
                                       V,
                                       false,false,false,
                                       0, clBlack);

  V:=NOW;
  Excel_Лист_Ячейка_КакVariant_Записать(ListExcel,
                                       3,3,
                                       V,
                                       false,false,false,
                                       0, clBlue);

  V:=DateToStr(NOW);
  Excel_Лист_Ячейка_КакVariant_Записать(ListExcel,
                                       4,4,
                                       V,
                                       false,false,false,
                                       0, clBlue);

  V:=TimeToStr(NOW);
  Excel_Лист_Ячейка_КакVariant_Записать(ListExcel,
                                       4,5,
                                       V,
                                       false,false,false,
                                       0, clBlue);

END.

Запуск MS Word (в качестве OLE-Automation сервера), создание нового документа и запись заданного текста в активный документ.

#language PascalScript

Var
  vWord,
  vDoc,
  vRange :variant;
  ВыводимаяСтрока:string;

function Word_Документ_Абзац_Добавить(Doc:variant;
                                      YesRangeReturn:boolean=true;
                                      YesRangeGoToEnd:boolean=true) : variant;
begin
  Result:=UnAssigned;
  if VariantOk(Doc) then begin
     Result:=Doc.Paragraphs.Add;
     if YesRangeReturn then begin
        Result:=Doc.Paragraphs.Item(Doc.Paragraphs.Count).Range;
        if YesRangeGoToEnd then begin
           Result:=Doc.Range(Doc.Range.End-1,Doc.Range.End-1);
        end;
     end;
  end;
end;

BEGIN
  //Открыть MS Word (как OLE Automation server) и получить на него ссылку
  vWord:=CreateOleObject('Word.Application');
  //Сделать видимым главное окно <S Word
  vWord.Visible:=true;
  //Создать новый документ и получить на него ссылку
  vDoc:=vWord.Documents.Add;

  //Текст, выводимый в MS Word
  ВыводимаяСтрока:='Улыбнись!'+#10+'Забудь про все проблемы...';

  //------------------------
  //Добавить новый абзац в созданный документ
  vRange:=Word_Документ_Абзац_Добавить(vDoc);
  //Вывести текст в этот абзац
  vRange.InsertAfter(ВыводимаяСтрока);
  //------------------------
END.

Получить ID даты, заданной в виде строки (в формате ДД.ММ.ГГГГ).
В данном примере:
Дата = ‘11.09.2015’, ID=20150911;
Дата = ‘1.3.2021’, ID=20210301.

#language PascalScript

function Дата_Вычислить_ID(sDate:string):integer;
Var
  S:string;
  Da,Mo,Ye:integer;
begin
  Result:=0;
  //sDate - дата, заданная в виде строки
  //Получить первое слово из строки (День даты)
  S:=trim(Строка_Слово_Получить(sDate,1, '.', true));
  Da := Строка_ВЦелоеЧисло(S,0);
  //Получить второе слово из строки (Месяц даты)
  S:=trim(Строка_Слово_Получить(sDate,2, '.', true));
  Mo := Строка_ВЦелоеЧисло(S,0);
  //Получить третье слово из строки (Год даты)
  S:=trim(Строка_Слово_Получить(sDate,3, '.', true));
  Ye := Строка_ВЦелоеЧисло(S,0);
  //Вычислить ID даты
  Result:=Ye*10000 + Mo*100 + Da;
end;

Var
  Дата_Значение:string;
  Дата_ID:integer;

BEGIN

  Дата_Значение := '11.09.2015';
  Дата_ID := Дата_Вычислить_ID(Дата_Значение);
  ShowMessage('Дата: '+Дата_Значение+';  ID='+IntToStr(Дата_ID));

  Дата_Значение := '1.3.2021';
  Дата_ID := Дата_Вычислить_ID(Дата_Значение);
  ShowMessage('Дата: '+Дата_Значение+';  ID='+IntToStr(Дата_ID));

END.

Продолжение следует…