Заполнение счетов учета контрагентов и номенклатуры по умолчанию. УНФ 3.0

Добавил предопределенного контрагента МЫ, столкнулся с тем, что не дает записывать контрагента — не заполнены обязательные реквизиты, не видимые на форме:

Посмотрел как эти поля заполнены у других контрагентов:

Решил с помощью заплатки на модуль справочника Контрагенты:

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

Правда, существующий объект из формы записать нельзя — проверки срабатывают до записи. Но это решаемо.

Плохо, что объекты в УНФ не заполняются по умолчанию. Это же касается и номенклатуры.

Тут готового кода нет, могу дать лишь образец:

	//Поле "Способ списания" не заполнено
	Если ЕстьРеквизитНоменклатуры("МетодОценки") Тогда
		ПрисвоитьПустому(ОбщееМетодОценки, Перечисления.МетодОценкиЗапасов.ПоСредней);
	КонецЕсли;
	
	//	Поле "Способ пополнения" не заполнено
	Если ЕстьРеквизитНоменклатуры("СпособПополнения") Тогда
		ПрисвоитьПустому(ОбщееСпособПополнения,  Перечисления.СпособыПополненияЗапасов.Закупка)
	КонецЕсли;                                                                
	
	//Поле "Счет учета запасов" не заполнено
	Если ЕстьРеквизитНоменклатуры("СчетУчетаЗапасов") Тогда
		ПрисвоитьПустому(ОбщееСчетУчетаЗапасов, ПланыСчетов.Управленческий.ТоварыПродукция);
	КонецЕсли;

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

UPD 2023-12-13: Увы, предопределенные элементы создаются еще в конфигураторе, т.е. в событие формы ПриСозданииНаСервере:

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

КонецПроцедуры

Среда: 3.0.5.211 Объем: 0.5 час

fixin

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

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

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

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