|
v7: работа с подчиненными справочниками | ☑ | ||
---|---|---|---|---|
0
Ar-Bus
21.04.12
✎
18:29
|
Есть справочник Контрагенты. Ему подчинен справочник АналитикаКонтрагентов. У справочника "АналитикаКонтрагентов" есть подчиненный справочник "ЗначениеАналитики". И есть независимый справочник "АналитическийПризнак". Открываем в режиме 1С Предприятие форму списка справочник "Контрагенты". Жмем "подчиненный справочник", открывается форма списка справочника "АналитикаКонтрагентов". В этой форме списка две колонки, соответственно можно выбирать значение двух реквизитов:
-видАналитики - берется из справочника "АналитическийПризнак" -Значение - берется из справочника "ЗначениеАналитики", который подчинен справочнику "АналитикаКонтрагентов". Вопрос: когда я нахожусь в форме списка справочника "АналитикаКонтрагентов", пытаюсь добавить новую строку. -просит ввести код, по присваивается автоматически -в колонке "ВидАналитики" жму ..., открывается справочник "Аналитический признак", выбираю нужный элемент, жму Enter, текущий элемент заносится в реквизит "ВидАналитики" - все как обычно, все понятно... -затем пытаюсь ввести значение в колонку "ЗначениеАналитики". По идее, жму ..., и вот тут должна открыться форма списка справочника "ЗначениеАналитики" с уже выполненным отбором по владельцу "ВидАналитики". Но этого не происходит, после нажатия ... опять почему-то открывается справочник "контрагенты", после выбора контрагента открывается справочник "АналитикаКлиентов", а вот уже после выбора элемента из этого справочника открывается форма списка справочника "ЗначениеАналитики", где уже и находится нужное мне значение... Такое ощущение, что где-то кто-то владельца не видит... Совсем запутался в этих подчиненных справочниках, подскажите, кто может, что я не так делаю? Какой код в какой модуль надо вставить? |
|||
1
aleks-id
21.04.12
✎
18:32
|
>>Какой код в какой модуль
Какой ногой… Об какие берега?.. Уволю!. (c) |
|||
3
Cthulhu
21.04.12
✎
18:47
|
(21): пока ты не ввел и не сохранил элемент справочника (при редактировании в списке это эквивалентно завершению редактирования новой строки) - он (элемент) не существует, и, соответственно, у него никак не может быть подчиненных элементов (из которых ты что-то там выбираешь).
аналогичная ситуация, кстати, в типовой, с реквизитом "основное свойство" типа "справочник.свойствачегототам", подчиненного. |
|||
4
Ar-Bus
21.04.12
✎
19:01
|
хорошо, но на сохраненном элементе такая же история получается! Ну вот нахожусь в форме списка справочника АналитикаКлиентов, уже введено три элемента... АналитическийПризнак указывается без проблем, а вот "ЗначениеАналитики" ведет непонятными дорогами... Пытаюсь выбрать значение, жму ..., а мне вместо открытия формы списка "ЗначениеАналитики" опять предлагается выбирать контрагента... Почему???
|
|||
5
Кокос
21.04.12
✎
19:05
|
открой свойства поля. там на закладках должна быть привязка к другому полю
|
|||
6
GreyK
21.04.12
✎
19:08
|
(4) Я немного не понял, не люблю длинные тексты :( Но в свойствах реквизитов формы есть такая хрень "Связан с", может стоит его заполнить?
|
|||
7
Ar-Bus
21.04.12
✎
19:11
|
может вы с 1С 8 путаете? не в семерке "связан с"
|
|||
8
Ar-Bus
21.04.12
✎
19:12
|
ой, нет, правда есть "связан с". Сейчас попробую заполнить
|
|||
9
Cthulhu
21.04.12
✎
19:12
|
(8): интересно, чем же... )))
|
|||
10
Кокос
21.04.12
✎
19:14
|
(9) ему надо наверное туда Владелец вписать :)
|
|||
11
Cthulhu
21.04.12
✎
19:16
|
(10): садись, "два".
|
|||
12
Ar-Bus
21.04.12
✎
19:17
|
(5) а что нужно там указать в этом поле "связан с"?
|
|||
13
Кокос
21.04.12
✎
19:18
|
(12) в форме списка? а хз. я уже не помню. попробуй Владелец, ТекущаяСтрока.Владелец или наименование колонки где лежит значение владельца. сто лет на 7рке ничего не писал. последний клиент на 7рке остался и тот только на обновах
|
|||
14
Cthulhu
21.04.12
✎
19:59
|
(12): ТекущийЭлемент
|
|||
15
Cthulhu
21.04.12
✎
19:59
|
(14)+: именно вот так прям, без скобок. ;)
|
|||
16
Cthulhu
21.04.12
✎
20:18
|
Не, брешу. Облом.
"Связан с" понимает только наименование реквизита формы. Навскидку спасает (от предварительного выбора элемента-владельца при начале выбора реквизита типа "подчиненный справочник") вот ето: Процедура ПриНачалеВыбораЗначения(НаимРекв,ФСО) //предопределенная Перем тКонт; Если НаимРекв="РеквИзПодчСпр" Тогда ФСО=0; ОткрытьФорму("Справочник.ПодчСпр",тКонт); тКонт.ИерархическийСписок(1); тКонт.ИспользоватьВладельца(ТекущийЭлемент()); КонецЕсли; КонецПроцедуры //ПриНачалеВыбораЗначения |
|||
17
Ar-Bus
22.04.12
✎
08:04
|
а процедура ПриНачалеВыбораЗначения в модуле какой формы списка должна быть? Где указан этот реквизит, который необходимо выбрать из подчиненного справочника?
|
|||
18
Voronve
22.04.12
✎
10:05
|
(17) В модуле той формы списка которую открываешь. Если форма одна то в модуле "ФормаСписка". Попробуй вот так:
Процедура ПриНачалеВыбораЗначения(ИдентификаторЭлементаДиалога, Флаг) Если ИдентификаторЭлементаДиалога="<твой идентификатор поля справочника типа ЗначениеАналитики>" Тогда <твой идентификатор поля справочника типа ЗначениеАналитики>.ИспользоватьВладельца(ТекущийЭлемент()); КонецЕсли; КонецПроцедуры |
|||
19
Мимохожий Однако
22.04.12
✎
10:13
|
Можно в форме списка подчиненных элементов добавить отбор в процедуре ПриОткрытии()
|
|||
20
Ar-Bus
22.04.12
✎
15:07
|
(16) Спасибо огромное! Этот код помог моей беде!
|
|||
21
Cthulhu
22.04.12
✎
15:16
|
(20): кстати, (18) тоже работает. и изящнее.
хотя в (16) в принципе методика, которая позволяет делать полный перехват выбора с подсовыванием открытия какой угодно формы чего угодно (хоть внешней обработки) в режиме выбора - с отловом выбранного значения и деланием на его основе тоже чего угодно в ОбработкаВыбораЗначения. |
|||
22
Ar-Bus
22.04.12
✎
15:52
|
Сделал реквизит "ЗначениеАналитики" справочника "АналитикаКлиента" периодическим. На закладку документа добавил ТЗ, пытаюсь ее заполнить текущими данными, колонка "ВидАналити" заполняется, а "ЗначениеАналитики" остается пустым. Что не так в коде?
Процедура ПриВыбореКонтрагента() ТЗ.Очистить(); ТЗ.НоваяКолонка("ВидАналитики"); ТЗ.НоваяКолонка("ЗначениеАналитики"); АналитикаКлиентов=СоздатьОбъект("Справочник.АналитикаКлиентов"); АналитикаКлиентов.ИспользоватьВладельца(Контрагент); ЗначенияАналитикиКлиентов=СоздатьОбъект("Справочник.ЗначенияАналитикиКлиентов"); ЗначенияАналитикиКлиентов.ИспользоватьДату(РабочаяДата()); АналитикаКлиентов.ВыбратьЭлементы(); Пока АналитикаКлиентов.ПолучитьЭлемент()=1 Цикл ТЗ.НоваяСтрока(); ТЗ.ВидАналитики=АналитикаКлиентов.ВидАналитики; //ЗначенияАналитикиКлиентов.ИспользоватьДату(ДатаДок); ЗначенияАналитикиКлиентов.ИспользоватьВладельца(АналитикаКлиентов.ВидАналитики); //ТЗ.ЗначениеАналитики=ЗначенияАналитикиКлиентов.Наименование.Получить(ДатаДок); ТЗ.ЗначениеАналитики=ЗначенияАналитикиКлиентов; КонецЦикла; КонецПроцедуры |
|||
23
Мимохожий Однако
22.04.12
✎
16:10
|
Что же ты присваешь в строке:
ТЗ.ЗначениеАналитики=ЗначенияАналитикиКлиентов;? |
|||
24
Ar-Bus
22.04.12
✎
16:15
|
(23) а что там нужно присваивать? Я уже и отладчиком смотрел, вообще строка
ЗначенияАналитикиКлиентов.ИспользоватьВладельца(АналитикаКлиентов.ВидАналитики) выдает пустое значение, если рассчитать это выражение... Почему? Что не так? |
|||
25
Злопчинский
22.04.12
✎
16:37
|
(24)
ЗначенияАналитикиКлиентов.ИспользоватьВладельца(АналитикаКлиентов.ВидАналитики); //ТЗ.ЗначениеАналитики=ЗначенияАналитикиКлиентов.Наименование.Получить(ДатаДок); ТЗ.ЗначениеАналитики=ЗначенияАналитикиКлиентов; . где здесь в справочнике "ЗначенияАналитикиКлиентов" - ПОЗИЦИОНИРОВАНИЕ на вполне конкретный элемент этого справочника, ссылку на который ты потом закидываешь в ТЗ..? |
|||
26
Ar-Bus
22.04.12
✎
16:39
|
(25) ну для периодического реквизита на одну дату может быть установлено одно значение. Когда я говорю "ЗначенияАналитикиКлиентов.ИспользоватьДату(РабочаяДата())" - это разве не значит получение элемента? Может тогда подскажете, как мне спозиционироваться на элементе?
|
|||
27
Злопчинский
22.04.12
✎
16:41
|
(24) когда ты пишешь СпрЧтото = СоздатьОбъект("Справочник.ЧтоТо"); - перед твоим мысленным взором должна предстать картинка типа таблицы с бегунком - для сравнения представь себе логорифмическая линейка. Когда ты пишешь Использовать владельца, ИспользоватьДату - ты на логорифмической линейке ограничиваешь область по которой может ерзать бегунок. и чтоб sgjkexbnm конкретное значение - надо бегунок поставить на это конкрентное значение - или перебором или поиском или как-то еще.
|
|||
28
Злопчинский
22.04.12
✎
16:42
|
(26) чисто в качестве образования: "ну для периодического реквизита на одну дату может быть установлено одно значение." - в общем случае неверно, для периодич.реквизита на одну дату может быть установлено просто дофуя значений
|
|||
29
Ar-Bus
22.04.12
✎
16:51
|
(27) Мне кажется, что тут дело с ИспользоватьВладельца()
пытался написать такой код: Процедура ПриВыбореКонтрагента() ТЗ.Очистить(); ТЗ.НоваяКолонка("ВидАналитики"); ТЗ.НоваяКолонка("ЗначениеАналитики"); АналитикаКлиентов=СоздатьОбъект("Справочник.АналитикаКлиентов"); АналитикаКлиентов.ИспользоватьВладельца(Контрагент); ЗначенияАналитикиКлиентов=СоздатьОбъект("Справочник.ЗначенияАналитикиКлиентов"); ЗначенияАналитикиКлиентов.ИспользоватьДату(ДатаДок); АналитикаКлиентов.ВыбратьЭлементы(); Пока АналитикаКлиентов.ПолучитьЭлемент()=1 Цикл ТЗ.НоваяСтрока(); ТЗ.ВидАналитики=АналитикаКлиентов.ВидАналитики; ЗначенияАналитикиКлиентов.ИспользоватьВладельца(АналитикаКлиентов.ВидАналитики); ЗначенияАналитикиКлиентов.ВыбратьЭлементы(); Пока ЗначенияАналитикиКлиентов.ПолучитьЭлемент()=1 Цикл ТЗ.ЗначениеАналитики=ЗначенияАналитикиКлиентов; КонецЦикла; КонецЦикла; КонецПроцедуры захожу в отладчик. Цикл Пока ЗначенияАналитикиКлиентов.ПолучитьЭлемент()=1 не работает, не получает он не одного элемента! |
|||
30
Злопчинский
22.04.12
✎
16:58
|
читай и думай!!!
в (0) > Значение - берется из справочника "ЗначениеАналитики", который подчинен справочнику "АналитикаКонтрагентов". в (29) > ЗначенияАналитикиКлиентов.ИспользоватьВладельца(АналитикаКлиентов.ВидАналитики); так всетаки значение аналитик чему подчинено - АналитикеКлиентов или ВидуАналитики? |
|||
31
Злопчинский
22.04.12
✎
16:59
|
напиши
Результат = АналитикаКлиентов.ВыбратьЭлементы(); проверь чему равен "результат" - если 0 - в выборке нет ни одного элемента |
|||
32
Злопчинский
22.04.12
✎
17:00
|
если хочешь - скидывай на [email protected] ид и пароль для доступа по тимвьюверу - подключусь на рабочий стол - посмотрим вместе на тови хитрозамороченные схемы... - только оперативно! долго ждать и быть добрым - не в моих правилах...
|
|||
33
Злопчинский
22.04.12
✎
17:02
|
все что ты в (0) описал - смотри как сделано в типовой ТиС - справочник "свойстваКонтрагентов" или "СвойстваНоменклатуры"
|
|||
34
Ar-Bus
22.04.12
✎
17:07
|
(30) СПАСИБО ЗА ТО, ЧТО ГЛАЗА ОТКРЫЛ!!! Действительно, нужно было написать такой код:
Процедура ПриВыбореКонтрагента() ТЗ.Очистить(); ТЗ.НоваяКолонка("ВидАналитики"); ТЗ.НоваяКолонка("ЗначениеАналитики"); АналитикаКлиентов=СоздатьОбъект("Справочник.АналитикаКлиентов"); АналитикаКлиентов.ИспользоватьВладельца(Контрагент); АналитикаКлиентов.ВыбратьЭлементы(); Пока АналитикаКлиентов.ПолучитьЭлемент()=1 Цикл ТЗ.НоваяСтрока(); ТЗ.ВидАналитики=АналитикаКлиентов.ВидАналитики; ТЗ.ЗначениеАналитики=АналитикаКлиентов.ЗначениеАналитики.Получить(ДатаДок); КонецЦикла; КонецПроцедуры |
|||
35
Злопчинский
22.04.12
✎
17:26
|
(34) уф.. теперь я могу кино пойти смотреть спокойно...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |