|
Как получить имя родителя элемента иерархического справочника в форме документа? FirstLineSupport, simon_av, Галахад, Волшебник, DAKE, Kongo2019, Мультук, Ёпрст, Vstur, Metman, Жеглофф, Bigbro, Zombi, obs191, lubitelxml, KJlag, Александр111, DiMel_77, alexxx961503, CepeLLlka, DemonShinji2, НоваяВолна, , boozin, vicof, orakool, DrZombi, yurikmellon2, kiu, youalex, fred001, Бычье сердце, Шурик71, frmdtf1, Hawk_1c, Лирик, tir654
| ☑ | ||
---|---|---|---|---|
0
simon_av
25.02.25
✎
10:11
|
Недавно начал изучать 1С: Предприятие 8.3 (у меня учебная версия), и по мере изучения столкнулся с проблемой (ответы на похожие вопросы мне не помогли).
У меня есть документ, в котором имеется табличная часть "Комплектующие", в этой ТЧ есть реквизиты "Тип", "Модель", "Цена", "Количество", "Стоимость". Не могу сделать автозаполнение для типа. По моей задумке он должен был заполняться названием родителя модели (например: наименование модели - RTX3060, родитель - видеокарта). "Модель" находится в иерархическом справочнике "Комплектующие". Написал код для автозаполнения типа и добавил процедуру "Сообщить" (для проверки), но при выборе модели из списка автозаполнения не происходит, а процедура "Сообщить" выводит пустое сообщение. Проверял запрос (тот что в коде) в управляемой консоли, и он выводит 1 ячейку с названием родителя. Пока что не додумался как это сделать. Если можете, то помогите пожалуйста. Вот сам код модуля формы документа: &НаКлиенте Процедура КомплектующиеМодельПриИзменении(Элемент) ТекСтр = Элементы.Комплектующие.ТекущиеДанные; ТекСтр.Тип = НайтиРодителя(ТекСтр.Модель); Сообщить(НайтиРодителя(ТекСтр.Модель)); КонецПроцедуры &НаСервере Функция НайтиРодителя(Наименование) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Комплектующие.Родитель КАК Родитель |ИЗ | Справочник.Комплектующие КАК Комплектующие |ГДЕ | Комплектующие.Наименование = &Наименование"; Запрос.УстановитьПараметр("Наименование", Наименование); РезультатЗапроса = Запрос.Выполнить().Выбрать(); Возврат РезультатЗапроса.Родитель; КонецФункции; |
|||
1
Bigbro
25.02.25
✎
09:28
|
если модель у вас ссылка на справочник комплектующих то почему вы ее используете в запросе как строковый параметр.
|
|||
2
simon_av
25.02.25
✎
09:48
|
(1) Я увидел это где-то на другом форуме, там была похожая
(наверное) задача, но вместо Родителя там что-то другое пытались вытащить из запроса, в параметре там так же было указано Элементы.<Название_ТЧ>.ТекущиеДанные.<Название_Реквизита>, но перед этим это всё присвоили к переменной (этот вариант тоже выдаёт пустую строку). Я пробовал указывать конкретную модель (в виде строки) в параметре, но даже так при автозаполнении была пустая строка (в форме я выбирал ту модель, которая была заранее указана в параметре). Я пока что не понимаю где именно ошибка, и не знаю откуда и как начать её искать.( |
|||
3
Галахад
гуру
25.02.25
✎
10:03
|
(1) + 1.
Но и так работать будет (хотя это дурной тон): ТекСтр.Тип = ТекСтр.Модель.Родитель; |
|||
4
simon_av
25.02.25
✎
10:10
|
(3) Теперь появилась ошибка при выборе модели в форме:
"Поле объекта не обнаружено (Родитель)" |
|||
5
Волшебник
25.02.25
✎
10:17
|
(4) Надо же что-то делать, правда?
|
|||
6
simon_av
25.02.25
✎
10:24
|
(5) Пошёл уже 7-ой час что-то делания
|
|||
7
Волшебник
25.02.25
✎
10:28
|
(6) Может проверить ТекСтр на Неопределено? и проверить тип поля Модель?
|
|||
8
simon_av
25.02.25
✎
10:36
|
Спасибо за (5), это настолько ущемило моё самолюбие, что я как-то интуитивно смог всё починить. Вот код (может он кому-то поможет в будущем):
&НаКлиенте Процедура КомплектующиеМодельПриИзменении(Элемент) ТекСтр = Элементы.Комплектующие.ТекущиеДанные; ТекСтр.Тип = "" + НайтиРодителя(Строка(ТекСтр.Модель)); КонецПроцедуры &НаСервере Функция НайтиРодителя(Наименование) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПРЕДСТАВЛЕНИЕ(Комплектующие.Родитель) КАК Родитель |ИЗ | Справочник.Комплектующие КАК Комплектующие |ГДЕ | Комплектующие.Наименование = &Наименование"; Запрос.УстановитьПараметр("Наименование", Наименование); РезультатЗапроса = Запрос.Выполнить().Выбрать(); РезультатЗапроса.Следующий(); Возврат Строка(РезультатЗапроса.Родитель); КонецФункции; Извините что без форматирования, я пока что не разобрался как его делать. |
|||
9
simon_av
25.02.25
✎
10:36
|
Не знаю как, но теперь в типе указывается имя родителя автоматически
|
|||
10
Волшебник
25.02.25
✎
10:38
|
Ваш код — говно.
|
|||
11
Ёпрст
25.02.25
✎
10:41
|
(10) не, архитектура, изначально, то самое, код - это уже следствие
|
|||
12
simon_av
25.02.25
✎
10:41
|
(10) Очевидно, ведь я за 1С просидел пока что около недели. Наберусь опыта и буду писать "неговно"
|
|||
13
Волшебник
25.02.25
✎
10:43
|
(12) Уберите все преобразования в строку. Пользуйтесь ссылками
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |