Имя: Пароль:
1C
1С v8
Программная установка свойства "ВыборПоВладельцу".
,
0 Saval1986
 
16.02.16
17:52
1С 8.2. НЕ УФ. Заранее прошу прощения за нубский вопрос. Задача тривиальная: есть табличное поле в диалоговой форме. Заполняется поле программно (т.е. изначально колонок в табличном поле нет). При заполнении табличного поля в определенном режиме в нем появляется 2 колонки: "Контрагент", "Договор". Хочу связать 2 данные колонки по владельцу. Как это правильно сделать? Я это реализовал с помощью события "Выбор" (для табличного поля).

Код, прописанный в событии:

Если Колонка.Имя = "Договор" Тогда
Колонка.ЭлементУправления.ВыборПоВладельцу = ВыбраннаяСтрока.Контрагент;
КонецЕсли;

Но что-то мне подсказывает, что этот способ неверный.

Заранее спасибо.
1 Cyberhawk
 
16.02.16
18:12
Почему неверный, то что нужно:

Расширение поля ввода справочника (Catalog text box extension)
ВыборПоВладельцу (ChoiceByOwner)
Использование:

Чтение и запись.
Описание:

Тип: СправочникСсылка.
Содержит ссылку на элемент-владелец для поля ввода подчиненного справочника. Данное значение будет использовано при выборе элемента.
2 Mort
 
16.02.16
19:11
(0) Тыщу лет назад занимался этим вопросом. Не взлетело.
3 Saval1986
 
17.02.16
08:39
(1) Скажем так, он - верный, но отчасти. А смысл в том, что при ручном добавлении строки, когда строка ещё не записана, происходит следующий глюк: выбрали контрагента, а при выборе договора событие "Выбор" не срабатывает. Вот такая вот странность. Может быть стоит заполнять это свойство сразу после выбора контрагента...но опять же по мне какое-то неоднозначное решение.
Т.е. если бы колонки были отображены на форме - не вопрос: один раз настроил связь, и все поехало. Такое же у меня было ощущение и при программной реализации - написал в одном месте пару строк и все. А здесь получается - добавь в одном событии одно, потом в другом событии ещё вот это пропиши...короче бред. Может мне это кажется странным потому что я с 8-кой общаюсь редко. Допускаю такой вариант =)
4 НЕА123
 
17.02.16
08:46
ВыбраннаяСтрока - это кто?
5 Saval1986
 
17.02.16
09:04
(4) Намекните пожалуйста не так тонко. Каким образом здесь выручит ВыбраннаяСтрока? Это спасет от того, что событие "Выбор" в описанном случае не срабатывает? Или нужно воспользоваться другим событием?
6 hhhh
 
17.02.16
09:34
(3) при выборе контрагента строка уже записана.
7 Saval1986
 
17.02.16
09:47
(6) Нет, не записана. Если во время редактирования договора нажать Esc - строка исчезнет. именно в данной ситуации событие "Выбор" не срабатывает.
8 НЕА123
 
17.02.16
09:58
(4)
я про то, что лучше так
Колонка.ЭлементУправления.ВыборПоВладельцу = Элемент.ТекушиеДанные.Контрагент;

(0)
Если Врег(Колонка.Имя) = Врег("Договор") Тогда
9 Saval1986
 
17.02.16
10:03
Возможно, не буду спорить, но описанную проблему это не решает
10 hhhh
 
17.02.16
10:26
(9) философский вопрос, если вы очень редко программируете в 8ке, зачем придумывать такую нереальную фигню? Выдумывать какие-то программные заполнения элементов форм. Пользуйтесь теми же приемами, что и все.
11 Saval1986
 
17.02.16
10:30
(10) Как все - связывание колонок через диалоговую форму? А редкость программирования разве исключает интерес к реализации?
12 Saval1986
 
17.02.16
10:33
(10) смысл моей задачи - отобразить данные пользователю, которые он может отредактировать, а затем создать документы на основании этих данных. Отображение данных и редактирование происходит в табличном поле. В нем то и создаются колонки: "Контрагент", "Договор".
13 hhhh
 
17.02.16
10:50
(11) просто тупо сделайте таб поле визуальное, всё там сделайте как надо там с владельцами. И просто тупо включайте и выключайте видимость этот таблицы. Или видимось колонок.
14 НЕА123
 
17.02.16
11:04
согласен с hhhh

хз что за событие Выбор ТП.
может надо ВыборЗначения...

делайте (13).
15 Saval1986
 
17.02.16
11:10
Всем спасибо, сделаю (13)