Формирорвание отчета в Reports

Может я что не правильно понимаю?

  • В параметре прописываю =NEIGHBORS(9) ZZ_Список суміжников, параметр добавляю в дилянку
  • В шаблоне прописываю [param(‘ZZ’)]
  • Генерирую отчет и получаю надпись NEIGHBORS(9)

Перед генерацией необходимо выполнить Сервис - Документы - какой-либо документ с таблицей смежеств. Это нужно для заполнения данного параметра.

Сорри за очепятку
NEIGHBORS[9]
Прочитайте еще и это
[url]Новые возможности программы - #4 від Alexey_Gorpynich]
З.Ы. Функция возвращает некий параметр смежников участка, для которого в последний раз генерировался документ на основе дмт-шаблона со списком смежников. Используйте в Reports.exe с учетом этой особенности, то есть пометив участок генерируйте документ, а затем только генератор отчетов, для следующего участка снова генерировать документ, затем только генератор отчетов.

Большое СПС! :smiley: А нет случайно готовых кодов что бы не мучатся с их написанием, Чтобы это выглядело так:

Від А-Б: Іванов

Я-А: Петров

(В репорте)

в тексте заменить Memo1 и ID параметра

var n,i:Integer;
    S:String;                                      
const
  CyrLetters='АБВГДЄЕЖЗІИЙКЛМНОПРСТУФХватит';
begin
  ......
  S:=Param('ID50030'); // заменить ID параметра
  n:=0;              
  repeat
    inc(n);                             
  until GetV(n,S)='';
  dec(n);
  for i:=1 to n do
    if i<>n
      then
        Memo1.Lines.Add('від '+Copy(CyrLetters,i,1)+' до '+Copy(CyrLetters,i+1,1)+'  '+GetV(i,S))    //заменить Memo1
      else                              
        Memo1.Lines.Add('від '+Copy(CyrLetters,i,1)+' до А  '+GetV(i,S)); //заменить Memo1
  ......
end.

Спасибки! :smiley: Все отлично работает!!!

Хочу заметить что в новых версиях (как минимум с 2009 года) нет необходимости предварительно использовать команду Сервис|Документы: функция Neighbors будет работать при использовании команды Сервис|Генератор отчетов.

Пробував заповнити текст в MEMO використовуючи його властивість MEMO1.memo.
MEMO1.memo:=ФФФФ
Але не можу добитись якогось результату. говорить що несумісні типи.
Про цю властивість в хелпі знайшов наступне:
property Memo : TWideStrings;
Description
Текст объекта.
Що за тип TWideStrings - не сказано.

Memo1.Memo.Clear; // очистка Memo1
Memo1.Memo.Text:=Memo2.Memo.Text; // Memo.Text - возвращает содержимое мемо (всех его строк сразу)
Memo1.Memo.Add(‘Добавление новой строки’); // добавление новой строки
Memo1.Memo.Delete(i); //удаление i-ой строки
Memo1.Memo.Count // возвращает кол-во строк в Memo
Memo1.Lines[i]:=Memo1.Lines[i-1]+‘12345’; // возвращает значение i-ой строки, строки нумеруются от 0 до Count-1
Memo1.Memo.LoadFromFile(FileName); // загрузка из файла
Memo1.Memo.SaveToFile(FileName); // запись содержимого в файл

Наберите в редакторе скрипта Memo1.Memo. и нажмите Ctrl-Пробел. Должен появиться список свойств и методов.

Дякую! Особливо за Ctrl+пробіл - корисна комбінація.

Всем привет!

Я создал в Дигиталс параметр =CLA(P[AU]) UA Адреса землевласника для того, чобы убрать -. Теперь при использовании в репортсе [PARAM(‘UA’)] адрес выводит без -, но между запятой и следующим словом нет пробела. м. Хмельницкий,вулиця Трудова,114 Как сделать так, чтобы пробел был?

var S1,S2:String;
S1:=Param(‘AU’);
S2:=‘’;
for i:=1 to Length(S1) do
if S1[i]=‘,’
then S2:=S2+', ’
else S2:=S2+S1[i];

в S2 после этого будет AU с пробелами после запятой

Спасибо за помощь! После помещения этого кода в Репортс стал получать ошибку Could not convert variant of type (Null) into type (Integer)? Что это может быть?

Вообщем получил ответ по ICQ, может кому-то пригодится. Должно быть так:

var S1,S2:String;
S1:=Param(‘AU’);
S2:=‘’;
for i:=1 to Length(S1) do
if S1[i]=‘,’
then S2:=S2+', ’
else S2:=S2+S1[i];

в S2 после этого будет AU с пробелами после запятой

ОК! СПС! Воспользуюсь.

Лучше используйте StringPart для получения частей строки разделенной разделителем, а из частей можно слепить что угодно, заодно проверив не пустые ли они.

можно синтаксис? не встречал описание функции в репортсе…

Адрес владельца:

AdresaVL:=‘’;
AU:=Param(‘AU’);
if GetV(3,AU)<>‘-’
then AdresaVL:=GetV(3,AU)+’ обл., ‘;
if GetV(4,AU)<>’-’
then AdresaVL:=AdresaVL+GetV(4,AU)+’ район, ‘;
if GetV(5,AU)<>’-’
then AdresaVL:=AdresaVL+GetV(5,AU)+‘, ‘;
if GetV(6,AU)<>’-’
then AdresaVL:=AdresaVL+GetV(6,AU)+‘, ‘;
if GetV(7,AU)<>’-’
then AdresaVL:=AdresaVL+‘д.№ ‘+GetV(7,AU)+’, ‘;
if GetV(8,AU)<>’-’
then AdresaVL:=AdresaVL+‘корпус № ‘+GetV(8,AU)+’, ‘;
if GetV(9,AU)<>’-’
then AdresaVL:=AdresaVL+'кв.№ ‘+GetV(9,AU)+’, ';

Только немного длинноват.

StringPart(S:String; Part:Integer; Delimeter:Char):String
Функция возвращает Part часть строки S, разделенной разделителем Delimeter.

Это описание можно увидеть если выделить эту функцию в окне Список переменных на закладке Функции в категории Digitals.