Страница 1 из 2
Адреса контрагентов
Добавлено: 25 мар 2009, 12:49
Ната_ша
Помогите пожалуйста! Начинаем осваивать 8.10. Кругом наступаем на грабли... Казалось бы элементарная вещь, вытащить в форму адреса юридический и почтовый. В интерфейсах все заполнено. По таблицам записи есть,а ссылка katorg.caddr пустая

Добавлено: 25 мар 2009, 13:19
k_vit
Код: Выделить всё
KATORG.CSTATE == KATSTATE.NREC AND
KATORG.CCITY == KATCITY.NREC AND
KATORG.NREC == KATBANK.CORG AND
Добавлено: 25 мар 2009, 13:26
Ната_ша
Извините! Мне банк дором не нужен. Мне нужна улица, дом......
Добавлено: 25 мар 2009, 13:32
edward_K
and katorg.nrec == podrinfo.cpodr
and comp(podrinfo.INSNOMER) == addressn.nrec //юр.аддрес
and comp(PODRINFO.OKVED) == addressn1.nrec // почтовый адрес
журнализация вам поможет

Добавлено: 25 мар 2009, 13:50
ilshat
вот это вот
PODRINFO.OKVED ваще смешно

кто придумал такое? хочу знать фамилие этого красавчега

да и вообще странно, что стандартные потоки в отчетах не несут такой важной информации, как адреса... даже кода контрагента нет обычно

Добавлено: 25 мар 2009, 14:04
Ната_ша
edward_K
Огромное спасибо! на эту таблу в журнале не обратили внимания.
Это ж надо было так придумать

Добавлено: 26 мар 2009, 11:40
galover
Ната_ша
Чтобы не собирать адрес по частям, можно сделать так:
Код: Выделить всё
#include AdrFunc.vih
var addrService : Z_Staff::AddressFunc;
....
addrService.GetFullAddressInd(Comp(PodrInfo.Okved)));
Добавлено: 14 май 2009, 16:07
Sheinina
Подскажите, пожалуйста, где взять это самый AdrFunc.vih, у себя в комплекте поставки не нашла, если можно, выложите текст, плз
Добавлено: 14 май 2009, 16:25
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
Добавлено: 14 май 2009, 16:29
Sheinina
Спасибо огромное!!!
Re: Адреса контрагентов
Добавлено: 12 окт 2010, 09:39
Шевцов Владимир
коллеги, доброго дня.
а кто-нибудь встречал или писал функцию по преобразованию строковых адресов из классификатора (вида "Находка г, Невельского ул,...") в более привычную форму "г.Находка, ул.Невельского.."?
Re: Адреса контрагентов
Добавлено: 12 окт 2010, 21:25
edward_K
в том же AdrFunc.vih есть функции по доставанию отдельных частей и сокращений к ним - доставайте и лепите как надо. Ну если не влом можно по дререву sterr пробежаться.
Re: Адреса контрагентов
Добавлено: 13 окт 2010, 06:34
Шевцов Владимир
да, я видел.
просто боюсь не предусмореть всех вариантов: города, поселки, поселки с городах; улицы, проспекты и т.п..
но видимо придется садиться и все варианты изучать.
спасибо.

Re: Адреса контрагентов
Добавлено: 13 окт 2010, 11:13
m0p3e
Начал я подобный переворачиватель по просьбе отдела кадров. Дополняю по мере появления нареканий. Могу скинуть на мыльницу нынешний вариант.
Re: Адреса контрагентов
Добавлено: 13 окт 2010, 13:46
Шевцов Владимир
m0p3e, было бы здорово!
кидайте сюда
vladimir22@mail.ru
спасибо