Ошибка программиста при добавлении в УТ 11.5 стороннего модуля через объединение

В 1С при записи константы возникает ошибка не инициализированного параметра сеанса:

Ошибка при получении значения атрибута контекста (РаботаСВнешнимиРесурсамиЗаблокирована)
{ОбщийМодуль.БлокировкаРаботыСВнешнимиРесурсами.Модуль(31)}:Возврат ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована;
{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(661)}:Возврат МодульБлокировкаРаботыСВнешнимиРесурсами.РаботаСВнешнимиРесурсамиЗаблокирована();
{Обработка.ПанельАдминистрированияБСП.Форма.Обслуживание.Форма(22)}:Элементы.ГруппаБлокировкаРаботыСВнешнимиРесурсами.Видимость = РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована();
{Обработка.ПанельАдминистрированияБСП.Команда.Обслуживание.МодульКоманды(14)}:ОткрытьФорму(

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Попытка получения неинициализированного значения параметра сеанса
[ОшибкаИспользованияВстроенногоЯзыка]

Причина в том, что при записи константы, проверяется, можно ли ее записывать, вдруг идет удаление помеченных?

Процедура ЗапретитьИспользованиеУдаляемыхОбъектов(Источник, Отказ)
	
	// ОбменДанными.Загрузка = Истина не устанавливается, т.к. необходимо выполнение
	// при загрузке из внешних источников

	Если МонопольныйРежим() Тогда
		Возврат;
	КонецЕсли;

	Если Источник.ДополнительныеСвойства.Свойство("НеВыполнятьКонтрольУдаляемых")
		Или ПараметрыСеанса.ВыполняетсяУдалениеОбъектов Тогда
		Возврат;
	КонецЕсли;

Сделал было сделал расширение на модуль сеанса:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
	//Чтобы значение было инициализировано - Осипов 25-01-0801
	ПараметрыСеанса.ВыполняетсяУдалениеОбъектов = ложь;
КонецПроцедуры

Но потом посмотрел, а модуль сеанса то не заполнен! Скопировал из конфигурации поставщика модуль сеанса.

Но при запуске возникла ошибка, что не указана версия конфигурации. Я тоже заметил, что в «О программе» не указана версия, но сначала не придал этому значения.

Тут я и понял что когда программист, обратившийся ко мне, добавлял конфигурацию Меркурий в 1С, он забыл снять галочку с объединения корня и корень конфигурации заменился на код от Меркурия. В принципе, такая же проблема может быть и с объединением конфигурации Data Mobile.

Так что порекомендовал попробовать объединить заново, вернувшись предварительно к исходной конфигурации. Вот так — сначала снять галочку с корня, потом уже отмечать по подсистемам:

Кстати, разработчики тиражных решений не должны допускать подобной небрежности в коде — локальные переменные должны быть объявлены явно. Мне пришлось явно объявить локальную переменную, чтобы она не конфликтовала с названием общего модуля:

Среда: УТ 11.5.20.75 Объем: 0.5 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментариев 10

  1. rzd:

    А ты всегда сразу латку делаешь? Вот даже не пришла мысль, а почему вдруг параметр оказался неинициализирован?
    Ну и конец статьи позабавил — как будто выдернуто из другого контекста: начали за здравие, закончили за упокой

    • всегда по разному. но мало ли, может в этом проблема была.

      • rzd:

        Проблема была в том, что параметр неинициализирован. Правильное решение — разобраться почему так произошло. А не ставить латку, принудительно убивая суть параметра

        • максимально эффективно в реальной практике иди итерациями. проверил гипотезу — не сработало — далее.
          вы путаете правильность и эффективность.
          клиенты потому со мной и работают, что я эффективен, а не правилен. Если интересует правильность, почитайте идиотские стандарты «1С совместимо», а потом посмотрите на типовой код и поплачьте.

          • rzd:

            Какую гипотезу проверяет твоя латка?

          • что причина в том, что 1с забыла инициализировать этот параметр.

  2. rzd:

    правильность и эффективность это не перпендикулярные понятия. Твоя «эффективность» заканчивается завтра. Потому ты и перелатываешь все заново и заново, потому что нет стратегического представления о том, во что это выльется завтра. А сегодня — сиюминутно это решение — всем хорошо, особенно тем, кто в этом абсолютно не разбирается

    • поза гуру detected. Известная манипуляция. Я работаю по бюджету клиента. Это 1С, где решения не пилятся «на века»

      • rzd:

        Обычно это называется «делать костыли». Проблемы от таких «решений» могут выстрелить уже через месяц, как повезет. Набор таких костылей — это ад для разработчика.
        «поза гуру detected» — это и есть «деловой стиль»?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *