![]() |
![]() |
|
УТ 10.3 Автоматически заполнять значение свойства элемента номенклатуры | ☑ | ||
---|---|---|---|---|
0
jaycyrb
08.10.14
✎
14:56
|
Добрый день.
Мне нужно сделать так, чтобы при сохранении товара в номенклатуре автоматически заполнялось свойство "Производитель", если оно не заполнено. Это именно свойство с выбором значения из списка. Заполняться оно должно тем же значением, что и реквизит "ОсновнойПоставщик". Сделал так: в модуле формы в начале процедуры ПослеЗаписи() добавил следующее: //Проверяем, заполнено ли свойство "Производитель" Запрос = Новый Запрос("ВЫБРАТЬ | ЗначенияСвойствОбъектов.Свойство.Наименование, | ЗначенияСвойствОбъектов.Значение.Наименование,ЗначенияСвойствОбъектов.Объект.Код |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство.Наименование = &Производитель | И ЗначенияСвойствОбъектов.Объект.Код = &Код"); Запрос.УстановитьПараметр("Код",ЭтотОбъект.Код); Запрос.УстановитьПараметр("Производитель","Производитель"); КоличСтр = Запрос.Выполнить().Выбрать().Количество(); Если КоличСтр=0 Тогда //Если свойство "Производитель" не заполнено, тогда заполняем его из поля "Основной поставщик" Если Не ЗначениеЗаполнено(ЭтотОбъект.ОсновнойПоставщик) Тогда Предупреждение("Ошибка: не заполнено свойство 'Основной поставщик'"); Иначе Значение = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(Новый Структура("Объект, Свойство", Ссылка, ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Производитель"))).Значение; СпрЗначСвОб = Справочники.ЗначенияСвойствОбъектов; свПроизводитель = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Производитель"); Запрос = Новый Запрос("ВЫБРАТЬ | ЗначСв.Ссылка,ЗначСв.Код, | ЗначСв.Наименование | ИЗ | Справочник.ЗначенияСвойствОбъектов КАК ЗначСв | ГДЕ | ЗначСв.Наименование = &Наименование"); Запрос.УстановитьПараметр("Наименование",ЭтотОбъект.ОсновнойПоставщик.Наименование); Выборка1 = Запрос.Выполнить().Выбрать(); Если Выборка1.Количество() > 0 Тогда Выборка1.Следующий(); НовЗапись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); НовЗапись.Объект = ЭтотОбъект.Ссылка; НовЗапись.Свойство = свПроизводитель; НовЗапись.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоКоду(Выборка1.Код); Сообщить("Свойство 'Производитель' будет заполнено автоматически из реквизита 'Основной поставщик'"); Попытка НовЗапись.Записать(Истина); Исключение Предупреждение("Не удалось записать значения свойств:" + Символы.ПС + ОписаниеОшибки()); КонецПопытки; Иначе Сообщить("Внимание! Значение "+ЭтотОбъект.ОсновнойПоставщик.Наименование+" не найдено в списке производителей. Свойство 'Производитель' не заполнено."); КонецЕсли; КонецЕсли; КонецЕсли; Этот код работает, если работа ведется в файл-серверном варианте. Если же база данных находится на сервере 1С Предприятие, то свойство "Производитель" не заполняется. При этом не выводится никаких ошибок. Я предполагаю, что не работает команда НовЗапись.Записать(Истина); , но не знаю как исправить это. Пожалуйста, помогите. Опыта в 1С-программировании не имею, а задачу решить надо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |