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

Не получается изменить значение в поле формы (Тип справочник) в зависимости от выбранного значения в поле табличной части.

Автор Rust, 02 ноя 2018, 10:46

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

Rust

Есть поле формы "А" с типом Справочник.
Есть поле табличной части формы "Б" с типом Справочник.

Не получается изменить значение в зависимости от выбранного значения в ТЧ.

Пробовал событием обработкаВыбора:

Процедура БОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ЕСЛИ    ВыбранноеЗначение="абырвалг"
ТОГДА   Объект.А="Собака"
КонецЕсли;
КонецПроцедуры


Выбранное значение, выводится с помощью сообщить()корректно, но условие ЕСЛИ почему то не срабатывает :dfbsdfbsdf:

P.S Возможно ли в зависимости от Родителя значения справочника Б?

wise

(0) Вы пишете, что ВыбранноеЗначение имеет тип Справочник, а сравниваете его со СТРОКОЙ..? :-O
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Rust

Цитата: wise от 02 ноя 2018, 10:52
(0) Вы пишете, что ВыбранноеЗначение имеет тип Справочник, а сравниваете его со СТРОКОЙ..? :-O
Да действительно!
Возможно ли сделать условие &НаКлиенте? или необходимо сравнивать так: Справочники.Имясправочника.НайтиПоКоду ("111") например?

wise

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Rust

Цитата: wise от 02 ноя 2018, 14:37
(2) найди функцию ЗначениеРеквизитаОбъекта
Спасибо, победил иначе. Преобразовал в строку, потом сравнил.
НО, теперь следующий затык. Не могу понять как подставить нужное мне значение в "А" (Собака есть в справочнике).

Процедура БОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ЕСЛИ    Строка(ВыбранноеЗначение)="абырвалг"
ТОГДА   Объект.А="Собака"
КонецЕсли;
КонецПроцедуры


Вариант: Объект.А=Справочники.СправочникА.НайтиПоКоду("001"); &наКлиенте не работает.

oleg-x


Делается это так:
Объект.А=НайтиСправочникПоКоду("001")

&НаСервере
Функция НайтиСправочникПоКоду(Код)
Возврат Справочники.СправочникА.НайтиПоКоду(Код);
КонецФункции

Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

AIFrame

Чет ты какую-то муть мутишь.
У тебя Объект.А - реквизит объекта, и ты его меняешь при каждом выборе чего-то в ТЧ? Зачем?
А если в ТЧ несколько строк (на то она и табличная часть).
Может ты таки хочешь вывести реквизит выбранного значения в ТЧ? Рядом в колонке?

Rust

Цитата: AIFrame от 02 ноя 2018, 18:01
Чет ты какую-то муть мутишь.
У тебя Объект.А - реквизит объекта, и ты его меняешь при каждом выборе чего-то в ТЧ? Зачем?
А если в ТЧ несколько строк (на то она и табличная часть).
Может ты таки хочешь вывести реквизит выбранного значения в ТЧ? Рядом в колонке?

Проще говоря, хочу:

Чтобы при выборе в ТЧ элемента из одной папки (родителя) - поле формы "А" заполнялось значением из своего справочника.

( Если в ТЧ с родителем "Папка", ТОГДА Поле "А"= тото-тото
Мучу муть, т.к пока умею менять только Объект :befhbt:
Пожалуйста, подскажите, как будет "правильнее" отбирать не по наименования, а по родителю.


&НаСервере
Функция НайтиСправочникПоКоду(Код)
Возврат Справочники.СправочникА.НайтиПоКоду(Код);
КонецФункции

Процедура ПолеТЧОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ЕСЛИ
Строка(ВыбранноеЗначение)="Абырвалг"
ТОГДА
Объект.А=НайтиСправочникПоКоду("001")
конецЕсли;
КонецПроцедуры



AIFrame

Тут важен момент - ТЧ - это табличная часть элемента справочника\документа или просто таблица значений на форме?
Ну, предположим, что ТЧ это табличная часть.
Тогда второй вопрос. В нем два поля. А - в который выбираешь, Б - в который хочешь вывести значение реквизита родителя А.
Поля А и Б являются реквизитами ТЧ, или реквизитом является только А, а Б - добавленная колонка?
Если бы я делал, у меня бы так и было - А - реквизит, Б - просто колонка.
Тогда получается, что  тебе нужно обрабатывать вывод строки.
Для этого есть две процедуры: ПриВыводеСтроки и ПриПолученииДанных.
Берешь любую, в твоем случае не важно. Тебе нужно ОформлениеСтроки.
Для ПриВыводеСтроки
Если ЗначениеЗаполнено(ДанныеСтроки.А) Тогда
    ОформлениеСтроки.Ячейки.Б.УстановитьТекст(ДанныеСтроки.А.Родитель.Реквизит);
КонецЕсли;

Для ПриПолученииДанных аналогично, там просто ОформленияСтрок - это Коллекция оформлений.
Для Каждого ОформлениеСтроки ИЗ ОформленияСтрок Цикл
    Если ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.А) Тогда
        ОформлениеСтроки.Ячейки.Б.УстановитьТекст(ОформлениеСтроки.ДанныеСтроки.А.Родитель.Реквизит);
    КонецЕсли;
КонецЦикла;


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

Рейтинг@Mail.ru

Поиск