Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 00:32

Как добавить созданный реквизит во внешнюю обработку?

Автор vienya, 08 мая 2024, 18:14

0 Пользователей и 1 гость просматривают эту тему.

vienya

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

Т.К во вкладке Данные Документа РеализацияТоваровУслуг нет Инициатор1 в Реквизитах и в Табличной части нет ДополнительныеРеквизиты, то соответственно прописал в документе РеализацияТоваровУслуг в ФормаДокументаОбщая в процедуре ДекорацияПодписиНажатие
ПараметрыФормы.Вставить("Инициатор1",    Объект.Инициатор1);
...
При этом при открытии через внешнюю обработку пишет, что Поле объекта не обнаружено (Инициатор1), т.е., как я понимаю, в базу данных реквизит не попал.

Как сделать так, чтобы внесенные пользователем данные попадали в результат внешней обработки?


 

Максим75

vienya, пока только какой-то поток сознания.
итак: у Вас есть некая форма внешней обработки.
в документе есть некий реквизит Инициатор1? или это не реквизит документа, а всего лишь в форме этого документа добавили что-то, что никак не связано с реквизитом документа, и это что-то естественно в базе не хранится?
так что Вы хотите в форме внешней обработки получить? эта внешняя обработка каким-то образом к документу обращается?

vienya

Максим75,
Цитата: Максим75 от 08 мая 2024, 19:47vienya, пока только какой-то поток сознания.
итак: у Вас есть некая форма внешней обработки.
в документе есть некий реквизит Инициатор1? или это не реквизит документа, а всего лишь в форме этого документа добавили что-то, что никак не связано с реквизитом документа, и это что-то естественно в базе не хранится?
так что Вы хотите в форме внешней обработки получить? эта внешняя обработка каким-то образом к документу обращается?
Простите за поток сознания.
Опишу все действия, которые я сделал при попытке в форме внешней обработки документа обратиться к справочнику:

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

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

Я думаю, это связано с тем, что реквизит не прописался как Объект. Подскажите пожалуйста, как это можно подправить?

Максим75

vienya, смотрите, если Вы создали реквизит в самом документе (на закладке Данные), то уже в реквизите формы его создавать не надо, он будет доступен через Объект (на плюсик возле объекта нажмите и он там будет). А так, если просто создадите реквизит формы, то с самим объектом он связан не будет и в базу не попадет, будет жить только на форме.

или я вообще не так понял?

vienya

Максим75, Да,я действительно добавил в расширении реквизит прям в дереве конфигурации и на форме. Поэтому на поле формы Реквизит Объект не присутствует.  :dfbsdfbsdf:  Но ведь вкладка Данные доступна только в Конфигурации, а я делаю на расширении. Как быть?

У меня мало понимания, как это работает.

Максим75


antoneus

Так 1с-то ругается на то, что переменная РеализацияТоваровУслуг - это неизвестно что, неизвестно откуда взявшееся. Вот тут

&НаКлиенте
Процедура ДК1_Инициатор1НачалоВыбораПосле(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
        Док = РеализацияТоваровУслуг.ПолучитьОбъект();
    тчДопРеквизиты =  Док.ДополнительныеРеквизиты;
    Для каждого Стр из тчДопРеквизиты Цикл
           Наименование = Стр.Наименование;   // "Инициатор1"
           Значение = Стр.Значение;
       КонецЦикла;
КонецПроцедуры

РеализацияТоваровУслуг - это что вообще?

vienya

antoneus, цель такая - через расширение в документе РеализацияТоваровУслуг внести дополнительный реквизит Инициатор1 в поле Подписи, который заносится из выпадающего списка вручную.

Максим75 подсказал, чтобы внесённые данные реквизита Инициатор1 сохранялись, нужно чтобы они были прописаны в Объекте, а не просто на модуле, но как это сделать я не знаю.

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

vienya

Как добавить в объект, если его нет?

fruitella

vienya, заимствовать 1 реквизит в расширение, объект появиться в списке.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск