Подставление значения из регистра сведений в форму
доброго дня всем. проблема такая: нужно сделать подставление значений из регистра сведений в поле формы. конкретно: при вводе "оборудования" подставляется значение в "ЗаменяемыйКартридж". Когда мне было дано это задание, я вспомнил, что делал нечто похожее в своей курсовой, оттуда код я и взял. Но спустя не мало времени, я к сожалению почти все забыл.
ошибок никаких не выдается, просто не работает подставление. добавлю еще скрины регистра и реквизитов формы для полноты картины. заранее благодарю за помощь
// ОБЩИЙ МОДУЛЬ
Функция ПривязкаГр(АктуальнаяДата,
ЭлементСправочник1) Экспорт
// Создать вспомогательный объект Отбор
Отбор = Новый Структура("Номенклатура",
ЭлементСправочник1);
// Получить актуальные значения ресурсов регистра
ЗначенияРесурсов =
РегистрыСведений.РасходныеМатериалыВОборудовании.ПолучитьПоследнее(АктуальнаяДата,
Отбор);
Возврат ЗначенияРесурсов.ЗаменяемыйКартридж;
КонецФункции
// ФОРМА ДОКУМЕНТА
&НаКлиенте
Процедура Привет(Элемент)
Объект.СтарыйКартридж = ОбщийМодуль1.ПривязкаГр(Объект.Дата,
объект.Оборудование);
КонецПроцедуры
Показатьошибок никаких не выдается, просто не работает подставление. добавлю еще скрины регистра и реквизитов формы для полноты картины. заранее благодарю за помощь
Прикрепленные файлы:
По теме из базы знаний
- Полная методичка к курсу "Программирование 8.2"
- Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)
- Полезные процедуры и функции для программиста
- Интеграция с маркетплейсами МегаМаркет, Wildberries, OZON, ЯндексМаркет, VK, Avito, Леруа Мерлен, Aliexpress, Dostavista
- Управление сборкой. Расширение для конфигурации СППР
Найденные решения
Используйте запрос, что бы понять что и как вам надо выбрать:
Только учтите, что по условию задачи вам нужно отбирать по измерению Оборудование, а в коде вы отбираете по реквизиту Номенклатура.
Вышеприведенный запрос вам может вернуть не одну запись, а набор записей по всем измерениям где когда либо в Номенклатуре было указанное значение, а в коде будет взята только первая запись. и она может быть не та, что вы ожидаете
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РМ.Оборудование КАК Оборудование
|ИЗ
| РегистрСведений.РасходныеМатериалыВОборудовании.СрезПоследних(&АктуальнаяДата,Номенклатура= &Номенклатура) КАК РМ";
Запрос.УстановитьПараметр("АктуальнаяДата", АктуальнаяДата);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Результат = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий Тогда
Возврат Выборка.Оборудование;
Иначе
Возврат Неопределено;
КонецЕсли;
ПоказатьТолько учтите, что по условию задачи вам нужно отбирать по измерению Оборудование, а в коде вы отбираете по реквизиту Номенклатура.
Вышеприведенный запрос вам может вернуть не одну запись, а набор записей по всем измерениям где когда либо в Номенклатуре было указанное значение, а в коде будет взята только первая запись. и она может быть не та, что вы ожидаете
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) когда указываю любое из имеющихся измерений, все равно ничего не меняется. ради интереса в модуле формы заменил "Процедура Привет(Элемент)" на "ОборудованиеПриИзменении(Элемент)" и начало выдавать ошибку когда заполняю "оборудование" любым значением
Прикрепленные файлы:
(6) регистр периодичность в пределах секунды. объекта Дата нет в регистре, есть период, но если убрать Объект.Дата из кода, выдаст ошибку "недостаточно фактических параметров", если написать вместо объект.дата любой другой объект (период например) будет ошибка "поле объекта не обнаружено"
Эта задача состоит из двух этапов. 1) получить нужные данные из регистра 2) передать полученные данные в нужное место итоговой формы.
Насколько я вижу, пока нет даже понимания, какой из этапов вызывает проблему.
Я бы советовал или 1) воспользоваться отладчиком, понять, в чем же проблема, дальше ее решить или 2) нанять программиста. Второй путь быстрее и дешевле.
Насколько я вижу, пока нет даже понимания, какой из этапов вызывает проблему.
Я бы советовал или 1) воспользоваться отладчиком, понять, в чем же проблема, дальше ее решить или 2) нанять программиста. Второй путь быстрее и дешевле.
Используйте запрос, что бы понять что и как вам надо выбрать:
Только учтите, что по условию задачи вам нужно отбирать по измерению Оборудование, а в коде вы отбираете по реквизиту Номенклатура.
Вышеприведенный запрос вам может вернуть не одну запись, а набор записей по всем измерениям где когда либо в Номенклатуре было указанное значение, а в коде будет взята только первая запись. и она может быть не та, что вы ожидаете
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РМ.Оборудование КАК Оборудование
|ИЗ
| РегистрСведений.РасходныеМатериалыВОборудовании.СрезПоследних(&АктуальнаяДата,Номенклатура= &Номенклатура) КАК РМ";
Запрос.УстановитьПараметр("АктуальнаяДата", АктуальнаяДата);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Результат = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий Тогда
Возврат Выборка.Оборудование;
Иначе
Возврат Неопределено;
КонецЕсли;
ПоказатьТолько учтите, что по условию задачи вам нужно отбирать по измерению Оборудование, а в коде вы отбираете по реквизиту Номенклатура.
Вышеприведенный запрос вам может вернуть не одну запись, а набор записей по всем измерениям где когда либо в Номенклатуре было указанное значение, а в коде будет взята только первая запись. и она может быть не та, что вы ожидаете
проблема решилась. но очень странным образом. нужно ставить дату чуть позже, чем она есть в регистре, а по дефолту в форме стоит сегодняшняя дата и 00:00:00 часов. то есть, если бы я открыл тот же код завтра, он бы работал без смены время вручную. кто-нибудь может объяснить как это работает и почему?
Прикрепленные файлы:
Уважаемый коллега. Почему у Вас в регистре сведений имеется два измерения, а не одно. Во вторых, почему у Вас нет выражения строка табличной части. В третьих в форме документа у Вас строка табличной части не привязывается к функциям, которые содержатся в общем модуле. Поэтому у Вас и ничего не получается.
Кроме того, у Вас в функции стоит возврат значения ресурсов, Номенклатура, в общем ммодуле, а привязывается данная функция к реквизиту формы старый картридж. Это как такое возможно. Поди туда, не знаю куда, принеси то, не знаю что. Так что ли получается. Поэтому и ничего не происходит. Функция выполнена быть не может в принципе, поскольку значения ресурса и значение реквизита в которое должно идти представление значения ресурса не совпадает. Вот и весь ответ. Переписывайте функцию и разберитесь вначале, что Вы на самом деле хотите.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот