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

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 Сейчас в теме
Можно было добавить в конце
.Ссылка

Получилось бы так:
СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном).Ссылка;
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот