Как программно обращаться к дополнительным реквизитам и сведениям
Прежде всего с праздником форумчане. Помогите разобраться, а то уже голову сломал.
В редакции 2.0 был такой регистр, как "ЗначенияСвойствОбъектов", и через него я вытаскивал нужные мне доп. сведения. В редакции 3.0 все поменялось.
Сначала я создал доп. реквизит "КПП филиала" для справочника "ДоговорыКонтрагентов". Пытался к нему обратиться через :
Договор - это ссылка на договор.
КПП - это "КПП%"
Ничего не вытягивает.
Тогда решил попробовать через доп. сведения, создал доп сведение с таким же названием и попытался вытащить значение так:
Но тоже без толку.
Кто-нибудь может помочь мне разобраться, как работать с доп реквизитами и сведениями?
В редакции 2.0 был такой регистр, как "ЗначенияСвойствОбъектов", и через него я вытаскивал нужные мне доп. сведения. В редакции 3.0 все поменялось.
Сначала я создал доп. реквизит "КПП филиала" для справочника "ДоговорыКонтрагентов". Пытался к нему обратиться через :
"ВЫБРАТЬ
| ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка КАК Ссылка,
| ДоговорыКонтрагентовДополнительныеРеквизиты.Значение,
| ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство.Наименование КАК Свойство
|ИЗ
| Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
|ГДЕ
| ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство.Наименование ПОДОБНО &КПП
| И ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка = &Договор";
Результат = Запрос.Выполнить().Выбрать();
ПоказатьДоговор - это ссылка на договор.
КПП - это "КПП%"
Ничего не вытягивает.
Тогда решил попробовать через доп. сведения, создал доп сведение с таким же названием и попытался вытащить значение так:
Запрос.Текст = "ВЫБРАТЬ
| ДополнительныеСведения.Свойство.Ссылка,
| ДополнительныеСведения.Свойство.Наименование КАК Наименование,
| ДополнительныеСведения.Значение КАК Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Договор
| И ДополнительныеСведения.Свойство.Наименование ПОДОБНО &Наименование";
ПоказатьНо тоже без толку.
Кто-нибудь может помочь мне разобраться, как работать с доп реквизитами и сведениями?
По теме из базы знаний
- Загрузка номенклатуры в УТ11, КА 2, ERP 2, Розница 2 из Excel. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки
- Видеокурс-самоучитель "1С:Документооборот 2.1 и 3.0" для самостоятельного внедрения
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- 1С СППР, как инструмент по внедрению, разработке и сопровождению информационных систем
- Как автоматизировать учет по проектам в 1С:Бухгалтерии
Найденные решения
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДопСвойство");
Значение=СсылкаНаОбъект.ДополнительныеРеквизиты.Найти(ДопСвойство);
bogdan_king; Mechanik21; MaQo; user712426; nysysimara; Max0n57; AirPlayDed1C; 3gf; user1681949; wwwshka; Android1234; Bob_Sid; lostcay; EvgeniyOlxovskiy; wolder; ResAndDev; GonziK_KIV; DimonPT; user1273391; Konyaz; Programmer-1C; _Vovik; Xomka; ybatiaev; Serg243; user892609; criptid; user1471177; Olga_Mil; avert; Михаська; user1225706; Barok; user1296291; Gendelf; jobkostya1c_ERP; Геннадьевич; terran_1C; graforlow; insurgut; lenastep; D_e_X_T_e_R;
+42
–
Ответить
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Доброго времени. Никак не могу вытащить на печать реквизит формы.
Добавил дополнительный реквизит в справочник договоры контрагентов под названием КПП Филиала.
Если делаю через консоль запроса, то все видит. А если делаю в коде внешней печатной формы СФ ничего не видит.
ВПФ идентична типовой, единственно только хочу выводить КПП покупателя из этого реквизита.
Поэтому добавил сначала функцию:
Затем в функции Функция ПодготовитьДанныеШапкиСчетаФактуры1137(ВыборкаСФ, Реквизиты, ПлатежноРасчетныеДокументы, ДополнитьДаннымиУПД)
добавил код
И пустое значение, чего уже только не перепробовал, но никак не тянет.
Смотрел отладчиком И ВыборкаСФ.ДоговорКонтрагента и Реквизиты.ДокументОснование.ДоговорКонтрагента тип ссылка.
Но если сделать скажем Сообщить(Тип(ДоговорКонтр)); то в обоих случаях выдает ошибку, что тип не определен.
Помогите разобраться, а то у меня уже идеи кончаются.
Добавил дополнительный реквизит в справочник договоры контрагентов под названием КПП Филиала.
Если делаю через консоль запроса, то все видит. А если делаю в коде внешней печатной формы СФ ничего не видит.
ВПФ идентична типовой, единственно только хочу выводить КПП покупателя из этого реквизита.
Поэтому добавил сначала функцию:
Функция ПолучитьДопСвойствоРеквизита(Договор) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДоговорыКонтрагентовДополнительныеРеквизиты.Значение КАК Значение
|ИЗ
| Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
|ГДЕ
| ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство
| И ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка",Договор); Запрос.УстановитьПараметр("Свойство","КПП филиала");
Результат = Запрос.Выполнить().Выбрать();
Возврат Результат.Значение;
КонецФункции
ПоказатьЗатем в функции Функция ПодготовитьДанныеШапкиСчетаФактуры1137(ВыборкаСФ, Реквизиты, ПлатежноРасчетныеДокументы, ДополнитьДаннымиУПД)
добавил код
ДоговорКонтр = ВыборкаСФ.ДоговорКонтрагента;
//ДоговорКонтр = Реквизиты.ДокументОснование.ДоговорКонтрагента;
КПППокупателя = ПолучитьДопСвойствоРеквизита(ДоговорКонтр);
ДанныеШапки.Вставить("КППпокупателя", КПППокупателя);
И пустое значение, чего уже только не перепробовал, но никак не тянет.
Смотрел отладчиком И ВыборкаСФ.ДоговорКонтрагента и Реквизиты.ДокументОснование.ДоговорКонтрагента тип ссылка.
Но если сделать скажем Сообщить(Тип(ДоговорКонтр)); то в обоих случаях выдает ошибку, что тип не определен.
Помогите разобраться, а то у меня уже идеи кончаются.
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДопСвойство");
Значение=СсылкаНаОбъект.ДополнительныеРеквизиты.Найти(ДопСвойство);
bogdan_king; Mechanik21; MaQo; user712426; nysysimara; Max0n57; AirPlayDed1C; 3gf; user1681949; wwwshka; Android1234; Bob_Sid; lostcay; EvgeniyOlxovskiy; wolder; ResAndDev; GonziK_KIV; DimonPT; user1273391; Konyaz; Programmer-1C; _Vovik; Xomka; ybatiaev; Serg243; user892609; criptid; user1471177; Olga_Mil; avert; Михаська; user1225706; Barok; user1296291; Gendelf; jobkostya1c_ERP; Геннадьевич; terran_1C; graforlow; insurgut; lenastep; D_e_X_T_e_R;
+42
–
Ответить
(4)
Блин, я уже пару дней голову ломаю, а решение в две строчки.)))
Спасибо огромное!!!
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДопСвойство");
Значение=СсылкаНаОбъект.ДополнительныеРеквизиты.Найти(ДопСвойство);
Значение=СсылкаНаОбъект.ДополнительныеРеквизиты.Найти(ДопСвойство);
Блин, я уже пару дней голову ломаю, а решение в две строчки.)))
Спасибо огромное!!!
Лучше использовать
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", ИмяРеквизитаСвойства);
В комментариях сказано "Требуется для программного обращения к дополнительным реквизитам и сведениям. Аналог имени обычного реквизита."
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", ИмяРеквизитаСвойства);
В комментариях сказано "Требуется для программного обращения к дополнительным реквизитам и сведениям. Аналог имени обычного реквизита."
Зачем изобретать велосипед в конфигурациях построенных на БСП?
ЗначениеМоегоРеквизита = УправлениеСвойствами.ЗначениеСвойства(ДокОбъект, "МойРеквизит");
ЗначениеМоегоРеквизита = УправлениеСвойствами.ЗначениеСвойства(ДокОбъект, "МойРеквизит");
Общий модуль УправлениеСвойствами
// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
// Объект - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
// ДокументСсылка.ЗаказПокупателя, ...
// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
// дополнительный реквизит, значение которого нужно получить.
// - Строка - Имя дополнительного свойства.
//
// Возвращаемое значение:
// Произвольный - любое значение, допустимое для свойства.
//
Функция ЗначениеСвойства(Объект, Свойство) Экспорт
ПолучатьРеквизиты = УправлениеСвойствамиСлужебный.ЭтоОбъектМетаданныхСДополнительнымиРеквизитами(Объект.Метаданные());
Результат = ЗначенияСвойств(Объект, ПолучатьРеквизиты, Истина, Свойство);
Если Результат.Количество() = 1 Тогда
Возврат Результат[0].Значение;
КонецЕсли;
КонецФункции
Показать
Mikolka; Timur1958; KeyMaster; mrChOP93; BaluevMV; serge-yefimov; Oskolsky; user712426; user2066497; inf012; Mishnov; A1nur1ch; lenastep; Farhat95; Dimok2010; Xershi; basil_m; romulanin; windsurf; vsm-dev; G_111782056622184344775; sabob; user988448; GinGitsune; Santilla; vladimir-89; adamst; RibD; Programmer-1C; user594888_bagrat.otyrba; mlv84; greenfest; sergey_s_; vv2; KolBbl4; user892609; Duren_91; user1206750; hectordempf; DenisMedvedev; Rokky78; it124; johnyb2002; Izumov; Мах; owo; buy_sale; alen-s; Goggy; shapoval; myoker; ReDvAlL; avert; user833363; tani6e4ka; Vladimir-R; Matveev_VS; jk107; rpgshnik; user970646; Gendelf; EvgeniyNP; Den_D; rmIvanT; tsatsur; evktlt; vashkostya; akita; farraf; karagiosis; slige; bogdan_sukonnov; ltfriend; Klinofong; makarovy; Andrekaa; Tangram; HameleonA; kimskiysanya; Dilovar9; acanta; SagittariusA; krylovim; Леонов Александр; Delf; i.c.h; tricolor; terran_1C; ZeroSumGame; rendalina; MAYKOR; independ; baracuda;
+93
–
Ответить
(7) Такая функция находит значение ДопРеквизита
Но на Доп.Свойство выдает Неопределено, что не так?
Как найти значение Доп свойства через БСП?
Существование самого доп.свойства так проверил:
ЗначениеМоегоРеквизита = УправлениеСвойствами.ЗначениеСвойства(ДокОбъект, "МойРеквизит");
Но на Доп.Свойство выдает Неопределено, что не так?
Как найти значение Доп свойства через БСП?
Существование самого доп.свойства так проверил:
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДопСвойство");
спасибо помогло
только вот строчка
не отработала
отработало
только вот строчка
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", ИмяРеквизитаСвойства);
не отработала
отработало
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок", ИмяРеквизитаСвойства);
А вот если мне нужно записать значение в доп.сведение? (см. скрин)
После записи, проверяю в режиме предприятия, Номер реестра пустой в доп.сведениях, что я делаю не так? Подскажите пожалуйста.
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Номер реестра");
Запись = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
Запись.Объект = Док.Ссылка;
Запись.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Номер реестра");
Запись.Прочитать();
Запись.Объект = Док.Ссылка;
Запись.Свойство = Свойство;
Запись.Значение = НомерРеестра;
Запись.Записать(Истина);
ПоказатьПосле записи, проверяю в режиме предприятия, Номер реестра пустой в доп.сведениях, что я делаю не так? Подскажите пожалуйста.
Прикрепленные файлы:

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