Имя: Пароль:
1C
1С v8
Добавление доп. реквизита
0 immurz
 
11.10.13
09:33
НазваниеДопРеквизита = "Мой реквезит";
РеквезитИзПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(НазваниеДопРеквизита);
ДопРеквезит = Объект.ДополнительныеРеквизиты.Добавить();
ДопРеквезит.Свойство = РеквезитИзПВХ;
ДопРеквезит.Значение = Истина;
ПараметрыЗаписи = Новый Структура;
    ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
    Записать(ПараметрыЗаписи);


Ни черта не работает. Хотя, если сразу после добавления перебрать дополнительные реквизиты - все покажет правильно. Что я делаю не так?
1 Defender aka LINN
 
11.10.13
09:42
(0) Это в форме?
2 banco
 
11.10.13
09:47
(0) может надо вызвать
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
3 immurz
 
11.10.13
09:47
Ага. В форме на сервере.
4 Defender aka LINN
 
11.10.13
09:57
(3) Ну, молодец, чо. Не делай так. Или перезаполняй свойства на форме.
5 immurz
 
11.10.13
10:02
(2) Ругается на недостаточность параметров.

(4) А где делать? В модуле объекта?
6 immurz
 
14.10.13
09:17
Блин. Ну ничего не помогает )
7 Defender aka LINN
 
14.10.13
09:20
(5) Посмотри, откуда берутся свойства на форме и как хранятся.
8 cw014
 
14.10.13
09:23
Я так телепатирую, что это вызывается на сервере в процедуре ПередЗаписьюНаСервере() в модуле формы (иначе откуда реквизит "Объект"). Так вот в этот момент реквизит Объект имеющий тип "ДанныеФормыСтруктура" уже не трогается, для этого дела специально передается параметр "ТеРасширение управляемой формы для документа.ПередЗаписьюНаСервере (Managed form extension for documents.BeforeWriteAtServer)
Расширение управляемой формы для документа (Managed form extension for documents)
ПередЗаписьюНаСервере (BeforeWriteAtServer)
Синтаксис:

ПередЗаписьюНаСервере(<Отказ>, <ТекущийОбъект>, <ПараметрыЗаписи>)
Параметры:

<Отказ>

Тип: Булево.
Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись произведена не будет.
Значение по умолчанию: Ложь
<ТекущийОбъект>

Тип: ДокументОбъект.
Записываемый объект.
<ПараметрыЗаписи>

Тип: Структура.
Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд "Провести", "Провести и закрыть", "Отмена проведения".
Описание:

Вызывается перед записью объекта на сервере.
Можно отменить запись. Выполняется вне транзакции. кущийОбъект". Читай СП:
9 immurz
 
14.10.13
21:50
(8) Нет, это моя процедура которая заполняет документ и сохраняет его.
10 immurz
 
28.10.13
12:01
НазваниеДопРеквизита = "Мой реквезит";
    ДокументОбъект = Объект.Ссылка.ПолучитьОбъект();
    РеквезитИзПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(НазваниеДопРеквизита);
    ДопРеквезит = ДокументОбъект.ДополнительныеРеквизиты.Добавить();
    ДопРеквезит.Свойство = РеквезитИзПВХ;
    ДопРеквезит.Значение = Истина;
    ДокументОбъект.Записать();


Вот так правильно делать.
11 Wobland
 
28.10.13
12:03
(10) но неграмотно
12 immurz
 
28.10.13
12:04
(11) А более развернуто?
13 Wobland
 
28.10.13
12:05
(12) Грамотность — степень владения человеком навыками письма и чтения на родном языке. у тебя её плохо видно
14 immurz
 
28.10.13
12:09
(13) Я с точки зрения программирования
15 Wobland
 
28.10.13
12:10
(14) а я с другой точки
16 immurz
 
28.10.13
12:19
(15) Ну тогда ладно )
17 immurz
 
28.10.13
12:28
Только остается один вопрос - почему с табличной частью товаров вариант с стартовом посте прокатывает, а с табличной частью дополнительных реквИзитов - нет?
18 immurz
 
28.10.13
18:32
А вот и вполне очевидный ответ - в первом случае я изменяю данные на форме, а во втором случае - данные объекта. Так то.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан