Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Приси записи номенклатуры в наименование добавить код
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
Irina_
Здравствуйте, и снова к Вам за советом.

Нужно при записи Номенклатуры в наименование добавить код (не спрашивайте зачем, так было в 8.1, сама не понимаю необходимости но поросили сделать так же в управляемой)

Так вот, при записи делаю так:

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


Дальше наблюдаю такую картину: Если нажать на кнопку "Записать объект", то все в наименование красивенько подставляется,
а когда нажимаю (в новом элементе) Записать и закрыть, то в наименовании остается старое значение, и соответственно в списке оно тоже отображается старое.
Проверяла отладчиком все процедуры типа ПриЗаписи, ПослеЗаписи, ПослеЗаписиНаСервере - наименование как надо, с кодом...но на форму почему-то его не передает((
Подскажите пожалуйста где что не так делаю? Спасибо ))
Vofka
Если открыть/Закрыть форму - наименование потом с кодом становится?
Irina_
Цитата(Vofka @ 03.11.11, 15:16) необходимо зарегистрироваться для просмотра ссылки
Если открыть/Закрыть форму - наименование потом с кодом становится?


Нет. Если делать это в процедуре ПриСозданииНаСервере то картина та же но когда закрываешь/открываешь то значение новое подставляется.
Но мне кажется этот вариант не "фонтан"))
vbi
А "ПередЗаписью"?
Объект.Наименование = Объект.Наименование + Объект.Код;

Кстате, представим что вы записали номенклатуру как надо, потом открываете - и наименование у Вас такое "Товар00001" (с кодом, так ведь?). А теперь если ее еще раз записать, тогда наименование будет такое "Товар0000100001". Нехорошо smile.gif
Irina_
Цитата(vbi @ 03.11.11, 16:00) необходимо зарегистрироваться для просмотра ссылки
А "ПередЗаписью"?
Объект.Наименование = Объект.Наименование + Объект.Код;

Кстате, представим что вы записали номенклатуру как надо, потом открываете - и наименование у Вас такое "Товар00001" (с кодом, так ведь?). А теперь если ее еще раз записать, тогда наименование будет такое "Товар0000100001". Нехорошо smile.gif


ПередЗаписью код еще не сформирован ((
vbi
Объект.Наименование = Объект.Наименование + Объект.Код;

так должно работать - только что проверил у себя - работает. При чем на Веб-клиенте! ))
Irina_
Цитата(vbi @ 03.11.11, 16:00) необходимо зарегистрироваться для просмотра ссылки
Кстате, представим что вы записали номенклатуру как надо, потом открываете - и наименование у Вас такое "Товар00001" (с кодом, так ведь?). А теперь если ее еще раз записать, тогда наименование будет такое "Товар0000100001". Нехорошо smile.gif


Ну это уже мелочи, с этим я уже наю что делать, основная проблема сейчас всунуть в наименование код и чтоб наименование обновлялось )))

Цитата(vbi @ 03.11.11, 16:04) необходимо зарегистрироваться для просмотра ссылки
Объект.Наименование = Объект.Наименование + Объект.Код;

так должно работать - только что проверил у себя - работает. При чем на Веб-клиенте! ))


В процедуре ПередЗаписью?
vbi
Вызовите
УстановитьНовыйКод(<ПрефиксКода>);
и все. Можна вызвыть при создании на сервере.

При создании на сервере вызываете УстановитьНовыйКод(<ПрефиксКода>);

а ПередЗаписью на клиенте Объект.Наименование = Объект.Наименование + Объект.Код;
Irina_
Цитата(vbi @ 03.11.11, 16:11) необходимо зарегистрироваться для просмотра ссылки
Вызовите
УстановитьНовыйКод(<ПрефиксКода>);
и все. Можна вызвыть при создании на сервере.

При создании на сервере вызываете УстановитьНовыйКод(<ПрефиксКода>);

а ПередЗаписью на клиенте Объект.Наименование = Объект.Наименование + Объект.Код;


ПриСоданииНаСервере вызывается даже при открытии существующего элемента....хорошо там вызывать УстановитьНовыйКод ?
vbi
Цитата
ПриСоданииНаСервере вызывается даже при открытии существующего элемента....хорошо там вызывать УстановитьНовыйКод ?

Да. Ведь (тем более на сервере) проверить условие нового:

Если Объект.ЭтоНовый() Тогда
     УстановитьНовыйКод("");
КонецЕсли;


Скажете, получилось ли.
Irina_
Цитата(vbi @ 03.11.11, 16:35) необходимо зарегистрироваться для просмотра ссылки
Да. Ведь (тем более на сервере) проверить условие нового:

Если Объект.ЭтоНовый() Тогда
     УстановитьНовыйКод("");
КонецЕсли;


Скажете, получилось ли.


Ругается что Метод объекта не обнаружен УстановитьКод ((
Kutuzov
Цитата(Irina_ @ 03.11.11, 17:06) необходимо зарегистрироваться для просмотра ссылки
Ругается что Метод объекта не обнаружен УстановитьКод ((


УстановитьНовыйКод() И кавычки не нужны
vbi
Сори...
Объект.УстановитьНовыйКод("");

rolleyes.gif

Вот, проверил у себя: 100% работает:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    Если ДокОбъект.ЭтоНовый() Тогда
         ДокОбъект.УстановитьНовыйКод("");
    КонецЕсли;
    ЗначениеВРеквизитФормы(ДокОбъект,"Объект");
КонецПроцедуры


&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Объект.Наименование = Объект.Наименование + Объект.Код;
КонецПроцедуры
Irina_
Цитата(vbi @ 03.11.11, 17:26) необходимо зарегистрироваться для просмотра ссылки
Сори...
Объект.УстановитьНовыйКод("");

rolleyes.gif

Вот, проверил у себя: 100% работает:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    Если ДокОбъект.ЭтоНовый() Тогда
         ДокОбъект.УстановитьНовыйКод("");
    КонецЕсли;
    ЗначениеВРеквизитФормы(ДокОбъект,"Объект");
КонецПроцедуры


&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Объект.Наименование = Объект.Наименование + Объект.Код;
КонецПроцедуры



Поняла в чем ошибка. Если не делать ДокОбъект = РеквизитФормыВЗначение("Объект"); то Объект это структура параметров, поэтому и ругалось ))

Теперь все получилось ))
vbi, СПАСИБО Вам ОГРОМНОЕ :-*
vbi
Да, Объект формі - єто всего лишь структура. это сделано для разделения функционала клиента и сервера. Вообще на клиенте не может быть объект, но по привычке 1Сники сделали такой объект и вставили все реквизиты настоящего объекта туда. И эти реквизиты вполне можно использовать. Вот только методы из структуры вызывать нельзя)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.