Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
09 апр 2025, 09:25

Ошибка при передачи параметра

Автор Алексей_1985_06, 26 ноя 2024, 13:24

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Всем здравствуйте! Сразу к делу:
На форма списка размещены две формы, при выборе комплекса происходит отбор сооружений. Необходимо чтобы при создании сооружения к реквизит "Комплекс" - подставлялось значение комплекса на котором сейчас курсор, попробовал через подстановку параметра, но в таком случае, если курсор находится на корне записи, то возникает ошибка, подскажите как исправить?


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)


Если Параметры.ЗначенияЗаполнения.Комплекс <> Справочники.Комплексы.ПустаяСсылка()   Тогда
Объект.Комплекс = Параметры.ЗначенияЗаполнения.Комплекс;
КонецЕсли;

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

Если на корне списка, то ошибка:
Поле объекта не обнаружено (Комплекс)
{Справочник.Сооружения.Форма.ФормаЭлемента.Форма(7)}:ЕСли Параметры.ЗначенияЗаполнения.Комплекс <> Справочники.Комплексы.ПустаяСсылка()   Тогда

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]

antoneus

Ну значит нет такого ключа в Параметры.ЗначенияЗаполнения - вроде понятно все написано.

LexaK

Алексей_1985_06,

ЕСли Параметры.ЗначенияЗаполнения - а что здесь? когда ошибка возникает?
если помогло нажмите: Спасибо!

Алексей_1985_06

LexaK, Сделал так, проверяю есть ли такое свойство, в общем заработало..

Если Параметры.ЗначенияЗаполнения.Свойство("Комплекс") Тогда  // проверяет, имеется ли указанное свойство.
Объект.Комплекс = Параметры.ЗначенияЗаполнения.Комплекс;
КонецЕсли;

Алексей_1985_06

LexaK, Еще не много не по теме, не подскажите как выделить цветом строку в ДС на которой сейчас отбор:

&НаКлиенте
Процедура СписокСооруженияПриАктивизацииСтроки(Элемент)
 
ДанныеСтроки = Элементы.СписокСооружения.ТекущиеДанные;

Если ДанныеСтроки = Неопределено Тогда 
Возврат
КонецЕсли;

СсылкаНаКомплекс = ДанныеСтроки.Комплекс;

// ВОТ ЭТУ СТРОКУ В ДС НУЖНО ВЫДЕЛИТЬ ЦВЕТОМ
Элементы.СписокКомплексы.ТекущаяСтрока = СсылкаНаКомплекс;  // Выделим ту строку ДС с комплексами, на которой сейчас в ДС с сооружениями активна строка

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

antoneus

А по умолчанию она цветом не выделяется?

LexaK

Алексей_1985_06,
Цитировать// ВОТ ЭТУ СТРОКУ В ДС НУЖНО ВЫДЕЛИТЬ ЦВЕТОМ
с этим немного сложнее (проще вообще не заморачиваться, просто в Декорации выведите выбранный комплекс)

иначе надо делать текущим элементом -  Элементы.СписокКомплексы
устанавливать там текущую/выделенную строку, быть уверенным что это строка находится в пределх экрана
так как ДС пожет быть длинным.
и все это делать в подключенном обработчике.

так как под выше уже отрабатывает событие Активизации

можно через условное оформление попробовать сделать в вашем ДС, добаляете поле Отметка - будево
при выборе Комплекса, в стороке/ах ставите Отметка = Истина, и в Усл.Оформ. эти строчки раскрашиваются в зеленый цвет.
если помогло нажмите: Спасибо!

Алексей_1985_06

antoneus, выделяется, но бледно-синим, а нужно ярким желтым....

Алексей_1985_06

LexaK, Понял, попробую, спасибо!

antoneus

Можно проще - добавляете в условное оформление 1 элемент, отбор - Список.Ссылка Равно, правое значение не заполняем. В форме пишем

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)

Оповестить("Список_АктивизацияСтроки", Элементы.Список.ТекущаяСтрока)

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


&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

    Если ИмяСобытия = "Список_АктивизацияСтроки" Тогда
    ИзменитьУО(Параметр)
    КонецЕсли;

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

&НаСервере
Процедура ИзменитьУО(ТекСтрока)

УсловноеОформление.Элементы[0].Отбор.Элементы[0].ПравоеЗначение = ТекСтрока

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск