Адреса контрагентов

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ната_ша
Новичок
Сообщения: 29
Зарегистрирован: 12 сен 2007, 11:26

Адреса контрагентов

Сообщение Ната_ша »

Помогите пожалуйста! Начинаем осваивать 8.10. Кругом наступаем на грабли... Казалось бы элементарная вещь, вытащить в форму адреса юридический и почтовый. В интерфейсах все заполнено. По таблицам записи есть,а ссылка katorg.caddr пустая :-?
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

Код: Выделить всё

  KATORG.CSTATE   == KATSTATE.NREC AND
  KATORG.CCITY    == KATCITY.NREC  AND
  KATORG.NREC     == KATBANK.CORG  AND
Ната_ша
Новичок
Сообщения: 29
Зарегистрирован: 12 сен 2007, 11:26

Сообщение Ната_ша »

Извините! Мне банк дором не нужен. Мне нужна улица, дом......
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

and katorg.nrec == podrinfo.cpodr
and comp(podrinfo.INSNOMER) == addressn.nrec //юр.аддрес
and comp(PODRINFO.OKVED) == addressn1.nrec // почтовый адрес
журнализация вам поможет :)
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

вот это вот PODRINFO.OKVED ваще смешно :) кто придумал такое? хочу знать фамилие этого красавчега :)
да и вообще странно, что стандартные потоки в отчетах не несут такой важной информации, как адреса... даже кода контрагента нет обычно :(
Ната_ша
Новичок
Сообщения: 29
Зарегистрирован: 12 сен 2007, 11:26

Сообщение Ната_ша »

edward_K
Огромное спасибо! на эту таблу в журнале не обратили внимания. :)
Это ж надо было так придумать :-?
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Ната_ша
Чтобы не собирать адрес по частям, можно сделать так:

Код: Выделить всё

#include AdrFunc.vih

var addrService : Z_Staff::AddressFunc;
....
addrService.GetFullAddressInd(Comp(PodrInfo.Okved)));
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Подскажите, пожалуйста, где взять это самый AdrFunc.vih, у себя в комплекте поставки не нашла, если можно, выложите текст, плз
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Sheinina

Код: Выделить всё

/*
  г=====================================================================¬
  ¦      Н Т О  "T O P   S O F T",  А О   "Н О В Ы Й   А Т Л А Н Т"     ¦
  ¦      Проект    : ГАЛАКТИКА  (с) 2000                                ¦
  ¦      Система   : Управление персоналом                              ¦
  ¦      Версия    : 5.8, 7.1                                           ¦
  ¦      Разработал: Антонович А.К.     07/05/2002                      ¦
  ¦      Назначение: Функции работы с адресами                          ¦
  ¦      Изменения :                                                    ¦
  L=====================================================================-
*/
//  Коды типов адресов (поле ObjType)
//        3  - адрес рождения
//        4  - адрес прописки
//        2  - адрес проживания
//       55  - адрес временной регистрации
//       11  - адрес учебного заведения и предыдущего места работы

// Коды типов АТД

//      1 - страна
//      2 - область
//      3 - район
//      4 - город
//      5 - населенный пункт
//      6 - район в городе
//      7 - улица
//      20 - регион

// Точки входа в Catalogs

//    2200 - Административно-территориальное деление (аналитика)
//     -10 - Административно-территориальное деление (ГНИ)
//    2201 - справочник ОКАТО

#ifndef _AdrFunc_vih_Included
#define _AdrFunc_vih_Included

#ifdef ComponentVersion
#component "z_Staff"
#end

#doc
Функции работы с адресами
#end
ObjInterface ObjAddressFunc;

#doc
Удаляет все адреса у сотрудника psnNrec
#end
Public function DelPsnAdr(psnNrec : comp) : boolean;

#doc
Выделяет улицу из строки
#end
Public function GetStreetStr(str : string) : string;

#doc
Выделяет дом из строки
#end
Public function GetHouseStr(str : string) : string;

#doc
Выделяет корпус из строки
#end
Public function GetCorpStr(str : string) : string;

#doc
Выделяет квартиру из строки
#end
Public function GetFlatStr(str : string) : string;

#doc
Возвращает название улицы
#end
Public function GetStreetName(NRecAddress : comp) : string;

#doc
Возвращает номер дома
#end
Public function GetHouse(NRecAddress : comp) : string;

#doc
Возвращает номер корпуса
#end
Public function GetCorpus(NRecAddress : comp) : string;

#doc
Возвращает номер квартиры
#end
Public function GetFlat(NRecAddress : comp) : string;

#doc
Возвращает NRec АТД по NRec адреса
#end
Public function GetATDNRec(NRecAddress : comp) : comp;

#doc
Возвращает название текущего элемента АТД по NRec адреса
#end
Public function GetATDName(NRecAddress : comp) : string;

#doc
Формирование полного названия адм.-терр. деления
#end
Public function GetFullTerrName(NRecTerrName : comp) : string;

#doc
Функция определяет принадлежит ли территория с cNRecTerr стране с cNRecCountry
#end
Public function isThisCountry(cNRecCountry: comp; cNRecTerr: comp) : boolean;

#doc
Функция возвращает NRec страны, которой принадлежит территория с cNRecTerr
#end
Public function GetCountry(cNRecTerr: comp) : comp;

#doc
Функция возвращает название страны с адресом NRecAddressN
#end
Public function GetCountryName(NRecAddressN : comp) : string;

#doc
Функция возвращает код страны с адресом NRecAddressN
#end
Public function GetCountryCode(NRecAddressN : comp) : string;

#doc
Функция возвращает название страны  для элемента ATD с NRecATD
#end
Public function GetCountryNameATD(NRecATD : comp) : string;

#doc
Функция возвращает код страны для элемента ATD с NRecATD
#end
Public function GetCountryCodeATD(NRecATD : comp) : string;

#doc
Формирование полного адреса
#end
Public function GetFullAddress(NRecAddressN : comp) : string;

#doc
Формирование полного адреса с индексом
#end
Public function GetFullAddressInd(NRecAddressN : comp) : string;

#doc
Получение NRec адреса на указанную дату
#end
Public function GetAddressToDate(PsnNRec : comp; wType : word; seekDate : date) : comp;

#doc
Если адрес изменился за период от BegDate до EndDate,
то возвращает NRec адреса на EndDate. Если нет, то 0
#end
Public function IsChangAddress(PsnNRec : comp; wType : word; BegDate : date; EndDate : date) : comp;

#doc
Возвращает индекс адреса
#end
Public function GetAddressInd(NRecAddressN : comp) : string;

#doc
Возвращает дату начала действия этого адреса
#end
Public function GetDateBeg(NRecAddressN : comp) : Date;

#doc
Возвращает дату окончания действия этого адреса
#end
Public function GetDateEnd(NRecAddressN : comp) : Date;

#doc
Делает копию записи адреса с NRecAddressN и возвращает NRec новой записи
#end
Public function CopyAddress(NRecAddressN : comp; NRecPersons : comp; wType : WORD) : comp;

#doc
Изменяет данные адреса NRecOldAddress на данные адреса NRecNewAddress
#end
Public function UpdateAddress(NRecOldAddress : comp; NRecNewAddress : comp; wType : WORD) : boolean;

#doc
Сравнивает два адреса на наименованию с приведением строки к верхнему регистру
#end
Public function CompareAdr(NRecAdr1 : comp; NRecAdr2 : comp) : boolean;

#doc
Возвращает адрес временной регистрации
#end
Public function GetAddressRegistr(NRecPersons : comp) : comp;

#doc
Возвращает строку: улица, дом, квартира
#end
Public function GetStreet(NRecAddress : comp) : string;

#doc
Возвращает NRec населенного пункта по адресу
#end
Public function GetNRecSity(NRecAddress : comp) : comp;

#doc
Возвращает NRec вышестоящей записи для АТД или 0, если такой нет
#end
Public function GetNRecParent(NRecATD : comp) : comp;

#doc
Возвращает название элемента АТД по его NRec и типу
(если typeATD = 0 возвращается название АТД с NRec-ом NRecATD)
#end
Public function GetNameATD(NRecATD : comp; typeATD : word) : string;

#doc
Возвращает код элемента АТД по его NRec
#end
Public function GetCodeATD(NRecATD : comp) : string;

#doc
Возвращает номер тип элемента АТД
#end
Public function GetTypeATD(NRecATD : comp) : word;

#doc
Возвращает название тип элемента АТД
#end
Public function GetNameTypeATD(NRecATD : comp) : string;

#doc
Возвращает код типа элемента АТД
#end
Public function GetCodeTypeATD(NRecATD : comp; typeATD : word) : string;

#doc
Возвращает NRec типа элемента АТД
#end
Public function GetNRecTypeATD(NRecATD : comp;  typeATD : word) : comp;

#doc
Возвращает название региона
#end
Public function GetNameRegion(NRecATD : comp) : string;

#doc
Возвращает код региона
#end
Public function GetCodeRegion(NRecATD : comp) : string;

#doc
Возвращает NRec региона
#end
Public function GetNRecRegion(NRecATD : comp) : comp;

#doc
Возвращает название населенного пункта или города
#end
Public function GetNamePlace_City(NRecATD : comp) : string;

#doc
Возвращает код населенного пункта или города
#end
Public function GetCodePlace_City(NRecATD : comp) : string;

#doc
Возвращает код населенного пункта или города
#end
Public function GetNRecPlace_City(NRecATD : comp) : comp;

#doc
Возвращает название уровня
#end
Public function GetATDNameLevel(NRecATD : comp; level : word) : string;

#doc
Возвращает код уровня
#end
Public function GetATDCodeLevel(NRecATD : comp; level : word) : string;

#doc
Возвращает NRec уровня
#end
Public function GetATDNRecLevel(NRecATD : comp; level : word) : comp;

#doc
Возвращает сокращеное наименование элемента АТД (например Аобл) (не реализовано)
#end
Public function GetSocrName(NRecATD : comp) : string;

#doc
Возвращает полное название сокращеного наименования элемента АТД (например Автономная область) (не реализовано)
#end
Public function GetFullSocrName(NRecATD : comp) : string;

#doc
Возвращает почтовый индекс из базы ГНИ для адреса NRecAddress
#end
Public function GetPostZipGni(NRecAddress : comp) : string;

// перенесенные из Adres.vpp

#doc
Данная функция должна выполнять следующие:
если детали адреса, такие как район, город содержат
сокращение(д./г./р-н ...) их надобно убрать!!!
#end
Public Function ClearShortNamesOfStreetDetail(_Detail : string; var shortn : string) : string;

#doc
#end
Public Function MakeRBPFDateFormat(_dat : date):string;

#doc
#end
Public Function MyPos(ObrStr : String; sub : string):integer;

#doc
#end
Public procedure ProcCity_N(S: string; PrizObr: word; var city: string; var naspunct: string);

#doc
#end
Public function IsCity(S: string; var S1: string): boolean;

#doc
#end
Public Function CutRegionDetails(RCityAndRegion : String;var RObl : string;
                                                  var Rraion:string;
                                                  var RCity : string): boolean;

#doc
#end
Public Function CutStreetDetails(Street : String): string;

#doc
Возвращает все детали для улицы </brief>
  ПАРАМЕТРЫ :
 - FStreet - адрес(точнее улица дом и всякое такое...)
   переменные, в которую будет помещаться выходные :
 - OStreet   название улицы;
 - ODom      номер дома;
 - Okorpus   номер корпуса;
 - OKvart    номер квартиры;
#end
Public Procedure GetAllStreetDetails(NRecAddress : comp; Var OStreet: string; Var ODom:string;
                         Var Okorpus: string;Var OKvart : string);
#doc
#end
Public Procedure DivRabName(RabName: String;var SName: string;var Name: string;var SecName : string);


// другие

#doc
Проверка адресов сотрудников
#end
Public function CorrectStreet : boolean;

#doc
Данная функция призвана превратить сокращение слов
облать, край, в полные названия.
#end
Public Function SetOblastWord(_Detail : string) : string;

// из addreg.vpp Маслакова Татьяна Владимировна

#doc
Определение кода места жительства (кода региона)
Используется при печати лицевых счетов по формам Т-54 и Т-54А
прочитать элементы адреса из базы, результат TRUE если адрес валиден
#end
function AddRegion(CPar: comp): string;

#doc
#end
Public function GetAddress(cAddress : comp) : boolean;

#doc
получить значение элемента (поля элемента) адреса, используется совместно с GetAddress
#end
Public function GetAddrElement(Element : word; Fld : word) : string;

#doc
другой вариант, получить значение элемента непосредственно
#end
Public function GetAddrElementEx(cAddress : comp; Element : word; Fld : word) : string;

#doc
запуск интрефеса выбора адреса, результат TRUE - нажали Ввод, результат False нажали Esc.
#end
Public function PickAddress(var cAddress : comp) : boolean;


//------------------------------------------------------------------------------
end;

#doc
Расширение интерфейса ObjAddressFunc
#end
ObjInterface ObjAddressFunc_Patch;

#doc
Возвращает код сокращеного наименования элемента АТД
#end
Public function GetCodeSocr(NRecATD : comp) : word;

#doc
Возвращает NRec АТД по NRec адреса
#end
Public function GetStreetNRec(NRecAddress : comp) : comp;

end;

#doc
Расширение интерфейса ObjAddressFunc
#end
ObjInterface ObjAddressFunc1;

#doc
Удаляет адрес по NRec
#end
Public function DelAdr(NRecAddress : comp) : boolean;

end;

#doc
Расширение интерфейса ObjAddressFunc
#end
ObjInterface ObjAddressFunc2;

#doc
Функция возвращает Code по Nrec
#end
Public Function GetGniCode(cPar: comp) : string;

end;

ObjInterface ObjAddressFunc3;

#doc
Функция возвращает SOATO районов областных городов и города Минска
при установленной настройке на Беларусь
#end
Public Function GetSOATOMainCity(cPar: comp) : string;

end;

#doc
Расширение интерфейса ObjAddressFunc
#end
ObjInterface ObjAddressFunc4;

#doc
// Возвращает для адреса и элемента АТД NRec, Название, Код, Сокращенное наименование, Полное сокращенное наименование, Код ГНИ
#end
Public function GetItem(NRecAdr : comp; typeItemAtd : integer; typeData : integer) : variant;
// 1 параметр NRec адреса
// -----------------------------------------------------------------------------
// 2 параметр принимает одно из следующих значений
// cgAddrElement_Index      = 0; // Индекс
// cgAddrElement_Country    = 1; // Страна
// cgAddrElement_Region     = 2; // Регион
// cgAddrElement_Rayon      = 3; // Район
// cgAddrElement_City       = 4; // Город
// cgAddrElement_Settlement = 5; // Населенный пункт
// cgAddrElement_Street     = 6; // Улица
// cgAddrElement_House      = 7; // Дом
// cgAddrElement_Corps      = 8; // Корпус
// cgAddrElement_Flat       = 9; // Квартира
// -----------------------------------------------------------------------------
// 3 параметр  принимает одно из следующих значений
// cgAtdNRec                = 0; // NRec АТД
// cgAtdName                = 1; // Название АТД
// cgAtdCode                = 2; // Код АТД
// cgAtdSocrTypeName        = 3; // Сокращенное название типа элемента АТД
// cgAtdFullTypeName        = 4; // Полное название типа элемента АТД
// cgAtdGniCode             = 5; // Код ГНИ для АТД

end;

ObjInterface ObjAddressFunc5;

#doc
Функция возвращает код OKATO
#end
Public Function GetOKATO(cPar: comp) : string;

end;

//------------------------------------------------------------------------------
VipInterface AddressFunc implements ObjAddressFunc, ObjAddressFunc_Patch, ObjAddressFunc1, ObjAddressFunc2,
                                    ObjAddressFunc3, ObjAddressFunc4, ObjAddressFunc5

#ifdef ATL51
Licensed (free)
#end
;
#endif

Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Спасибо огромное!!!
Шевцов Владимир
Постоянный обитатель
Сообщения: 175
Зарегистрирован: 09 окт 2009, 11:58
Откуда: г.Находка

Re: Адреса контрагентов

Сообщение Шевцов Владимир »

коллеги, доброго дня.
а кто-нибудь встречал или писал функцию по преобразованию строковых адресов из классификатора (вида "Находка г, Невельского ул,...") в более привычную форму "г.Находка, ул.Невельского.."?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Адреса контрагентов

Сообщение edward_K »

в том же AdrFunc.vih есть функции по доставанию отдельных частей и сокращений к ним - доставайте и лепите как надо. Ну если не влом можно по дререву sterr пробежаться.
Шевцов Владимир
Постоянный обитатель
Сообщения: 175
Зарегистрирован: 09 окт 2009, 11:58
Откуда: г.Находка

Re: Адреса контрагентов

Сообщение Шевцов Владимир »

да, я видел.
просто боюсь не предусмореть всех вариантов: города, поселки, поселки с городах; улицы, проспекты и т.п..
но видимо придется садиться и все варианты изучать.
спасибо. :)
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Адреса контрагентов

Сообщение m0p3e »

Начал я подобный переворачиватель по просьбе отдела кадров. Дополняю по мере появления нареканий. Могу скинуть на мыльницу нынешний вариант.
Шевцов Владимир
Постоянный обитатель
Сообщения: 175
Зарегистрирован: 09 окт 2009, 11:58
Откуда: г.Находка

Re: Адреса контрагентов

Сообщение Шевцов Владимир »

m0p3e, было бы здорово!
кидайте сюда
vladimir22@mail.ru
спасибо
Ответить