Программное добавление реквизита в табличную часть управляемой формы

1. Roman_Go 2 01.02.19 16:22 Сейчас в теме
 НовыйРеквизит = Новый РеквизитФормы("Должность", Новый ОписаниеТипов("Строка"), "Объект.ДанныеОВремени",,Ложь);      
		    НовыйРеквизит.Заголовок = "Должность";
		    
		    ДобавленныеРеквизиты = Новый Массив;      
		    ДобавленныеРеквизиты.Добавить(НовыйРеквизит); 
		    Форма.ИзменитьРеквизиты(ДобавленныеРеквизиты); 
		    
			ЭлементДолжность           = Форма.Элементы.Вставить("Должность", Тип("ПолеФормы"), Форма.Элементы.ДанныеОВремени, Форма.Элементы.ДанныеОВремениВремяИтог);
			ЭлементДолжность.Вид       = ВидПоляФормы.ПолеВвода;
			ЭлементДолжность.ПутьКДанным = "Объект.ДанныеОВремени.Должность";
			ЭлементДолжность.Заголовок = "Должность";
Показать



зуп 3.1 корп, табель. Пытаюсь добавить колонку, не получается выдает


{ОбщийМодуль.МеКаМи_РеквизитыНаФорму.Модуль(549)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)
ЭлементДолжность.ПутьКДанным = "Объект.ДанныеОВремени.Должность";
по причине:
Недопустимое значение


не могу понять что она от меня хочет. Помогите разобраться.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user633533_encantado 11 01.02.19 16:35 Сейчас в теме
(1) Потому что у табличной части нет такой колонки "Должность"
user834484; +1 Ответить
3. Roman_Go 2 01.02.19 16:38 Сейчас в теме
(2)
НовыйРеквизит = Новый РеквизитФормы("Должность", Новый ОписаниеТипов("Строка"), "Объект.ДанныеОВремени",,Ложь);      
            НовыйРеквизит.Заголовок = "Должность";
            
            ДобавленныеРеквизиты = Новый Массив;      
            ДобавленныеРеквизиты.Добавить(НовыйРеквизит); 
            Форма.ИзменитьРеквизиты(ДобавленныеРеквизиты);


а это разве не делает мне колонку?
4. user633533_encantado 11 01.02.19 16:45 Сейчас в теме
(3) Первый раз невнимательно посмотрел, да делает тебе колонку.
5. user633533_encantado 11 01.02.19 16:57 Сейчас в теме
(1) Вообще у тебя рабочий код.
12. EVKash 14 04.02.19 08:32 Сейчас в теме
(1)
ЭлементДолжность = Форма.Элементы.Вставить(

Наверно добавить, а не вставить?
14. Roman_Go 2 06.02.19 08:40 Сейчас в теме
(12) добавить в конце вставляет, вставить добавляет не в конец.
(11) нет
17. dhurricane 06.02.19 10:10 Сейчас в теме
(1) Удалось найти истоки проблемы. Напротив таблицы "ДанныеОВремени" снята галочка "Использовать всегда". Если ее восстановить, ошибки не будет. Предполагаю, что вновь созданный реквизит "Должность" при добавлении заимствует значение этого флажка у своего родителя, т.е. флажок сброшен. Видимо без него не добавить элемент.

Как установить программно флажок "Использовать всегда" для реквизита типа "ДанныеФормыКоллекция" пока ума не приложу.
48. chemezov 47 23.10.23 16:02 Сейчас в теме
(17) Наверняка ответ уже найден, но я оставлю это здесь, для ищущих
СписокДокументыПродажи.УстановитьОбязательноеИспользование("Проведен", Истина);

СписокДокументыПродажи - динамический список журнала документов "документы продажи"
"Проведен" - поле динамического списка, которому нужно установить программно флаг "Использовать всегда"
6. YannikAlx 43 01.02.19 17:06 Сейчас в теме
Может кавычек не надо ЭлементДолжность.ПутьКДанным = "Объект.ДанныеОВремени.Должность";
7. Roman_Go 2 01.02.19 17:14 Сейчас в теме
(6) да нет, ковычки нужны.


(5) я думаю, может тут какая-нибудь специфическая табличная часть, что запрещенно добавлять.


просто часть связанная с созданием реквизита, она работает, если потом через отладчик посмотреть, там есть добавленный реквизит, а вот при попытке добавить в элементы формы, выдается ошибка.

причем я пробовал вывести реквизит, который уже есть в реквизите табличном, но отсутствует в элементе формы, ту же самую ошибку выдал.
8. user633533_encantado 11 01.02.19 17:28 Сейчас в теме
(7) Попробуй вставить реквизит не между сотрудником и итогом, а после них.
9. dhurricane 01.02.19 18:06 Сейчас в теме
Простите за глупый вопрос. Точно ли "Форма.Элементы.ДанныеОВремени" - это таблица, у которой путь к данным "Объект.ДанныеОВремени"? Нет ли одноименного реквизита не объекта, а формы "ДанныеОВремени", используемого для отображения данных?
10. Roman_Go 2 01.02.19 19:02 Сейчас в теме
(9) точно


(8) через добавить пробовал, добавить в конец вставляет, тоже не вставляет.
13. user633533_encantado 11 04.02.19 11:21 Сейчас в теме
(10) Да все там просто: вы пытаетесь вставить новый реквизит ТЧ между колонками, у который установлено положение в табличной части "лево", вот и выдает ошибку.
15. Roman_Go 2 06.02.19 08:41 Сейчас в теме
(13) через добавить тоже не работает.
16. EVKash 14 06.02.19 08:52 Сейчас в теме
(15) Только сейчас обратил внимание, что вы это делаете в общем модуле.
А если перед этим вставить.
Объект = Форма.РеквизитФормыВЗначение("Объект");

Модуль просто не в курсе кто такой Объект...
user633533_encantado; +1 Ответить
18. user633533_encantado 11 06.02.19 10:33 Сейчас в теме
(15) Из какого модуля вы вызываете свои процедуры, при каком событии формы ?
19. dhurricane 06.02.19 10:41 Сейчас в теме
(18) Описал проблему в (17). Быть может Вы знаете ее решение.
11. user596430_gleb21 3 04.02.19 01:05 Сейчас в теме
Может таки, Объект.ДанныеОВремени.Должность это не строка?
20. Stabra 19 12.02.19 18:02 Сейчас в теме
Я столкнулся с такой же проблемой. Roman_Go, вы смогли добавить реквизит?
21. sizeoff 17 16.11.21 16:08 Сейчас в теме
Такая же проблема была. Что я только не делал. ERP (2.5.6.195) Платформа (8.3.16.1814).
Взлетело только после переноса кода из общего модуля "МодификацияКонфигурацииПереопределяемый" в расширение в модуль формы "ПриСозданииНаСервереПосле".
22. sizeoff 17 16.11.21 18:11 Сейчас в теме
(21) Все заработало. Была очепятка. ))
23. ybatiaev 58 20.02.23 17:16 Сейчас в теме
Добрый день!
А если я просто хочу добавить программно новый реквизит(колонку) в ТЧ, чтобы он НЕ сохранялся. Нового реквизита естественно нет в реквизитах вообще ни в объекте, ни в какой-либо ТЧ объекта. Как это сделать?

Что-то закопался (
24. пользователь 20.02.23 17:43
Сообщение было скрыто модератором.
...
25. ybatiaev 58 20.02.23 17:47 Сейчас в теме
(24)
(24) если бы это не делал, то и не спрашивал тут (((((

вот код
	ДобавляемыеРеквизиты = Новый Массив;
	НовыйРеквизит = новый РеквизитФормы("СчетУчета",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(10))); 
	ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
	ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

	НовыйЭлемент  = Элементы.Добавить("СчетУчета",Тип("ПолеФормы"), Элементы.ОС);
	НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;      
	НовыйЭлемент.ПутьКДанным = "СчетУчета";
Показать
26. пользователь 20.02.23 17:50
Сообщение было скрыто модератором.
...
27. ybatiaev 58 20.02.23 17:53 Сейчас в теме
(26)
(26) добавлял и его тоже, в примере не показал его. Не понятно что там писать. Перепробовал уже "ЭтотОбъект.ОС" и "Элементы.ОС"
28. пользователь 20.02.23 17:57
Сообщение было скрыто модератором.
...
29. ybatiaev 58 20.02.23 17:59 Сейчас в теме
(24)
(28) ЧТо тут писать? Если Вы знаете - напишите. Или дайте ссылку, где это описано
30. пользователь 20.02.23 18:08
Сообщение было скрыто модератором.
...
31. ybatiaev 58 20.02.23 18:13 Сейчас в теме
(30) Если Вы можете подсказать ЧТО тут вписывать , то напишите только это
На картнике ХЕЛП. Вы же мне хелп предлагаете почитать глупому?
Прикрепленные файлы:
37. SlavaKron 20.02.23 19:14 Сейчас в теме
(31) На самом деле, да. Ответ в "Хелпе". Добавьте интерактивно колонку в ТЧ, посмотрите какой получается путь к данным у колонки на форме, учитывайте примечание "Не содержит имя реквизита".
Прикрепленные файлы:
38. пользователь 20.02.23 19:15
Сообщение было скрыто модератором.
...
39. SlavaKron 20.02.23 19:16 Сейчас в теме
(38) А кто говорил, что одно и то же? Даже СП говорит про путь к реквизиту с уточнением про "Не содержит имя реквизита".
40. пользователь 20.02.23 19:18
Сообщение было скрыто модератором.
...
41. SlavaKron 20.02.23 19:19 Сейчас в теме
(40) Так я его и не в Объекте создаю.
42. пользователь 20.02.23 19:21
Сообщение было скрыто модератором.
...
32. ybatiaev 58 20.02.23 18:16 Сейчас в теме
(28) не элементы, ни объект... а что может ещё быть на форме? Декорация? :-)
33. пользователь 20.02.23 18:23
Сообщение было скрыто модератором.
...
34. ybatiaev 58 20.02.23 18:25 Сейчас в теме
(33) так я про это и написал в самом начале. Не?
"Нового реквизита естественно нет в реквизитах вообще ни в объекте, ни в какой-либо ТЧ объекта"
ЕСТЕСТЕННО НЕ ПРИЧЕМ!!! И про это сразу написал.Ввы мне про это зачем сейчас написали?
35. ybatiaev 58 20.02.23 18:27 Сейчас в теме
(33)
(33) Если знаете как сделать - вышлите пример. Буду признателен. Если не знаете - то НЕ мусорите в чат
36. пользователь 20.02.23 18:34
Сообщение было скрыто модератором.
...
43. ybatiaev 58 20.02.23 19:21 Сейчас в теме
(37)
(25) Удалил весь код и заново его написал. Заработало.
На всякий случай выкладываю рабочий вариант. Может кому пригодиться
	НовРеквизит = Новый Массив;
	НовРеквизит.Добавить(Новый РеквизитФормы("СчУчетаОС", Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"), "Объект.ОС", "Счет учета ОС", Ложь));
	ИзменитьРеквизиты(НовРеквизит);

	НовЭлемент = Элементы.Вставить("СчУчетаОС", Тип("ПолеФормы"), Элементы.ОС, Элементы.ОСНаличиеПоДаннымУчета); 
	НовЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
	НовЭлемент.ПутьКДанным = "Объект.ОС.СчУчетаОС"; 
prosto_username; GIZmo; unknown181538; +3 Ответить
47. unknown181538 152 07.08.23 06:35 Сейчас в теме
(43) Спасибо! Пригодилось)
ybatiaev; +1 Ответить
44. SlavaKron 20.02.23 19:22 Сейчас в теме
Путь к данным - это не только свойство элемента формы, это сквозной механизм в идеологии 1С, применяемый не только в формах.
45. пользователь 20.02.23 19:24
Сообщение было скрыто модератором.
...
46. SlavaKron 20.02.23 19:27 Сейчас в теме
(45) Сужу по себе - лично мне помогала фраза из СП и для себя мнемонически запомнил так, что "Путь" реквизита формы – это его полный путь к данным без собственного имени.
49. Xershi 1483 22.03.24 15:06 Сейчас в теме
//Создание реквизитов
ДобавляемыеРеквизиты = Новый Массив; //Определяем массив добавляемых реквизитов
		
НовыйРеквизит = Новый РеквизитФормы("НеОбновлятьЦвет", Новый ОписаниеТипов("Булево"), "Объект.Товары");
	
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);

ИзменитьРеквизиты(ДобавляемыеРеквизиты); //Применяем реквизиты

А вообще сейчас регулярно пользуюсь [Шпаргалка] Программное создание элементов формы.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот