Версия для печати темы (https://pro1c.org.ua/index.php?s=449643023537c9c34246aa9290750ca7&showtopic=5272)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Приси записи номенклатуры в наименование добавить код
Автор: Irina_ 03.11.11, 15:05
Здравствуйте, и снова к Вам за советом.
Нужно при записи Номенклатуры в наименование добавить код (не спрашивайте зачем, так было в 8.1, сама не понимаю необходимости но поросили сделать так же в управляемой)
Так вот, при записи делаю так:
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.Наименование = ТекущийОбъект.Наименование + " " + Строка(ТекущийОбъект.Код);
КонецПроцедуры
Дальше наблюдаю такую картину: Если нажать на кнопку "Записать объект", то все в наименование красивенько подставляется,
а когда нажимаю (в новом элементе) Записать и закрыть, то в наименовании остается старое значение, и соответственно в списке оно тоже отображается старое.
Проверяла отладчиком все процедуры типа ПриЗаписи, ПослеЗаписи, ПослеЗаписиНаСервере - наименование как надо, с кодом...но на форму почему-то его не передает((
Подскажите пожалуйста где что не так делаю? Спасибо ))
Автор: Vofka 03.11.11, 15:16
Если открыть/Закрыть форму - наименование потом с кодом становится?
Автор: Irina_ 03.11.11, 15:45
Цитата(Vofka @ 03.11.11, 15:16)
Если открыть/Закрыть форму - наименование потом с кодом становится?
Нет. Если делать это в процедуре ПриСозданииНаСервере то картина та же но когда закрываешь/открываешь то значение новое подставляется.
Но мне кажется этот вариант не "фонтан"))
Автор: vbi 03.11.11, 16:00
А "ПередЗаписью"?
Объект.Наименование = Объект.Наименование + Объект.Код;
Кстате, представим что вы записали номенклатуру как надо, потом открываете - и наименование у Вас такое "Товар00001" (с кодом, так ведь?). А теперь если ее еще раз записать, тогда наименование будет такое "Товар0000100001". Нехорошо
Автор: Irina_ 03.11.11, 16:02
Цитата(vbi @ 03.11.11, 16:00)
А "ПередЗаписью"?
Объект.Наименование = Объект.Наименование + Объект.Код;
Кстате, представим что вы записали номенклатуру как надо, потом открываете - и наименование у Вас такое "Товар00001" (с кодом, так ведь?). А теперь если ее еще раз записать, тогда наименование будет такое "Товар0000100001". Нехорошо
ПередЗаписью код еще не сформирован ((
Автор: vbi 03.11.11, 16:04
Объект.Наименование = Объект.Наименование + Объект.Код;
так должно работать - только что проверил у себя - работает. При чем на Веб-клиенте! ))
Автор: Irina_ 03.11.11, 16:05
Цитата(vbi @ 03.11.11, 16:00) http://pro1c.org.ua/index.php?act=findpost&pid=35875
Объект.Наименование = Объект.Наименование + Объект.Код;
так должно работать - только что проверил у себя - работает. При чем на Веб-клиенте! ))
В процедуре ПередЗаписью?
Автор: vbi 03.11.11, 16:11
Вызовите
УстановитьНовыйКод(<ПрефиксКода>);
и все. Можна вызвыть при создании на сервере.
При создании на сервере вызываете
УстановитьНовыйКод(<ПрефиксКода>);а ПередЗаписью на клиенте
Объект.Наименование = Объект.Наименование + Объект.Код;
Автор: Irina_ 03.11.11, 16:13
Цитата(vbi @ 03.11.11, 16:11)
Вызовите
УстановитьНовыйКод(<ПрефиксКода>);
и все. Можна вызвыть при создании на сервере.
При создании на сервере вызываете
УстановитьНовыйКод(<ПрефиксКода>);а ПередЗаписью на клиенте
Объект.Наименование = Объект.Наименование + Объект.Код;ПриСоданииНаСервере вызывается даже при открытии существующего элемента....хорошо там вызывать УстановитьНовыйКод ?
Автор: vbi 03.11.11, 16:35
Цитата
ПриСоданииНаСервере вызывается даже при открытии существующего элемента....хорошо там вызывать УстановитьНовыйКод ?
Да. Ведь (тем более на сервере) проверить условие нового:
Если Объект.ЭтоНовый() Тогда
УстановитьНовыйКод("");
КонецЕсли;
Скажете, получилось ли.
Автор: Irina_ 03.11.11, 17:06
Цитата(vbi @ 03.11.11, 16:35)
Да. Ведь (тем более на сервере) проверить условие нового:
Если Объект.ЭтоНовый() Тогда
УстановитьНовыйКод("");
КонецЕсли;
Скажете, получилось ли.
Ругается что Метод объекта не обнаружен УстановитьКод ((
Автор: Kutuzov 03.11.11, 17:13
Цитата(Irina_ @ 03.11.11, 17:06)
Ругается что Метод объекта не обнаружен УстановитьКод ((
Установить
НовыйКод() И кавычки не нужны
Автор: vbi 03.11.11, 17:26
Сори...
Объект.УстановитьНовыйКод("");
Вот, проверил у себя: 100% работает:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ДокОбъект = РеквизитФормыВЗначение("Объект");
Если ДокОбъект.ЭтоНовый() Тогда
ДокОбъект.УстановитьНовыйКод("");
КонецЕсли;
ЗначениеВРеквизитФормы(ДокОбъект,"Объект");
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Объект.Наименование = Объект.Наименование + Объект.Код;
КонецПроцедуры
Автор: Irina_ 03.11.11, 17:31
Цитата(vbi @ 03.11.11, 17:26)
Сори...
Объект.УстановитьНовыйКод("");
Вот, проверил у себя: 100% работает:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ДокОбъект = РеквизитФормыВЗначение("Объект");
Если ДокОбъект.ЭтоНовый() Тогда
ДокОбъект.УстановитьНовыйКод("");
КонецЕсли;
ЗначениеВРеквизитФормы(ДокОбъект,"Объект");
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Объект.Наименование = Объект.Наименование + Объект.Код;
КонецПроцедуры
Поняла в чем ошибка. Если не делать ДокОбъект = РеквизитФормыВЗначение("Объект"); то Объект это структура параметров, поэтому и ругалось ))
Теперь все получилось ))
vbi, СПАСИБО Вам ОГРОМНОЕ :-*
Автор: vbi 03.11.11, 17:48
Да, Объект формі - єто всего лишь структура. это сделано для разделения функционала клиента и сервера. Вообще на клиенте не может быть объект, но по привычке 1Сники сделали такой объект и вставили все реквизиты настоящего объекта туда. И эти реквизиты вполне можно использовать. Вот только методы из структуры вызывать нельзя)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua