Имя: Пароль:
 
1C
1С v8
Элементы справочника.
0 McAlex86
 
06.03.18
12:57
Ребята. Помогите!!!
Ситуация простая.
Имеются два справочника: Справочник1 и Справочник2.
Имеется документ (Документ1) с реквизитами: Значение1 (тип: СправочникСсылка.Справочник1) и Значение2 (тип: СправочникСсылка.Справочник1).
Необходимо чтобы в документе при выборе элемента в Значение1 этот же одноименный элемент автоматически подставлялся в Значение2.
Имена элементов в справочниках одинаковые, только код разный.
Вот как то так описал проблему).
ХЕЛП, добрые люди.
1 catena
 
06.03.18
12:57
Что делал, что не получилось?
2 McAlex86
 
06.03.18
13:02
Много чего делал. Весь мозг съел.

Процедура НаименованиеПриИзменении(Элемент)
ЗаполнитьНаименование();
КонецПроцедуры

&НаСервере
ЗаполнитьНаименование()
Объект.Значение2 = Объект.Значение1.Значение2;
КонецПроцедуры

Но по скольку тип Значение2 ссылка на справочник, естественно ничего не выходит.
3 catena
 
06.03.18
13:03
(2)Синтаксис-помощник читал? Там есть волшебные методы: НайтиПоРеквизиту, НайтиПоНаименованию, НатийПоКоду. Остросюжетное чтиво, рекомендую.
4 13Дима13
 
06.03.18
13:06
в обработчик "При изменении" реквизита 1 пишешь:
Если ЗначениеЗАполнено(реквизит1) Тогда
   Реквизит2 = ЗаполнитьРеквизит2(реквизит1.Наименование)
Иначе
Реквизит2 = предопределенноезначение("Справочник.Справочник2.ПУстаяСсылка");
КонецЕсли

Функция ЗаполнитьРеквизит2(НаименованиеРеквизита1)
     Возврат Справочники.Справочник2.НайтиПоНаименованию(НаименованиеРеквизита1);
КонецФункции
5 McAlex86
 
06.03.18
13:06
(3) Читал, но в помощниках всегда все так просто
Я с 1с не близко знаком. Но вот эту задачу решить надо.
6 Мимохожий Однако
 
06.03.18
13:13
(5) ОФФ: С учетом
"Ребята. Помогите!!!
Ситуация простая.
...
Много чего делал. Весь мозг съел."
Убери эмоции, включи мозг (срыгни).

Посмотри как сделано в типовой ЗУП по справочнику Сотрудники.

приведенный код:
Объект.Значение2 = Объект.Значение1.Значение2;
ни в какие ворота. У справочника есть метод НайтиПоНаименованию().
Ctrl-F1 почаще жми
7 McAlex86
 
06.03.18
13:28
(4)

&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
    Если ЗначениеЗАполнено(Объект.Реквизит1) Тогда
   Реквизит2 = ЗаполнитьРеквизит2(Объект.Реквизит1.Наименование);
Иначе
Реквизит2 = предопределенноезначение("Справочник.Склад.ПУстаяСсылка");
КонецЕсли
КонецПроцедуры


Функция ЗаполнитьРеквизит2(НаименованиеРеквизита1)
     Возврат Справочники.Склад.НайтиПоНаименованию(НаименованиеРеквизита1);
КонецФункции

Ошибка
{Документ.НаДваСпр.Форма.ФормаДокумента.Форма(5)}: Поле объекта не обнаружено (Наименование)
   Реквизит2 = ЗаполнитьРеквизит2(Объект.Реквизит1.Наименование);
8 13Дима13
 
06.03.18
13:30
(7) Если ЗначениеЗАполнено(реквизит1) Тогда
   Реквизит2 = ЗаполнитьРеквизит2()
Иначе
Реквизит2 = предопределенноезначение("Справочник.Справочник2.ПУстаяСсылка");
КонецЕсли

Функция ЗаполнитьРеквизит2()
     Возврат Справочники.Справочник2.НайтиПоНаименованию(Реквизит1.наименование);
КонецФункции
9 13Дима13
 
06.03.18
13:31
(5) ты бы хоть немного почитал книги по программированию в 1с, пригодится
10 vicof
 
06.03.18
13:31
" Значение2 (тип: СправочникСсылка.Справочник1). "
ничего не смущает?
11 McAlex86
 
06.03.18
13:38
(9) обязательно буду читать. Просто возникла острая необходимость в решении данной задачи.
12 Buster007
 
06.03.18
13:41
(11) позовите специалиста
13 hhhh
 
06.03.18
13:43
(11) ну (8) почему не хочешь прочитать?
14 McAlex86
 
06.03.18
14:11
(8)
&НаКлиенте
Процедура Реквизит1ПриИзменении(Элемент)
    Если ЗначениеЗАполнено(Объект.Реквизит1) Тогда
   Реквизит2 = ЗаполнитьРеквизит2(Объект.Реквизит1);
Иначе
Реквизит2 = предопределенноезначение("Справочник.Справочник2.ПУстаяСсылка");
КонецЕсли

КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗаполнитьРеквизит2(Реквизит1)
    Возврат Справочники.Справочник2.НайтиПоНаименованию(Реквизит1.Наименование);
КонецФункции

Нет результата
15 Lexey_
 
06.03.18
14:20
(14) а что есть?
16 McAlex86
 
06.03.18
14:23
(15) Ничего нет....в Реквизит1 выбираю из Справочника1 элемент, а в Реквизит2 выбранный элемент не заполняется автоматически
17 Ёпрст
 
06.03.18
14:30
(0)
И зачем вам 2 элемента с одним наименованием в одном справочнике впёрлись ?
18 Ёпрст
 
06.03.18
14:31
ну и НайтиПоНаименованию...найдет первый, если че и не факт, что это будет нужный вам.
19 McAlex86
 
06.03.18
14:32
(17) там опечатка...справочники разные, а название элементов одинаковое
20 McAlex86
 
06.03.18
14:32
(18) названия элементов в пределах одного справочника уникальные, без одноименных.
21 Fish
 
06.03.18
14:38
(14) Значит, в Справочник2 нет элемента с наименованием Реквизит1.Наименование.
22 Ёпрст
 
06.03.18
14:39
(20)

&НаКлиенте
Процедура Реквизит1ПриИзменении(Элемент)
    Если ЗначениеЗАполнено(Объект.Реквизит1) Тогда
   Объект.Реквизит2 = ЗаполнитьРеквизит2(Объект.Реквизит1);
Иначе
Объект.Реквизит2 = предопределенноезначение("Справочник.Справочник2.ПУстаяСсылка");
КонецЕсли

КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗаполнитьРеквизит2(Реквизит1)
    Возврат Справочники.Справочник2.НайтиПоНаименованию(Реквизит1.Наименование);
КонецФункции
23 McAlex86
 
06.03.18
15:06
(22) Спасибо!!!!!!!!! Получилось.
Сам себя запутал.
24 McAlex86
 
06.03.18
15:08
Ребята, всем спасибо!!! Знал что поможете.
Обязательно буду читать литературу по 1с.