Имя: Пароль:
1C
1С v8
На форме не отображается значение элемента, а в отладчике заполнено.
0 lirt82
 
17.06.26
13:29
В расширение затянул форму документа в событии после создания программно вывожу элемент на форму, и далее если он пустой то его заполняю. Заполнение происходит но после сохранения данных и закрытия формы документа, Открываю форму заново но поле программно добавленного элемента пустое, хотя отладчик показывает что есть значение, снимки ниже где исправить?
https://ltdfoto.ru/image/xDlv6M
https://ltdfoto.ru/image/xDlmEL
https://ltdfoto.ru/image/xDlODJ
1 Мультук
 
гуру
17.06.26
13:30
(0)

Когда же вы научитесь, дорогие коллеги, прикладывать код к сообщению.

-- ни флюрографию
-- ни общий анилиз крови
-- ни скриншоты кода (ибо их нельзя править)


Мне лень комментировать, ибо нужно вместо копи-паста писать руками код из скриншота
2 lirt82
 
17.06.26
13:31
(1) извиняюсь

&НаСервере
Процедура РасшКадры_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    НовоеПолеАдресМестаРаботысотрудника = Элементы.Добавить("АдресМестаРаботыСотрудника", Тип("ПолеФормы"), Элементы.ГлавноеСтраницаГруппаПравая);
    НовоеПолеАдресМестаРаботысотрудника.ПутьКДанным = "Объект.АдресМестаРаботыСотрудника";
    НовоеПолеАдресМестаРаботысотрудника.Вид = ВидПоляФормы.ПолеВвода;
    НовоеПолеАдресМестаРаботысотрудника.РежимВыбораИзСписка = Истина;
    НовоеПолеАдресМестаРаботысотрудника.КнопкаВыпадающегоСписка = Истина;
    
КонецПроцедуры

&НаКлиенте
Процедура РасшКадры_ПриОткрытииПосле(Отказ)
    
    Если ПустаяСтрока(Объект.АдресМестаРаботыСотрудника) Тогда
        Объект.АдресМестаРаботыСотрудника = СформироватьАдресаМестРаботыСотрудника(Объект.Ссылка);
    КонецЕсли;
        
КонецПроцедуры

&НаСервере
Функция СформироватьАдресаМестРаботыСотрудника(ПриемНаРаботуСсылка)
    
    Элементы.АдресМестаРаботыСотрудника.СписокВыбора.Очистить();
    ТЗАдресаОрганизации = ПриемНаРаботуСсылка.Организация.КонтактнаяИнформация.Выгрузить();
    
    Для Каждого СтрокаТЗАдресаОрганизации Из ТЗАдресаОрганизации Цикл
        Если СтрНайти(Строка(СтрокаТЗАдресаОрганизации.Вид), "работ") > 0 Тогда
            СтрокаАдреса = СтрокаТЗАдресаОрганизации.Представление;
            Элементы.АдресМестаРаботыСотрудника.СписокВыбора.Добавить(СтрокаАдреса);
        КонецЕсли;
    КонецЦикла;
    
    Возврат Элементы.АдресМестаРаботыСотрудника.СписокВыбора;
    
КонецФункции
3 Мультук
 
гуру
17.06.26
13:40
(2)

1) Список выбора должен быть заполнен в любом случае. Пусто в "АдресМестаРаботыСотрудника" или нет
2) При смене организации список выбора должен быть перезаполнен.  
3) Что тут происходит ?

Объект.АдресМестаРаботыСотрудника = Элементы.АдресМестаРаботыСотрудника.СписокВыбора;


4) Наверное, должно быть так

&НаСервере
Процедура РасшКадры_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    НовоеПолеАдресМестаРаботысотрудника = Элементы.Добавить("АдресМестаРаботыСотрудника", Тип("ПолеФормы"), Элементы.ГлавноеСтраницаГруппаПравая);
    НовоеПолеАдресМестаРаботысотрудника.ПутьКДанным = "Объект.АдресМестаРаботыСотрудника";
    НовоеПолеАдресМестаРаботысотрудника.Вид = ВидПоляФормы.ПолеВвода;
    НовоеПолеАдресМестаРаботысотрудника.РежимВыбораИзСписка = Истина;
    НовоеПолеАдресМестаРаботысотрудника.КнопкаВыпадающегоСписка = Истина;

    СформироватьАдресаМестРаботыСотрудника(Объект.Ссылка);    
КонецПроцедуры

&НаКлиенте
Процедура РасшКадры_ПриОткрытииПосле(Отказ)

 //Пусто
        
КонецПроцедуры 

4 lirt82
 
17.06.26
13:40
(2) решил
эта строка лишняя  НовоеПолеАдресМестаРаботысотрудника.РежимВыбораИзСписка = Истина;
5 Мультук
 
гуру
17.06.26
13:50
(4)

Доктор - у меня при ходьбе мизинец больно ударяется о мебель!
Решение - удалить мизинец. Нет мизинца - нет проблем.
6 lirt82
 
17.06.26
14:09
(3) (4)
решение

&НаСервере
Процедура РасшКадры_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    НовоеПолеАдресМестаРаботысотрудника = Элементы.Добавить("АдресМестаРаботыСотрудника", Тип("ПолеФормы"), Элементы.ГлавноеСтраницаГруппаПравая);
    НовоеПолеАдресМестаРаботысотрудника.ПутьКДанным = "Объект.АдресМестаРаботыСотрудника";
    НовоеПолеАдресМестаРаботысотрудника.Вид = ВидПоляФормы.ПолеВвода;
    НовоеПолеАдресМестаРаботысотрудника.РежимВыбораИзСписка = Истина;
    НовоеПолеАдресМестаРаботысотрудника.КнопкаВыпадающегоСписка = Истина;
    НовоеПолеАдресМестаРаботысотрудника.КнопкаОчистки = Истина;
    
    Если Не Параметры.Ключ.Пустая() Тогда
        СформироватьАдресаМестРаботыСотрудника(Объект.Ссылка, Неопределено);
    Иначе
        СформироватьАдресаМестРаботыСотрудника(Неопределено, Объект.Организация);
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Функция СформироватьАдресаМестРаботыСотрудника(ПриемНаРаботуСсылка, ОрганизацияСсылка)
    
    Элементы.АдресМестаРаботыСотрудника.СписокВыбора.Очистить();
    Если ПриемНаРаботуСсылка <> Неопределено Тогда
        ТЗАдресаОрганизации = ПриемНаРаботуСсылка.Организация.КонтактнаяИнформация.Выгрузить();
    Иначе
        ТЗАдресаОрганизации = ОрганизацияСсылка.КонтактнаяИнформация.Выгрузить();
    КонецЕсли;
    
    Для Каждого СтрокаТЗАдресаОрганизации Из ТЗАдресаОрганизации Цикл
        Если СтрНайти(Строка(СтрокаТЗАдресаОрганизации.Вид), "работ") > 0 Тогда
            СтрокаАдреса = СтрокаТЗАдресаОрганизации.Представление;
            Элементы.АдресМестаРаботыСотрудника.СписокВыбора.Добавить(СтрокаАдреса);
        КонецЕсли;
    КонецЦикла;
    
    Возврат Элементы.АдресМестаРаботыСотрудника.СписокВыбора;
    
КонецФункции
7 Мультук
 
гуру
17.06.26
14:24
(6)

1) ПриемНаРаботуСсылка.Организация

1.1) У тебя уже есть Объект.Организация
1.2) Не стыдно в 2026 году брать реквизиты от ссылки через точку ?


2) Зачем этой функции что-то знать о ПриемНаРаботуСсылка ?

&НаСервере
Функция СформироватьАдресаМестРаботыСотрудника(ПриемНаРаботуСсылка, ОрганизацияСсылка)
8 lirt82
 
17.06.26
14:41
(7) исправил
НовоеПолеАдресМестаРаботысотрудника.РежимВыбораИзСписка = Истина;
    НовоеПолеАдресМестаРаботысотрудника.КнопкаВыпадающегоСписка = Истина;
    НовоеПолеАдресМестаРаботысотрудника.КнопкаОчистки = Истина;
    
    СформироватьАдресаМестРаботыСотрудника(Объект.Организация);
    
КонецПроцедуры

&НаСервере
Функция СформироватьАдресаМестРаботыСотрудника(ОрганизацияСсылка)
    
    Элементы.АдресМестаРаботыСотрудника.СписокВыбора.Очистить();
    ТЗАдресаОрганизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОрганизацияСсылка, "КонтактнаяИнформация").Выгрузить();
    
    Для Каждого СтрокаТЗАдресаОрганизации Из ТЗАдресаОрганизации Цикл
9 Мультук
 
гуру
17.06.26
14:47
(8)

Если работает, то я не вижу, до чего еще доколебаться :-)
2 + 2 = 3.9999999999999999999999999999999...