Имя: Пароль:
1C
1С v8
Как присвоить код наименованию в УФ?
, ,
0 Saari
 
21.11.22
09:20
Cоздал справочник с двумя реквизитами (кроме штатных - код, наименование).
Требуется при записи элемента справочника в наименование добавлять код.
В модуле формы создал функцию:

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ТекущийОбъект.Наименование = "" Тогда
  ТекущийОбъект.Наименование = "Наименование - " + СокрЛП(ТекущийОбъект.Код);
КонецЕсли;
КонецПроцедуры

Элемент создается, но в реквизит "Наименование" ничего не записывается.

Подскажите, пожалуйста, в какой функции нужно прописать присвоение наименования?
1 vicof
 
21.11.22
09:23
ПередЗаписью
2 Fish
 
21.11.22
09:24
А зачем в наименование добавлять код?
3 НафНаф
 
21.11.22
09:24
ПередЗаписью и не у формы, а у объекта
4 НафНаф
 
21.11.22
09:24
(2) чтобы отказаться от Наименования, люди же не знают, что представление объекта можно программно изменить
5 Saari
 
21.11.22
09:28
(3) В процедуре ПередЗаписью() в модуле объекта ошибка:
Переменная не определена (Объект)
    Если <<?>>Объект.Наименование = "" Тогда (Проверка: Сервер)

Перед записью еще код не сформирован. Поэтому в процедуре ПередЗаписью() не подойдет.
6 Saari
 
21.11.22
09:29
(2) Реквизиты Наименование и код недоступны пользователю. И чтобы не оставлять Наименование пустым, решит вписывать в Наименование значение реквизита "Код".
7 Saari
 
21.11.22
09:40
В модуле объекта написал:
Процедура ПередЗаписью(Отказ)
    
    Если ЭтоНовый() Тогда
        ЭтотОбъект.УстановитьНовыйКод();
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Код) Тогда
        Наименование = "Наименование - " + Код;
    КонецЕсли;
    
КонецПроцедуры


Все получилось!
Спасибо!
8 Saari
 
21.11.22
09:43
Эксперимент:
Процедура ПередЗаписью(Отказ)
Если ЭтотОбъект.Наименование = "" Тогда
  ЭтотОбъект.Наименование = "Наименование - " + СокрЛП(ЭтотОбъект.Код);
КонецЕсли;
Такой вариант без ошибок, но не рабочий, т.к. код элемента в этот момент еще не определен.
9 НафНаф
 
21.11.22
09:44
(7) молодец, но зачем?
10 vicof
 
21.11.22
09:47
А еще есть ОбработкаПолученияПредставления.
11 Сияющий Асинхраль
 
21.11.22
09:54
Не проще просто убрать наименование вообще? Если оно реально не нужно, ну и сделай длину наименования равной нулю...
12 vicof
 
21.11.22
09:55
Короче говоря, сначала нужно определиться с целью.
13 Saari
 
21.11.22
10:01
(11) теперь (когда разобрался с механизмом) можно и приравнять длину Наименования нулю ))
(9)  см. (6)
14 Новый1сник2
 
21.11.22
10:02
(0) цель не понятна, ладно когда артикул есть, наименование может и не быть, но присваивать наименованию код для чего?
15 Dmitrii
 
гуру
21.11.22
10:36
(7) Забыл проверку на пустое наименование. Твой код будет каждый раз перед записью перезаписывать наименование вне зависимости от того установлено ли уже наименование.
Если наименование фиксированное и всегда должно равняться коду, то ничего страшного в этом нет. Но в таком варианте действительно лучше указать основное представление справочника в виде кода, а от наименования отказаться вообще.
16 Saari
 
21.11.22
10:49
(15) Да, спасибо! Проверку забыл добавить (в первоначальном неработающем варианте проверка была).
Думаю, что да, основное представление сделаю в виде кода, а длину наименования приравняю нулю.
Спасибо!
Программист всегда исправляет последнюю ошибку.