Программно изменить реквизит справочника
Здравствуйте. Задание простое, но почему-то не выходит
Нужно обработкой изменить реквизит "ВидНоменклатуры" элемента справочника Номенклатура
Я пытался сделать так:
Нужно обработкой изменить реквизит "ВидНоменклатуры" элемента справочника Номенклатура
Я пытался сделать так:
&НаКлиенте
Процедура ВыполнитьДействие(Команда)
Обновить(Объект.Номенклатура);
КонецПроцедуры
&НаСервере
Процедура Обновить(Ном) Экспорт
СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
ОбъектТек = СсылкаТек.ПолучитьОбъект();
Послуга = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Послуга");
ВидНом = ОбъектТек.ВидНоменклатуры.ПолучитьОбъект();
ВидНом = Послуга;
ОбъектТек.ВидНоменклатуры.Записать();
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Данные объекта (редактор реквизитов справочников, документов) - доработка оригинала (теперь с пиктограммами)
- Программное добавление реквизитов на форму документа. Без изменения самой формы.
- Программное создание реквизита управляемой формы с помощью механизма расширений
- Процессор 1С – групповая обработка данных
- 1С:БСП Дополнительные реквизиты и сведения
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Соответственно, ссылка не находится и объект получается пустой - ни присвоить, ни записать.
Можно попробовать так:
СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
Вот тут вы делаете поиск по наименованию, т.е. по строке, а в процедуру передаете Объект.
Соответственно, ссылка не находится и объект получается пустой - ни присвоить, ни записать.
Можно попробовать так:
Процедура ВыполнитьДействие(Команда)
Обновить(Объект.Номенклатура.Наименование);
КонецПроцедуры
Хотел бы уточнить для чего это делаю. Включил для номенклатуры учёт Характеристик. Но для каждого товара он не установился, приходится в ручном режиме менять ВидНоменклатуры на "Послуга" а потом опять на "Товар" и так Характеристики уже появляются
Объект.Номенклатура - какого типа? Если это просто строка то все вышесказанное правильно. Если это ссылка на Номенклатуру то строка СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном); лишняя можно вместо нее написать:
Процедура Обновить(Ном) Экспорт
ОбъектТек = Ном.ПолучитьОбъект();
Послуга = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Послуга");
//ВидНом = ОбъектТек.ВидНоменклатуры.ПолучитьОбъект();
// ВидНом = Послуга;
ОбъектТек .ВидНоменклатуры = Послуга ;
ОбъектТек.Записать();
КонецПроцедуры
Показать
Много лишнего, надо так
&НаКлиенте
Процедура ВыполнитьДействие(Команда)
Обновить(Объект.Номенклатура);
КонецПроцедуры
&НаСервере
Процедура Обновить(Ном) Экспорт
// СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
// ОбъектТек = СсылкаТек.ПолучитьОбъект();
ОбъектТек = Ном.ПолучитьОбъект();
Послуга = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Послуга", Истина);
// ВидНом = ОбъектТек.ВидНоменклатуры.ПолучитьОбъект();
// ВидНом = Послуга;
ОбъектТек.ВидНоменклатуры = Послуга;
ОбъектТек.ОбменДанными.Загрузка = Истина;
ОбъектТек.ВидНоменклатуры.Записать();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот