Ошибка программиста при добавлении в УТ 11.5 стороннего модуля через объединение
В 1С при записи константы возникает ошибка не инициализированного параметра сеанса:
Ошибка при получении значения атрибута контекста (РаботаСВнешнимиРесурсамиЗаблокирована)
{ОбщийМодуль.БлокировкаРаботыСВнешнимиРесурсами.Модуль(31)}:Возврат ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована;
{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(661)}:Возврат МодульБлокировкаРаботыСВнешнимиРесурсами.РаботаСВнешнимиРесурсамиЗаблокирована();
{Обработка.ПанельАдминистрированияБСП.Форма.Обслуживание.Форма(22)}:Элементы.ГруппаБлокировкаРаботыСВнешнимиРесурсами.Видимость = РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована();
{Обработка.ПанельАдминистрированияБСП.Команда.Обслуживание.МодульКоманды(14)}:ОткрытьФорму(
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Попытка получения неинициализированного значения параметра сеанса
[ОшибкаИспользованияВстроенногоЯзыка]
Причина в том, что при записи константы, проверяется, можно ли ее записывать, вдруг идет удаление помеченных?
Процедура ЗапретитьИспользованиеУдаляемыхОбъектов(Источник, Отказ) // ОбменДанными.Загрузка = Истина не устанавливается, т.к. необходимо выполнение // при загрузке из внешних источников Если МонопольныйРежим() Тогда Возврат; КонецЕсли; Если Источник.ДополнительныеСвойства.Свойство("НеВыполнятьКонтрольУдаляемых") Или ПараметрыСеанса.ВыполняетсяУдалениеОбъектов Тогда Возврат; КонецЕсли;
Сделал было сделал расширение на модуль сеанса:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) //Чтобы значение было инициализировано - Осипов 25-01-0801 ПараметрыСеанса.ВыполняетсяУдалениеОбъектов = ложь; КонецПроцедуры
Но потом посмотрел, а модуль сеанса то не заполнен! Скопировал из конфигурации поставщика модуль сеанса.
Но при запуске возникла ошибка, что не указана версия конфигурации. Я тоже заметил, что в «О программе» не указана версия, но сначала не придал этому значения.
Тут я и понял что когда программист, обратившийся ко мне, добавлял конфигурацию Меркурий в 1С, он забыл снять галочку с объединения корня и корень конфигурации заменился на код от Меркурия. В принципе, такая же проблема может быть и с объединением конфигурации Data Mobile.
Так что порекомендовал попробовать объединить заново, вернувшись предварительно к исходной конфигурации. Вот так — сначала снять галочку с корня, потом уже отмечать по подсистемам:
Кстати, разработчики тиражных решений не должны допускать подобной небрежности в коде — локальные переменные должны быть объявлены явно. Мне пришлось явно объявить локальную переменную, чтобы она не конфликтовала с названием общего модуля:
Среда: УТ 11.5.20.75 Объем: 0.5 час.
А ты всегда сразу латку делаешь? Вот даже не пришла мысль, а почему вдруг параметр оказался неинициализирован?
Ну и конец статьи позабавил — как будто выдернуто из другого контекста: начали за здравие, закончили за упокой
всегда по разному. но мало ли, может в этом проблема была.
Проблема была в том, что параметр неинициализирован. Правильное решение — разобраться почему так произошло. А не ставить латку, принудительно убивая суть параметра
максимально эффективно в реальной практике иди итерациями. проверил гипотезу — не сработало — далее.
вы путаете правильность и эффективность.
клиенты потому со мной и работают, что я эффективен, а не правилен. Если интересует правильность, почитайте идиотские стандарты «1С совместимо», а потом посмотрите на типовой код и поплачьте.
Какую гипотезу проверяет твоя латка?
что причина в том, что 1с забыла инициализировать этот параметр.
правильность и эффективность это не перпендикулярные понятия. Твоя «эффективность» заканчивается завтра. Потому ты и перелатываешь все заново и заново, потому что нет стратегического представления о том, во что это выльется завтра. А сегодня — сиюминутно это решение — всем хорошо, особенно тем, кто в этом абсолютно не разбирается
поза гуру detected. Известная манипуляция. Я работаю по бюджету клиента. Это 1С, где решения не пилятся «на века»
Обычно это называется «делать костыли». Проблемы от таких «решений» могут выстрелить уже через месяц, как повезет. Набор таких костылей — это ад для разработчика.
«поза гуру detected» — это и есть «деловой стиль»?
но могут и не выстрелить. главное не впасть в перфекционизм.