Имя: Пароль:
1C
1С v8
Как сделать НаименованиеПолное = Наименование???
0 virus555
 
04.09.11
11:35
У меня 1С 8.2 Конфигурация УТ 11.0.4.6
Задача: надо во всех товарах справочника Номенклатура назначить Объект.НаименованиеПолное = Объект.Наименование.

В ФормеЭлемента вставляю код:

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

Сообщить("Обработка начата");
Спр = Справочники.Номенклатура;
Выборка = Спр.Выбрать( , , , "Код");
       
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Если Объект.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
       
Наименование = СокрЛП(Объект.Наименование);
       
Сообщить("До " + Объект.Наименование);
Сообщить("До " + Объект.НаименованиеПолное);
       
Объект.НаименованиеПолное = Наименование;
Объект.Записать();
                                                             
Сообщить("После " + Объект.Наименование);
Сообщить("После " + Объект.НаименованиеПолное);        
КонецЦикла;

Сообщить("Обработка завершена");
КонецПроцедуры

В Конфигураторе Синтаксических ошибок не обнаружено, а в 1С вылазит ошибка:
"{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(128)}: Ошибка при установке значения атрибута контекста (Объект)
Объект = Выборка.Ссылка.ПолучитьОбъект();
по причине: Нельзя изменять поле, содержащее объект данных формы"

Подскажите пожалуйста, что в коде неправильно?
1 ДенисЧ
 
04.09.11
11:36
замени имя переменной
2 Nexux
 
04.09.11
11:36
Объект переменную переименуй
3 virus555
 
04.09.11
12:57
Переименовал - процедура выполнилась, только НаименованиеПолное не изменилось, а осталось как и было во всех товарах :(

И процедура должна запускаться при открытии любого товара и по идее должна переименовать все поля НаименованиеПолное всех товаров - правильно я понимаю?
4 Wobland
 
04.09.11
13:05
во-первых, лучше имхо всё ж запросом отобрать тех, кто не группа и имеет различные наименование, а потом уже обрабатывать. и что значит "запускаться при открытии любого товара"? какой-то ересью попахивает
5 Мимохожий Однако
 
04.09.11
13:07
Возьми, например, универсальную обработку подбора объектов и напиши там нужный код в Произвольной обработке. При этом не надо ломать конфигурацию. А перед этим не забудь сделать архив базы.
6 kosts
 
04.09.11
13:24

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
              |    Контрагенты.Ссылка,
              |    Контрагенты.Наименование
              |ИЗ
              |    Справочник.Контрагенты КАК Контрагенты
              |ГДЕ
              |    (НЕ Контрагенты.ЭтоГруппа)
              |    И (ВЫРАЗИТЬ(Контрагенты.НаименованиеПолное КАК СТРОКА(200))) <> Контрагенты.Наименование"
;

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Выборка.Следующий() Цикл
   Объект = Выборка.Ссылка.ПолучитьОбъект();
   Объект.НаименованиеПолное = Выборка.Наименование;
   Объект.Записать();
КонецЦикла;
7 Wobland
 
04.09.11
13:32
(6) не не Объект же ;)
8 Wobland
 
04.09.11
13:33
(7) *ну не
9 kosts
 
04.09.11
13:40
(7) и что такого?
10 virus555
 
04.09.11
14:16
Блин, извиняюсь за свой тупизм.
Как запустить эту универсальную обработку подбора объектов и где её взять?
В инете информации много, но не могу разобраться.
11 virus555
 
04.09.11
14:18
скачал файл УниверсальныеПодборИОбработкаОбъектов82.epf, а что с ним делать непойму :(
12 Поручик
 
04.09.11
14:21
(11) Открыть предприятие в режиме обычного проложения (толстый клиент), открыть обработку через меню Файл.
13 virus555
 
04.09.11
14:24
У меня 1с 8.2 Там нигде нет меню "Файл"
14 virus555
 
04.09.11
14:28
Упс, Ну в общем всем понятно мое знание 1С (нашел я меню "Файл")
15 Поручик
 
04.09.11
14:29
Меньше пяти минут. Неплохой результат.