Имя: Пароль:
1C
1С v8
Справочники
0 Dmitry017
 
28.02.13
18:23
Задача: обработать запись в реквизиты справочника.
Я создал следующие реквизиты:
наименованиеТовара, Цена, Количество, поставщик.
В каждом справочнике имеется стандартный реквизит "Наименование".
Я хочу чтобы значение в реквизите "Наименование" являлось конкатенацией строк "Товар "+ НаименованиеТовара.
Для этого я сделал следующее (обработал всё в модуле формы справочника:

Перем Буфер;


&НаКлиенте
Процедура НаименованиеТовараПриИзменении(Элемент)
   // Вставить содержимое обработчика.
   Буфер = Элемент.ТекстРедактирования;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
   //Вставить содержимое обработчика
   КопироватьВНаименование();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура КопироватьВНаименование()
       Справочник = Справочники.ХлебобулочныеИзделия.ПолучитьСсылку().ПолучитьОбъект();
       Справочник.Наименование = "Товар " + Строка(Справочник.НаименованиеТовара);
       Справочник.Записать();

КонецПроцедуры // КопироватьВНаименование()



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

   

Перем Буфер;


&НаКлиенте
Процедура НаименованиеТовараПриИзменении(Элемент)
   // Вставить содержимое обработчика.
   Буфер = Элемент.ТекстРедактирования;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
   //Вставить содержимое обработчика
   КопироватьВНаименование();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура КопироватьВНаименование()
       Справочник = Справочники.ХлебобулочныеИзделия.ПолучитьСсылку().ПолучитьОбъект();
       Справочник.Наименование = "Товар " + Строка(Справочник.НаименованиеТовара);
       Справочник.Записать();

КонецПроцедуры // КопироватьВНаименование()



Изначально была попытка сделать так, но почему-то у меня не всплывали подсказки о существовании полей Наименование и НаименованиеТовара и компилятор ругался

Справочники.ХлебобулочныеИзделия.Наименование = "Товар " + Справочники.ХлебобулочныеИзделия.НаименованиеТовара;



1

   

Справочники.ХлебобулочныеИзделия.Наименование = "Товар " + Справочники.ХлебобулочныеИзделия.НаименованиеТовара;

Кстати, а почему так делать нельзя, можете подсказать?
и как мне правильно сделать?


Сейчас ошибка во время выполнения
{Справочник.ХлебобулочныеИзделия.Форма.ФормаЭлемента.Форма(1 9)}: Значение не является значением объектного типа (Наименование)
Справочник.Наименование = "Товар " + Строка(Справочник.НаименованиеТовара);
1 Reset
 
28.02.13
18:25
Готовь зонтик :)
2 viktor_vv
 
28.02.13
18:34
(1) Народ разошелся :).

(0) Как по твоему, какому конкретно элементу справочника ты таким кодом пытаешься присвоить наименование ?

Справочник = Справочники.ХлебобулочныеИзделия.ПолучитьСсылку().ПолучитьОбъект();
Справочник.Наименование = "Товар " + Строка(Справочник.НаименованиеТовара);
3 Dmitry017
 
28.02.13
18:34
в смысле
4 Dmitry017
 
28.02.13
18:35
Ну вот. Имеется форма. Я щёлкнул на поле "НаименованиеТовара" и обработал При изменении. А потом в форме элемента справочника я вроде осуществляю запись. Хорошо. а как тогда правильно работать с текущим элементом?
5 viktor_vv
 
28.02.13
18:41
В форме элемента так не пробовал :)

Наименование = "Товар " + НаименованиеТовара;
6 zladenuw
 
28.02.13
18:46
(0) переходи на 8.3 там можно в менеджере объекта задавать свое представление :)
7 Dmitry017
 
28.02.13
18:49
Я написал:
Процедура КопироватьВНаименование()
       Наименование = "Товар " + НаименованиеТовара;
КонецПроцедуры // КопироватьВНаименование()


В итоге:
{Справочник.ХлебобулочныеИзделия.Форма.ФормаЭлемента.Форма(18,29)}: Переменная не определена (НаименованиеТовара)
       Наименование = "Товар " + <<?>>НаименованиеТовара; (Проверка: Сервер)

Хотя у справочника имеется реквизит НаименованиеТовара.
8 Reset
 
28.02.13
18:56
(7) Объект.Наименование="Товар "+Объект.НаименованиеТовара
9 Dmitry017
 
28.02.13
19:12
{Справочник.ХлебобулочныеИзделия.Форма.ФормаЭлемента.Форма(18,3)}: Переменная не определена (Объект)
       <<?>>Объект.Наименование = "Товар " + Объект.НаименованиеТовара; (Проверка: Сервер)
{Справочник.ХлебобулочныеИзделия.Форма.ФормаЭлемента.Форма(18,36)}: Переменная не определена (Объект)
       Объект.Наименование = "Товар " + <<?>>Объект.НаименованиеТовара; (Проверка: Сервер)
10 viktor_vv
 
28.02.13
19:20
Вместо

&НаСервереБезКонтекста

только

&НаСервере
11 viktor_vv
 
28.02.13
19:20
Хотя это в принипе и на клиенте можно делать.
12 Dmitry017
 
28.02.13
19:29
Работает! А вы можете пояснить почему НаСервереБезКонтекста не работала?
13 zladenuw
 
28.02.13
19:29
(12) потому что БезКонтекста. у тебя объект не доступен.
14 Dmitry017
 
28.02.13
19:30
Спасибо большое!