1. Tailor_Made 13.01.20 14:08 Сейчас в теме

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

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

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

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

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

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

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

Можно попробовать так:
Процедура ВыполнитьДействие(Команда)
    Обновить(Объект.Номенклатура.Наименование);
КонецПроцедуры
2. TonyaKhomich 13.01.20 14:12 Сейчас в теме
не надо получать объект (видноменклатуры.ПолучитьОбъект()), просто присвойте ОбъектТек.ВидНоменклатуры = Послуга;
graforlow; +1 Ответить
3. Tailor_Made 13.01.20 14:14 Сейчас в теме
(2)Тогда ошибка "Метод объекта не обнаружен (Записать)"
4. TonyaKhomich 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) Обработка может не помочь.
тут нужно в номенклатуре заполнить реквизит ИспользованиеХарактеристик - Перечисление.ВариантыИспользованияХарактеристикНоменклатуры
TonyaKhomich; +1 Ответить
12. Tailor_Made 13.01.20 14:27 Сейчас в теме
(10)это обработкой сделать нужно или в программе самой?
14. graforlow 3 13.01.20 14:30 Сейчас в теме
(12)Можно и обработкой, для корректности нужно посмотреть код программы который вызывается при изменении вида номенклатуры и в части характеристик выдрать этот код
13. TonyaKhomich 13.01.20 14:30 Сейчас в теме
(6)В типовых конфигурациях есть в основном типовые обработки, в УПП например это групповая обработка справочников и документов, с помощью нее можно установить для номенклатуры всё, что захочется
16. Tailor_Made 13.01.20 14:31 Сейчас в теме
(13)тут есть Групповое изменение реквизитов, я пытался ней сделать, но не вышло
18. TonyaKhomich 13.01.20 14:35 Сейчас в теме +0.15 $m
(16)А что не получилось? ошибки какие-то были?
15. TonyaKhomich 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. MSK_Step 19 13.01.20 14:24 Сейчас в теме +0.08 $m
Много лишнего, надо так
&НаКлиенте
Процедура ВыполнитьДействие(Команда)
    Обновить(Объект.Номенклатура);
КонецПроцедуры

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

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

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

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


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

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

Получилось бы так:
СсылкаТек = Справочники.Номенклатура.НайтиПоНаименованию(Ном).Ссылка;
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Консультант по 1С:Документооборот
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:Бухгалтерии
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:ЗУП
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день

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