Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 28 мар 2024 17:10

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 300 ]  На страницу Пред.  1 ... 16, 17, 18, 19, 20
Автор Сообщение
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 02 мар 2018 12:53 
Гуру
Гуру

Зарегистрирован:
27 июл 2011 08:37
Сообщения: 172
Откуда: м.Рівне
Доброго дня. Підкажіть, що не так в коді.
//Місце розташування земельної ділянки
ParcelLocation:='';
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelLocation/Urban')
then begin
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress')
then begin
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement')
then ParcelLocation:=ParcelLocation+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement');
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType')
and IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName')
then begin
ParcelLocation:=ParcelLocation+', '+sef(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType'),'XMLToIn4StreetTypes.txt')+
XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName');
if ParcelLocation<>''
then begin
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building')
then ParcelLocation:=ParcelLocation+', '+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building');
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block')
then ParcelLocation:=ParcelLocation+', корп.'+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block');
end;
end;
end;
AdresaZD:=ParcelLocation+' '+RayonROP+' '+RegionROP;
AdresaZD1:='в '+AdresaZD;
AdresaZD2:=Region+', '+Rayon+', '+ParcelLocation;
AdresaZDTIT:='в '+ParcelLocation+#13#10+RayonROP+#13#10+RegionROP;
end
else begin
ParcelLocation:='на території '+radarop+'ради (за межами населених пунктів) '+RayonROP+' '+RegionROP;
AdresaZD:=ParcelLocation;
AdresaZD1:=ParcelLocation;
AdresaZD2:=Region+', '+Rayon+', '+Rada+' рада (за межами населених пунктів)';
AdresaZDTIT:='на території '+radarop+'ради '+#13#10+'(за межами населених пунктів)'+#13#10+RayonROP+#13#10+RegionROP;
end;


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 02 мар 2018 13:35 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
shyrko писал(а):
Доброго дня. Підкажіть, що не так в коді.

яка помилка, який результат очiкуєте? що пiд вiдладчиком?
Пiсля перевiрки /ParcelAddress Ви виходите, хоча параметер /Settlement є в iншому тезi, вищому. Ну i т.д.

Код:
//Місце розташування земельної ділянки
XML573Root:=IIF(IsNodeExists('InfoPart'),'','EmbeddedXML/UkrainianCadastralExchangeFile/');
S:='Setup.ini';
cadnum:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralZoneNumber');   
RegionID   := Copy(cadnum,1,2);
RayonID    := Copy(cadnum,1,5);
//Область
Region     := Trim(File(S,'RepНазва(Область)'));
RegionROP  := Trim(File(S,'RepНазваР(Область)'));                           
//Район                     
Rayon      := Trim(File(S,'RepНазва(Район)'));
RayonROP   := Trim(File(S,'RepНазваР(Район)'));                           
// Рада
Rada       := Trim(File(S,'RepНазва(Сільрада)'));
   
ParcelLocation:='';
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelLocation/Urban') then begin
   if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement') then
      ParcelLocation:=ParcelLocation+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement');
   if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress') then begin
      if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType')
         and IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName') then begin
            ParcelLocation:=ParcelLocation+', '+sef(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType'),'XMLToIn4StreetTypes.txt')+
               XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName');
            if ParcelLocation<>'' then begin
               if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building') then
                  ParcelLocation:=ParcelLocation+', '+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building');
                  if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block') then
                     ParcelLocation:=ParcelLocation+', корп.'+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block');
            end;
      end;
   end;
   AdresaZD:=ParcelLocation+' '+RayonROP+' '+RegionROP;
   AdresaZD1:='в '+AdresaZD;
   AdresaZD2:=Region+', '+Rayon+', '+ParcelLocation;
   AdresaZDTIT:='в '+ParcelLocation+#13#10+RayonROP+#13#10+RegionROP;
end else begin
   ParcelLocation:='на території '+radarop+'ради (за межами населених пунктів) '+RayonROP+' '+RegionROP;
   AdresaZD:=ParcelLocation;
   AdresaZD1:=ParcelLocation;
   AdresaZD2:=Region+', '+Rayon+', '+Rada+' рада (за межами населених пунктів)';
   AdresaZDTIT:='на території '+radarop+'ради '+#13#10+'(за межами населених пунктів)'+#13#10+RayonROP+#13#10+RegionROP;
end;

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 26 июл 2018 17:07 
Эксперт
Эксперт

Зарегистрирован:
13 дек 2007 18:43
Сообщения: 58
Откуда: м.Полонне
Bondarets Alexander писал(а):
Цитата:
Цель сделать смежников так:
1. Вася Пупкин
2. Петя Пупкин
3. Сільська рада
но иногда смежники дублируются, например рада может быть в двух и больше и получается вот так
1. Вася Пупкин
2. Петя Пупкин
3. Сільська рада
4. Сільська рада
а надо чтоб если смежник дублируется он не записывался

Переписал вашу функцию, с учетом возможного дублирования. Убрал переменную Delimiter - она там не нужна.
Код:
function PrepareXMLSmejList: string;
var
  I, N, FoundI: Integer;
  PPath, NbrPath, Nbr: string;
  List: TStringList;       
begin
  Result:='';

  // путь к блоку смежных участков                                                                                                     
  PPath:='EmbeddedXML/UkrainianCadastralExchangeFile/InfoPart/CadastralZoneInfo/' +
    'CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/AdjacentUnits';

  // кол-во смежников                                           
  N:=NodesCount(PPath,'AdjacentUnitInfo');
  if N<1 then Exit;
   
  List := TStringList.Create;
  try
   
    // сначала получаем названия смежников и заносим их в список
    for I:=1 to N do
    begin
     
      // путь к текущему смежнику                                                                 
      NbrPath := PPath + '/AdjacentUnitInfo['+IntToStr(I)+']/Proprietor'; 
         
      if IsNodeExists(NbrPath + '/NaturalPerson') then
        // физлицо                                         
        Nbr := XPath(NbrPath + '/NaturalPerson/FullName/LastName') + ' ' +
               XPath(NbrPath + '/NaturalPerson/FullName/FirstName') + ' ' +
               XPath(NbrPath + '/NaturalPerson/FullName/MiddleName') else
        // юрлицо
        Nbr := XPath(NbrPath + '/LegalEntity/Name');

      // проверяем или такой смежник уже есть в списке
      // и добавляем только новых
      // сравнение строк с учетом регистра!
      if not List.Find(Nbr, FoundI) then
        List.Add(Nbr);
         
    end;

    // формируем строку смежников
    for I := 0 to List.Count -1 do
    begin
      // если это не первая строка, добавляем перенос строки
      if Result <> '' then Result := Result + #13#10;
      Result := Result + IntToStr(I + 1) + '. ' + List[I];                                                                       
    end;             
     
  finally
    List.Free;                                   
  end;             
   
end;

Разбил формирование списка смежников на 2 этапа. На первом в список строк заносятся смежники по одному. При добавлении в список выполняется проверка на наличие данного смежника в списке. На втором этапе из строкового списка формируется результирующая строка.

Если что-то непонятно, спрашивайте.


Все таки в цьому коді дублює Natural person. Підкажіть де підправити.
Дякую.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 26 июл 2018 17:52 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
Суміжники мабуть відрізняються, код нормальний

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 26 июл 2018 18:21 
Эксперт
Эксперт

Зарегистрирован:
13 дек 2007 18:43
Сообщения: 58
Откуда: м.Полонне
Dmitry_Zolotar писал(а):
Суміжники мабуть відрізняються, код нормальний


Найшов причину, юридична особа повинна бути з великої букви.

Дякую.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 12 авг 2018 12:00 
Специалист
Специалист

Зарегистрирован:
18 июл 2011 09:16
Сообщения: 43
Здравствуйте. Помогите пожалуйста с кодом. Есть у меня шаблон в репортсе. Делал я им техническую документацию на физ лиц и горя не знал, но тут пришло время делать на юр. лиц, а шаблон тупо зависает намертво, в отладке показывает ошибку на (картинка вложенная). Помогите пожалуйста, уже волосы дыбом стают, а понять так и не могу,чего хочет этот код?


Вложения:
.jpg [139.14 Кб]
Скачиваний: 0
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 13 авг 2018 09:22 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
Vaho писал(а):
Здравствуйте. Помогите пожалуйста с кодом. Есть у меня шаблон в репортсе. Делал я им техническую документацию на физ лиц и горя не знал, но тут пришло время делать на юр. лиц, а шаблон тупо зависает намертво, в отладке показывает ошибку на (картинка вложенная). Помогите пожалуйста, уже волосы дыбом стают, а понять так и не могу,чего хочет этот код?

Без шаблона это сделать проблематично. Все что увидел - отсутствие слеша в выражении
XML573Root := 'EmbeddedXML/UkrainianCadastralExchangeFile/';
Все XPath-запросы с использованием этой переменной могут быть некорректны. Но и к зависанию не должны приводить.
Первое условие можно заменить такой строкой.
XML573Root:=IIF(IsNodeExists('InfoPart'),'','EmbeddedXML/UkrainianCadastralExchangeFile/');

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 02 окт 2018 11:09 
Гуру
Гуру

Зарегистрирован:
27 июл 2011 08:37
Сообщения: 172
Откуда: м.Рівне
Доброго дня! Необхідно отримати список співвласників у родовому, давальному і т.д. відмінках. Чи можна це реалізувати використовуючи одну функцію, чи для кожного відмінка треба використовувати окрему функцію?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 16 авг 2019 23:01 
Эксперт
Эксперт

Зарегистрирован:
29 окт 2012 12:15
Сообщения: 99
Откуда: Запорізька область, м. Кам'янка-Дніпровська
Підкажіть, будь ласка, як з xml витягти цю інфу в репорт [StrToInt(PARAM(-8,0))-1]. Кількість точок ділянки.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 17 авг 2019 09:22 
Эксперт
Эксперт

Зарегистрирован:
09 дек 2015 12:30
Сообщения: 97
Откуда: Закарпатська область
ТОВ Аспект писал(а):
Підкажіть, будь ласка, як з xml витягти цю інфу в репорт [StrToInt(PARAM(-8,0))-1]. Кількість точок ділянки.

Можна скриптом типу:
$Papka=c:\Progra~2\Digitals
@Map.DeselectAll
@Map.SelectLayer id70005
$EO=@Map.SelectedObject
$Point=@Map.Object[$EO].Count
$Point=$Point-1
@Text[1].Add Точки=$Point
@Text[1].Save $Papka\Templates\Info.ini

В репорті в коді прописати (добавити) наступні рядки:

Point:String;
...
Point:=File('Info.ini','Точки');

А в тексті шаблону в потрібному місці вставити таку перемінну [Point]


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 19 авг 2019 01:56 
Эксперт
Эксперт

Зарегистрирован:
29 окт 2012 12:15
Сообщения: 99
Откуда: Запорізька область, м. Кам'янка-Дніпровська
Дякую. Ну а прописом простіше мабуть так
$Point=@Map.Object[$EO].Count
$Point=$Point-1
$r=$Point
@If $r=4 then $r=чотири
@Text[1].Add Точка=$Point
@Text[1].Add прописом=$r


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 19 авг 2019 08:18 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
В шаблонах режиму Сервіс-Документи-<назва з іконкою Репортс> можна отримати кількість точок прописом якось так:
Код:
....
  N: Integer;
  ParcelMONNumber, PointsPath, PointNumberStr: String;                                                 
....
ParcelMONumber:=XPath('EmbeddedXML/UkrainianCadastralExchangeFile/InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/MapObjectNumber');
PointsPath:='Map/Objects/Object['+ParcelMONumber+']/Points/';
N:=NodesCount(PointsPath,'Point');
PointNumberStr:=NumToStr(N-1, '0', '0')+' '+Money(N-1,'точка;точки;точок');
ShowMessage('Кількість точок прописом: '+PointNumberStr);
....

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 20 авг 2019 09:24 
Эксперт
Эксперт

Зарегистрирован:
29 окт 2012 12:15
Сообщения: 99
Откуда: Запорізька область, м. Кам'янка-Дніпровська
Дякую і кількість точок PointNumber:=(N-1); і прописом


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 02 июл 2021 13:21 
Участник
Участник

Зарегистрирован:
02 июл 2021 13:16
Сообщения: 1
Добрый день. Можно в двух словах сказать что мне нужно что бы делать ТД с ХМЛ, с IN-4 когда то редактировал шаблон стандартный и нормально тянуло данные. А как быть с ХМЛ есть может какой нибуть шаблончик что бы уже на его основе посмотреть и что то для себя сделать?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 03 июл 2021 08:49 
Эксперт
Эксперт

Зарегистрирован:
29 окт 2012 12:15
Сообщения: 99
Откуда: Запорізька область, м. Кам'янка-Дніпровська
Є в сервіс документи шаблон XML Госакт, корисний приклад.


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 300 ]  На страницу Пред.  1 ... 16, 17, 18, 19, 20

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 108


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB