Медитация над доступностью поля на правку

В одной конфигурации столкнулся с тем, что поле не редактируется. И доступность у него указана и только просмотр. И у родителей все правильно. А не редактируется. Долго размышлял, в чем дело.

А потом внезапно осенило:

ДобавитьКолонку("ТабличноеПолеПотребность_ВсегоРасход", "Расход", Тип("ПолеФормы"), ГруппаКолонок, "ТабличноеПолеПотребность.ВсегоРасход", ВидПоляФормы.ПолеНадписи, 10);

Увидел, что добавляется поле надписи, а не ввода!

Поправил в расширении:

&НаСервере
&Вместо("ДобавитьКолонку")
Функция AQUA_ДобавитьКолонку(Имя, Заголовок, ТипЭлемента, Родитель, ПутьКДанным, ВидПоля, Ширина)    
	
	Если Имя = "ТабличноеПолеПотребность_ВсегоПотребность" Или Найти(Имя, "ТабличноеПолеПотребность_п_") = 1 Тогда
		ВидПоляНов = ВидПоляФормы.ПолеВвода;
	Иначе         
		ВидПоляНов = ВидПоля;
	КонецЕсли;
	
	Результат = ПродолжитьВызов(Имя, Заголовок, ТипЭлемента, Родитель, ПутьКДанным, ВидПоляНов, Ширина);   
	
	Возврат Результат;
КонецФункции

Как говорится, на всякого мудреца довольно простоты!

image_pdfimage_print

fixin

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

Вам может также понравиться...

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

  1. rzd:

    Не там поправил. Не надо изменять общие алгоритмы ради частных случаев

    • почему не надо? Если так надежнее. можно еще и стек анализировать для надежности.
      когда 1с доработает механизмы расширений, чтобы можно было более точечно вмешиваться или разобьет типовой код на мелкие процедурки, тогда да.
      а пока эффективнее так.

  2. rzd:

    Разумнее изменить вид поля

  3. Иван:

    rzd абсолютно прав. А уровень решения задачи = джун.

    • может у вас найдутся аргументы «правоты», а то как-то малосодержательно.

    • Владимир:

      Если рассматривать задачку с точки зрения обновления типовых, то предложенный вариант удобнее для обновления — его реже придётся править…

      • да, из этого и исхожу. Я крайне занят и не очень нравится при обновлениях ловить потребность тройного сравнения в «Контроль и изменении», поэтому пишу обычно (если можно) директиву «вместо» с вызовом типового кода и добавлением своего функционала.

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

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