Программное создание реквизита управляемой формы с помощью механизма расширений

23.07.19

Разработка - Механизмы типовых конфигураций

В ЗУП 3 возникла задача добавить реквизит в справочник не внося изменений в конфигурацию. БСП с механизмом дополнительных реквизитов использовать было нежелательно, поэтому был использован механизм расширений. Для вывода данного реквизита на форму добавлять саму форму в расширение не хотелось по ряду причин, описанных ниже. Создание реквизита и элемента формы, соответствующего данному реквизиту было решено сделать программно в самом расширении, следуя принципу минимального воздействия на конфигурацию.

Скачать исходный код

Наименование Файл Версия Размер
Расширение конфигурации для приведенного примера
.cfe 7,00Kb
21
.cfe 7,00Kb 21 Скачать

Начиная с платформы 1С версии 8.3.12 и выше появилась возможность добавлять реквизиты объектов в расширениях, чем я и воспользовался:

Но для вывода данного реквизита на форму элемента добавлять саму форму в расширение совсем не хотелось.

Во-первых добавление (заимствование) формы в расширение может привести к некоторым нежелательным эффектам, которые могут возникнуть после обновления конфигурации. Приведем немного теории.

Платформа использует сразу три формы:

  • Форму из основной конфигурации
  • Сохраненную форму
  • Форму из расширения

Данные формы взаимодействуют между собой и в результате такого взаимодействия получается Результирующая форма, которую видит пользователь. В ходе взаимодействия указанных форм может возникнуть нежелательная ситуация, например, мы доработали форму в расширении, потом в новом релизе добавились реквизиты и они на форме не отображаются! Более подробно тут.

Во-вторых добавление формы в расширение привело бы к автоматическому добавлению всех реквизитов этого объекта и объектов метаданных (соответствующих ссылочным типам реквизитов объекта) в данное расширение, что загромождало бы само расширение и также не желательно.

Поэтому возникла задача программного создания элемента формы для добавленного реквизита в самом расширении, этому и посвящена данная публикация.

В конфигурациях ERP 2 и УТ 11 для целей программного создания реквизитов и элементов формы можно использовать типовой механизм упрощенного изменения, который хорошо описан в статье: //infostart.ru/public/303645/. Но у меня конфигурация ЗУП 3 и данного механизма там нет. 

Посмотрев начало процедуры ПриСозданииНаСервере() модуля формы объекта, видим что вызываются экспортные методы ПриСозданииНаСервере() общих модулей подсистем БСП:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	// СтандартныеПодсистемы.ВерсионированиеОбъектов
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	// СтандартныеПодсистемы.Свойства
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Объект", Объект);
	ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
	УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.СклонениеПредставленийОбъектов
	СклонениеПредставленийОбъектов.ПриСозданииНаСервере(ЭтотОбъект, Объект.Наименование);	
	// Конец СтандартныеПодсистемы.СклонениеПредставленийОбъектов

Было принято решение код для программного добавления реквизита формы объекта добавить в метод ПриСозданииНаСервере() общего модуля УправлениеСвойствами. Данный модуль предназначен для работы с дополнительными реквизитами и сведениями, но переопределив его в расширении он вполне сгодится и для наших целей.

Добавляем общий модуль УправлениеСвойствами в наше расширение:

и создаем обработчик события НП_ПриСозданииНаСервере(), вызываемый после типовой процедуры УправлениеСвойствами.ПриСозданииНаСервере().

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

&После("ПриСозданииНаСервере")
Процедура НП_ПриСозданииНаСервере(Форма, ДополнительныеПараметры = Неопределено) Экспорт
	
	Если Форма.ИмяФормы = "Справочник.ПодразделенияОрганизаций.Форма.ФормаЭлемента" Тогда
		
		#Область ДобавлениеРеквизитовФормы
		// Массив для новых реквизитов
		ДобавляемыеРеквизиты	= Новый Массив;
		
		// Опишем ревизиты формы
		Реквизит_НаименованиеДляПечати = Новый РеквизитФормы("НаименованиеДляПечати",	Новый ОписаниеТипов("Строка", , , Новый КвалификаторыСтроки(300)),	, "Наименование для печати");
		
		// Заполним массив после описания реквизитов формы
		ДобавляемыеРеквизиты.Добавить(Реквизит_НаименованиеДляПечати);
		
		// Добавим новые реквизиты в форму
		Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
		#КонецОбласти
		
		#Область ДобавлениеЭлементовФормы
		// Элементы
		ИмяГруппы = "ГруппаНаименованиеКод";
		ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);
		Если ГруппаФормы <> Неопределено Тогда
			
			ИмяЭлемента = "НаименованиеДляПечати";
			Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда
				ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ГруппаФормы);        
				ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
				ЭлементФормы.ПутьКДанным = "Обьект.НаименованиеДляПечати";
				ЭлементФормы.МногострочныйРежим = Истина;
				ЭлементФормы.Высота = 3;
			КонецЕсли;   
			
		КонецЕсли;
		#КонецОбласти
		
		#Область ЗаполнениеДанных
		Форма.НаименованиеДляПечати = Форма.Объект.НаименованиеДляПечати;
		#КонецОбласти
		
	КонецЕсли;
	
КонецПроцедуры

Запускаем конфигурацию и убеждаемся, что все работает:

См. также

Ценовая власть. Выносим из цикла схему СКД

Механизмы типовых конфигураций Ценообразование, анализ цен Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    478    tango    0    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    366    tango    5    

3

Ценовая власть. Второй сезон

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Бесплатно (free)

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    557    tango    0    

2

Ценовая власть (УТ 11.5) - 2

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

В прошлый раз специальной обработкой мы выбрали объекты УТ 1.5, группируя по подсистемам. Оказалось, что состав подсистем не вполне корректно отображает функциональную структуру, но зато мы нашли процедуру, которая, вроде бы, должна содержать в себе всё, что нас интересует. Обновление цен должно ведь следовать выбранной стратегии ценообразования, верно? Иначе что она обновляет...

06.04.2024    440    tango    1    

1

Ценовая власть или Управление ценообразованием (УТ 11.5)

Ценообразование, анализ цен Механизмы типовых конфигураций Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    520    tango    12    

2

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2569    YA_418728146    11    

42

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1122    8    2ncom    3    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4952    mrXoxot    11    

100
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. alexpvs 63 12.03.19 11:20 Сейчас в теме
(4) "Во-первых добавление формы в расширение привело бы к её "заморозке", то есть если форма будет меняться разработчиками в последующих релизах, то эти изменения не будут больше отображаться, пользователи будут видеть как бы "снимок" формы, который был при её добавлении в расширение" - это не так.
2. ni_cola 332 12.03.19 12:33 Сейчас в теме
(1) При заимствовании формы в расширение платформа использует сразу 3 формы: Форму из основной конфигурации, Сохраненную форму (я назвал её "замороженной") и Форму из расширения. Они взаимодействуют между собой и в результате мы получаем Результирующую форму. В результате такого взаимодействия может быть, например, такая ситуация: мы доработали форму в расширении, потом в новом релизе добавили реквизиты, но они на форме не отображаются.
Более подробно тут: https://xn----1-bedvffifm4g.xn--p1ai/news/2017-11-24-forms-customization-by-using-extensions/
7. alexpvs 63 13.03.19 07:45 Сейчас в теме
(2) Смотря как поменяли форму в расширении.
Вот простейший пример: у поставщика документ с 2 реквизитами, в первом релизе выглядит так (см шаг1).
Заимствуем эту форму в расширение, добавляем свой реквизит на форму, выводим в конец формы его. (см. шаг2).
После этого поставщик делает 2 релиз, в котором у одного реквизита меняет синоним, у второго реквизита меняет имя и синоним. И на форме свои два реквизита помещает в горизонтальную группу. После этих изменений, расширение продолжает работать, и изменения поставщика присутствуют в результирующей форме (см. шаг3)
Прикрепленные файлы:
11. ids79 8327 13.03.19 09:37 Сейчас в теме
(2)По приведенной Вами ссылке совсем другая ситуация описана.
Если перенести доработанную форму в расширение, а потом удалить доработки в основной,
эти доработки не будут на результирующей форме.
Там объясняется почему так происходит.
Но в описанной Вами ситуации, новые реквизиты будут отображыены, если конечно их наименования не совпадут с наименованиям новых реквизитов в расширенной форме.
А лишние метаданные, добавленные в расширение вместе с формой можно без проблем удалить.
3. DoctorRoza 12.03.19 13:18 Сейчас в теме
(1) тут изначальный посыл смущает. Добавление каких - либо реквизитов потребует доработку, например, отчетов. печатныйх форм. Значит, придется дописывать алгоритм. В свою очередь, появятся еще внешние и т.п. подключамые объекты. Что выливается еще в лишнюю 100-ню строк кода! А сделать через доп. реквизит, чтобы вообще кода не было - отказались, по своим причинам.
4. Ioryk30 12.03.19 16:37 Сейчас в теме
(1) А как ? Пока вижу на практике именно " заморозку". Имена объектов (Документов и справочников) при обновлении в расширение не попадают.
5. unichkin 1563 12.03.19 18:47 Сейчас в теме
Я стараюсь не использовать изменение метаданных в расширении. Был прецедент когда клиент удалил расширение, и у него исчезли добавленные во время работы с ним договоры (в договоры был добавлен реквизит, расширением). После включения договоры восстановились - повезло, что не было реструктуризации.
Можно добавить свойство, и вывести его поле на форму, программно. В запросах не так удобно им пользоваться, но все же риска меньше.
rpgshnik; fxmike; Irwin; EVKash; shtinalex; +5 1 Ответить
6. insurgut 207 13.03.19 06:31 Сейчас в теме
Разница данного метода от дополнительных реквизитов по сути в том, что мы нужный реквизит поместим куда захотим? Но в дальнейшем разработчикам типовой конфигурации ничего не мешает изменить/переименовать групп реквизитов и решение станет не рабочим, в отличие от дополнительных реквизитов.
rpgshnik; +1 Ответить
8. papami 55 13.03.19 08:47 Сейчас в теме
Вот так программно из разных мест надобавляют реквизитов разработчики и, когда приспичит, сидишь и ищешь код по всей конфе, вспоминая разработчиков добрым словом. В Медицину кто заглядывал?
jONES1979; leaguener; rpgshnik; +3 Ответить
9. mpeg1989 131 13.03.19 09:08 Сейчас в теме
(8) А вы попробуйте обновить формы, когда на них через конструктор добавляют элементы. И попробуйте ничего не пропустить, а не как обычно - "ой, не работает, сейчас подключимся и посмотрим" - и так в течение недели после обновления.
myoker; buzzzard; rpgshnik; +3 Ответить
10. user633533_encantado 11 13.03.19 09:31 Сейчас в теме
Не понимаю, почему разработчики ЗУП не хотят добавить модули модификации конфигурации и их вызовы во все формы, как это сделано в УТ и прочих.
buzzzard; mark_oilbass; romankoav; +3 Ответить
12. koln 13.03.19 11:38 Сейчас в теме
Попробовал, но получил ошибку в месте
Форма.НаименованиеДляПечати = Форма.Объект.НаименованиеДляПечати;
Ругается на то, что не найден реквизит. На мой взгляд, это и логично, ведь добавляется реквизит формы, а не Объекта.
При чем пробовал даже не через расширение, а в модуле формы, в обработчике "ПриСозданииНаСервере". Может я что-то не так понял, но даже в отладчике, после добавления реквизита, он не появляется.
13. ni_cola 332 13.03.19 12:21 Сейчас в теме
(12) Проверьте порядок действий:
1. Заимствовать объект в расширение, например Справочник.ПодразделенияОрганизаций.
2. Добавить реквизит НаименованиеДляПечати в заимствованный объект в расширении.
3. Заимствовать в расширение общий модуль УправлениеСвойствами.
4. Добавить в него метод, выполняющийся после УправлениеСвойствами.ПриСозданииНаСервере() для программного создания реквизита.
14. koln 13.03.19 14:06 Сейчас в теме
(13) 1. У меня даже в модуле самой формы в основной конфигурации такую ошибку выдает, не то, что через расширение;
2. Откуда у Вас берутся данные для заполнения вновь созданного программного реквизита, которые выводятся на форму?
15. ni_cola 332 13.03.19 15:05 Сейчас в теме
(14) Приложил к статье расширение с рассматриваемым примером для скачивания
16. Eremkin 14.03.19 09:21 Сейчас в теме
В Бухгалтерии немного дорабатывал форму Инвентаризация товаров на складе. Добавил команду на форму + дополнительная форма выбора счета. Выполнил заимствование формы документа. При этом автоматически подтянулись реквизиты объекта, табличная часть. Поместил свою команду в нужное подменю на форме и удалил реквизиты с табличной частью. И все отлично отлично работает. Ранее еще добавлял новый реквизит на форму (позже удалил с формы за ненадобностью, т.к. реализовал отдельную форму выбора счета с отборами). На то и оно и расширение, чтобы не городить писанину с программным созданием различных элементов формы.
Прикрепленные файлы:
33. triviumfan 93 04.03.21 13:35 Сейчас в теме
(16) Почему выбор упал на расширение вместо доп обработки заполнения объекта?
34. Eremkin 04.03.21 13:49 Сейчас в теме
(33)Там реализована еще дополнительная логика
17. TerveRus 18.03.19 08:01 Сейчас в теме
Мотивация автора изобретать велосипед вызывает недоумение.
Да, в расширении что-то добавлять чуть сложнее, чем просто в конфигурации править, но удобства перекрывают некоторые минусы. А автор из-за нюансов работы с расширениями вовсе отказывается от расширений, еще и других такому учит.

Если Вы не знали, то у окошка расширения есть кнопочка, которая показывает только вручную добавленные объекты в расширение, скрывая автоматически заимствованные.
А в последних версиях платформы появился инструмент обновления заимствованной формы из формы поставщика.

Если уж ссылаетесь на теорию, то следите за изменениями механизма. Разработчики понимают о некоторых неудобствах, и стараются упростить жизнь с расширениями, но кто-то уже обозвал расширения злом и избегает их, это же глупо.
user1889375; user_2010; Zarikus26; stako8; +4 1 Ответить
19. ni_cola 332 18.03.19 10:01 Сейчас в теме
(17)
А в последних версиях платформы появился инструмент обновления заимствованной формы из формы поставщика.


Не знал об этом, можно поподробнее? Даже если это уже реализовано, то мне не нравится, что при заимствовании формы в расширение автоматически заимствуются объекты метаданных всех ссылочных типов, выводящихся на форму, что загромождает расширение "не нужными" объектами и в свою очередь усложняет сопровождение данного расширения.
18. Andrefan 18.03.19 09:38 Сейчас в теме
Не знал что за такую очевидность можно столько плюсов собрать)
triviumfan; +1 Ответить
20. kembrik 10 21.06.19 12:38 Сейчас в теме
Отбояриваемся пока от создания реквизитов в расширении как можем (пока получается). Не нравится вам как реализованы дополнительные реквизиты (автоматический вывод в закладке дополнительно, хранение в табличной части) - используйте Дополнительные сведения. - Удобное хранение в единственном регистре сведений, неявное для пользователей (про мааааленький гамбургер "дополнительные сведения" многие не в курсе), возможность программного вывода на форму в любое место. Да, теряем немного в быстродействии, но по своей сути в случае с реквизитами справочника это будет не сильно отличаться от того, как хранятся дополнительные реквизиты расширений, зато "случайное" отключение расширения или проблемы со сменой режима совместимости не вызовет полную потерю введенных данных
21. Yashazz 4722 23.06.19 18:40 Сейчас в теме
Вот же охота людям извращаться...

Не говоря уж о том, что с выходом каждого нового релиза ситуация по расширениям меняется. Не меняется только одно - степень их кривизны. У меня давеча вот 8.3.13.1690 стабильно ронял конфигуратор при попытке в расширенной форме удалить команду. Так что, имхо, проще грамотно курочить конфу, чем мучиться с хренью вроде "расширений". Так оно хоть стабильно.
wolfsoft; biimmap; +2 Ответить
22. Denic_01 46 23.07.19 09:53 Сейчас в теме
строка ЭлементФормы.ПутьКДанным = "НаименованиеДляПечати";

должно быть ЭлементФормы.ПутьКДанным = "Обьект.НаименованиеДляПечати";

а то не записывается в базу
23. ni_cola 332 23.07.19 13:38 Сейчас в теме
26. newtraveller 23 27.02.20 11:26 Сейчас в теме
(23) Поправьте, если я не прав. Пример публикации содержал именно программное создание реквизита формы, которое и выводилось на форму.
ЭлементФормы.ПутьКДанным = "НаименованиеДляПечати"

После данного исправления на форму выводится реквизит расширения (что логично и соответствует поставленной задаче):
ЭлементФормы.ПутьКДанным = "Объект.НаименованиеДляПечати"


Но в этом случае кусок кода оказывается лишним:
		#Область ДобавлениеРеквизитовФормы
		// Массив для новых реквизитов
		ДобавляемыеРеквизиты	= Новый Массив;
		
		// Опишем ревизиты формы
		Реквизит_НаименованиеДляПечати = Новый РеквизитФормы("НаименованиеДляПечати",	Новый ОписаниеТипов("Строка", , , Новый КвалификаторыСтроки(300)),	, "Наименование для печати");
		
		// Заполним массив после описания реквизитов формы
		ДобавляемыеРеквизиты.Добавить(Реквизит_НаименованиеДляПечати);
		
		// Добавим новые реквизиты в форму
		Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
		#КонецОбласти
Показать
user659168_xec8787; shalupov61; myoker; provost_ua; manuel; +5 Ответить
38. shalupov61 25.07.23 09:54 Сейчас в теме
(26) Если этот кусок кода убрать, то в строке Форма.НаименованиеДляПечати = Форма.Объект.НаименованиеДляПечати; появится ошибка:
Поле объекта "НаименованиеДляПечати" не обнаружено
Zloten; VyacheslavShilov; +2 Ответить
24. ba2000 13 30.07.19 11:28 Сейчас в теме
Подскажите, добавил через расширение в общий модуль реквизиты на форму.
А как создать обработчик при изменении?
Форму в расширение копировать не хочется, а процедура обработчика должна быть в форме.
Можно ли как то процедуру программно добавить?
27. newtraveller 23 27.02.20 11:33 Сейчас в теме
(24)
ЭлементФормы.УстановитьДействие("ПриИзменении", "ПроцедураОбработкиДействияВМодулеФормы");
VyacheslavShilov; +1 Ответить
25. Barok 12.01.20 14:09 Сейчас в теме
У меня почему то не видит реквизит, созданный в расширении, вываливается ошибка
Ошибка при установке значения атрибута контекста (ПутьКДанным)
				ЭлементФормы.ПутьКДанным = "Обьект.ЗаявкаВРозницу";
по причине:
Недопустимое значение

Реквизит ЗаявкаВрозницу создан в расширении.
В чем может быть причина?

UPD. Причина в мягком знаке :D
Zloten; Ermigen; shiaju; shalupov61; Arzv; Wrols; maksa2005; bars21rus; broiderys; rulan87; Aleksey_1C; nofear; +12 Ответить
31. UtSpar 134 29.08.20 16:05 Сейчас в теме
(25) Тоже попался на это. DDD
36. Arzv 16.02.23 15:06 Сейчас в теме
(25) Исправьте уже в теме =) я пол часа понять не мог, что не так...
shalupov61; +1 Ответить
28. Stivens 35 23.05.20 22:17 Сейчас в теме
У управляемой формы нет "самого первого события". И это, мягко говоря, неудобно.
Пишешь умные вещи в "при создании на сервере", а 1С-ники обработку реквизитов начинают в "При чтении", Пишешь в "При чтении", а оно не всегда есть... Да еще и при "Перечитать" пытается создать дубль и вылетает с ошибкой.
В итоге пишем и туда и туда, но проверяем наличие перед добавлением.
Неудобно.
VyacheslavShilov; retr0; +2 Ответить
29. user591389_aska_rabota 24.07.20 20:04 Сейчас в теме
Николай Лазутин, огромное Вам СПАСИБО!!!

Для тех кто не сталкивался с расширениями, допетрить что надо писать программное создание реквизитов формы не просто с директивой &После("ПриСозданииНаСервере")
а в отдельном модуле было нелегко
30. UtSpar 134 29.08.20 15:43 Сейчас в теме
Использовав вашу статью сделал так:
1. в расширении добавил новый реквизит.
2. Перенес форму в расширение, удалил из дерева все подтянуты реквизиты.
3. Создал в расширении метод после "При создании на сервере", в котором программно вывел и заполнил реквизит.
32. Aleksey_1C 22.01.21 16:59 Сейчас в теме
ЭлементФормы.ПутьКДанным = "Обьект.НаименованиеДляПечати";


В слове "ОбЬект" ошибка
user1971360; Zloten; shiaju; shalupov61; Arzv; wrooom; Para_1987; Wrols; sizeoff; doda666; Andrei_Ivanov; broiderys; +12 Ответить
39. shiaju 25 18.10.23 16:29 Сейчас в теме
(32) Удваиваю, исправьте ошибку в коде, я час гуглил прежде чем понял в чем дело.
42. Zloten 08.01.24 21:19 Сейчас в теме
(39) Пусть я покажусь грубым, но автор дятел. Тоже час потерял.
Сколько человек уже отписалось насчет ошибки.
35. wrooom 175 12.10.22 22:00 Сейчас в теме
37. shalupov61 25.07.23 08:38 Сейчас в теме
Очень полезная статья. Спасибо!
Для оппонентов, ратующих здесь за типовой механизм добавления дополнительных реквизитов: не забывайте, что не у всех объектов конфигурации есть табличная часть "ДополнительныеРеквизиты", поэтому не для всех объектов эти дополнительные реквизиты можно добавить. Пример: попробуйте создать дополнительный реквизит в документ "ЗаказОтПоставщика" - в списке объектов такого документа вы не увидите.
40. DELOVOYDOM 08.11.23 17:43 Сейчас в теме
Эта статья никакого реквизита в расширение не добавляет. Вы добавляете реквизит кликом мышки в расширении в первом пункте статьи. А все остальное это добавление поля на форму. Либо я что-то не понял, либо всем комментаторам все равно что поле что реквизит без разницы)
Статья вводит в заблуждение. Искал думал вдруг в Задачи в расширении можно добавить программно реквизит. Самое забавное что комментаторы похоже не разделяют понятие реквизит и поле на форме.
41. peper- 01.12.23 19:15 Сейчас в теме
(40)
Эта статья никакого реквизита в расширение не добавляет. Вы добавляете реквизит кликом мышки в расширении в первом пункте статьи. А все остальное это добавление поля на форму. Либо я что-то не понял, либо всем комментаторам все равно что поле что реквизит без разницы)
Статья вводит в заблуждение. Искал думал вдруг в Задачи в расширении можно добавить программно реквизит. Самое забавное что комментаторы похоже не разделяют понятие реквизит и поле на форме.

Забавно другое. А именно, что вы, критикуя автора и комментаторов, сами не разделяете понятий "реквизит объекта", "реквизит формы" и "поле формы". В примере добавляется именно "реквизит формы", который потом выводится на форму в виде "поля формы". И в названии это тоже отражено. Можете не благодарить!
Оставьте свое сообщение