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

1. Tailor_Made 13.01.20 14:08 Сейчас в теме
Здравствуйте. Задание простое, но почему-то не выходит
Нужно обработкой изменить реквизит "ВидНоменклатуры" элемента справочника Номенклатура

Я пытался сделать так:
&НаКлиенте
Процедура ВыполнитьДействие(Команда)
	Обновить(Объект.Номенклатура);
КонецПроцедуры

&НаСервере
Процедура Обновить(Ном) Экспорт

	 СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
	 ОбъектТек = СсылкаТек.ПолучитьОбъект();
	  
	 Послуга = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Послуга");
	  
	 ВидНом = ОбъектТек.ВидНоменклатуры.ПолучитьОбъект();
	 ВидНом = Послуга; 
	 
	 ОбъектТек.ВидНоменклатуры.Записать();

КонецПроцедуры
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
19. Tailor_Made 13.01.20 14:44 Сейчас в теме
Удалось изменить Групповым изменением реквизитов. Пришлось менять реквизит "Использование характеристик", я не тот реквизит менял. ВСЕМ большое спасибО!
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
9. user856012 13 13.01.20 14:25 Сейчас в теме
(1)
СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
Вот тут вы делаете поиск по наименованию, т.е. по строке, а в процедуру передаете Объект.

Соответственно, ссылка не находится и объект получается пустой - ни присвоить, ни записать.

Можно попробовать так:
Процедура ВыполнитьДействие(Команда)
    Обновить(Объект.Номенклатура.Наименование);
КонецПроцедуры
2. TonyaKhomich 5 13.01.20 14:12 Сейчас в теме
не надо получать объект (видноменклатуры.ПолучитьОбъект()), просто присвойте ОбъектТек.ВидНоменклатуры = Послуга;
graforlow; +1 Ответить
3. Tailor_Made 13.01.20 14:14 Сейчас в теме
(2)Тогда ошибка "Метод объекта не обнаружен (Записать)"
4. TonyaKhomich 5 13.01.20 14:17 Сейчас в теме
Не ОбъектТек.ВидНоменклатуры.Записать();, а ОбъектТек.Записать();
graforlow; +1 Ответить
5. Tailor_Made 13.01.20 14:20 Сейчас в теме
(4)ошибка, пишет что не удается записать
6. Tailor_Made 13.01.20 14:22 Сейчас в теме
Хотел бы уточнить для чего это делаю. Включил для номенклатуры учёт Характеристик. Но для каждого товара он не установился, приходится в ручном режиме менять ВидНоменклатуры на "Послуга" а потом опять на "Товар" и так Характеристики уже появляются
10. graforlow 3 13.01.20 14:25 Сейчас в теме
(6) Обработка может не помочь.
тут нужно в номенклатуре заполнить реквизит ИспользованиеХарактеристик - Перечисление.ВариантыИспользованияХарактеристикНоменклатуры
san4o; TonyaKhomich; +2 Ответить
12. Tailor_Made 13.01.20 14:27 Сейчас в теме
(10)это обработкой сделать нужно или в программе самой?
14. graforlow 3 13.01.20 14:30 Сейчас в теме
(12)Можно и обработкой, для корректности нужно посмотреть код программы который вызывается при изменении вида номенклатуры и в части характеристик выдрать этот код
13. TonyaKhomich 5 13.01.20 14:30 Сейчас в теме
(6)В типовых конфигурациях есть в основном типовые обработки, в УПП например это групповая обработка справочников и документов, с помощью нее можно установить для номенклатуры всё, что захочется
16. Tailor_Made 13.01.20 14:31 Сейчас в теме
(13)тут есть Групповое изменение реквизитов, я пытался ней сделать, но не вышло
18. TonyaKhomich 5 13.01.20 14:35 Сейчас в теме +0.15 $m
(16)А что не получилось? ошибки какие-то были?
15. TonyaKhomich 5 13.01.20 14:31 Сейчас в теме
(6)Какая у Вас конфигурация? Возможно, Вы и правда не тот реквизит меняете.
17. Tailor_Made 13.01.20 14:32 Сейчас в теме
(15)ох я дебил, забыл написать какая конфа
BAS УТ 3.2.14
7. graforlow 3 13.01.20 14:22 Сейчас в теме +0.15 $m
Объект.Номенклатура - какого типа? Если это просто строка то все вышесказанное правильно. Если это ссылка на Номенклатуру то строка СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном); лишняя можно вместо нее написать:
 Процедура Обновить(Ном) Экспорт

    
     ОбъектТек = Ном.ПолучитьОбъект();
      
     Послуга = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Послуга");
      
   //ВидНом = ОбъектТек.ВидНоменклатуры.ПолучитьОбъект();
    // ВидНом = Послуга; 
     ОбъектТек .ВидНоменклатуры = Послуга ;
     ОбъектТек.Записать();

КонецПроцедуры
Показать
TonyaKhomich; +1 Ответить
8. Vasvas05 22 13.01.20 14:24 Сейчас в теме +0.08 $m
Много лишнего, надо так
&НаКлиенте
Процедура ВыполнитьДействие(Команда)
    Обновить(Объект.Номенклатура);
КонецПроцедуры

&НаСервере
Процедура Обновить(Ном) Экспорт

  //  СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
 // ОбъектТек = СсылкаТек.ПолучитьОбъект();
     ОбъектТек = Ном.ПолучитьОбъект();
      
     Послуга = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Послуга", Истина);
      
  // ВидНом = ОбъектТек.ВидНоменклатуры.ПолучитьОбъект();
  //   ВидНом = Послуга; 
     
     ОбъектТек.ВидНоменклатуры = Послуга;
     
ОбъектТек.ОбменДанными.Загрузка = Истина;

ОбъектТек.ВидНоменклатуры.Записать();

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


Показать
Tailor_Made; +1 Ответить
11. TonyaKhomich 5 13.01.20 14:26 Сейчас в теме
(8)
ОбъектТек.ВидНоменклатуры.Записать();

ТУт всё же ОбъектТек.Записать();
19. Tailor_Made 13.01.20 14:44 Сейчас в теме
Удалось изменить Групповым изменением реквизитов. Пришлось менять реквизит "Использование характеристик", я не тот реквизит менял. ВСЕМ большое спасибО!
20. provadyuga 99 15.01.20 09:09 Сейчас в теме
Можно было добавить в конце
.Ссылка

Получилось бы так:
СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном).Ссылка;
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)