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