|
v7: Автозаполнение реквизита документа реквизитом справочника | ☑ | ||
---|---|---|---|---|
0
keramik
06.01.15
✎
09:04
|
Добрый день. Задача - заполнить в документе поле "Должность" данными поля "Должность" из справочника "КонтактныеЛицаКонтрагентов" так, чтобы при выборе контрагента автоматически поле "Должность" менялось на соответствующее.
В модуле ФормыДокумента написал следующий код: &НаКлиенте Процедура КонтактнаяПерсонаПриИзменении() ДокументОбъект.РеквизитСправочникаКонтактнаяПерсона = ПолучитьЗначениеРеквизитаСправочникаКонтактныеЛицаКонтрагентовНаСервере(ДокументОбъект.КонтактныеЛицаКонтрагентов); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьЗначениеРеквизитаСправочникаКонтактныеЛицаКонтрагентовНаСервере(КонтактныеЛицаКонтрагентов) Возврат КонтактныеЛицаКонтрагентов.Должность; КонецФункции Но при запуске соответствующей формы, появляется сообщение о том, что функция ПолучитьЗначениеРеквизитаСправочникаКонтактныеЛицаКонтрагентовНаСервере не определена. Если прописать перед функцией просто &НаСервере, то такой ошибки нет, но при выборе Контрагента появляется сообщение Object field not found (РеквизитСправочникаКонтактнаяПерсона). |
|||
1
iceman2112
06.01.15
✎
11:18
|
&НаКлиенте
Процедура КонтактнаяПерсонаПриИзменении() КонтактнаяПерсонаПриИзмененииНаСервере(); КонецПроцедуры &НаСервере Функция КонтактнаяПерсонаПриИзмененииНаСервере() Объект.РеквизитСправочникаКонтактнаяПерсона = Объект.КонтактныеЛицаКонтрагентов.Должность; КонецФункции |
|||
2
Мимохожий Однако
06.01.15
✎
11:23
|
Забыл про метод реквизит формы в значение в серверной процедуре
|
|||
3
keramik
06.01.15
✎
11:52
|
(1) Изменил код так, как написали, теперь появляются сообщения: Variable is not defined (Объект) в функции.
А есть разница в передачи значений из справочника в поле документа или код одинаковый как для справочника, так и для формы документа? |
|||
4
keramik
06.01.15
✎
12:05
|
Записал переменную "Объект" в Ordinary application module так:
Перем Объект Экспорт; Сообщения об ошибке, что переменная не объявлена пропали. Но теперь при вводе информации в поле "Должность" (у меня процедура поставлена на действие "ПриИзменении в свойстве поля), появляется сообщение Value is not of object type (РеквизитСправочникаКонтактнаяПерсона). |
|||
5
Maximysis
06.01.15
✎
12:17
|
почему тема о 7?
|
|||
6
keramik
06.01.15
✎
12:25
|
Чёрт, я слепой пенчекряк. Вопрос о версии 8.2
|
|||
7
iceman2112
06.01.15
✎
12:26
|
(4) Зайди во вкладку "Форма", там вкладка "Реквизиты", и есть ли там у тебя реквизит Объект? У тебя его там нет, а какой у тебя тогда реквизит форма связан с документом не ясно, ты ничего не переименовавывал? Вот ДокументОбъект, ты наверно переименовал
|
|||
8
keramik
06.01.15
✎
12:48
|
Я копаюсь в изменённой до меня программе, затрудняюсь сказать что тут менялось и переименовывалось.
Под вкладкой "Форма" имеется ввиду документ, в котором я делаю изменения? В нём есть группа "Attributes" в которой реквизита "Объект" отсутствует. Если речь идёт о закладках в самой форме (их 3 штуки у меня "Dialog Box" - внешний вид формы; "Module" - код процедур и функций; "Attributes" - список атрибутов и их тип), то в закладке "Attributes" тоже отсутствует "Объект". Есть только ДокументОбъект, и его тип указан "ДокументОбъект.НазваниеФормы". Я так понимаю, что речь идёт именно про этот реквизит. |
|||
9
iceman2112
06.01.15
✎
12:52
|
Ну значит
&НаСервере Функция КонтактнаяПерсонаПриИзмененииНаСервере() ДокументОбъект.РеквизитСправочникаКонтактнаяПерсона = ДокументОбъект.КонтактныеЛицаКонтрагентов.Должность; КонецФункции |
|||
10
keramik
06.01.15
✎
13:00
|
Так всё компилится, но при добавлении информации появляется сообщение "Object field not found (РеквизитСправочникаКонтактнаяПерсона)".
|
|||
11
iceman2112
06.01.15
✎
13:44
|
Заходи в отладку и смотри. че там есть у тебя что нет
|
|||
12
iceman2112
06.01.15
✎
13:44
|
Прям поставь точку останова на
ДокументОбъект.РеквизитСправочникаКонтактнаяПерсона = ДокументОбъект.КонтактныеЛицаКонтрагентов.Должность; И вычисли ДокументОбъект |
|||
13
keramik
06.01.15
✎
14:26
|
При выделении мышкой текста ДокументОбъект во всплывающей подсказке отображается номер заявки, которую открыл для изменения.
Если выделять другие части строки, то только для Должность появляется вот такая всплывающая подсказка --> "" |
|||
14
keramik
06.01.15
✎
14:27
|
Получается, что значение неправильно передаётся или даже вообще не передаётся.
|
|||
15
palpetrovich
06.01.15
✎
15:18
|
ниче не понимаю, что не получается? ...может тупо "РеквизитСправочникаКонтактнаяПерсона" и "Должность" - разные типы?
короче, так работает :) &НаСервере Процедура ВернутьТипЦенНоменклатуры() Объект.ТипЦенНоменклатуры = Объект.Контрагент.ТипЦенНоменклатуры; КонецПроцедуры &НаКлиенте Процедура КонтрагентПриИзменении(Элемент) ВернутьТипЦенНоменклатуры(); КонецПроцедуры |
|||
16
keramik
06.01.15
✎
15:34
|
Вот я сейчас полез изучать структуру системы, что откуда берётся и что куда переносится.
Может будет проще добавить новый реквизит к документу и к справочнику и уже его выводить... Буду пробовать. |
|||
17
iceman2112
06.01.15
✎
16:11
|
Мужик, почитай про возможности отладки плз. Табло, вычислить выражение и т.п. Очень может тебе.
|
|||
18
iceman2112
06.01.15
✎
16:12
|
||||
19
keramik
06.01.15
✎
16:37
|
Спасибо, просмотрю.
|
|||
20
keramik
07.01.15
✎
11:42
|
Как вобще работает эта функция?
&НаСервере Функция КонтактнаяПерсонаПриИзмененииНаСервере() ДокументОбъект.РеквизитСправочникаКонтактнаяПерсона = ДокументОбъект.КонтактныеЛицаКонтрагентов.Должность; КонецФункции Я так понимаю, что она на сервере в документе "КонтактныеЛицаКонтрагентов" ищет реквизит "Должность", а затем передаёт это значение в реквизит документа "КонтактнаяПерсона". Правильно? |
|||
21
keramik
07.01.15
✎
12:41
|
(7) Вот ещё что. Во вкладке "Реквизиты" документа, где вызываются процедура и функция, есть реквизит ДокументОбъект.
А во вкладке "Реквизиты" справочника, откуда должны браться данные, есть реквизит СправочникОбъект. Может это влияет на отработку кода? |
|||
22
keramik
07.01.15
✎
12:49
|
Судя по отладке, функция ищет значение в том же самом документе, из которого и вызывается. Но надо, чтобы она искала значение в справочнике "КонтактныеЛицаКонтрагентов".
Т.е. ДокументОбъект <-- указан номер созданной заявки .РеквизитСправочникаКонтактнаяПерсона = ДокументОбъект <--указан тот же самый номер созданной заявки .КонтактныеЛицаКонтрагентов.Должность А как указать на другой документ? Чтобы она искала именно в нём. |
|||
23
Калиостро
07.01.15
✎
13:03
|
Охренеть. В семерке код из одной строки был бы в перовм же ответе. Еще пяток постов на тыканье в ЖКК и тема спокойно бы умерла.
В снеговике меньше, чем сотней постов, такой вопрос, полагаю, не решится :( |
|||
24
keramik
07.01.15
✎
15:03
|
Ребят, подскажите мануал с описанием или пример работающей конфиги, где передаётся значение из справочника в поле документа. Уже голову сломал.
Принцип понятен, что надо взять из одного реквизита и вставить в другой, а как это реализовать и в чём может быть загвоздка непонятно. |
|||
25
iceman2112
07.01.15
✎
15:31
|
(24) Тебе скинули примеры, они все рабочие, все остальное это твои заморочки, почту проверь
|
|||
26
Адский плющ
07.01.15
✎
16:01
|
Автор начал делать цывильно без контекста. В итоге превратили в г-код.
|
|||
27
iceman2112
07.01.15
✎
18:09
|
(26) ты че тут яйцами тресешь? ты помог автору? нет. Он на сервере то, не может посмотреть что у него есть?
|
|||
28
keramik
08.01.15
✎
08:59
|
(27) Спасибо, iceman2112, помог.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |