|
Дополнительные реквизиты справочника. Программное создание | ☑ | ||
---|---|---|---|---|
0
Luganchanin
07.10.16
✎
15:30
|
Помогите разобраться.
Стоит задача программно создать и заполнить дополнительный реквизит справочника. Делаю так: Процедура ТестДопСвойст() //Отладочные значения МойАртикул = "МЕ085797"; МойПоставщик = "БУ003041"; МойПоставщикНазвание = "ROVERSE"; МойПоставщикСсыль = Справочники.Контрагенты.НайтиПоНаименованию(МойПоставщикНазвание); НоменклатураСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",МойАртикул); МОбъект = НоменклатураСсылка.ПолучитьОбъект(); //МОбъект.ДополнительныеРеквизиты.Очистить(); // Сперва можно подчистить все доп. реквизиты. ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Основной поставщик"); ТекЗначение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(МойПоставщикСсыль); Если Не ЗначениеЗаполнено(ТекСвойство) Тогда Сообщить("Не удалось найти свойство: Основной поставщик"); Возврат КонецЕсли; Если Не ЗначениеЗаполнено(ТекЗначение) Тогда НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); НовоеЗначение.Владелец = ТекСвойство; НовоеЗначение.Наименование = МойПоставщикСсыль; НовоеЗначение.Записать(); ТекЗначение = НовоеЗначение.Ссылка; КонецЕсли; МассивСтрок = МОбъект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ТекСвойство)); Если МассивСтрок.Количество() = 0 Тогда ДопРеквизит = МОбъект.ДополнительныеРеквизиты.Добавить(); Иначе ДопРеквизит = МассивСтрок[0]; КонецЕсли; ДопРеквизит.Свойство = ТекСвойство; ДопРеквизит.Значение = ТекЗначение; МОбъект.Записать(); КонецПроцедуры Все хорошо создается, но на форме ни видно значение заполненного реквизита Пишут что вроде бы 1с еще использует для хранения этих данных регистр. уже пересмотрел все - не нахожу PS. Платформа: 1С:Предприятие 8.3 (8.3.7.1845) Конфигурация: Управление торговлей, редакция 11.2 (11.2.2.119) (http://v8.1c.ru/trade/) |
|||
1
DrShad
07.10.16
✎
15:33
|
никаких регистров давным давно нет
|
|||
2
DrShad
07.10.16
✎
15:36
|
и вообще весь код адский мегапизнец
|
|||
3
Luganchanin
07.10.16
✎
15:53
|
(2) не судите строго, подскажите более красивый и правильный вариант решения
|
|||
4
alexey123perm
07.10.16
✎
15:53
|
Код для Бух 3.0. Создает договор с доп. реквизитом "Ставка НДС"
Функция СоздатьДоговор(Контрагент, ВидДоговора, СтавкаНДС = Неопределено) НовыйЭлемент = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); НовыйЭлемент.Наименование = "Основной договор"; НовыйЭлемент.Организация = Организация; НовыйЭлемент.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета; НовыйЭлемент.ВидДоговора = ВидДоговора; НовыйЭлемент.Владелец = Контрагент; Попытка НовыйЭлемент.Записать(); //Заполним свойство Если ВидДоговора =Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком Тогда НовыйРеквизит = НовыйЭлемент.ДополнительныеРеквизиты.Добавить(); НовыйРеквизит.Свойство = "Ставка НДС"; НовыйРеквизит.ТекстоваяСтрока = "Ставка НДС"; НовыйРеквизит.Значение = СтавкаНДС; НовыйЭлемент.Записать(); КонецЕсли; Возврат НовыйЭлемент.Ссылка; Исключение //ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось записать элемент справочника ""Договоры контрагентов""!"); КонецПопытки; Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка(); КонецФункции |
|||
5
alexey123perm
07.10.16
✎
15:56
|
Это поиск значения "ставки НДС". Они были заведены в режиме "Предприятие".
Функция ВернутьСтавкуНДСизДопРеквизитов(СтавкаНДС) РеквизитСтавкаНДС = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Ставка НДС"); ТаблицаСвойств = УправлениеСвойствами.ПолучитьСписокЗначенийСвойств(РеквизитСтавкаНДС); НайденноеЗначение = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка(); Для Каждого ЭлементМассива Из ТаблицаСвойств Цикл Если ЭлементМассива.Наименование = СтавкаНДС Тогда НайденноеЗначение = ЭлементМассива; Прервать; КонецЕсли; КонецЦикла; Возврат НайденноеЗначение; КонецФункции |
|||
6
Luganchanin
07.10.16
✎
16:41
|
про код, конечно спасибо.
но по сути я так понял все правильно, почему же в карточке номенклатуры доп реквизит не показывается? |
|||
7
newbling
07.10.16
✎
16:58
|
А ты уверен, что у тебя доп реквизит, а ни доп сведение создаётся?
|
|||
8
newbling
07.10.16
✎
16:59
|
В форме отображается доп реквизит, доп сведение имеет отдельную форму по вот такой вот кнопочке
http://prntscr.com/cqyq6p |
|||
9
Luganchanin
10.10.16
✎
15:46
|
(7) для справочника номенклатуры я создал именно доп реквизит, а не доп сведение
(8) ссылка не открывается :-( |
|||
10
Luganchanin
10.10.16
✎
15:47
|
да и запрос показывает эти реквизиты:
ВЫБРАТЬ НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка, НоменклатураДополнительныеРеквизиты.НомерСтроки КАК НомерСтроки, НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство, НоменклатураДополнительныеРеквизиты.Значение КАК Значение, НоменклатураДополнительныеРеквизиты.ТекстоваяСтрока КАК ТекстоваяСтрока ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ГДЕ НоменклатураДополнительныеРеквизиты.Свойство.Заголовок = "Основной поставщик" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |