|
Обновление СправочникСписок в обычной форме | ☑ | ||
---|---|---|---|---|
0
Fannasankh
13.10.15
✎
14:35
|
Обычная форма. На форме реквизит с типом СправочникСписок. Программно пишу новый элемент в этот справочник. На форме не отображается. Записать и обновить форму программно не помогает, хотя если записать руками, то новый элемент появляется. В чём может быть дело?
|
|||
1
mehfk
13.10.15
✎
14:36
|
В том, что ты пишешь в другой справочник. В том, что у тебя включен отбор. В том, что тебе кажется, что ты пишешь, а на самом деле нет. И еще 100500 вариантов.
|
|||
2
Fannasankh
13.10.15
✎
14:38
|
(1) пишу в этот, отбор включен, но мой элемент соответствует условиям.
Элемент начинает отображаеться после того как я руками нажимаю на форме "Записать". До этого его не видно. |
|||
3
Fish
13.10.15
✎
14:39
|
(2) Ну так естественно. Пока элемент не записан, он в списке никак не появится.
|
|||
4
ibreiter
13.10.15
✎
14:42
|
Оповестить форму потому что нужно
|
|||
5
Fannasankh
13.10.15
✎
14:42
|
(3) элемент записан. Наверно, я не правильно объяснил.
Есть справочник1, у него на форме реквизит с типом СправочникСписок(Справочник2). Я создаю программно элемент справочника2(заполняю всё правильно). На форме справочника1 не отображается новый элемент справочника2, хотя он создан и записан. Обновление формы справочника1 не помогает. Помогает только нажать руками записать на форме справочника1, программно не помогает. |
|||
6
Fannasankh
13.10.15
✎
14:45
|
(4) оповестить о чём? Всё выполняется синхронно.
|
|||
7
Fannasankh
13.10.15
✎
14:58
|
UP
|
|||
8
Lexey_
13.10.15
✎
15:02
|
обнови свой СправочникСписок(Справочник2)
|
|||
9
Fannasankh
13.10.15
✎
15:02
|
(8) не помогает. Ни программно, ни на форме
|
|||
10
Fannasankh
13.10.15
✎
15:03
|
Обновлял через метод реквизита Обновить()
|
|||
11
ibreiter
13.10.15
✎
15:05
|
Может вот это еще раз сделать: Я создаю программно элемент справочника2(заполняю всё правильно)?
|
|||
12
kosts
13.10.15
✎
15:07
|
Попробуй ОповеститьОЗаписиНового(<Объект>)
|
|||
13
Fannasankh
13.10.15
✎
15:08
|
(11) не особо понял
|
|||
14
Fannasankh
13.10.15
✎
15:09
|
(12) так это же для управляемой формы
|
|||
15
Timon1405
13.10.15
✎
15:11
|
исходный код со словом "обновить" будет или гадаем дальше?
|
|||
16
kosts
13.10.15
✎
15:11
|
Вот еще есть ОповеститьОбИзменении(<Ссылка>)
|
|||
17
Fannasankh
13.10.15
✎
15:21
|
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыКонтрагента);
Если ЭтотОбъект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда ЗаполнитьЮридическийАдрес(РеквизитыКонтрагента.ЮридическийАдрес); ЗаполнитьРуководителя(РеквизитыКонтрагента.Руководитель); ЗаполнитьТелефон(РеквизитыКонтрагента.Телефон); КонецЕсли; ЭтотОбъект.НаименованиеПолное = РеквизитыКонтрагента.НаименованиеПолное; ЭтотОбъект.Записать(); ЭтаФорма.Обновить(); |
|||
18
Fannasankh
13.10.15
✎
15:21
|
Процедура ЗаполнитьРуководителя(Руководитель)
Если Руководитель <> Неопределено Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактныеЛицаКонтрагентов.Ссылка |ИЗ | Справочник.КонтактныеЛицаКонтрагентов КАК КонтактныеЛицаКонтрагентов |ГДЕ | КонтактныеЛицаКонтрагентов.Владелец = &Владелец | И КонтактныеЛицаКонтрагентов.Должность = &Должность"; Запрос.УстановитьПараметр("Владелец", ЭтотОбъект.Ссылка); Запрос.УстановитьПараметр("Должность", Руководитель.Должность); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Следующий() Тогда РуководительЗапись = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); Иначе РуководительЗапись = Справочники.КонтактныеЛицаКонтрагентов.СоздатьЭлемент(); КонецЕсли; РуководительЗапись.Должность = Руководитель.Должность; Если РуководительЗапись.КонтактноеЛицо = Справочники.КонтактныеЛица.ПустаяСсылка() Тогда КонтактноеЛицо = Справочники.КонтактныеЛица.СоздатьЭлемент(); Иначе КонтактноеЛицо = РуководительЗапись.КонтактноеЛицо.ПолучитьОбъект(); КонецЕсли; КонтактноеЛицо.Имя = Руководитель.Имя; КонтактноеЛицо.Фамилия = Руководитель.Фамилия; КонтактноеЛицо.Отчество = Руководитель.Отчество; КонтактноеЛицо.Наименование = Руководитель.Представление; КонтактноеЛицо.Записать(); РуководительЗапись.КонтактноеЛицо = КонтактноеЛицо.Ссылка; РуководительЗапись.Наименование = Руководитель.Представление; РуководительЗапись.Должность = Руководитель.Должность; РуководительЗапись.Владелец = ЭтотОбъект.Ссылка; РуководительЗапись.Записать(); КонецЕсли; |
|||
19
Fannasankh
13.10.15
✎
15:22
|
вот при создании руководителя он не появляется в форме
|
|||
20
Fannasankh
13.10.15
✎
15:26
|
КонтактныеЛицаКонтрагента.Обновить() в конце процедуры не помогает
|
|||
21
Fannasankh
13.10.15
✎
15:26
|
(16) у меня СправочникСписок, а не динамический список
|
|||
22
ibreiter
13.10.15
✎
15:29
|
У вас СправочникСписок(Справочник2) как заполняется?
|
|||
23
Kondarat
13.10.15
✎
15:33
|
Для Справочник2 установлен отбор по владельцу?
|
|||
24
Fannasankh
13.10.15
✎
15:33
|
(22) Процедура ЗаполнитьРуководителя(Руководитель)
Если Руководитель <> Неопределено Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактныеЛицаКонтрагентов.Ссылка |ИЗ | Справочник.КонтактныеЛицаКонтрагентов КАК КонтактныеЛицаКонтрагентов |ГДЕ | КонтактныеЛицаКонтрагентов.Владелец = &Владелец | И КонтактныеЛицаКонтрагентов.Должность = &Должность"; Запрос.УстановитьПараметр("Владелец", ЭтотОбъект.Ссылка); Запрос.УстановитьПараметр("Должность", Руководитель.Должность); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Следующий() Тогда РуководительЗапись = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); Иначе РуководительЗапись = Справочники.КонтактныеЛицаКонтрагентов.СоздатьЭлемент(); КонецЕсли; РуководительЗапись.Должность = Руководитель.Должность; Если РуководительЗапись.КонтактноеЛицо = Справочники.КонтактныеЛица.ПустаяСсылка() Тогда КонтактноеЛицо = Справочники.КонтактныеЛица.СоздатьЭлемент(); Иначе КонтактноеЛицо = РуководительЗапись.КонтактноеЛицо.ПолучитьОбъект(); КонецЕсли; КонтактноеЛицо.Имя = Руководитель.Имя; КонтактноеЛицо.Фамилия = Руководитель.Фамилия; КонтактноеЛицо.Отчество = Руководитель.Отчество; КонтактноеЛицо.Наименование = Руководитель.Представление; КонтактноеЛицо.Записать(); РуководительЗапись.КонтактноеЛицо = КонтактноеЛицо.Ссылка; РуководительЗапись.Наименование = Руководитель.Представление; РуководительЗапись.Должность = Руководитель.Должность; РуководительЗапись.Владелец = ЭтотОбъект.Ссылка; РуководительЗапись.Записать(); КонецЕсли; |
|||
25
Fannasankh
13.10.15
✎
15:34
|
(23) установлен, он там по умолчанию установлен, я его не менял
|
|||
26
Fannasankh
13.10.15
✎
15:43
|
up
|
|||
27
Nuobu
13.10.15
✎
15:47
|
(26) Попробуй обновить реквизит формы, к которому элемент формы привязан.
Что-то вроде ЭтаФорма.СправочникСписок.Прочитать(); |
|||
28
Fannasankh
13.10.15
✎
15:48
|
(27) ЭтаФорма.СправочникСписок.Обновить() - имеется. И никакого эффекта.
|
|||
29
Nuobu
13.10.15
✎
15:48
|
(28) А можно вместо "Обновить()" попробовать "Прочитать()"? Есть там такой метод?
|
|||
30
Fannasankh
13.10.15
✎
15:50
|
(29) нет, там единственный метод - "Обновить()"
|
|||
31
ibreiter
13.10.15
✎
15:50
|
(24) Ну ее можно вызвать после создания справочника?
|
|||
32
Nuobu
13.10.15
✎
15:52
|
(30) Вижу.
У тебя на форме, скорее всего, есть кнопка "Обновить" попробуй её нажать после создания своих записей. |
|||
33
Fannasankh
13.10.15
✎
15:52
|
(31) кого её? Можно зайти в справочник "КонтактныеЛицаКонтрагентов" и там будет новый элемент. С проставленным владельцем. А в форме владельца не будет в списке нового элемента.
|
|||
34
Fannasankh
13.10.15
✎
15:53
|
(32) это было самое очевидное :) не помогает
есть ещё ЭтаФорма.ЭлементыФормы.КонтактныеЛицаКонтрагента.ОбновитьСтроки() - но тоже не туда |
|||
35
Nuobu
13.10.15
✎
15:54
|
(34) А после переоткрытия формы оно появляется?
|
|||
36
Nuobu
13.10.15
✎
15:57
|
(34) КонтактныеЛица.Отбор.ОбъектВладелец.Значение = Ссылка;
КонтактныеЛица.Отбор.ОбъектВладелец.Использование = Истина; Попробуй это добавить. |
|||
37
Fannasankh
13.10.15
✎
16:03
|
(35) появляется
|
|||
38
Nuobu
13.10.15
✎
16:04
|
(37) - (36) Пробовал?
|
|||
39
ibreiter
13.10.15
✎
16:04
|
(33) Я правильно понимаю, у вас справочник 2 заполняется вызовом ЗаполнитьРуководителя(Руководитель)?
|
|||
40
Fannasankh
13.10.15
✎
16:05
|
(39) да
|
|||
41
ibreiter
13.10.15
✎
16:05
|
(40) В модуле формы Справочника 1 вы программно добавляете новый элемент?
|
|||
42
ibreiter
13.10.15
✎
16:06
|
(41) В справочник 2
|
|||
43
Fannasankh
13.10.15
✎
16:08
|
(38) спасибо огромное, помогло. А то я уже убил на эту фигню половину от того, что вообще согласовано по задаче.
Хотя принцип мне на самом деле не ясен. Отбор и до этого стоял. Типа чтобы перечитать, нужно внести изменения в отбор... А почему нельзя просто обновить. |
|||
44
Fannasankh
13.10.15
✎
16:08
|
(42) да. Проблема решилась. Решение в (36)
|
|||
45
ibreiter
13.10.15
✎
16:10
|
Я так представляю примерно порядок действий для формы справочника 1:
Проц ПриОткрытии ЗаполнитьРуководителя(Руководитель) Проц ДобавоениеВСпр2 Добавили новый элемент ЗаполнитьРуководителя(Руководитель) |
|||
46
ibreiter
13.10.15
✎
16:11
|
(44) Ну и хорошо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |