|
Недопустимое обращение к необновленным параметрам работы программы | ☑ | ||
---|---|---|---|---|
0
fantomrik
08.11.15
✎
02:57
|
Собственно ошибка при /C ЗапуститьОбновлениеИнформационнойБазы
Возникла ошибка получения значения доп реквизита. {ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(928)}: Недопустимое обращение к необновленным параметрам работы программы (например, к некоторым параметрам сеанса): - если это обращение выполняется из формы на начальной странице (рабочем столе), то необходимо убедиться, что в ней имеется вызов процедуры ОбщегоНазначения.ПриСозданииНаСервере; - в остальных случаях необходимо перенести вызов прикладного кода после обновления параметров работы программы. а "Возникла ошибка получения значения доп реквизита." от сюда, из моего нового общего серверного модуля // Возвращает значение дополнительного ревизита объекта // // Параметры: // ТипОбъктаМетаданных - Строка, тип объекта метаданных, для которого нужно получить значение доп реквизита, например Справочник.Пользователи // // СсылкаНаОбъект - Ссылка, ссылка на объект, для которого нужно получить значение доп реквизита // // НаименованиеДопРеквизита - Строка, наименование доп реквизита, для которого нужно получить значение // // // Возвращаемое значение: // ЛюбойТипДанных - значение доп реквизита, тип данных в зависимости от типа доп реквизита // Функция ПолучитьЗначениеДопРеквизита(ТипОбъектаМетаданных, СсылкаНаОбъект, НаименованиеДопРеквизита) Попытка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПользователиДополнительныеРеквизиты.Ссылка, | ПользователиДополнительныеРеквизиты.Свойство, | ПользователиДополнительныеРеквизиты.Значение |ИЗ | " + ТипОбъектаМетаданных + ".ДополнительныеРеквизиты КАК ПользователиДополнительныеРеквизиты |ГДЕ | ПользователиДополнительныеРеквизиты.Ссылка = &Ссылка | И ПользователиДополнительныеРеквизиты.Свойство = &Свойство"; Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(НаименованиеДопРеквизита)); Запрос.УстановитьПараметр("Ссылка" , СсылкаНаОбъект); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.Значение; КонецЦикла; Исключение Сообщить("Возникла ошибка получения значения доп реквизита. " + ОписаниеОшибки()); КонецПопытки; КонецФункции // ПолучитьЗначениеДопРеквизита() |
|||
1
fantomrik
08.11.15
✎
02:58
|
Все работает, но собственно хотелось бы понять на что ругается.. И да, я плохой, ищу по наименованию :(
|
|||
2
fantomrik
08.11.15
✎
03:13
|
Что то он пишет о парметрах сеанса.. вешеописанная процедура вызывается отсюда..
Функция ПолучатьНулевыеЦеныЗакупки() Экспорт Если ПолучитьЗначениеДопРеквизита("Справочник.Пользователи", ПараметрыСеанса.ТекущийПользователь, "Оповещать о нулевых ценах закупки") = Истина Тогда Возврат Истина; КонецЕсли; Возврат Ложь; КонецФункции А если еще выше, то запускаю из модуля упр приложения, в конце процедуры ПриНачалеРаботыСистемы() |
|||
3
fantomrik
08.11.15
✎
03:20
|
Собственно наверно понял. Скорее всего при обновлении системы инициализация парматров сеанса происходит позже чем обычно, соответственно наверно спотыкается на строчке Если ПолучитьЗначениеДопРеквизита("Справочник.Пользователи", ПараметрыСеанса.ТекущийПользователь, "Оповещать о нулевых ценах закупки") = Истина Тогда
|
|||
4
fantomrik
08.11.15
✎
17:09
|
Решил проблему, проверяя есть ли параметры запуска. По умолчанию у пользователей тонкий клиент без параметров. В случае параметра с обновлением, мой код пропускается.
Процедура ПриНачалеРаботыСистемы() // СтандартныеПодсистемы СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы(); // Конец СтандартныеПодсистемы //+2015-11-07 Если ПараметрЗапуска = "" Тогда МФ_ОбщегоНазначенияКлиент.ОповеститьОНеУстановленныхЦенахНоменклатуры(); КонецЕсли; //-2015-11-07 КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |