Имя: Пароль:
1C
 
Заполнение формы: почему выдает ошибку?
0 dvdle
 
25.12.25
13:16
Ввожу такой код в ФормеСписка в РАСШИРЕНИИ.
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(КонтактнаяИнформация, Настройки, Строки)
    
    ВыводитьАдресЭП = Истина;
    Для Каждого КлючИЗначение Из Строки Цикл
        Если Не КлючИЗначение.Значение.Данные.Свойство("АдресЭП") Тогда
            ВыводитьАдресЭП = Ложь;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если ВыводитьАдресЭП Тогда
        Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |    Ссылка,
        |    АдресЭП
        |ИЗ
        |    Справочник.КВП_Здания.КонтактнаяИнформация
        |ГДЕ
        |    Ссылка В(&МассивСсылок)
        |    И АдресЭП <> """"");
        
        Запрос.УстановитьПараметр("МассивСсылок", Строки.ПолучитьКлючи());
        
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            Данные = Строки[Выборка.Ссылка].Данные;
            Если Данные.АдресЭП = "" Тогда
                Данные.АдресЭП = Выборка.АдресЭП;
            Иначе
                Данные.АдресЭП = Данные.АдресЭП + "; " + Выборка.АдресЭП;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)

    СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
    СвойстваСписка.ОсновнаяТаблица = "Справочник.КВП_Здания";
    СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
    СвойстваСписка.ТекстЗапроса = ТекстЗапросаСписка();      
    
    
    
    ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список,СвойстваСписка);
      
    НовыйЭлемент = Элементы.Вставить("КодФИАС", Тип("ПолеФормы"), Элементы.Список, Элементы.Наименование);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеНадписи;
    НовыйЭлемент.ПутьКДанным = "Список.КодДомаПоФИАС";
    НовыйЭлемент.Заголовок = "Код ФИАС";  
    
        
    НовыйЭлемент = Элементы.Вставить("ПочтАдрес", Тип("ПолеФормы"), Элементы.Список, Элементы.КодФИАС);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеНадписи;
    НовыйЭлемент.ПутьКДанным = "Список.КонтактнаяИнформация.АдресЭП";
    НовыйЭлемент.Заголовок = "Почт. адрес";

    
КонецПроцедуры


&НаСервере
Функция ТекстЗапросаСписка()
    
    Возврат
    
    "ВЫБРАТЬ
    |    КВП_Здания.Код КАК Код,
    |    КВП_Здания.Наименование КАК Наименование,
    |    КВП_Здания.ТипСооружения КАК ТипСооружения,
    |    КВП_Здания.НомерДома КАК НомерДома,
    |    КВП_Здания.КодДомаПоФИАС КАК КодДомаПоФИАС,
    |    КВП_Здания.ВидСооружения КАК ВидСооружения,
    |    КВП_Здания.Этажей КАК Этажей,
    |    КВП_Здания.Подъездов КАК Подъездов,
    |    КВП_Здания.ПлощадьЗданияОбщая КАК ПлощадьЗданияОбщая,
    |    КВП_Здания.ПлощадьЗданияЖилыхНежилыхПомещений КАК ПлощадьЗданияЖилыхНежилыхПомещений,
    |    КВП_Здания.ПлощадьЗданияМестОбщегоПользования КАК ПлощадьЗданияМестОбщегоПользования,
    |    КВП_Здания.ДатаВводаВЭксплуатацию КАК ДатаВводаВЭксплуатацию,
    |    КВП_Здания.Ссылка КАК Ссылка,
    |    РС_СведенияОФормированииФондаЗданияСрезПоследних.СпособФормированияФонда КАК СпособФормированияФонда,
    |    УПЖКХ_СведенияОбОбслуживающихЗданияОрганизацияхСрезПоследних.РасчетныйСчетУслугКапитальногоРемонта КАК РасчетныйСчетУслугКапитальногоРемонта,
    |    КВП_Здания.КонтактнаяИнформация.(
    |        КВП_Здания.КонтактнаяИнформация.АдресЭП = (ВЫРАЗИТЬ("""" КАК СТРОКА(100))) КАК АдресЭП
    |    ) КАК КонтактнаяИнформация
    |ИЗ
    |    Справочник.КВП_Здания КАК КВП_Здания
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РС_СведенияОФормированииФондаЗдания.СрезПоследних КАК РС_СведенияОФормированииФондаЗданияСрезПоследних
    |        ПО КВП_Здания.Ссылка = РС_СведенияОФормированииФондаЗданияСрезПоследних.Здания
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УПЖКХ_СведенияОбОбслуживающихЗданияОрганизациях.СрезПоследних КАК УПЖКХ_СведенияОбОбслуживающихЗданияОрганизацияхСрезПоследних
    |        ПО КВП_Здания.Ссылка = УПЖКХ_СведенияОбОбслуживающихЗданияОрганизацияхСрезПоследних.Здание";
    
КонецФункции



Но при выполнении выдает ошибку Ошибка при установке значения атрибута контекста (ПутьКДанным)
{КодФИАС Справочник.КВП_Здания.Форма.ФормаСписка.Форма(59)}:НовыйЭлемент.ПутьКДанным = "Список.КонтактнаяИнформация.АдресЭП";

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Недопустимое значение
1 Мультук
 
гуру
25.12.25
13:21
(0)

Зачем это ?

КВП_Здания.КонтактнаяИнформация.(
            КВП_Здания.КонтактнаяИнформация.АдресЭП = (ВЫРАЗИТЬ("""" КАК СТРОКА(100))) КАК АдресЭП
) КАК КонтактнаяИнформация


Почему не сделать еще один join  к

Справочник.КВП_Здания.КонтактнаяИнформация КАК тКИ
2 dvdle
 
25.12.25
13:47
Если вы имеете в виду так запрос переделать, то не работает тоже. Первоначальный код я прописывала, чтобы значение в виде строки именно доставалось:

Функция ТекстЗапросаСписка()
	
	Возврат
	
	"ВЫБРАТЬ
	|	КВП_Здания.Код КАК Код,
	|	КВП_Здания.Наименование КАК Наименование,
	|	КВП_Здания.ТипСооружения КАК ТипСооружения,
	|	КВП_Здания.НомерДома КАК НомерДома,
	|	КВП_Здания.КодДомаПоФИАС КАК КодДомаПоФИАС,
	|	КВП_Здания.ВидСооружения КАК ВидСооружения,
	|	КВП_Здания.Этажей КАК Этажей,
	|	КВП_Здания.Подъездов КАК Подъездов,
	|	КВП_Здания.ПлощадьЗданияОбщая КАК ПлощадьЗданияОбщая,
	|	КВП_Здания.ПлощадьЗданияЖилыхНежилыхПомещений КАК ПлощадьЗданияЖилыхНежилыхПомещений,
	|	КВП_Здания.ПлощадьЗданияМестОбщегоПользования КАК ПлощадьЗданияМестОбщегоПользования,
	|	КВП_Здания.ДатаВводаВЭксплуатацию КАК ДатаВводаВЭксплуатацию,
	|	КВП_Здания.Ссылка КАК Ссылка,
	|	РС_СведенияОФормированииФондаЗданияСрезПоследних.СпособФормированияФонда КАК СпособФормированияФонда,
	|	УПЖКХ_СведенияОбОбслуживающихЗданияОрганизацияхСрезПоследних.РасчетныйСчетУслугКапитальногоРемонта КАК РасчетныйСчетУслугКапитальногоРемонта,
	|	КВП_ЗданияКонтактнаяИнформация.АдресЭП КАК АдресЭП
	|ИЗ
	|	Справочник.КВП_Здания.КонтактнаяИнформация КАК КВП_ЗданияКонтактнаяИнформация
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КВП_Здания КАК КВП_Здания
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РС_СведенияОФормированииФондаЗдания.СрезПоследних КАК РС_СведенияОФормированииФондаЗданияСрезПоследних
	|			ПО КВП_Здания.Ссылка = РС_СведенияОФормированииФондаЗданияСрезПоследних.Здания
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УПЖКХ_СведенияОбОбслуживающихЗданияОрганизациях.СрезПоследних КАК УПЖКХ_СведенияОбОбслуживающихЗданияОрганизацияхСрезПоследних
	|			ПО КВП_Здания.Ссылка = УПЖКХ_СведенияОбОбслуживающихЗданияОрганизацияхСрезПоследних.Здание
	|		ПО КВП_ЗданияКонтактнаяИнформация.Ссылка = КВП_Здания.Ссылка";
	
КонецФункции
3 Ногаминебить
 
25.12.25
13:52
Выполнить запрос в консоли, посмотреть, что попадает в поле КонтактнаяИнформация. Вероятно, там тип значения, у которого попросту не может быть такого реквизита, как АдресЭП.
Запрос смотреть лениво, но что-то вроде
ВЫБОР КОГДА типзначения(КВП_Здания.КонтактнаяИнформация)="у чего там есть нужный реквизит" ТОГДА вот этот реквизит адрес
ИНАЧЕ "Нету ничего"
наверное спасет гиганта мысли и отца русской демократии.
4 Мультук
 
гуру
25.12.25
13:49
(2)
0) Нет такого сообщения об ошибке "не работает"

1) Предположим, что для некоего здания из

Справочник.КВП_Здания

в Справочник.КВП_Здания.КонтактнаяИнформация есть телефон, адрес и электронная почта.

Вы понимаете, что в этом случае вместо одной строки,
будет три, а динамический список будет плакать горькими слезами ?

2) Почему вы решили, что

КВП_ЗданияКонтактнаяИнформация.АдресЭП КАК АдресЭП
это "Почт. адрес", а не телефон или эл.почта

Где отбор по полям "Тип" и "Вид", если вам нужен конкретно адрес ?

3) Мой вам добрый совет.
Отложите в сторону расширение.
Создайте обработку и в ней в режиме конфигуратора нащёлкайте, то что вы хотите.

И только потом вернитесь
5 программистище
 
25.12.25
13:58
сначала накодят ИИ, а потом пытаются выяснить, что не так, совсем логически думать разучились (и изучать матчасть)
6 СвинТуз
 
25.12.25
16:53
(0)
Так в динамическом списке нет поля АдресЭП
Вроде как.
Есть ... типа:
|    КВП_Здания.КонтактнаяИнформация.(
    |        КВП_Здания.КонтактнаяИнформация.АдресЭП = (ВЫРАЗИТЬ("""" КАК СТРОКА(100))) КАК АдресЭП
    |    ) КАК КонтактнаяИнформация

Но это какой то список с контактной информацией который называется "КонтактнаяИнформация".
7 СвинТуз
 
25.12.25
16:55
|        ПО КВП_ЗданияКонтактнаяИнформация.Ссылка = КВП_Здания.Ссылка И КВП_Здания.КонтактнаяИнформация.АдресЭП = (ВЫРАЗИТЬ("""" КАК СТРОКА(100))

Но это не хороший код тоже.
8 СвинТуз
 
25.12.25
16:57
плохо написал.
предлагал не все сроки из ТЧ присоединять, а только нужные.

Но если строк будет больше одной список сдохнет.
9 СвинТуз
 
25.12.25
16:57
С такой простыней к уважаемым людям? ))))
10 СвинТуз
 
25.12.25
17:01
это же вот по другому смотриться?

&НаСервере
Функция ТекстЗапросаСписка()
    
    Возврат
    
    "ВЫБРАТЬ
    |    КВП_Здания.Код КАК Код,
    |    КВП_Здания.Наименование КАК Наименование,
.............................
    |    КВП_Здания.КонтактнаяИнформация.(
    |        КВП_Здания.КонтактнаяИнформация.АдресЭП = (ВЫРАЗИТЬ("""" КАК СТРОКА(100))) КАК АдресЭП
    |    ) КАК КонтактнаяИнформация
    |ИЗ
    |    Справочник.КВП_Здания КАК КВП_Здания";
    
КонецФункции
11 СвинТуз
 
25.12.25
17:03
(0)
Выдает ошибку потому что
в первом случае нет такого поля в запросе дин. списка
во втором случае строк по ключевому полю в динамическом списке более одного
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс