Помогите обратиться к полю

1. user2070470 08.05.24 13:13 Сейчас в теме
1С БП Корп. Внешняя обработка выводит значения по столбцу в эксель. Возможно ли получить в ней значение поля Инициатор1 (см.картинку), созданного в Документе РеализацияТоваровУслуг в ФормаПодписиТовары?
Реквизит подтягивается из СправочникСсылка.ФизическиеЛица
Пишу на форме вот так:
НовСтр.Инициатор1 = Реализация.Инициатор1; 

При запуске обработки пишет, что поле не обнаружено.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
21. scarl1n 16.05.24 07:08 Сейчас в теме
(20)Да, вы создали реквизит прямо в объекте, а не на форме, но он на форме недоступен не из-за этого. Чтобы на расширяемую форму добавить реквизит объекта, необходимо добавить сам объект в расширение (т.е объект формы. Нужно добавить форму в расширение, открыть ее, найти на закладке "Реквизиты" строку "Объект" (может по другому называться, это реквизит с галкой "Основной реквизит", он выделяется жирным). Да, такое действие надо проделать, даже если вы хотите вынести на форму реквизит, добавленный в расширении.
Прикрепленные файлы:
user2070470; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. ActionBlog 08.05.24 13:35 Сейчас в теме
(1)А в форму Инициатор1 откуда тянется?
6. Vitaly1C8 08.05.24 14:06 Сейчас в теме
(1) Потому что нужно убедиться что это реквизит ! Зайди в конфигуратор, клик на объект, реквизиты
Если в списке нет Инициатор1 ... означает что это Дополнительные реквизиты и доступ к ним так просто не получишь )
8. user2070470 08.05.24 14:21 Сейчас в теме
(6) Вот это?
Прикрепленные файлы:
9. Vitaly1C8 08.05.24 14:39 Сейчас в теме
(8) В конфигураторе найти Документы - РеализацияТоваров - Реквизиты
Посмотреть есть ли там Инициатор1
Если нет посмотреть есть ли табличная часть ДополнительныеРеквизиты
Если есть посмотреть какие реквизиты у этой табличной части
Обращаться далее в своей обработке к этой ТабЧасти типа:
Док = Реализация.ПолучитьОбъект();
тчДопРеквизиты =  Док.ДополнительныеРквизиты;
Для каждого Стр из тчДопРеквизиты Цикл
   Наименование = Стр.Наименование;   // "Инициатор1"
   Значение = Стр.Значение;
КонецЦикла;
user2070470; +1 Ответить
12. user2070470 08.05.24 15:38 Сейчас в теме
(9) Большое спасибо за подробный ответ.
В моём случае, в вкладке Данные Документа РеализацияТоваровУслуг нет Инициатор1 в Реквизитах и в Табличной части нет ДополнительныеРеквизиты. Значит ли это, что Инициатора невозможно внести без использования расширения?
2. Vlan 36 08.05.24 13:29 Сейчас в теме
Скорее всего, обращение идет к реквизиту формы, а не объекта.
user2070470; +1 Ответить
4. user2070470 08.05.24 13:39 Сейчас в теме
(2) Я сделал по аналогии обращения к полю Руководитель, там прокатывает
При:
НовСтр.Инициатор1 = Объект.Реализация.Инициатор1

Так тоже Поле объекта не обнаружено (Реализация)
5. user2070470 08.05.24 13:40 Сейчас в теме
(3) Реквизит подтягивается из СправочникСсылка.ФизическиеЛица
ФИО вносит пользователь из выпадающего списка.
11. ActionBlog 08.05.24 15:31 Сейчас в теме
(5)В документе "РеализацияТоваровУслуг" есть форма "ФормаДокументаОбщая", в этой форме есть процедура "ДекорацияПодписиНажатие", в этой процедуре заполняется структура "ПараметрыФормы"
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
....

Вот там должно быть что-то типа такого
ПараметрыФормы.Вставить("Инициатор1", ..........);

Что там написано?
user2070470; +1 Ответить
13. user2070470 08.05.24 15:57 Сейчас в теме
(11) Там было пусто,
я прописал в ФормаДокументаОбщая
&НаКлиенте
Процедура ДекорацияПодписиНажатие(Элемент)
ПараметрыФормы.Вставить("Инициатор1",	Объект.Инициатор1);
...

но пока безрезультатно.
7. user2070470 08.05.24 14:10 Сейчас в теме
(2) При:
НовСтр.Инициатор1 = Реализация.Объект.Инициатор1; 

Поле объекта не обнаружено (Объект)
10. Vlan 36 08.05.24 14:41 Сейчас в теме
(7) Не нужно гадать, нужно знать. Нет у объекта такого реквизита. Он существует, только когда есть форма.
В модуле формы документа ищите, как заполняется Инициатор, и переносите в свою обработку.
user2070470; user1671936; +2 Ответить
14. ActionBlog 08.05.24 16:06 Сейчас в теме
(13) Вы просто на форму подписантов добавили реквизит и хотите из него какие-то данные считывать? Так не получится. Вам надо добавить реквизит документа "Инициатор1" и тогда эти данные будут храниться в базе данных и вы сможете к ним обращаться хоть через точку, хоть запросами. реквизит формы существует только пока инициализирована форма, как только форма закроется, то что Вы ввели в поле "Инициатор 1" исчезнет.
user2070470; +1 Ответить
15. user2070470 08.05.24 17:14 Сейчас в теме
(14) Спасибо
Возможно добавить данный реквизит в базу данных?
Достаточно того, что я прописал в ФормаДокументаОбщая как Объект.Инициатор1?
Так же обращаюсь во внешней обработке:
НовСтр.Инициатор1 = Объект.Инициатор1;

При этом при открытии через внешнюю обработку пишет, что Поле объекта не обнаружено (Инициатор1)
16. user2070470 15.05.24 15:38 Сейчас в теме
Опишу все действия, которые я сделал при попытке внести новый реквизит на форму в 1С БП Корп.:

1. В конфигураторе, в доработке в Документе РеализацияТоваровУслуг в ФормаПодписиТовары создал реквизит Инициатор1 с типом данных: СправочникСсылка.ФизическиеЛица (данный справочник также добавлен в расширение, т.к. из него подтягиваются данные)
2. В конфигураторе, в доработке на форме ФормаПодписиТовары создал объект Инициатор1, перенес его на форму (при этом не поле формы Реквизит почему-то не отображалась надпись Объект)
3. В конфигураторе, в доработке в Документы - РеализацияТоваровУслуг - добавил Инициатор1 в Реквизиты (а также в ТЧ Товары)
(- Запустил промежуточную отладку - не активна кнопка ОК в вплывающем окне Подписи.)
4. В конфигураторе, в доработке на форме ПКМ Инициатор1 через Свойства создал:
&НаКлиенте
Процедура ДК1_Инициатор1НачалоВыбораПосле(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
//вписал код Vitaly1C8
		Док = РеализацияТоваровУслуг.ПолучитьОбъект();
	тчДопРеквизиты =  Док.ДополнительныеРеквизиты;
	Для каждого Стр из тчДопРеквизиты Цикл
   		Наименование = Стр.Наименование;   // "Инициатор1"
   		Значение = Стр.Значение; 
   	КонецЦикла;
КонецПроцедуры
Показать


На что при сохранении пишет:
{ДоработкаКорп Документ.РеализацияТоваровУслуг.Форма.ФормаПодписиТовары.Форма(14,9)}: Переменная не определена (РеализацияТоваровУслуг)

Я думаю, это связано с тем, что реквизит не прописался как Объект. Опытные наставники, подскажите пожалуйста, как это можно подправить?
Прикрепленные файлы:
17. scarl1n 15.05.24 15:51 Сейчас в теме
(16)Что за "РеализацияТоваровУслуг"? Скорее всего, тут нужно писать "Объект". Также "ПолучитьОбъект()" не требуется в данной ситуации, да и на клиенте он недоступен. Еще реквизит "Инициатор1" находится в табличной части "Товары", значит и обходить нужно эту табличную часть:
Для Каждого СтрокаТовар Из Объект.Товары Цикл
	Инициатор1 = СтрокаТовар.Инициатор1;
	//...
КонецЦикла;

Не забывать, что из "Инициатор1" реквизиты достать на клиенте не получится.
user2070470; +1 Ответить
18. user2070470 15.05.24 16:49 Сейчас в теме
(17) Спасибо за подсказку.
На Объект тоже ругается.
Да и тут вроде всё проще, не надо никакого цикла, ведь ФИО вносятся вручную из СправочникСсылка.ФизическиеЛица. Получается и никакого кода в модуле формы не надо, правильно?
Почему же тогда при внесении в пользовательском режиме данные не сохраняются и не активна кнопка ОК в вплывающем окне Подписи?
19. scarl1n 15.05.24 18:07 Сейчас в теме
(18)Раз это реквизит табличной части "Товары", то почему он должен редактироваться в окне "Подписи"?
user2070470; +1 Ответить
20. user1837694 15.05.24 22:37 Сейчас в теме
(19) Цель такая - через расширение в документе РеализацияТоваровУслуг внести дополнительный реквизит Инициатор1 в поле Подписи, который заносится из выпадающего списка вручную.

Возможно, весь этот код на модуле формы и не нужен, просто я понимаю что данные должны выбираться из СправочникСсылка.ФизическиеЛица, а вот где они сохранятся, у меня вопрос. Отсюда и возникла ТабличнаяЧасть.

Проблема в том, что я добавил в расширении реквизит прям в дереве конфигурации и на форме. Поэтому у меня на поле формы Реквизит Объект не присутствует. Возможность создания реквизита в самом документе на закладке Данные в расширении недоступна. Вкладка Данные доступна только в Конфигурации, а я делаю на расширении. Как быть? У меня мало понимания, как это работает.
21. scarl1n 16.05.24 07:08 Сейчас в теме
(20)Да, вы создали реквизит прямо в объекте, а не на форме, но он на форме недоступен не из-за этого. Чтобы на расширяемую форму добавить реквизит объекта, необходимо добавить сам объект в расширение (т.е объект формы. Нужно добавить форму в расширение, открыть ее, найти на закладке "Реквизиты" строку "Объект" (может по другому называться, это реквизит с галкой "Основной реквизит", он выделяется жирным). Да, такое действие надо проделать, даже если вы хотите вынести на форму реквизит, добавленный в расширении.
Прикрепленные файлы:
user2070470; +1 Ответить
22. user2070470 16.05.24 15:07 Сейчас в теме
(21) Большое спасибо за мурзилку.
Вот где оказывается собака зарыта!
Итак, (1) я перенёс в расширение СправочникФизическиеЛица и Документ РеализацияТоваровУслуг, (2) в нём насоздавал реквизитов, в т.ч. и в табличной части Услуги, табличной части Товары.
(3) Далее, в расширении в поле реквизитов ФормыПодписиТовары документа РеализацияТоваровУслуг нажимаю (Alt+Shift+F2) Добавить в расширение.
Но чуда не происходит, поле реквизит из расширения не подхватывается.
(Аналогично я пробовал подхватить реквизиты из справочника, а не из документа - тоже не видит)
Прикрепленные файлы:
23. user2070470 17.05.24 09:11 Сейчас в теме
Ну я как бы сделал всё по инструкции:

1 добавил новый реквизит в расширение:
- Добавил в расширение документ РеализацияТоваровУслуг и справочник ФизическиеЛица
- в Документе РеализацияТоваровУслуг в ФормаПодписиТовары создал реквизит Инициатор1 с типом данных: СправочникСсылка.ФизическиеЛица
2 добавил объект в расширение:
- в дереве конфигурации доработки создавал реквизиты (в т.ч. и в табличной части Услуги, табличной части Товары)
- через Alt+Shift+F2 Добавить в расширение добавил (строка Инициатор 1 стала чёрной).
3 вывел новый реквизит на форму:
- перетащил мышкой объект на форму, запустил отладку


но в режиме пользователя (см. картинку) поле Инициатор 1 заполняется, но не сохраняется.
Я не понимаю, где ошибка.
Возможно, необходимо создать отдельный справочник для поля Инициатор, но тогда он будет просто дублировать справочник ФизическиеЛица. Зачем множить сущности без необходимости.
Возможно, нужно как-то вызвать запись после или перед основным выполнением команды, либо как-то в событии это сделать.
Прикрепленные файлы:
24. scarl1n 17.05.24 09:49 Сейчас в теме
(23)Покажите скриншот этой формы в конфигураторе. Реквизит "Инициатор1" добавили в объект в расширении?
25. user2070470 17.05.24 10:57 Сейчас в теме
(24)
Реквизит "Инициатор1" добавили в объект в расширении?

В дереве конфигурации в расширении РеализацияТоваровУслуг создавал реквизиты, на всякий случай создал те же реквизиты и в табличной части Услуги и табличной части Товары.
Последовательность переноса отметил цифрами на картинке.
Прикрепленные файлы:
Оставьте свое сообщение

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