как получить дополнительный реквизит документа в обработке УНФ.

1. user1981567 11.11.23 11:07 Сейчас в теме
Как получить дополнительный реквизит документа в обработке, с возможностью его программно менять.
Я создаю доп реквизит с типом булево в документе РасходнаяНакладная. Мне нужно программно изменить этот реквизит.
Например Если я изменяю программно документ Расходная накладная, то ставиться галочка в доп реквизите.
По теме из базы знаний
Найденные решения
9. user1981567 11.11.23 21:49 Сейчас в теме
ДопРеквизитПроверено = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ВыведенИзОборота");
					 СтрокаТЧ = СсылкаНаОбъект.ДополнительныеРеквизиты.Найти(ДопРеквизитПроверено, "Свойство");//Пусть результатом поиска будут "ЕстьСтроки" 
					 Если СтрокаТЧ = Неопределено Тогда
					     СтрокаТЧ = СсылкаНаОбъект.ДополнительныеРеквизиты.Добавить();
					     СтрокаТЧ.Свойство = ДопРеквизитПроверено;
						 СТрокаТЧ.Значение = Истина;
					 Иначе
					     СТрокаТЧ.Значение = Истина;
					 КонецЕсли;
Показать


Сработал этот код.
Спасибо большое за помощь.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 11.11.23 12:00 Сейчас в теме
(1)
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокОбъект.Ссылка, ТаблицаДопРеквизитов);
3. Vinzor 110 11.11.23 12:03 Сейчас в теме
(1) Речь о механизме допреквизитов?
Это табличная часть объекта.
Читайте её (запросом), параметры - ссылка на объект и идентификатор допреквизита, выгружайте (получаете таблицу значений).
Результат запроса пустой - нет строки с допреквизитом.
Не пустой - есть.
Получайте объект (документ), и далее работайте с этой табличной частью документа.
4. user1981567 11.11.23 12:53 Сейчас в теме
(3)
личная часть объекта

Прочитал ТЧ ДопРеквизиты документа, в запросе выводит только одну запись, где я в режиме предприятия поставил значение доп реквизита истина.
Мне же еще нужно получить доп реквизит , где значение я не указывал, то есть, значение доп реквизита = ложь.
Использовал этот запрос:
ВЫБРАТЬ
	РасходнаяНакладнаяДополнительныеРеквизиты.Ссылка КАК Ссылка,
	РасходнаяНакладнаяДополнительныеРеквизиты.Свойство КАК Свойство,
	РасходнаяНакладнаяДополнительныеРеквизиты.Значение КАК Значение
	ИЗ
	Документ.РасходнаяНакладная.ДополнительныеРеквизиты КАК РасходнаяНакладнаяДополнительныеРеквизиты


Пожалуйста подробнее подскажите что мне делать. Заранее спасибо
5. user1981567 11.11.23 13:07 Сейчас в теме
(3)Далее использвал этот запрос :
ВЫБРАТЬ
	РасходнаяНакладнаяДополнительныеРеквизиты.Ссылка КАК Ссылка,
	РасходнаяНакладнаяДополнительныеРеквизиты.Свойство КАК Свойство,
	РасходнаяНакладнаяДополнительныеРеквизиты.Значение КАК Значение,
	РасходнаяНакладная.Ссылка КАК Ссылка1
ИЗ
	Документ.РасходнаяНакладная КАК РасходнаяНакладная
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.ДополнительныеРеквизиты КАК РасходнаяНакладнаяДополнительныеРеквизиты
		ПО (РасходнаяНакладнаяДополнительныеРеквизиты.Ссылка = РасходнаяНакладная.Ссылка)
ГДЕ
	РасходнаяНакладная.Ссылка = &Ссылка
	И РасходнаяНакладнаяДополнительныеРеквизиты.Свойство = &Свойство
Показать

Но он либо возвращает пустое значение, либо то в котором Допрек = Истина, а мне же нужно получить документы где доп рек = Ложь, чтобы программно менять на истина
6. Vinzor 110 11.11.23 13:31 Сейчас в теме
4.
Внестите в допреквизит значение вручную (раз булево, вид допника должен быть "галочка").
Прочитайте его запросом в консоли.
Потом вручную галочку снимите.
Прочитайте его запросом в консоли.

Если ничего в 1С не поменялось, то в данном случае запрос будет "пустой".
Типовой механизм, если допреквизит ставят в значение "ложь", вообще стирает данную строку из табличной части.

По крайней мере, в ЗУПе так. Если у вас также, тогда ориентируйтесь именно на это.
Результат запроса будет возвращать "Пустой" или "Истина"
вы действуйте программно аналогично.

Да, и запрос слишком громоздкий.
Вот проще.

ВЫБРАТЬ
	ВашДокументДополнительныеРеквизиты.Значение КАК Значение
ИЗ
	Документ.ВашДокумент.ДополнительныеРеквизиты КАК ВашДокументДополнительныеРеквизиты
ГДЕ
	ВашДокументДополнительныеРеквизиты.Ссылка = &СсылкаНаДокумент
	И ВашДокументДополнительныеРеквизиты.Свойство = &Свойство
7. Vinzor 110 11.11.23 13:40 Сейчас в теме
И еще. Почему вы не попробуете программный интерфейс?
Я только в ЗУП имею доступ и сужу по нему, но разве у вас нет общего модуля "УправлениеСвойствами" ?
Наверняка у вас тоже есть методы:
- ДобавитьСвойство()
- ДобавитьЗначениеСвойства()
- ПараметрыДобавленияСвойства()
- ПараметрыДобавленияЗначенияСвойства()
- ЗначениеСвойства()
- ЗаписатьСвойстваУОбъекта() и так далее. Все методы этого модуля работают с допреквизитами и допсвойствами.
olezhe; user1981567; +2 Ответить
8. user1981567 11.11.23 19:48 Сейчас в теме
(7)
ЗначениеСвойств


Сделал так
ДопРеквизитПроверено = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ВыведенИзОборота", Истина);
					 ЕстьСтроки = СсылкаНаОбъект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопРеквизитПроверено));//Пусть результатом поиска будут "ЕстьСтроки" 
					 Если ЕстьСтроки.Количество() = 0 Тогда
					     СтрокаТЧ = СсылкаНаОбъект.ДополнительныеРеквизиты.Добавить();
					     СтрокаТЧ.Свойство = ДопРеквизитПроверено;
					 Иначе
					     СтрокаТЧ = ЕстьСтроки[0];
					 КонецЕсли;
					 СТрокаТЧ.Значение = Истина;
Показать



Он Добавляет новый доп реквизит. Как добавить свой?
9. user1981567 11.11.23 21:49 Сейчас в теме
ДопРеквизитПроверено = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ВыведенИзОборота");
					 СтрокаТЧ = СсылкаНаОбъект.ДополнительныеРеквизиты.Найти(ДопРеквизитПроверено, "Свойство");//Пусть результатом поиска будут "ЕстьСтроки" 
					 Если СтрокаТЧ = Неопределено Тогда
					     СтрокаТЧ = СсылкаНаОбъект.ДополнительныеРеквизиты.Добавить();
					     СтрокаТЧ.Свойство = ДопРеквизитПроверено;
						 СТрокаТЧ.Значение = Истина;
					 Иначе
					     СТрокаТЧ.Значение = Истина;
					 КонецЕсли;
Показать


Сработал этот код.
Спасибо большое за помощь.
Оставьте свое сообщение

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