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

Снова подымаю тот же вопрос: можно ли как то передавать в Reports информацию о текущих единицах измерения (га. или кв.м), не обращая внимания на дескриптора и не пытаясь вычислить программно (если и вычислить, то какой нибудь способ отличный от вышеуказанного)?

И еще вопрос, уверен, что не последний:

Если в текстовом файле в папке List есть два поля, код и его значение. В дигиталс заполняется код, а как в репортс вывести значение этого кода?

Попробуй так: [PARAM(‘SZ’,1,1)]

Можете анализировать значения площади, допустим меньше 100 значит гектары, больше 100 значит кв.м. Нельзя будет использовать на участках больше 100 га или меньше 100кв.м. Но корявенький какой-то вариант получается, чем Вас предыдущий не устраивает?

SEF(Param(ID1111),‘filename.txt’)
где 1111 - ID параметра в котором содержится код

Всем привет!

И еще пару вопросов:

  1. У меня в Дилянке есть несколько Угидь. Мне нужно в репортс передать коды этих Угидь через запятую, как такое реализовать?
  2. У Угидь есть Обмеження, иногда Обмеження ставиться на всю Дилянку, иногда на одне Угиддя, иногда на несколько Угидь. Как мне вытащить в Репортс эти Обмеження. В случае, если оно принадлежит Дилянке, то понятно. Как это сделать, если Обмеження есть в Угидях?

Надеюсь, что понятно описал :slight_smile:

Почти такой же вопрос я задавал. Вот ответ Формирорвание отчета в Reports - #137 від Dmitry_Zolotar
Все работает!

Да, вопрос правда похож и с Сумижниками у меня так и работает, а вот ответ 2) PARAM(‘LS’,N,I) , где N - номер участка /от 1 до OBJCOUNT/, I - номер угодья /от 1 до CHILDCOUNT(N) / мне немного не понятен. PARAM(‘LS’,N,I) где вводить? Что ставить на место N и I? Можно живой пример?

Вариант требует небольшой доработки, выкладываю чтоб Вы попробовали.
Переменная TXAD формируется в зависимости от того совпадают ли адреса участков, ее значение присутствует практически на каждой странице документации. Попробуйте разные варианты (с одинаковыми адресами, с разными) и киньте на zolotar@vingeo.com как должно(может) выглядеть решение местного совета в случае множества участков
TD_priv_2d.zip (16.5 KB)

Работающие примеры в папке Digitals\Templates найдёте, посмотрите шаблоны для разных режимов (одиночный, пофамильный и групповой). Особенно актуальными для понимания окажутся функции GetParcelByCV и GetAreaByCN в скрипте экспликации пофамильного режима.
На вопрос “где вводить?” нет короткого ответа. PARAM( , , ) - одна из многих функций, которые можно использовать в скрипте или в тексте мемо, например.

Спасибо за подсказку. И правда, в файле примера отчета Vityag.fr3 есть ответ на вопрос, как вытащить обмеження и сервитуты с угидь. Они даже коментами такими помечены:

Проверка есть ли обмеження в участке. Если да, то выводим строку с данными обмеження по участку. Если нет, то проверяем, есть ли хотя бы в одном угодии обмеження. Если есть хоть в одном, выводим строку с данными по этому угодию


Проверка есть ли сервитут в участке. Если да, то выводим строку с данными сервитут по участку. Если нет, то проверяем, есть ли хотя бы в одном угодии сервитут. Если есть хоть в одном, выводим строку с данными по этому угодию.

Привожу их здесь, может понадобится кому, да и при поиске найти можно будет! :wink:

Хочу в Репортсі прописати видалення послідовності символів ,-

Var adresa:string;
i:integer;
begin
for i:=1 to Length(adresa) do
if adresa[i]=‘-’ then adresa:=Delete(adresa,i-1,2)
end

Зявляється повідомлення про несумісність типів в функції Delete.

Var adresa:string;
i:integer;
begin
for i:=1 to Length(adresa) do
if adresa[i]=‘-’ then Delete(adresa,i-1,2)
end

Погодите, господа..
С таким кодом вы рискуете получить “out of bounds”?! Длина строки задается в цикле, а в процессе явно будет уменьшаться..
Честно, не проверял.:slight_smile:

Удаляя символы из строки, Вы уменьшаете ее длину, при этом кол-во итераций в цикле задано в начале и остается неизменным
На какой-то итерации получите ситуацию когда i уже больше Length(adresa), цикл при этом не завершится. Да и значения вроде “Белгород-Днестровский” станут “БелгороДнестровский”
Попробуйте что-то вроде:
var adresa:String;
ip:Integer;
begin

adresa:=Param(‘..’);
ip:=Pos(‘,-’,adresa);
while ip>0 do
begin
adresa:=Copy(adresa,1,ip-1)+Copy(adresa,ip+2,Length(adresa)-2);
ip:=Pos(‘,-’,adresa);
end;

end.

Этот код не удалит первый минус :smiley:

Тем не менее и без проверки замечание справедливое. При вызове Delete длина строки уменьшается и символы смещаются влево.

Кроме того, а что если строка будет начинаться с “-”?

Учитывая вышесказанное предлагаю корректный и более производительный вариант:

function DeleteMinus(s:string):string;
var n: integer;
begin
if s[1]=‘-’ then Delete(s,1,1);
repeat
n:=Pos(‘,-’,s);
if n>0 then Delete(s,n,2);
until (n=0) or (Length(s)=0);
Result:=s;
end;

Дякую всім, особливо Антону Горпиничу :exclamation: . Я думав він в основному по Геодезії, а виявляється і Репортс теж його коньок.

И все же первый минус надо удалять после остальных и вместе с запятой после него
function DeleteMinus(s:string):string;
var n: integer;
begin
repeat
n:=Pos(‘,-’,s);
if n>0 then Delete(s,n,2);
until (n=0) or (Length(s)=0);
if s[1]=‘-’ then if Length(s)>1 then Delete(s,1,2) else s:=‘’;
Result:=s;
end;

Не конёк, а детище

Ув. разработчики, подскажите пожалуйста, возможно такое что бы Репорт сам выставлял длины, номера точек и площадь когда загружает растр? СПС.