Имя: Пароль:
1C
1С v8
Не сохраняется реквизит, добавленный в расширении.
0 vv2304
 
18.03.23
19:49
Платформа 8.2.22.1750
Создал расширение, добавил туда спр.НоменклатурныеГруппы. Добавил реквизит ПолноеНаименование, тип строка. Только для групп.
В расширении добавил общий модуль (заимствовал) где прописал программный вывод на форму ПолноеНаименование.
Выводится на форму, вбиваю в ПолноеНаименование, а оно не сохраняется.
1 AlvlSpb
 
18.03.23
20:12
(0) А Записать() не забыл?
2 AlvlSpb
 
18.03.23
20:14
Ну и если справочник Номенклатурные группы создан и имеет свою форму, смысл выводить реквизит на форму в  общем модуле? Проще и быстрее сразу на созданной форме.
3 vv2304
 
18.03.23
20:27
Форму в расширение не добавлял
4 eddy_n
 
18.03.23
20:27
(0) Сам реквизит ПолноеНаименование добавил, надеюсь, не в расширении?
5 vv2304
 
18.03.23
20:28
(4) Именно в расширение
6 eddy_n
 
18.03.23
20:32
(5) Зачем? Новый реквизит у тебя никто не отберёт и не затрёт. Обновишься тоже без проблем в будущем.
7 eddy_n
 
18.03.23
20:39
(5) Как это? И как это будет работать? Директивы процедур в форме хранятся. А реквизит - одиноко стоящий получается? Как до него в расширении достучаться?
8 vv2304
 
18.03.23
20:44
(7) Директив там нет. Обычные проверки.
9 vv2304
 
18.03.23
20:45
Даже если полностью очистить модуль объекта, все равно ведь запишется изменение наименования.
И в модуле объекта мой добавленный реквизит видно,но он NULL
10 AlvlSpb
 
18.03.23
21:52
(5) Как добавил? Реквизит формы или реквизит объекта?
11 vv2304
 
18.03.23
22:11
(10) В расширение добавил как реквизит объекта.

похоже, нашел причину
в общем модуле УправлениеСвойствами
Если Проверка.ЭтоГруппа Тогда
        Возврат; // Для групп дополнительные реквизиты не подключаются.
    КонецЕсли;

А у меня как раз группа. Если бы для элемента, я бы и в самом режиме Предприятия добавил реквизит.
12 AlvlSpb
 
18.03.23
22:14
(11) Объясняй корректно. Добавил реквизит объекта или дополнительный реквизит? "// Для групп дополнительные реквизиты не подключаются."©
13 vv2304
 
18.03.23
22:21
(12) Добавил реквизит объекта, я же писал.
Просто при записи попадает в процедуру ДополнительныеРеквизитыОбработкаПроверкиЗаполнения
а там этот реквизит объекта видится как дополнительный реквизит
14 AlvlSpb
 
18.03.23
22:30
(13) Это как? Разбирайся как и куда добавил реквизит. Есть уверенность что добавил доп реквизит а не реквизит объекта. Если не заимствовал форму, то создание реквизита тоже должно быть в общем модуле. КАК создал?
15 vv2304
 
18.03.23
22:39
(14) Нет, именно реквизит объекта.
https://s1.hostingkartinok.com/uploads/images/2023/03/f86c2079840462c90d3e07cbbfa20af0.jpg
Я сначала программно выводил на форму в общем модуле. Затем добавил в расширение форму, реквизит на форму вывел из модуля формы.
Все равно не сохранялся.
Тогда в расширении в модуле формы дописал
в ПриСозданииНаСервере
НовыйЭлемент.УстановитьДействие("ПриИзменении", "Подключаемый_ПриЗаписи");
и там же
&НаКлиенте
Процедура Подключаемый_ПриЗаписи(Элемент)
    Объект.вв_ПолноеНаименование = Элемент.ТекстРедактирования;
    Записать();
КонецПроцедуры

Так вот отладчиком попадаю в процедуру ДополнительныеРеквизитыОбработкаПроверкиЗаполнения
А там мой реквизит видится как дополнительный
16 vv2304
 
18.03.23
22:46
В принципе, да и фиг с тем, что видит как доп. реквизит. Главное, что не пропускает ГРУППУ.
Там условие
Если Проверка.ЭтоГруппа Тогда
        Возврат; // Для групп дополнительные реквизиты не подключаются.
    КонецЕсли;
17 AlvlSpb
 
18.03.23
22:49
Код полная хрень. Он не нужен. Заимствуй в расширение Объект и все сохранится. https://postimg.cc/jWtPpY8L
18 AlvlSpb
 
18.03.23
22:55
Да и покажи как вывел реквизит на форму. А то может элементарно Путь не прописан?
19 Сергиус
 
18.03.23
23:56
(0)Может неправильно прописал соот-вие на форме? т.е. реквизит добавил, но он не связан с объектом.
20 Сергиус
 
18.03.23
23:58
+(19)Объект.вв_ПолноеНаименование = Элемент.ТекстРедактирования; - В отладчике проверял, в ТекстРедактирования что-то есть?
21 Сергиус
 
19.03.23
00:02
Вообще в идеале надо делать не через код, который используется для вывода доп.реквизитов, а дописать свой в процедуре , которая вызывается при открытии формы элемента.
22 vv2304
 
19.03.23
00:12
(18) Если бы я путь не прописал, то и реквизита на форме не было бы.
Реквизит программно. Я вначале даже форму в расширение не добавлял, она там и не нужна.
Код в общем модуле писал. Но т.к. не получалось, добавил форму в расширение.
И там в модуле формы код
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
        // Массив для новых реквизитов
    ДобавляемыеРеквизиты    = Новый Массив;
    
    // Опишем ревизиты формы
    вв_ПолноеНаименование = Новый РеквизитФормы("вв_ПолноеНаименование",    Новый ОписаниеТипов("Строка", , ,
    Новый КвалификаторыСтроки(300)),    , "Полное наименование");
    
    // Заполним массив после описания реквизитов формы
    ДобавляемыеРеквизиты.Добавить(вв_ПолноеНаименование);
    ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    
    НовыйЭлемент = Элементы.Добавить("вв_ПолноеНаименование", Тип("ПолеФормы"));
    НовыйЭлемент.ПутьКДанным    = "вв_ПолноеНаименование";  
    НовыйЭлемент.Заголовок      = "Полное наименование";
    НовыйЭлемент.Вид            = ВидПоляФормы.ПолеВвода;
    НовыйЭлемент.ТолькоПросмотр = Ложь;
    НовыйЭлемент.Видимость      = Истина;
    НовыйЭлемент.Доступность    = Истина;
    
    НовыйЭлемент.УстановитьДействие("ПриИзменении", "Подключаемый_ПриЗаписи");
    
КонецПроцедуры  

(20) Да, ТекстРедактирования есть.
23 Сергиус
 
19.03.23
03:24
(22)Попробуйте вместо НовыйЭлемент.ПутьКДанным    = "вв_ПолноеНаименование";  поставить НовыйЭлемент.ПутьКДанным    = "Объект.вв_ПолноеНаименование";
24 eddy_n
 
19.03.23
07:29
Скажи главное, почему ты не хочешь этот реквизит объекта прицепить СРАЗУ в конфу?
25 vv2304
 
19.03.23
08:55
(23) Спасибо. Именно это помогло.
(24) У меня штук 8 одинаковых баз, постоянно приходится "на лету" дописывать. Поэтому большинство задач решаю через расширения, в т.ч. и доп. реквизиты.
И как правило, без добавления форм в расширение.
26 vv2304
 
19.03.23
08:59
На лету-это значит, что не всем нужны эти дописки, люди продолжают сидеть в базах. А те кому нужно, выходят-заходят в базу и видят изменения.
27 AlvlSpb
 
19.03.23
09:08
(22) Чтд, путь был указан неверно. Создал реквизит объекта, а путь прописал как к реквизиту формы
28 vv2304
 
19.03.23
09:15
(27) Да я вначале так и писал когда размещал код в общем модуле, но вылетала ошибка. Убрал в том модуле "Объект" и ошибка пропала, реквизит на форме появился.
Но не записывался. Тогда перенес код в модуль формы, но уже без "Объект".
29 AlvlSpb
 
19.03.23
09:28
(28) "Да я вначале так и писал когда размещал код в общем модуле, но вылетала ошибка"© Ошибка вылетала, потому что не заимствовал сам Объект см (17)
30 eddy_n
 
19.03.23
10:31
(29) Эта не так давно появившаяся фича всем портит кровь. Ты думаешь, что после добавления формы в расширение объект тоже автоматически туда попадёт. Но это не так. Вендор хочет чтобы ты ещё раз подтвердил, что хочешь, чтобы объект попал в расширение.
31 eddy_n
 
19.03.23
10:35
Есть ещё одна фича, про которую не надо всем забывать - это признаки расширения БЕЗОПАСНЫЙ РЕЖИМ и ЗАЩИТА ОТ ОПАСНЫХ ДЕЙСТВИЙ. Вендор взводит эти галочки по умолчанию. И ты, если не натыкался на эти подводные камни, вначале недоумеваешь, почему расширение не работает. НАДО СНЯТЬ ЭТИ ГАЛОЧКИ, если хочешь, чтобы расширение работало.
32 eddy_n
 
19.03.23
10:37
К расширениям ещё куча претензий. Видно, что это только начало пути по работе с ними.
33 Сергиус
 
19.03.23
11:16
(32)Как там говорилось "8-ка еще сырая" :)
34 AlvlSpb
 
19.03.23
11:40
(30) на самом деле не обязательно заимствовать объект. До объектного реквизита можно добраться через этаформа.объект и будет работать без заимствования самого объекта
35 eddy_n
 
19.03.23
12:29
(34) До всего можно добраться окружными путями. И до http-ответа сервера тоже, взгромоздив конструкцию из миллион строк.
36 Новый1сник2
 
19.03.23
12:52
все не читал, добавить реквизит в основную конфу, не вариант ?
37 eddy_n
 
19.03.23
13:40
(36) Было. Начинаем всё сначала?
38 Новый1сник2
 
19.03.23
13:48
(37) не доверяю я расширениям. по крайней мере новые реквизиты и объекты, надежнее добавлять в основную конфу. да и добавление на форму можно делать в основной конфе, при обновлении просто объединять с новой формой и норм. иногда правда смещаются реквизиты после обновления, но вручную легко поправить. а вот механизма сравнения при обновлении еще и с расширением, до сих пор нет. что очень не удобно.
39 eddy_n
 
19.03.23
13:52
(38) Всё так. Только у ТС железобетонный аргумент - никто не должен покидать пространство 1с ради одного реквизита. Демоническое обновление - не обсуждается. Много чего нет для норм. работы с расширениями. Это начало пути.