Дополнительные реквизиты документов и справочников
Программное создание доп. реквизитов
- Описание
- Подробнее
Описание
Попросили в V8 сделать отчет «Сообщение о ввозе»на основе док-та «ГТД по импорту». При анализе задания, выяснилось, что в БД(Бухгалтерия) нет информации, требуемой в отчет.
— Способ доставки корреспонденции
— Код ТН ВЭД ТС
— Категория
— Кол-во листов
первая мысль была снимать с поддержки и править конфигурацию, но потом пришла «светлая мысля» делать на доп. реквизитах докуметов и справочников. При первоначальной настройки отчета создаю доп реквизиты документа «ГТД по импорту»:
1.Способ доставки
2.Кол-во листов
3.Номер договора (по требованию заказчика)
4.Дата договора (по требованию заказчика — ему удобно, чтобы договор «сидел» в документе)
и реквизиты номенклатуры
1.Категория
2.Код ТН ВЭД ТС
Всё. Далее пользователь заполняет реквизиты, а вывести форму — дело техники.
Подробности программной работы с доп.реквизитами:
форма настройки.
При открытии Читаю ХранилищеОбщихНастроек, если неопределено
Заполняю поля формы с названиями доп. реквизитов
ПараметрыРаботы = ХранилищеОбщихНастроек.Загрузить(«ГЧ.СообщениеОВвозе»,»Параметры»);
Если ПараметрыРаботы <> Неопределено Тогда
ПараметрыРаботы.Свойство(«АкредитованныйКонтрагент»,АкредитованныйКонтрагент);
ПараметрыРаботы.Свойство(«НазваниеДопСвойстваСпособДоставки»,НазваниеДопСвойстваСпособДоставки);
и т.д.
Если Не ЗначениеЗаполнено(НазваниеДопСвойстваСпособДоставки) Тогда
НазваниеДопСвойстваСпособДоставки = «1.Способ доставки»;
КонецЕсли;
и т.д
Перед закрытием формы настройки, создаю структуру, записываю в неё названия полей(на случай если пользователь изменил название поля) сохраняю а ХранилищеОбщихНастроек
ПараметрыРаботы = Новый Структура;
ПараметрыРаботы.Вставить(«АкредитованныйКонтрагент»,АкредитованныйКонтрагент);
ПараметрыРаботы.Вставить(«НазваниеДопСвойстваСпособДоставки»,НазваниеДопСвойстваСпособДоставки);
и т.д
Далее если доп реквизиты ещё не созданы (первый запуск) создаём
Если ЗначениеЗаполнено(НазваниеДопСвойстваКатегория) Тогда
я = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НазваниеДопСвойстваКатегория);
Если я.Пустая() Тогда
я = ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент();
я.Наименование = НазваниеДопСвойстваКатегория;
я.ТипЗначения = Новый ОписаниеТипов(«Строка»,Новый КвалификаторыСтроки(20));
я.НазначениеСвойства = ПланывидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура;
я.Записать();
Записано = Истина;
КонецЕсли;
Иначе
Сообщить(«Заполните «»Название доп. свойства «»Категория»» «» «);
ВсёЗаполнено = Ложь;
КонецЕсли;
