|
v7: автоматический вывод на форму реквизита справочника | ☑ | ||
---|---|---|---|---|
0
Frostier
14.11.19
✎
19:36
|
Товарищи, прошу подсказать: 1с 7.7. есть справочник Исполнители, в котором есть наименование исполнителя (фирма) и его реквизиты (Директор, адрес, банк и тп). Нужно, чтобы после выбора на форме названия исполнителя в следующем поле ввода автоматически появлялась бы фамилия директора. Спасибо
|
|||
1
ДенисЧ
14.11.19
✎
19:37
|
Ну так лови изменение исполнителя, определяй директора и записывай его в реквизит...
|
|||
2
Frostier
14.11.19
✎
19:47
|
а как определить директора и записать его в реквизит?
|
|||
3
Frostier
14.11.19
✎
19:58
|
(1) а как определить директора и записать его в реквизит?
|
|||
4
MWWRuza
гуру
14.11.19
✎
20:02
|
(2)как определить директора
Ну, наверное так, если я правильно понял вопрос: Исполнитель[или как там у Вас реквизит называется?].Директор, или, если реквизит периодический, то Исполнитель.Директор.Получить([нужная Вам дата]). А записать - ВашРеквизит = То, что получили. |
|||
5
MWWRuza
гуру
14.11.19
✎
20:08
|
+(4)То, что в "квадратных скобках", это я так, для наглядности. Естественно, никаких квадратных скобок в коде не нужно :-)
|
|||
6
Frostier
14.11.19
✎
20:29
|
(5) Дружище, есть справочник "Исполнители". В этом справочнике есть реквизит "Директор".
В форме отчета есть поле ввода Исполнитель с типом Справочник.Исполнители. Следующее поле ввода - Директор. Я в поле ввода Исполнитель выбираю этого исполнителя и хочу, чтобы в поле Директор автоматически появлялась бы фамилия директора . Что мне нужно сделать? |
|||
7
andrewalexk
14.11.19
✎
20:31
|
(6) :) ох уж это поколение снеговичков...
|
|||
8
Злопчинский
14.11.19
✎
20:32
|
(6) каким образом у тебя Директор связан с Исполнителями?
|
|||
9
Злопчинский
14.11.19
✎
20:35
|
(6) кладешь на форму реквизит исполнитель (тип справочник)
кладешь на форму поле ввода (ты сам так определил выше) тип строка . в свойтсва поля Исполнитель на закладке Дополнительно пишешь Имя процедуры. в коде пишешь эту процедуру, ей доступны реквизиты формы. уже имеешь заполненного Исполнителя. Через точки вытягиваешь Директора, присваиваешь в поле ввода на форму |
|||
10
Злопчинский
14.11.19
✎
20:35
|
всё почти так как в 8-ке.
только красивше. |
|||
11
Frostier
14.11.19
✎
20:46
|
(10) Процедура ПриВыбореИсполнителя()
Справочник= СоздатьОбъект("Справочник.Исполнители"); Директор = Справочник.Директор; КонецПроцедуры вот так пишу, но поле директор остается пустым |
|||
12
HawkEye
14.11.19
✎
21:07
|
(11) директор = НазваниеТвоегоРеквизитаГдеФирма.НазваниеРеквизитаФирмыГдеДиректор;
ну и проверки на всякие заполнено/не заполнено |
|||
13
Frostier
14.11.19
✎
21:21
|
(12) НазваниеТвоегоРеквизитаГдеФирма.НазваниеРеквизитаФирмыГдеДиректор; ?????? можно понятнее?
|
|||
14
Cthulhu
14.11.19
✎
21:30
|
блин. телепаты на марше.
1. Тебе не надо реквизит - тебе надо (только) видеть кто директор у того "исполнителя", которого ты выбрал... спорим - я угадал?.. 2. У того исполнителя, которого ты выбираешь - есть реквизит "Директор"?.. Если ответ "да" - тогда добавляешь ТЕКСТОВЫЙ РЕКВИЗИТ НА ФОРМУ, в его формуле тупо пишешь - ?(Исполнитель.Выбран()<>0,""+Исполнитель.Директор,"<Исполнитель не выбран>") (вышеназванный код верен, если реквизит, в который ты выбираешь исполнителя - называется "Исполнитель" (без кавычек, самособой) - если он называется по другому тоже не беда, чур ты сам догадаешься, как надо откорректировать формулу))) |
|||
15
HawkEye
14.11.19
✎
21:46
|
(13) как тебе будет понятнее?
|
|||
16
MWWRuza
гуру
14.11.19
✎
21:50
|
Ды блииин... Вот, автор, специально для Вас, соорудил пример, скачивайте, смотрите: https://cloud.mail.ru/public/2pXu/28nHa38Yu
|
|||
17
MWWRuza
гуру
14.11.19
✎
21:53
|
Тьфу-ты, не ту ссылку дал... Пардон. Вот правильная: https://cloud.mail.ru/public/3LMR/38dNRN5QN
|
|||
18
MWWRuza
гуру
14.11.19
✎
21:55
|
+(17) Это архив конфигурации из двух объектов - Справочник и Отчет. Разверните куда-нибудь, подключите как новую базу, и смотрите...
|
|||
19
MWWRuza
гуру
14.11.19
✎
22:00
|
(14)1. Тебе не надо реквизит
Теоретически, как это чаще всего работает в большинстве случаев, да. Но, вдруг ему все-таки реквизит нужен, который будет автоматически заполняться, но, его он захочет "пешком" поменять? Тогда, мой вариант. |
|||
20
Frostier
14.11.19
✎
22:20
|
(19) Огромнейшее спасибо! Был бы ты в Минске - я б тебя пивом напоил! Буду разбираться сейчас, почему у меня все не как у людей. Еще раз благодарю. Всем спасибо!Крепко обнимаю!
|
|||
21
MWWRuza
гуру
14.11.19
✎
23:25
|
(20) :-) Да, может когда-нибудь и окажусь в Минске... По молодости, приходилось бывать. Красивый город, у меня о нем самые благоприятные воспоминания.
"Буду разбираться сейчас, почему у меня все не как у людей." Да потому, что восьмерка, особенно с ее УФ, отучает от простых и понятных решений. В 7.7 все просто, без заморочек. "Определить" - реквизит через ".", установить - через "=". Бывают, конечно заморочки, когда пытаются присваивать значения для недоступных для записи реквизитов, там приходится "огород городить", но, это уже "дебри". В данном случае, все элементарно просто. |
|||
22
Злопчинский
14.11.19
✎
23:58
|
(11) потому что не напрягается моз.
(сейчас учу еще одного 77-ка) Рассмотрим твой код 1. Справочник = СоздатьОбъект("Справочник.Исполнители"); 2. Директор = Справочник.Директор; первым пунктом ты создал некий обьект "справочник" с которым ты собрался работать. если есть тяма-логика то ты должен понимать, что справочник как некая сущность - это неограниченная совокупность однородных записей. Имея НЕОГРАНИЧЕННУЮ СОВОКУПНОСТЬ ЗАПИСЕЙ ты или можешь что-то делать СРАЗУ ОС ВСЕЙ СОВОКУПНОСТЬЮ (что явно не подходит) или что-то делать с неким подмножеством записей (в пределе - подмножество состоит из одной записи). поэтому оператор по пункту 2 - бессмысленен, так как ты пытаешься вытащить директора ИЗ ЧЕГО? дальше логику кода и его оправданность для решения задачи - не рассматриваем, достаточно просто посмотреть на п.1 и 2. |
|||
23
Злопчинский
15.11.19
✎
00:00
|
хотя.. для 61 года - неплохо...
|
|||
24
MWWRuza
гуру
15.11.19
✎
01:01
|
(11),
+(22) Процедура ПриВыбореИсполнителя() Справочник= СоздатьОбъект("Справочник.Исполнители"); // Теперь, нужно спозиционироваться на конкретном элементе справочника... Как? Проще всего методом НайтиЭлемент(Исп), в качестве "Исп" можно использовать выбираемый на форме элемент этого-же справочника. Будет работать... Директор = Справочник.Директор; КонецПроцедуры Но, только зачем все это??? В реквизите "Исп" уже ссылка на конкретный элемент справочника, далее, через точку сразу получаем его реквизит, и присваиваем его реквизиту формы отчета "Директор" через оператор присвоения - "=". Вот так: Процедура ВыбИсп() Директор = Исп.Директор; КонецПроцедуры И не нужно ничего создавать, искать и т.д... Одна строчка. А если нужно просто в текст на форму вывести, то функцией, вызываемой из поля "Формула" закладки "Дополнительно" этого текста: Функция ВывДиректора() Возврат СокрЛП(Исп.Директор); КонецФункции Заголовок у этого текстового поля нужно убрать. Ну, об этом в (14) написано. PS Только, как я уже писал выше - мы не знаем, что у Вас за конфа... Если какая-то типовая - то с вероятностью 99% так у Вас не заработает, так, как их "писатели" прекрасно понимают, что сегодня директор(главбух, кассир.....) один, а завтра он может поменяться. Поэтому эти реквизиты обычно периодические(некий примитивный аналог восьмерошного регистра сведений). В таком случае, эта конструкция будет выдавать ошибку. Тогда надо так: Директор = Исп.Директор.Получить(ДатаОтчета); где ДатаОтчета реквизит типа "Дата" выбираемый на форме. Ну, или, если надо всегда получать на текущую дату, то можно воспользоваться функцией ТекущаяДата() - всегда будет равна системной дате компа, или РабочаяДата() - тоже самое, но можно изменить принудительно через Сервис-Параметры-Рабочая дата. |
|||
25
Frostier
15.11.19
✎
06:56
|
(24) (23) Спасибо за помощь!
|
|||
26
Slypower
15.11.19
✎
09:01
|
(20) можешь тогда меня напоить)))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |