Имя: Пароль:
1C
1С v8
Тривиальная задача
0 Doman26
 
25.08.11
12:33
Есть поле на форме связанное с реквизитом типа справочника, хочется чтобы при выборе в тексте поля появлялось не представление справочника а кое какое изменение этого справочника

Процедура МеханикОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   ЭлементыФормы.Механик.Значение = Контрагенты.ФИО(ВыбранноеЗначение);
КонецПроцедуры

выводит тоже представление, как быть?
1 Doman26
 
25.08.11
12:34
изменение не справочника а его представление
2 Живой Ископаемый
 
25.08.11
12:35
наврал, что задача тривиальная...
3 Mort
 
25.08.11
12:35
Элемент формы не привязывать к данным и вручную обрабатывать необходимые события.
4 Mort
 
25.08.11
12:35
На самом деле всё не сложно.
5 Шапокляк
 
25.08.11
12:36
Может, не изменение, а реквизит?  А  по сабжу - список для выбора надо формировать.
6 Mort
 
25.08.11
12:37
А обладая некоторыми навыками, даже типовые функции не придется изменять.
7 Doman26
 
25.08.11
12:38
(3) т е при изменение открывать список справочника потом при выборе присваивать реквизиту объекта выбранное значение, а в поле ткста соответствующую строку?
8 Doman26
 
25.08.11
12:38
(6) подскажите
9 Mort
 
25.08.11
12:39
(7) При начале выбора. И еще ПриИзмененииДанных перечитывать в поле значение реквизита.
10 Mort
 
25.08.11
12:42
(8) Ну, например, если уже есть типовая функция ПриИзмененииДанных (хотя даже в типовых иногда "грешат" и косвенные значения читают в "ПриОткрытии") и не хочется её менять, можно в модуле формы переназначить событие формы на свою функцию, которая вызывает типовую функцию и выполняет свои действия. Но это в редких случаях может оказаться полезным.
11 Doman26
 
25.08.11
12:47
(10) ка к это приблизительно будет выглядеть?
12 Mort
 
25.08.11
12:56
(11) Это никак не относится к задаче (0), но если интересно, вот "перегрузка" ПриОткрытии():


Процедура МояПриОткрытии()
   
   ПриОткрытии();
   
   Сообщить("Здрассте!");

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

ЭтаФорма.УстановитьДействие("ПриОткрытии", новый Действие("МояПриОткрытии"));
13 Doman26
 
25.08.11
13:08
все же я не понял как решить мою задачу, отсоеденил от данных,

Процедура МеханикНачалоВыбора(Элемент, СтандартнаяОбработка)
   Справочники.Сотрудники.ПолучитьФормуВыбора().Открыть();
КонецПроцедуры


Процедура МеханикОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   Механик = ВыбранноеЗначение;
   Элемент.Значение = Контрагенты.Фио(Механик);
КонецПроцедуры


пустое значение! что не сделал?
14 shuhard
 
25.08.11
13:10
(13) а мы не поняли твою задачу,
пример приведи
что за [а кое какое изменение этого справочника ]
15 Doman26
 
25.08.11
13:14
(14) ну там вместо представления, должна строка возвращаться из функции над этим представлением
 Элемент.Значение = Контрагенты.Фио(Механик);
16 shuhard
 
25.08.11
13:16
(15) а тип у контрагента и механика одинаковый ?
17 Mort
 
25.08.11
13:17
(13) Тип строковой не забыл задать для отвязанного элемента?
18 Doman26
 
25.08.11
13:24
(16) это Контрагент сдесь не причем , это глобальная функция и она работает
(17) когда строковый пустое значение
19 Doman26
 
25.08.11
13:25
даже не заходит в обработку выбора
20 Doman26
 
25.08.11
13:30
почему когда строка, не заходит даже в обработку выбора?
21 shuhard
 
25.08.11
13:32
(20) потому что ты забыл сделать рядом кнопку и подложить под неё код
22 Doman26
 
25.08.11
13:36
(21) гляди, я кнопку поставил(стандартную выбора) в обработке открыл форму(выбора справочника), но при выборе из формы он не понимает что надо заходить в обработку выбора (Логично так как тип строка а не справочник), так вот как заставить ее понимать этот выбор из формывыбора?
23 Doman26
 
25.08.11
13:39
какие свойства формывыбора отвечают за выбранное значение?
24 shuhard
 
25.08.11
13:40
(23) логично вернуться в начало пути и понять что хранит реквизит и что в нём должно отображаться
25 catena
 
25.08.11
13:42
На форме поле выбора с типом того реквизита, который будем отображать (у меня дата)
НачалоВыбора--->

Процедура ФизлицоНачалоВыбора(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка=Ложь;
   СпрФЛ = Справочники.ФизическиеЛица.ПолучитьФормуВыбора();
   СпрФЛ.НачальноеЗначениеВыбора = Справочники.ФизическиеЛица.ПустаяСсылка();
   СпрФЛ.РежимВыбора = Истина;
   Значение = СпрФЛ.ОткрытьМодально();
   Если Значение<>Неопределено Тогда
       Физлицо = Значение.ДатаРождения;
   КонецЕсли;    
КонецПроцедуры
26 Doman26
 
25.08.11
13:53
все оказалось проще

Процедура МеханикНачалоВыбора(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Форма = Справочники.Сотрудники.ПолучитьФормуВыбора(, Элемент);
   Форма.ОТкрыть();
КонецПроцедуры

Процедура МеханикОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Механик = ВыбранноеЗначение;
   Элемент.Значение = Контрагенты.Фио(Механик);
КонецПроцедуры
27 Doman26
 
25.08.11
13:54
всем спасибо
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn