Имя: Пароль:
1C
1С v8
УТ 11.4 Контактная информация организации
0 letovd
 
29.08.22
12:10
Необходимо получать юр адрес организации, насколько я понимаю в 11 версии ут, контактная информация хранится в таблице справочника организации, написал запрос:
    Если ЧтоИскать = "ЮрАдрес" Тогда // исправил под УТ11.4    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
    Запрос.УстановитьПараметр("Ссылка",Орг);
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОрганизацииКонтактнаяИнформация.Представление КАК Представление
        |ИЗ
        |    Справочник.Организации.КонтактнаяИнформация КАК ОрганизацииКонтактнаяИнформация
        |ГДЕ
        |    ОрганизацииКонтактнаяИнформация.Вид = &Вид
        |    И ОрганизацииКонтактнаяИнформация.Ссылка = &Ссылка";
    
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Результат = СокрЛП(ВыборкаДетальныеЗаписи.Представление);
    КонецЦикла;

Есть косяк:
Если в истории изменений юр адреса несколько адресов, то тянет запись в последней строки таблицы. Получается нужно выделить ВЕРНУЮ/АКТУАЛЬНУЮ запись из истории изменений.
Например, на основе даты записи "действует с", можно сделать упорядочивание и тогда в переменной "Результат" всегда в будет последняя запись.
ВЫБРАТЬ
    ОрганизацииКонтактнаяИнформация.Представление КАК Представление
ИЗ
    Справочник.Организации.КонтактнаяИнформация КАК ОрганизацииКонтактнаяИнформация
ГДЕ
    ОрганизацииКонтактнаяИнформация.Вид = &Вид
    И ОрганизацииКонтактнаяИнформация.Ссылка = &Ссылка

УПОРЯДОЧИТЬ ПО
    ОрганизацииКонтактнаяИнформация.ДействуетС УБЫВ

Либо засовывать даты в массив и сортировку делать кодом, подскажите совет как поступить
1 mikecool
 
29.08.22
12:16
емнип, есть модули типа УправлениеКонтактнойИнформацией или КонтактнаяИНформация - смотри методы в них
2 letovd
 
29.08.22
12:20
Либо, всегда последняя запись сверху, под номером строки - 1?
3 letovd
 
29.08.22
12:24
Ну, как по мне проще всего так:

Функция НайтиКонтактыОрганизации(Орг,ЧтоИскать) //

Если ЧтоИскать = "ЮрАдрес" Тогда // исправил под УТ11.4    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
    Запрос.УстановитьПараметр("Ссылка",Орг);
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОрганизацииКонтактнаяИнформация.Представление КАК Представление
        |ИЗ
        |    Справочник.Организации.КонтактнаяИнформация КАК ОрганизацииКонтактнаяИнформация
        |ГДЕ
        |    ОрганизацииКонтактнаяИнформация.Вид = &Вид
        |    И ОрганизацииКонтактнаяИнформация.Ссылка = &Ссылка
        |
        |УПОРЯДОЧИТЬ ПО
        |    ОрганизацииКонтактнаяИнформация.ДействуетС";
    
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Результат = СокрЛП(ВыборкаДетальныеЗаписи.Представление);
    КонецЦикла;

КонецФункции
4 banco
 
29.08.22
13:09
(3) Тебе в (1) уже подсказали, где проще.
Результат = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Орг, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, Текущаядата());