Как получить реквизит справочника программно 1с

Как программно получить список реквизитов справочника?

Я
   Kashton

13.07.11 — 10:00

Как программно получить список реквизитов справочника? Платформа 8.2

  

Партнерская программа EFSOL Oblako

   Ёпрст

1 — 13.07.11 — 10:01

метаданные

   Kashton

2 — 13.07.11 — 10:12

(1) Пример есть?

   Ненавижу 1С

3 — 13.07.11 — 10:13

(2) СП украли?

   butterbean

4 — 13.07.11 — 10:13

(2) ё…, уже простой цикл нарисовать не могут

   Ненавижу 1С

5 — 13.07.11 — 10:15

Для каждого Реквизит из Метаданные.Справочники.ТвойИдентификатор.Реквизиты Цикл

   СвинТуз

6 — 13.07.11 — 10:16

4 года это уже срок

   Kashton

7 — 13.07.11 — 10:20

(5) спс. а я зачемто после Реквизит кавычки ставлю ))))

   Kashton

8 — 13.07.11 — 10:20

(6) и че?

   Ненавижу 1С

9 — 13.07.11 — 10:20

(7) кавычки или скобки? ))) а посмотреть в СП, что это свойство?

   Kashton

10 — 13.07.11 — 10:21

(9) Вообще гоню. В отпуск пора

   СвинТуз

11 — 13.07.11 — 10:22

нажми наконец Ctrl+F1. Нажми не мучай себя брат.

   Kashton

12 — 13.07.11 — 10:23

(11) ценный совет. я и не знал

  

Gars

13 — 13.07.11 — 11:49

(11) Среда, но пятнично… :-)

TurboConf — расширение возможностей Конфигуратора 1С

&НаСервере
Процедура СозданиеИИзменениеЭлементовИГруппСправочникаНаСервере()
 
    /// Как создать новый элемент справочника в 1с 8.3, 8.2
 
    // создадим новый элемент справочника Города
    // с именем Владивосток
    Владивосток = Справочники.Города.СоздатьЭлемент();
    Владивосток.Наименование = "Владивосток";
    Владивосток.Записать();
 
    /// Как создать новую группу справочника в 1с 8.3, 8.2
 
    // создадим новую группу справочника Города
    ГородаУМоря = Справочники.Города.СоздатьГруппу();
    ГородаУМоря.Наименование = "Города у моря";
    ГородаУМоря.Записать();
 
    /// Как перенести элемент справочника в другую группу в 1с 8.3, 8.2
 
    // перенесём созданный Владивосток в группу "Города у моря"
    Владивосток.Родитель = ГородаУМоря.Ссылка;
    Владивосток.Записать();
 
    /// Как внести изменения в элемент справочника по ссылке 
    /// в 1с 8.3, 8.2
 
    // найдём город Калькутта
    КалькуттаСсылка = Справочники.Города.НайтиПоНаименованию("Калькутта");
    Если Не КалькуттаСсылка.Пустая() Тогда
        // изменим и запишем численность жителей в городе
        Калькутта = КалькуттаСсылка.ПолучитьОбъект();
        Калькутта.Численность = 1000000;
        Калькутта.Записать();
    КонецЕсли;
 
    /// Как получить и проверить пустую ссылку типа справочник в 1с 8.3, 8.2
 
    ПустаяСсылка = Справочники.Города.ПустаяСсылка();
    Если ПустаяСсылка.Пустая() Тогда
        Сообщить("Ссылка действительно пустая.");
    КонецЕсли;
 
    /// Как узнать принадлежность элемента справочника группе
    /// с учетом уровней иерархии в 1с 8.3, 8.2
 
    ПермьСсылка = Справочники.Города.НайтиПоНаименованию("Пермь");
    РоссияСсылка = Справочники.Города.НайтиПоНаименованию("Россия");
 
    // проверим принадлежит ли город Пермь группе Россия
 
    Если ПермьСсылка.ПринадлежитЭлементу(РоссияСсылка) Тогда
        Сообщить("Элемент Пермь находится в группе Россия.");
    КонецЕсли;
 
    /// Как скопировать существующий элемент справочника в 1с 8.3, 8.2
 
    // скопируем элемент Пермь
 
    КопияПерми = ПермьСсылка.Скопировать();
    КопияПерми.Наименование = КопияПерми.Наименование + " КОПИЯ";
    КопияПерми.УстановитьНовыйКод();
    КопияПерми.Записать();
 
    /// Как выяснить уровень вложенности элемента справочника 
    /// в 1с 8.3, 8.2
 
    Сообщить(КопияПерми.Уровень()); // 1
 
    /// Как заблокировать элемент справочника перед изменениями 
    /// в 1с 8.3, 8.2
 
    // выполним блокировку элемента справочника
    // от изменения другими режимами или пользователями
 
    Пермь = ПермьСсылка.ПолучитьОбъект();
    Если Не Пермь.Заблокирован() Тогда
        Пермь.Заблокировать();
        // тут идёт какой-то долгий алгоритм
        // в результате которого мы меняем
        // заблокированный элемент
        Пермь.Численность = 5000;
        Пермь.Записать();
        // и только потом освобождаем его
        // для других режимов и пользователей
        Пермь.Разблокировать();
    КонецЕсли;
 
    /// Как заполнить новый элемент справочника на основании 
    /// в 1с 8.3, 8.2
 
    // в модуле справочника Города я определил процедуру
    // ОбработкаЗаполнения, которая обрабатывает ситуации
    // когда мы заполняем один элемент на основании
    // данных другого (см. в базе для скачивания)
 
    Хабаровск = Справочники.Города.СоздатьЭлемент();
    Хабаровск.Заполнить(
        Справочники.Города.НайтиПоНаименованию("Рио-де-Жанейро")
    );
    Хабаровск.Наименование = "Хабаровск";
    Хабаровск.Записать();
 
    /// Как пометить на удаление элемент справочника в 1с 8.3, 8.2
 
    // пометим на удаление только что созданный Хабаровск
    Хабаровск.УстановитьПометкуУдаления(
        Истина, // пометка удаления
        Ложь // включая подчиненные (если речь о группе справочника)
    );
    // метод Записать вызывать не нужно
 
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьКлиентаПоИмени(Имя)
    Возврат Справочники.Клиенты.НайтиПоНаименованию(Имя);
КонецФункции
 
/// Как открыть форму существующего элемента справочника 
/// по ссылке в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуСуществующегоЭлементаСправочника(Команда)
 
    СсылкаНаЭлемент = ПолучитьКлиентаПоИмени("Андрей");
 
    ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлемент);
 
    ОткрытьФорму(
        "Справочник.Клиенты.ФормаОбъекта", // имя формы
        ПараметрыФормы // параметры для формы
    );
 
КонецПроцедуры
 
/// Как открыть форму существующей группы справочника 
/// по ссылке в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуСуществующейГруппыСправочника(Команда)
 
    СсылкаНаГруппу = ПолучитьКлиентаПоИмени("Vip");
 
    ПараметрыФормы = Новый Структура("Ключ", СсылкаНаГруппу);
 
    ОткрытьФорму(
        "Справочник.Клиенты.ФормаГруппы", // имя формы
        ПараметрыФормы // параметры для формы
    );
 
КонецПроцедуры
 
/// Как открыть форму выбора элемента справочника и
/// отследить её закрытие в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуВыбораЭлементаСправочника(Команда)
 
    ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораЭлемента",
        ЭтотОбъект);
 
    ОткрытьФорму(
        "Справочник.Клиенты.ФормаВыбора",,,,,,ОповещениеОЗакрытии        
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВыбораЭлемента(Результат, Параметры) Экспорт
 
    Если Результат <> Неопределено Тогда
        Сообщить("Был выбран элемент " + Результат);
    КонецЕсли;	
 
КонецПроцедуры
 
/// Как открыть форму выбора группы справочника и
/// отследить её закрытие в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуВыбораГруппыСправочника(Команда)
 
    ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораГруппы",
        ЭтотОбъект);
 
    ОткрытьФорму(
        "Справочник.Клиенты.ФормаВыбораГруппы",,,,,,ОповещениеОЗакрытии        
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВыбораГруппы(Результат, Параметры) Экспорт
 
    Если Результат <> Неопределено Тогда
        Сообщить("Была выбрана группа " + Результат);
    КонецЕсли;	
 
КонецПроцедуры
 
/// Как открыть форму списка справочника и
/// установить отбор по реквизиту в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормаСпискаСправочникаСОтбором(Команда)
 
    // откроем список клиентов, оставив
    // только мужчин
 
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Пол", ПолучитьПеречислениеМужской());
 
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
 
    ОткрытьФорму(
        "Справочник.Клиенты.ФормаСписка",
        ПараметрыФормы
    );
 
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьПеречислениеМужской()
    Возврат Перечисления.Пол.Мужской;
КонецФункции
 
/// Как открыть форму списка справочника с нужным отображением
/// в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуСпискаСправочникаСНужнымОтображением(Команда)
 
    // откроем список клиентов с отображением "Список"
 
    ФормаСписка = ПолучитьФорму("Справочник.Клиенты.ФормаСписка");    
    ФормаСписка.Открыть();
    ФормаСписка.Элементы.Список.Отображение = ОтображениеТаблицы.Список;
 
КонецПроцедуры
 
/// Как открыть форму только что созданного, но ещё
/// не записанного элемента справочника в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуНовогоНеЗаписанногоСправочника(Команда)
 
    // получаем форму нового справочника
    ФормаНовогоСправочника = ПолучитьФорму(
        "Справочник.Еда.ФормаОбъекта",,, Истина); 
 
    // делаем копию её данных (так как напрямую их менять
    // нельзя)
    КопияДанныхФормы = ФормаНовогоСправочника.Объект;
 
    // заполняем эти данные на сервере
    ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы);
 
    // копируем заполненные данные в исходную форму
    КопироватьДанныеФормы(КопияДанныхФормы,
        ФормаНовогоСправочника.Объект);
 
    // показываем форму нового заполненного
    // элемента справочника пользователю
    ФормаНовогоСправочника.Открыть();
 
КонецПроцедуры
 
&НаСервере
Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы)
 
    // преобразуем данные формы в документ
    Еда = ДанныеФормыВЗначение(ДанныеФормы,
        Тип("СправочникОбъект.Еда")); 
 
    Еда.Наименование = "Груша";
    Еда.Калорийность = 500;
 
    // преобразуем документа обратно в данные формы
    ЗначениеВДанныеФормы(Еда, ДанныеФормы);
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Дополнительные реквизиты в 1с 8 представляют из себя специальную табличную часть у некоторых документов и справочников. В ней хранятся дополнительные данные, касающиеся данного объекта метаданных. Данный механизм реализован только в конфигурация работающих на управляемом приложении. По своему назначению дополнительные реквизиты напоминают дополнительные сведения, разница в том, что доп. сведения хранятся в отдельном регистре, это их плюс, но зато доп. реквизиты автоматически выводятся на форму объекта. В этой статье будет рассказано, как получать и записывать дополнительные реквизиты программно.

Получить дополнительные реквизиты программно

Функция получает значение дополнительного реквизита объекта по ссылке и свойству.

  • Ссылка. Тип: Любая ссылка. Ссылка на искомый объект;
  • Свойство. Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Дополнительное свойство.

Код:

Функция ПолучитьЗначениеДопРеквизита(Ссылка, Свойство) Экспорт

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Свойство",Свойство);
    Массив = Ссылка.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);

    Если Массив.Количество() = 0 Тогда
        Возврат Неопределено;
    Иначе
        Возврат Массив[0].Значение;
    КонецЕсли;

КонецФункции

Записать дополнительные реквизиты программно

Функция записывает значение доп. реквизита объекта по ссылке и свойству.

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

Если вы еще не знаете, как правильно работать с механизмом дополнительных сведений в 1с 8, то прочтите об этом в статье 1С дополнительные сведения запись и получение.


20 / 19 / 1

Регистрация: 13.08.2012

Сообщений: 779

1

Доступ к реквизиту справочника

26.10.2013, 18:55. Показов 26057. Ответов 12


Извиняюсь за дурацкий вопрос, но я что-то не могу понять как получить доступ к реквизиту существующего справочника из модуля обработки события «ПриИзменении» элемента формы документа, подскажите как правильно это сделать?

Добавлено через 6 минут
версия 1С 8.2.



0



Модератор

Эксперт 1С

3708 / 2905 / 572

Регистрация: 10.03.2011

Сообщений: 11,442

Записей в блоге: 1

26.10.2013, 19:01

2

Из обработки или документа?



0



856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

26.10.2013, 19:10

3

Обычное или управляемое приложение?



0



20 / 19 / 1

Регистрация: 13.08.2012

Сообщений: 779

26.10.2013, 19:56

 [ТС]

4

честно говоря не знаю обычное оно или управляемое, ну в документе есть табличная часть, в этой табличной части есть реквизит и вот модуль вызывается при изменении реквизита табличной части документа, необходимо реализовать что-то типо авто рассчета…



0



856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

26.10.2013, 19:58

5

Код выкладывай процедуры



0



NEvOl

20 / 19 / 1

Регистрация: 13.08.2012

Сообщений: 779

26.10.2013, 20:12

 [ТС]

6

Вот код

1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура РасчетЗарплатыКоличествоЧасовПриИзменении(Элемент)
    ЗП = Справочники.Зарплата.НайтиПоНаименованию("НазваниеЗаписиВСправочнике").ПолучитьОбъект();//пытаюсь получить доступ реквизиту
    СтоимостьЧаса = ЗП.СтоимостьЧаса;
    СтрокаТабличнойЧасти = Элементы.РасчетЗарплаты.ТекущиеДанные;
    СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.КоличествоДней*СтрокаТабличнойЧасти.КоличествоЧасов*СтоимостьЧаса;
 
КонецПроцедуры

говорит необъявленная переменная «Справочники»



0



856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,410

26.10.2013, 20:24

7

К данным нельзя обращаться на клиенте, перенеси процедуру получения реквизита на сервер



0



NEvOl

20 / 19 / 1

Регистрация: 13.08.2012

Сообщений: 779

26.10.2013, 21:04

 [ТС]

8

переделал так:

1C
1
2
3
4
5
6
7
&НаСервере
Процедура РасчетЗарплатыКоличествоЧасовПриИзменении(Элемент)
    ЗП = Справочники.Зарплата.НайтиПоНаименованию("Николаев Сергей").ПолучитьОбъект();
    СтоимостьЧаса = ЗП.СтоимостьЧаса;
    СтрокаТабличнойЧасти = Элементы.РасчетЗарплаты.ТекущиеДанные;
    СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.КоличествоДней*СтрокаТабличнойЧасти.КоличествоЧасов*СтоимостьЧаса;
КонецПроцедуры

теперь не работает, не заполняет поле Сумма, но ошибки не выдает

Добавлено через 17 минут
сделал вот так вот:

1C
1
2
3
4
5
6
&НаКлиенте
Процедура РасчетЗарплатыКоличествоЧасовПриИзменении(Элемент)
    СтоимостьЧаса = ПолучениеРеквизита.ПолучитьРеквизит();
    СтрокаТабличнойЧасти = Элементы.РасчетЗарплаты.ТекущиеДанные;
    СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.КоличествоДней*СтрокаТабличнойЧасти.КоличествоЧасов;
КонецПроцедуры

Создал общий модуль
ПолучениеРеквизита
вот содержимое его:

1C
1
2
3
4
5
6
&НаСервере
Функция ПолучитьРеквизит() Экспорт
    ЗП = Справочники.Зарплата.НайтиПоНаименованию("НазваниеЗаписиВСправочнике").ПолучитьОбъект();
    СтоимостьЧаса = ЗП.СтоимостьЧаса;
    Возврат СтоимостьЧаса;
КонецФункции

при изменении количество часов выпригивает ошибка » Метод объекта не обнаружен (ПолучитьРеквизит)» что я напортачил ?



0



Dethmontt

Модератор

Эксперт 1С

3708 / 2905 / 572

Регистрация: 10.03.2011

Сообщений: 11,442

Записей в блоге: 1

26.10.2013, 21:52

9

Каша у вас в голове (в коде)

Цитата
Сообщение от NEvOl
Посмотреть сообщение

» Метод объекта не обнаружен (ПолучитьРеквизит)» что я напортачил ?

Это потому что ты галочку у модуля не поставил (вызов сервера)

Добавлено через 28 секунд

Не по теме:

То что у вас написано вряд ли вообще работать будет…

Добавлено через 8 минут

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
&НаКлиенте
Процедура РасчетЗарплатыКоличествоЧасовПриИзменении(Элемент)
    СтоимостьЧаса = ПолучитьСтоимостьЧаса("Иванов Иван Иванович"); //Наверное в табличной части и ссылка на справочник сотрудников есть?
    Сообщить(СтоимостьЧаса);
    СтрокаТабличнойЧасти = Элементы.РасчетЗарплаты.ТекущиеДанные;
    СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.КоличествоДней*СтрокаТабличнойЧасти.КоличествоЧасов;
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьСтоимостьЧаса(ФормальныйПараметр)
 
   ТекЧило = 0;
   тСсылка = Справочники.НайтиПоНаименованию(ФормальныйПараметр,Истина);
   Если Не тСсылка.Пустая() Тогда
       ТекЧисло = тСсылка.СтоимостьЧаса;
   КонецЕсли;
   Возврат ТекЧисло;
 
КонецФункции



1



20 / 19 / 1

Регистрация: 13.08.2012

Сообщений: 779

26.10.2013, 21:59

 [ТС]

10

а что делает функция Сообщить ? зачем она ? и в качестве форматного параметра можно передовать строковую константу если мне всегда необходимо для 1 сотрудника рассчитывать ?

Добавлено через 48 секунд
эти обе функции в одном модуле изменения описать ?



0



duk337

26.10.2013, 22:05

Не по теме:

а что делает функция Сообщить ?

вот единственно: на сервере не работает. А так: сообщает. Синт.пом глядим, да?



0



20 / 19 / 1

Регистрация: 13.08.2012

Сообщений: 779

26.10.2013, 22:19

 [ТС]

12

и почему пропущено имя справочника ? при получении ссылки

Добавлено через 10 минут
все заработало, спасибо)



0



0 / 0 / 0

Регистрация: 17.12.2015

Сообщений: 1

17.12.2015, 19:37

13

СПАСИБО!



0



Как обратиться к реквизитам справочника из модуля формы

Автор Andrepan, 23 янв 2017, 11:06

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

Здравствуйте! Подскажите пожалуйста, как обратиться к реквизитам справочника из модуля формы документа. Есть табличная часть документа, в которой производится отбор номенклатуры товара по поставщикам из справочника НоменклатураПоставщиков. Нужно, чтобы при записи номенклатуры в документе, из соответствующих реквизитов Справочника поставщиков переносились в ячейки таблицы Документа характеристики товаров.
Делаю ПриИзменении (для записи Номенклатуры в документе) и объявляю переменную

СтрокаТабличнойЧасти = Элементы.ПриложениеКЗаявлению.ТекущиеДанные;
СтрокаТабличнойЧасти.ТНВД = ??


Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!




Цитата: Andrepan от 23 янв 2017, 13:06Объект — Имя справочника справочника, реквизит — необходимый реквизит??

В данном случае Объект — это текущий документ, а если нужны значения реквизитов справочника, то только через сервер.

Спасибо за Сказать спасибо


...
СтрокаТабличнойЧасти = Элементы.ПриложениеКЗаявлению.ТекущиеДанные;
СтруктураРеквизитов = ПолучитьСтруктуруРеквизитов(СтрокаТабличнойЧасти.Номенклатура);
СтрокаТабличнойЧасти.ТНВД = СтруктураРеквизитов.ТНВД;
СтрокаТабличнойЧасти.ЛюбойРеквизитНоменклатуры = СтруктураРеквизитов.ЛюбойРеквизитНоменклатуры;
...

&НаСервере
Функция ПолучитьСтруктуруРеквизитов(НоменклатураСсылка)
    СтруктураРеквизитов = Новый Структура;
    СтруктураРеквизитов.Вставить("ТНВД", НоменклатураСсылка.ТНВД);
    СтруктураРеквизитов.Вставить("ЛюбойРеквизитНоменклатуры", НоменклатураСсылка.ЛюбойРеквизитНоменклатуры);
    Возврат СтруктураРеквизитов;
КонецФункции

Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению … рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.


Цитата: Golickoff от 24 янв 2017, 05:01
...
СтрокаТабличнойЧасти = Элементы.ПриложениеКЗаявлению.ТекущиеДанные;
СтруктураРеквизитов = ПолучитьСтруктуруРеквизитов(СтрокаТабличнойЧасти.Номенклатура);
СтрокаТабличнойЧасти.ТНВД = СтруктураРеквизитов.ТНВД;
СтрокаТабличнойЧасти.ЛюбойРеквизитНоменклатуры = СтруктураРеквизитов.ЛюбойРеквизитНоменклатуры;
...
&НаСервере
Функция ПолучитьСтруктуруРеквизитов(НоменклатураСсылка)
    СтруктураРеквизитов = Новый Структура;
    СтруктураРеквизитов.Вставить("ТНВД", НоменклатураСсылка.ТНВД);
    СтруктураРеквизитов.Вставить("ЛюбойРеквизитНоменклатуры", НоменклатураСсылка.ЛюбойРеквизитНоменклатуры);
    Возврат СтруктураРеквизитов;
КонецФункции

Спасибо большое! Все получилось.


С обращением к табличной части справочника все понял. Подскажите пожалуйста, а как обратиться для другой колонки табличной части этой же строки документа НоменклатураТовара, уже к реквизитам другого справочника. То есть, есть справочник ТНВД (в котором сам ТНВД код прописан в Наименовании в стандартных реквизитах) реквизитами этого справочника являются ставки: обеспечения, таможенных платежей и акцизов. Необходимо вытащить эти реквизиты и поместить в табличную часть документа


ПолучениеСправочника = Справочники.НужныСправочник.НайтиПоНаименованию(«наименование»).ПолучитьОбъект;

И Потом ПолучениеСправочника.НужныйВамРеквизит;

Но такой скрипт выполняется только на стороне сервера


То есть, я из процедуры модуля формы:

Процедура ПриложениеКЗаявлениюНоменклатураТоваровПриИзменении(Элемент)

Должен вызвать Функцию на сервере в которой будет выполняться данный скрипт?


Опубликовано в Статьи по 1С 27.10.2018

В библиотеке стандартных подсистем 1С дополнительные реквизиты и сведения включены и активно применяются. Эти механизмы позволяют добавить дополнительный реквизит к объекту метаданных без изменения типовой конфигурации. Принцип работы дополнительных реквизитов и сведений, их добавление и получение значений.

Отличие дополнительного реквизита от дополнительного сведения в том, что

  • Дополнительные реквизиты – список реквизитов, доступных в форме документа или справочника; причем эти реквизиты хранятся в табличной части объекта, к которому они добавлены;
  • Дополнительные сведения – список значений доступных по дополнительной кнопке; причем доп. сведения  хранятся в  отдельном регистре.

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

Как получить 1С дополнительные реквизиты и сведения программно:

Для получения дополнительных данных используем запрос, в котором получим значение дополнительных реквизитов и сведений:

////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДополнительныеСведения.Свойство,
| ДополнительныеСведения.Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Объект»;
Запрос.УстановитьПараметр(«Объект», СсылкаДокумент);
////

Для получения дополнительного реквизита использую код вида:

////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Свойство,
| НоменклатураДополнительныеРеквизиты.Значение
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
| И НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка»;
Запрос.УстановитьПараметр(«Ссылка», СсылкаДокумент);
Запрос.УстановитьПараметр(«Свойство», ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Коэффициент бруто»));
////

Теперь вы без труда сможете добавить и получить необходимые дополнительные 1С данные без снятия конфигурации 1С с поддержки и изменения типовой конфигурации. Без сомнения, такой инструмент должен быть в арсенале 1С программиста и активно использоваться в работе.

Понравилась статья? Поделить с друзьями:
  • Как получить реквизит табличной части документа
  • Как получить реквизиты банка втб через банкомат
  • Как получить реквизиты банка тинькофф с печатью
  • Как получить реквизиты в банкомате газпромбанка
  • Как получить реквизиты в сбербанк бизнес онлайн