Подставление значения из регистра сведений в форму

1. user1701538 21.11.21 12:34 Сейчас в теме
доброго дня всем. проблема такая: нужно сделать подставление значений из регистра сведений в поле формы. конкретно: при вводе "оборудования" подставляется значение в "ЗаменяемыйКартридж". Когда мне было дано это задание, я вспомнил, что делал нечто похожее в своей курсовой, оттуда код я и взял. Но спустя не мало времени, я к сожалению почти все забыл.
// ОБЩИЙ МОДУЛЬ
Функция ПривязкаГр(АктуальнаяДата,
ЭлементСправочник1) Экспорт
// Создать вспомогательный объект Отбор
Отбор = Новый Структура("Номенклатура",
ЭлементСправочник1);
// Получить актуальные значения ресурсов регистра
ЗначенияРесурсов =
РегистрыСведений.РасходныеМатериалыВОборудовании.ПолучитьПоследнее(АктуальнаяДата,
Отбор);
Возврат ЗначенияРесурсов.ЗаменяемыйКартридж;
КонецФункции

// ФОРМА ДОКУМЕНТА
&НаКлиенте
Процедура Привет(Элемент)
Объект.СтарыйКартридж = ОбщийМодуль1.ПривязкаГр(Объект.Дата,
объект.Оборудование);
КонецПроцедуры
Показать


ошибок никаких не выдается, просто не работает подставление. добавлю еще скрины регистра и реквизитов формы для полноты картины. заранее благодарю за помощь
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
13. user790708 21.11.21 15:25 Сейчас в теме +0.2 $m
Используйте запрос, что бы понять что и как вам надо выбрать:
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РМ.Оборудование КАК Оборудование
		|ИЗ
		|	РегистрСведений.РасходныеМатериалыВОборудовании.СрезПоследних(&АктуальнаяДата,Номенклатура= &Номенклатура) КАК РМ";
	
	Запрос.УстановитьПараметр("АктуальнаяДата", АктуальнаяДата);
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	
	Результат = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	Если Выборка.Следующий Тогда
		Возврат Выборка.Оборудование;
	Иначе
		Возврат Неопределено;
	КонецЕсли;
Показать


Только учтите, что по условию задачи вам нужно отбирать по измерению Оборудование, а в коде вы отбираете по реквизиту Номенклатура.

Вышеприведенный запрос вам может вернуть не одну запись, а набор записей по всем измерениям где когда либо в Номенклатуре было указанное значение, а в коде будет взята только первая запись. и она может быть не та, что вы ожидаете
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ElGatoGris 21.11.21 12:55 Сейчас в теме
1. Посмотреть какие данные фактически находятся в регистре, может отбор ничего не возвращает, потому что соответствующих данных нет.
2. Пробежаться по цепочке отладчиком.
5. user1701538 21.11.21 13:38 Сейчас в теме
(2) данные есть, отладчик тоже ничего не говорит
7. ElGatoGris 21.11.21 13:55 Сейчас в теме
(5) Отладчик не может ничего не говорить. )) Как уже указали, отбор должен быть по измерениям, оборудование не надо заполнять любым значением, типы значения, передаваемые в отбор и типы измерений должны, естественно, совпадать.
3. Kolesonik 14 21.11.21 13:32 Сейчас в теме
В структуре отбора указан ресурс, а должно быть измерение
4. user1701538 21.11.21 13:38 Сейчас в теме
(3) когда указываю любое из имеющихся измерений, все равно ничего не меняется. ради интереса в модуле формы заменил "Процедура Привет(Элемент)" на "ОборудованиеПриИзменении(Элемент)" и начало выдавать ошибку когда заполняю "оборудование" любым значением
Прикрепленные файлы:
6. Kolesonik 14 21.11.21 13:42 Сейчас в теме
(4)регистр периодический? Объект. Дата заполнен?
8. user1701538 21.11.21 13:57 Сейчас в теме
(6) регистр периодичность в пределах секунды. объекта Дата нет в регистре, есть период, но если убрать Объект.Дата из кода, выдаст ошибку "недостаточно фактических параметров", если написать вместо объект.дата любой другой объект (период например) будет ошибка "поле объекта не обнаружено"
9. Kolesonik 14 21.11.21 14:07 Сейчас в теме
(8)Объект. Дата это реквизит документа, записи есть в регистре?
10. user1701538 21.11.21 14:10 Сейчас в теме
(9)вот что есть в регистре, именно даты нет
Прикрепленные файлы:
11. ElGatoGris 21.11.21 14:26 Сейчас в теме
(10) Так в качестве периода методу ПолучитьПоследнее надо передать значение типа Дата. И отбор по измерениям.
12. starjevschik 21.11.21 15:10 Сейчас в теме
Эта задача состоит из двух этапов. 1) получить нужные данные из регистра 2) передать полученные данные в нужное место итоговой формы.
Насколько я вижу, пока нет даже понимания, какой из этапов вызывает проблему.
Я бы советовал или 1) воспользоваться отладчиком, понять, в чем же проблема, дальше ее решить или 2) нанять программиста. Второй путь быстрее и дешевле.
13. user790708 21.11.21 15:25 Сейчас в теме +0.2 $m
Используйте запрос, что бы понять что и как вам надо выбрать:
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РМ.Оборудование КАК Оборудование
		|ИЗ
		|	РегистрСведений.РасходныеМатериалыВОборудовании.СрезПоследних(&АктуальнаяДата,Номенклатура= &Номенклатура) КАК РМ";
	
	Запрос.УстановитьПараметр("АктуальнаяДата", АктуальнаяДата);
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	
	Результат = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	Если Выборка.Следующий Тогда
		Возврат Выборка.Оборудование;
	Иначе
		Возврат Неопределено;
	КонецЕсли;
Показать


Только учтите, что по условию задачи вам нужно отбирать по измерению Оборудование, а в коде вы отбираете по реквизиту Номенклатура.

Вышеприведенный запрос вам может вернуть не одну запись, а набор записей по всем измерениям где когда либо в Номенклатуре было указанное значение, а в коде будет взята только первая запись. и она может быть не та, что вы ожидаете
14. user1701538 21.11.21 15:28 Сейчас в теме +0.2 $m
(13)спасибо, разберу этот код.
15. Kolesonik 14 21.11.21 15:54 Сейчас в теме
(14)в 13 не рабочий код, в параметрах виртуальной таблицы условия можно ноложить только на измерение
16. user790708 21.11.21 16:35 Сейчас в теме
(15)Рабочий, вопрос оптимальности пока оставим.
17. Kolesonik 14 21.11.21 16:53 Сейчас в теме
(16)посмотрите структуру регистра, вы предлогаете наложить условие в параметрах виртуальной таблицы на ресурс, вряд-ли это у вас получится сделать на практике, это не неоптимально, это ошибка
18. user1701538 21.11.21 17:06 Сейчас в теме
(17) в любом случае, лучше чем ничего (то что у меня было). потихоньку разбираюсь
19. user1701538 21.11.21 17:40 Сейчас в теме
проблема решилась. но очень странным образом. нужно ставить дату чуть позже, чем она есть в регистре, а по дефолту в форме стоит сегодняшняя дата и 00:00:00 часов. то есть, если бы я открыл тот же код завтра, он бы работал без смены время вручную. кто-нибудь может объяснить как это работает и почему?
Прикрепленные файлы:
20. Kolesonik 14 21.11.21 17:50 Сейчас в теме
(19)читайте описание метода получить последнее из синтакс помощника и все поймете
21. user1654599 10.11.22 21:18 Сейчас в теме
Уважаемый коллега. Почему у Вас в регистре сведений имеется два измерения, а не одно. Во вторых, почему у Вас нет выражения строка табличной части. В третьих в форме документа у Вас строка табличной части не привязывается к функциям, которые содержатся в общем модуле. Поэтому у Вас и ничего не получается.
22. user1654599 10.11.22 21:27 Сейчас в теме
Кроме того, у Вас в функции стоит возврат значения ресурсов, Номенклатура, в общем ммодуле, а привязывается данная функция к реквизиту формы старый картридж. Это как такое возможно. Поди туда, не знаю куда, принеси то, не знаю что. Так что ли получается. Поэтому и ничего не происходит. Функция выполнена быть не может в принципе, поскольку значения ресурса и значение реквизита в которое должно идти представление значения ресурса не совпадает. Вот и весь ответ. Переписывайте функцию и разберитесь вначале, что Вы на самом деле хотите.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот