Программное создание элементов справочника

1. user2095039 03.07.24 16:38 Сейчас в теме
Здраствуйте, есть справочник "Номенклатура". Необходимо поочередно заполнять реквизиты и записать в справочник Номенклатура. Сделал поочередное заполнение, но не записывает ни в поля формы, ни в справочник, т.к. не могу понять как записывать через ОписаниеОповещения.
Само задание звучит так:
Создать обработку «ПомощникЗаполненияНоменклатуры». В данной обработке поочередно заполняются стандартные и добавленные реквизиты. После заполнения всех реквизитов должен создаться элемент справочника «Номенклатура».
Пример: При запуске обработки открывается форма обработки с полем ввода «Код» (тип данных поля ввода должен быть такой же как у реквизита Код в справочнике «Номенклатура»). После заполнения «Кода» необходимо нажать команду «Далее», вместо «Код» должно появиться поле ввода «Наименование» (тип данных поля ввода должен быть такой же как у реквизита Наименование в справочнике «Номенклатура»). После заполнения «Наименования» необходимо нажать команду «Далее» и т.д.. После заполнения всех реквизитов должен создаться элемент справочника «Номенклатура» с заполненными реквизитами ранее введенными значениями. Реализовать обработку таким образом, чтобы при добавлении новых реквизитов все работало без корректировки обработки (и в обработке появлялись новые реквизиты для заполнения), для этого необходимо использовать метаданные и программное создание элементов формы в обработке.
Мой код:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ЧтоДелатьПослеВводаКода = Новый ОписаниеОповещения("ПослеВводаКода", ЭтотОбъект);
	ПоказатьВводСтроки(ЧтоДелатьПослеВводаКода, , "Введите код номенклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ПослеВводаКода (Строка, ДополнительныеПараметры) Экспорт
	Если Строка = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Код = Строка;
	
	ЧтоДелатьПослеВводаНаименования = Новый ОписаниеОповещения("ПослеВводаНаименования", ЭтотОбъект);
	ПоказатьВводСтроки(ЧтоДелатьПослеВводаНаименования, , "Введите наименование номенклатуры");	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаНаименования (Строка, ДополнительныеПараметры) Экспорт
	Если Строка = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Наименование = Строка;
	
	ЧтоДелатьПослеВводаПолногоНаименования = Новый ОписаниеОповещения("ПослеВводаПолногоНаименования", ЭтотОбъект);
	ПоказатьВводСтроки(ЧтоДелатьПослеВводаПолногоНаименования, , "Введите полное наименование номенклатуры");	
КонецПроцедуры

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

&НаКлиенте
Процедура ПослеВводаСтавкиНДС (Значение, ДополнительныеПараметры) Экспорт
	Если Значение = Неопределено Тогда
		Возврат;
	КонецЕсли;

	СтавкаНДС = Значение;
	
	ЧтоДелатьПослеВводаМинКоличества = Новый ОписаниеОповещения("ПослеВводаМинКоличества", ЭтотОбъект);
	ПоказатьВводСтроки(ЧтоДелатьПослеВводаМинКоличества, , "Введите минимальное количество");	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаМинКоличества (Число, ДополнительныеПараметры) Экспорт
	Если Число = Неопределено Тогда
		Возврат;
	КонецЕсли;
	МинКоличество = Число;
КонецПроцедуры

&НаСервере
Процедура ЗаписатьНаСервере() Экспорт
    
КонецПроцедуры

&НаКлиенте
Процедура Записать(Команда)
	
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
4. SlavaKron 03.07.24 17:44 Сейчас в теме
(1) Соберите сначала список реквизитов из метаданных - вы же не знаете заведомо какие "добавленные" реквизиты есть в справочнике.
Решение через ОписаниеОповещения или "программное создание элементов формы в обработке" мне кажется не оптимальным – достаточно одного поля ввода непосредственно на форме и служебной таблицы в реквизитах.
Прикрепленные файлы:
Визард.epf
user2095039; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. SlavaKron 03.07.24 17:44 Сейчас в теме
(1) Соберите сначала список реквизитов из метаданных - вы же не знаете заведомо какие "добавленные" реквизиты есть в справочнике.
Решение через ОписаниеОповещения или "программное создание элементов формы в обработке" мне кажется не оптимальным – достаточно одного поля ввода непосредственно на форме и служебной таблицы в реквизитах.
Прикрепленные файлы:
Визард.epf
user2095039; +1 Ответить
5. user2095039 03.07.24 17:49 Сейчас в теме
(4) Можете пожалуйста объяснить, как вы это сделали?
6. SlavaKron 03.07.24 17:55 Сейчас в теме
(5) Так код открыт, можете почитать. При создании на сервере заполняете служебную таблицу из метаданных справочника – нужно имя, синоним и тип значения реквизита. Кнопками навигации (Далее / Назад) переходим от реквизита к реквизиту, меняя заголовок поля ввода, ограничение типов и само значение.
user2095039; +1 Ответить
7. user2095039 03.07.24 18:43 Сейчас в теме
(6) Большое спасибо, пойду разбираться.
2. ico 03.07.24 16:42 Сейчас в теме
Что еще за "ПослеВводаПолногоНаименования"?
Откуда взялось"ПослеВводаСтавкиНДС"?
А как же вот эта фраза "для этого необходимо использовать метаданные" из Вашего задания?
Только предопределенные реквизиты Код и Наименование у Вас стандартные. А все остальные - нестандартное и заранее неизвестное.
3. starjevschik 03.07.24 16:50 Сейчас в теме
К преподавателю. Это все вопросы к преподавателю, ты ему платишь за ответы и объяснения, пусть работает.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот