Имя: Пароль:
1C
1С v8
Подставить элемент из другого справочника
,
0 anagk
 
19.08.22
11:52
Сообщать сообщает. А в форму не подставляет. Есть реквизит Контрагент, ПриВыборе Контрагента, в его карточке есть Ответственный (НаименованиеОтв). В накладной есть Реквизит СтруктурныеЕдиницы. Задача чтобы в СтруктурныеЕдиницы автоматом выбрался елемент который ПО НАИМЕНОВАИЮ совпадает с НаименованиеОтв. Сообщение работает. А вот СтрктурнаяЕдиница остаеться пустой.
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
    
***********//////////
    Сообщить(НайтиСтруктурнуюЕдиницу(Контрагент));
    //СтруктурнаяЕдиница = НайтиСтруктурнуюЕдиницу(Контрагент);
КонецПроцедуры


&НаСервере
Функция НайтиСтруктурнуюЕдиницу(СтрЕд)
  
    Перем СтрЕдДляПоиска, СсылкаСтрЕд;
    СтрЕдДляПоиска = Справочники.СтруктурныеЕдиницы;
    КонтрагентСтрЕд = Контрагент.Ответственный;
    СсылкаСтрЕд = СтрЕдДляПоиска.НайтиПоНаименованию(КонтрагентСтрЕд);
    Если СсылкаСтрЕд = СтрЕдДляПоиска.ПустаяСсылка() Тогда
        Возврат "Контрагент не найден";
   Иначе
        Возврат СсылкаСтрЕд.Наименование;
    КонецЕсли;
  
КонецФункции
1 shuhard
 
19.08.22
11:56
(0) и отладчик украли ?
2 Kobol
 
19.08.22
11:59
Похоже у вас реквизит СтруктурнаяЕдиница имеет тип ссылки, а подставить пытаетесь строку (судя по Возврат СсылкаСтрЕд.Наименование).
3 Галахад
 
гуру
19.08.22
11:59
И так видно, что тип возвращаемого значения строка.
4 Kassern
 
19.08.22
12:02
(0) На чем раньше кодили?
Вместо:
Перем СтрЕдДляПоиска, СсылкаСтрЕд;
    СтрЕдДляПоиска = Справочники.СтруктурныеЕдиницы;
    КонтрагентСтрЕд = Контрагент.Ответственный;
    СсылкаСтрЕд = СтрЕдДляПоиска.НайтиПоНаименованию(КонтрагентСтрЕд);
Если СсылкаСтрЕд = СтрЕдДляПоиска.ПустаяСсылка() Тогда
Можно:
СтруктурнаяЕдиница=Справочники.СтруктурныеЕдиницы.НайтиПоНаименованию(Контрагент.Ответственный);
Если СтруктурнаяЕдиница.Пустая() Тогда
5 Kassern
 
19.08.22
12:06
Вы возвращаете строку, а должны ссылку. В вашем случае, вы можете сразу на сервере присвоить найденное значение нужному реквизиту. Объект.СтруктурнаяЕдиница=Справочники.СтруктурныеЕдиницы.НайтиПоНаименованию(Контрагент.Ответственный); А если нужно сообщить при пустом значении, то проверяйте на пустую ссылку и сообщайте
6 anagk
 
19.08.22
12:08
(5) таким образом ошибка - Нет переменной "СПРАВОЧНИКИ"
7 anagk
 
19.08.22
12:11
(4) у истоков стоял))) 7.7
8 1Сергей
 
19.08.22
12:12
(6) на сервере это делать надо
9 anagk
 
19.08.22
12:13
(2) согласен.. и как дальше?)
10 Kassern
 
19.08.22
12:14
(9) см. (8) и (5)
11 anagk
 
19.08.22
12:22
все ок - спасибо. Не привыкну к НаСервере, НаКлиенте))))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший