Имя: Пароль:
1C
1C 7.7
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) можешь тогда меня напоить)))))