1. Создание на форме дополнительных реквизитов в 1С 8.3 и их функции
Механизм дополнительных реквизитов в 1С 8.3 позволяет пользователю самостоятельно добавлять реквизиты к объектам, не меняя при этом конфигурации. После добавления и настройки реквизит отобразится на форме, пользователь сможет заполнить его и значения будут сохраняться в базе.
Вывести реквизиты на форму можно динамически, при ее открытии. Если смотреть отладчиком, то видно, что после процедур ПриСозданииНаСервере и ПриОткрытии дополнительных реквизитов в 1С 8.3 еще нет. Появятся они, когда активизируется закладка «Дополнительно». При создании на форме, реквизитам присваиваются длинные, страшные, ни о чем не говорящие имена. Например:
Имена значений дополнительных реквизитов на форме
Из-за этого возникают сложности с программным обращением к дополнительным реквизитам в 1С 8.3.
Дополнительные реквизиты на форме создаются типовой процедурой УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме:
Создание дополнительных реквизитов на форме
Посмотрим отладчиком, как выглядит форма с созданными на ней дополнительными реквизитами для программного обращения:
Форма с созданными на ней дополнительными реквизитами в 1С 8.3
2. Установка значения дополнительного реквизита в 1С 8.3 с помощью обращения к нему по имени
Чтобы иметь возможность программного обращения к созданным дополнительным реквизитам, нужно знать их имена на форме. Помочь разработчику узнать имена дополнительных реквизитов может специальный реквизит Свойства_ОписаниеДополнительныхРеквизитов. Его автоматически создает система, когда используется механизм дополнительных реквизитов. Тип этого служебного реквизита ДанныеФормыКоллекция. Он содержит список всех дополнительных реквизитов объекта и все сведения о них. Теперь, мы сможем найти нужный дополнительный реквизит в 1С 8.3 по имени, или по соответствующему ему свойству плана видов характеристик. Итак, обращаясь по имени к доп.реквизиту можно присвоить ему нужное значение, либо, наоборот, получить его значение и, например, как-то проверить.
Найти в плане видов характеристик интересующий нас реквизит можно по имени для разработчиков. Имя дополнительного реквизита для разработчиков видно в пользовательском режиме в нижней части формы характеристики, в разделе Для разработчиков:
Раздел Для разработчиков в нижней части формы характеристики
Вот вариант процедуры, которая получает поле доп. реквизита по его имени:
Параметры функции: форма и имя дополнительного реквизита
Функция принимает два параметра – форма и имя дополнительного реквизита (имя для разработчиков). Сперва получим тот самый служебный реквизит, в котором содержатся данные о всех дополнительных реквизитах на форме. Затем по имени дополнительного реквизита в 1С 8.3 найдем свойство в плане видов характеристик. Теперь по этому свойству можем в списке реквизитов найти соответствующий реквизит.
Так может выглядеть код, вызывающий процедуру и устанавливающий значение дополнительному реквизиту:
Код, вызывающий процедуру и устанавливающий значение дополнительному реквизиту в 1С 8.3
Главное преимущество использования механизма дополнительных реквизитов состоит в том, что у нас нет необходимости вносить изменения в типовую конфигурацию. При этом, зная несколько тонкостей обращения с дополнительными реквизитами в 1С 8.3, мы получаем возможность работать с ними так же свободно, как и с основными реквизитами объекта.
Специалист компании “Кодерлайн”
Екатерина Редько
Дополнительные реквизиты в 1с 8 представляют из себя специальную табличную часть у некоторых документов и справочников. В ней хранятся дополнительные данные, касающиеся данного объекта метаданных. Данный механизм реализован только в конфигурация работающих на управляемом приложении. По своему назначению дополнительные реквизиты напоминают дополнительные сведения, разница в том, что доп. сведения хранятся в отдельном регистре, это их плюс, но зато доп. реквизиты автоматически выводятся на форму объекта. В этой статье будет рассказано, как получать и записывать дополнительные реквизиты программно.
Получить дополнительные реквизиты программно
Функция получает значение дополнительного реквизита объекта по ссылке и свойству.
- Ссылка. Тип: Любая ссылка. Ссылка на искомый объект;
- Свойство. Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Дополнительное свойство.
Код:
Функция ПолучитьЗначениеДопРеквизита(Ссылка, Свойство) Экспорт
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Свойство",Свойство);
Массив = Ссылка.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);
Если Массив.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
Возврат Массив[0].Значение;
КонецЕсли;
КонецФункции
Записать дополнительные реквизиты программно
Функция записывает значение доп. реквизита объекта по ссылке и свойству.
- Ссылка. Тип: Любая ссылка. Ссылка на искомый объект;
- Свойство. Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Дополнительное свойство;
- Значение. Тип: заданный для данного свойства.
Функция ЗаписатьЗначениеДопРеквизита(Ссылка, Свойство, Значение)
Попытка
ОбъектСсылки = Ссылка.ПолучитьОбъект();
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Свойство",Свойство);
Массив = ОбъектСсылки.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);
Если Массив.Количество() = 0 Тогда
НовоеСвойство = ОбъектСсылки.ДополнительныеРеквизиты.Добавить();
НовоеСвойство.Свойство = Свойство;
НовоеСвойство.Значение = Значение;
Иначе
Массив[0].Значение = Значение;
КонецЕсли;
ОбъектСсылки.Записать();
Исключение
Возврат Ложь;
КонецПопытки
КонецФункции
Если вы еще не знаете, как правильно работать с механизмом дополнительных сведений в 1с 8, то прочтите об этом в статье 1С дополнительные сведения запись и получение.
Опубликовано в Статьи по 1С 27.10.2018
В библиотеке стандартных подсистем 1С дополнительные реквизиты и сведения включены и активно применяются. Эти механизмы позволяют добавить дополнительный реквизит к объекту метаданных без изменения типовой конфигурации. Принцип работы дополнительных реквизитов и сведений, их добавление и получение значений.
Отличие дополнительного реквизита от дополнительного сведения в том, что
- Дополнительные реквизиты – список реквизитов, доступных в форме документа или справочника; причем эти реквизиты хранятся в табличной части объекта, к которому они добавлены;
- Дополнительные сведения – список значений доступных по дополнительной кнопке; причем доп. сведения хранятся в отдельном регистре.
После ввода дополнительного реквизита или сведения 1С, можно создать подключаемую обработку, где считать введенные дополнительные данные и задать необходимую логику обработки данных, в которой использовать этот реквизит или сведение.
Как получить 1С дополнительные реквизиты и сведения программно:
Для получения дополнительных данных используем запрос, в котором получим значение дополнительных реквизитов и сведений:
////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДополнительныеСведения.Свойство,
| ДополнительныеСведения.Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Объект»;
Запрос.УстановитьПараметр(«Объект», СсылкаДокумент);
////
Для получения дополнительного реквизита использую код вида:
////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Свойство,
| НоменклатураДополнительныеРеквизиты.Значение
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
| И НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка»;
Запрос.УстановитьПараметр(«Ссылка», СсылкаДокумент);
Запрос.УстановитьПараметр(«Свойство», ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Коэффициент бруто»));
////
Теперь вы без труда сможете добавить и получить необходимые дополнительные 1С данные без снятия конфигурации 1С с поддержки и изменения типовой конфигурации. Без сомнения, такой инструмент должен быть в арсенале 1С программиста и активно использоваться в работе.
Примеры работы с дополнительными реквизитами.
Как получить значение дополнительного реквизита:
Пример: мы делаем печатную форму документа “Заказ клиента” и хотим вывести на неё значение определённого дополнительного реквизита – “Должность покупателя”.
Используем вложенный запрос, в котором соединяем левым соединением таблицу “Дополнительные реквизиты” документа “Заказ клиента” с Планом видов характеристик “Дополнительные реквизиты и сведения”. Устанавливаем условие: заголовок дополнительного реквизита должен быть таким – “Должность покупателя”. Таблицы соединяем по ссылке на “Заказ клиента”.
Получается вот такой запрос:
"ВЫБРАТЬ | ДополнительныеРеквизиты.ДолжностьПокупателя КАК ДолжностьПокупателя |ИЗ | Документ.ЗаказКлиента КАК Заказ | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЗаказДополнительныеРеквизиты.Значение КАК ДолжностьПокупателя, | ЗаказДополнительныеРеквизиты.Ссылка КАК Ссылка | ИЗ | Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказДополнительныеРеквизиты | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ПВХДополнительныеРеквизитыИСведения | ПО ЗаказДополнительныеРеквизиты.Свойство = ПВХДополнительныеРеквизитыИСведения.Ссылка | ГДЕ | ПВХДополнительныеРеквизитыИСведения.Заголовок = ""Должность покупателя"") КАК ДополнительныеРеквизиты | ПО (ДополнительныеРеквизиты.Ссылка = Заказ.Ссылка) |ГДЕ | Заказ.Ссылка В(&МассивОбъектов)";
Также можно использовать метод НайтиПоНаименованию(“***”).
Пример запроса:
"ВЫБРАТЬ | ДоговорыКонтрагентовДополнительныеРеквизиты.Значение, | ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство |ИЗ | Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты |ГДЕ | ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка = &Ссылка | И ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("КПП", Истина); Запрос.УстановитьПараметр("Свойство", Свойство);
Переменная Ссылка – это ссылка на “Договор контрагента”.
Проверка на предмет того, что дополнительный реквизит заполнен:
ДопРеквизитСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Дата отправки", Истина); ЕстьСтроки = ЗаказПоставщикуСсылка.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопРеквизитСвойство)); Если ЕстьСтроки.Количество() = 0 Тогда // Обработка условия КонецЕсли;
Как изменить значения дополнительных реквизитов:
Задействуем общий модуль УправлениеСвойствами, который входит в состав БСП.
ДопРеквизитДатаОтправки = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Дата отправки", Истина); ДопРеквизитДоставка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Доставка", Истина); МассивСтруктур = Новый Массив; МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитДатаОтправки, ТекущаяДата())); МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитДоставка, Истина)); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ЗаказКлиентаСсылка, МассивСтруктур);
Как программно добавить дополнительные реквизиты? |
Я |
04.07.22 – 12:07
Подскажите, пожалуйста, как добавить программно дополнительные реквизиты контрагенту в справочнике контрагентов.
1 – 04.07.22 – 12:39
сначала вводишь руками, потом аналогично делаешь в конфинураторе
2 – 04.07.22 – 12:43
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта()
Если тебе надо именно добавить новый допреквизит на кой то чёрт, то сделай ручками, посмотри что заполнилось, сделай то же самое программно.
3 – 04.07.22 – 12:56
Реквизит уже добавлен в ручную. Как обратиться к этому реквизиту, чтобы добавить его значение?
Объект.ДополнительныеРекивзиты.<Как соcлаться на реквизит с именем “ExternalId”?>
4 – 04.07.22 – 12:59
И где хранятся значения, доп.реквизитов? Где их можно посмотреть?
5 – 04.07.22 – 12:59
(3) найди свойство по имени перебери все строки и найди нужное свойство
6 – 04.07.22 – 13:00
(3) я тебе уже написал.
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта()
Через точку обращаться нельзя, это не реквизит. Это строка табличной части ДополнительныеРеквизиты. В запросе надо обращаться туда. Вне запросов делай через БСП
7 – 04.07.22 – 13:01
(0) наркоманы …
8 – 04.07.22 – 13:21
Простите чайника . Ничего не пойму. Получается, что обратиться можно только через запрос, если не использовать БСП?
(6) Как обратиться, можете пример написать? Ну вот никак не соображу как сделать, сижу часов 8 уже с этой проблемой.
(5) Как найти свойство?
9 – 04.07.22 – 13:24
(6) Пробовал вот так но не получается:
Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура(“ExternalId”,””))[0].Значение
10 – 04.07.22 – 13:34
(9) НовСтр = Объект.ДополнительныеРеквизиты.Добавить()…
и заполнять реквизиты строки таб части.
Писали же выше, что это обычная табчасть
11 – 04.07.22 – 13:35
Для начала тебе надо почитать про то, что такое вообще дополнительные реквизиты. Заодно что такое ПланыВидовХарактеристик и как с ними работать.
Затем, тебе надо понять твою задачу.
Затем, тебе надо понять как работать с БСП.
Я тебе в третий раз пишу – установить значение, задача, которую ты написал в (0) делается через УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(). Это метод БСП, который именно для этого написан. Он тебе и нужен и правильнее всего им и воспользоваться.
Что у тебя в строках табличной части ты можешь посмотреть в конфигураторе. Какие там значения – тем же запросом “ВЫБРАТЬ * ИЗ МойДокумент.ДополнительныеРеквизиты КАК МойДокумент ГДЕ МойДокумент.Ссылка = &СсылкаНаДокумент”
В БСП и так все функции задукоментированы, достаточно перейти в модуль и там всё предельно ясно описано:
// Записывает дополнительные реквизиты и сведения владельцу свойств.
// Изменения происходят в транзакции.
//
// Параметры:
// ВладелецСвойств – Ссылка – например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя и т.д.
// ТаблицаСвойствИЗначений – ТаблицаЗначений – с колонками:
// * Свойство – ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения – свойство владельца.
// * Значение – Произвольный – любое значение, допустимое для свойства (указано в элементе свойства).
//
Процедура ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений) Экспорт
Изучи всё это, попробуй, что не получится – напиши.
12 – 04.07.22 – 14:13
БСП, к сожалению нет, нужно как-то решить задачу без БСП.
Насчет получения информации и Доп.Реквизитов, понял, что только через запрос к БД, а не к объекту конфигурации БД. Спасибо!
13 – 04.07.22 – 14:17
(12) Я прошу прощения, а откуда у тебя взялись доп реквизиты без БСП?
14 – 04.07.22 – 14:32
(13) В ручную в карточке контрагента добавил
15 – 04.07.22 – 14:34
(14) Ты издеваешься сейчас?) Какая конфигурация? Что такое по-твоему БСП?) Ты путаешь с ИТС? Что будет если ты в конфигураторе в любом модуле напишешь УправлениеСвойствами.ЗаписатьСвойстваУОбъекта() и нажмёшь F12 на нём?)
16 – 04.07.22 – 15:17
(15) Я не издеваюсь, я в 1С погружаю только 3-ю неделю (правда до этого были курсы 6 мес, но для аналитика). Конфигурация УНФ. Т.е. Вы хотите сказать, что БСП является частью стандартной конфигурации? Зачем тогда о ней вообще упоминать. Я думал это некая внешняя подключаемая библиотека.
Нажал F12 м попал в общий модуль, а там всякие процедуры и функции интересные лежат. Мне что теперь использовать соответствующую процедуру: ЗаполнитьДополнительныеРеквизитыВФорме ?
17 – 04.07.22 – 15:23
(16) БСП = Библиотека Стандартных Подсистем, и во все (какие мне известно) типовые тиражные решения от 1с и франчей она входит. Сам механизм дополнительных реквизитов и сведений – это стандартная подсистема из этой библиотеки. То есть это есть в любой современной конфигурации на БСП.
>> Зачем тогда о ней вообще упоминать
Затем, что ты о ней не знаешь, очевидно, и что бы сподвигнуть тебя немножко погуглить и почитать. Не сработало.
>>Мне что теперь использовать соответствующую процедуру
Да. Это самый правильный вариант решения задачи из (0). Не надо изобретать велосипедов, надо вдумчиво посмотреть как работает уже существующий и правильно крутануть педаль.
18 – 04.07.22 – 19:28
(17) Спасибо! Попробовал вот такой вариант:
МассивСтруктур = Новый Массив;
Z =ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(“ExternalId”, Истина);
S = Новый Структура(“Свойство, Значение”,Z,”123456789″);
МассивСтруктур.Добавить(S);
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(NewCounterparty,МассивСтруктур);
Но на последней строке получаю ошибку:
Ошибка при вызове метода контекста (Заблокировать)
{ОбщийМодуль.УправлениеСвойствами.Модуль(1175)}:Блокировка.Заблокировать();
по причине:
Неверный тип значения: Справочник.Контрагенты.Ссылка
Никак не пойму почему. Вроде в отладчики структура правильная…
19 – 04.07.22 – 19:52
(18) Сделай точку на останова на функции, посмотри что передаёшь в NewCounterparty.
Не совсем понял что у тебя за версия БСП, почему массив структур? В моей таблицу значений надо.
Если не поможет – попробуй остановку по ошибке (отладка – остановка по ошибке…). Там посмотри что у тебя вообще передаётся во ВладелецСвойств. И дальше через стек вызовов сможешь отследить. Чёт думается что ты пустую ссылку кидаешь или ещё что-то непотребное.
Ещё два совета – не используй короткие перменные типа Z и S даже в таких случаях. В 1с это не принято, если перебираешься к нам – избавляйся от этой привычки.
ПВХ лучше искать по полю “имя”, оно уникально. В режиме предприятия это в самом низу будет. Там по умолчанию добавляется УИД, но ты сам можешь задать как тебе надо.
20 – 04.07.22 – 19:53
(19) если вдруг не знаешь как смотреть – выделяешь переменную, shift+F9. Ну вообще отладчиком пользоваться надо обязательно научиться. Это ключевой навык.
21 – 04.07.22 – 20:18
( (19) Получилось ! Спасибо за помощь!
Как Вы и предположили передавал в NewCounterparty не ссылку, а объект.
Подскажите, как узнать используемую в конфигурации версию БСП?
22 – 04.07.22 – 20:21
Мой гений дарит вам, ггг (запоздало):
&НаСервере
Функция СоздатьДопРеквизитНаСервере(НаборСвойствСтрокой, ИдентификаторРеквизита, НаименованиеРеквизита, ТипЗначения = Неопределено, Многострочный = 0) Экспорт
УстановитьПривилегированныйРежим(Истина);
//включим константу использования
Если Не Константы.ИспользоватьДополнительныеРеквизитыИСведения.Получить() Тогда
Константы.ИспользоватьДополнительныеРеквизитыИСведения.Установить(Истина);
КонецЕсли;
//попробуем найти реквизит по наименованию
//ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ИмяРеквизита);
ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту(“Имя”, ИдентификаторРеквизита);
Если НЕ ЗначениеЗаполнено(ДопРеквизитСсылка) Тогда
//если не нашли реквизит – будем его создавать
ДопРеквизитОбъект = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
ДопРеквизитОбъект.Заголовок = НаименованиеРеквизита;
ДопРеквизитОбъект.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений[НаборСвойствСтрокой]; //.Справочник_Контрагенты;
Если ТипЗначения = Неопределено Тогда
ТипЗначения = Новый ОписаниеТипов(“Строка”,,,,Новый КвалификаторыСтроки(250));
КонецЕсли;
ДопРеквизитОбъект.ТипЗначения = ТипЗначения; //
ДопРеквизитОбъект.Наименование = ДопРеквизитОбъект.Заголовок + ” (“+ДопРеквизитОбъект.НаборСвойств+”)”;
ДопРеквизитОбъект.Виден = Истина;
ДопРеквизитОбъект.Доступен = Истина;
ДопРеквизитОбъект.МногострочноеПолеВвода = Многострочный;
ДопРеквизитОбъект.ДополнительныеЗначенияИспользуются = Истина;
//зададим имя нового реквизита
ДопРеквизитОбъект.Имя = ИдентификаторРеквизита; //”filap_”+СтрЗаменить(ИмяРеквизита,” “,””);
ДопРеквизитОбъект.Записать();
ДопРеквизитСсылка = ДопРеквизитОбъект.Ссылка;
КонецЕсли;
//добавим наш реквизит в набор дополнительных реквизитов контрагента
НаборДополнительныхРеквизитовКонтрагента = Справочники.НаборыДополнительныхРеквизитовИСведений[НаборСвойствСтрокой].ПолучитьОбъект(); //Справочник_Контрагенты
Если НаборДополнительныхРеквизитовКонтрагента.ДополнительныеРеквизиты.Найти(ДопРеквизитСсылка, “Свойство”) = Неопределено Тогда
//добавим реквизит в набор
Стр = НаборДополнительныхРеквизитовКонтрагента.ДополнительныеРеквизиты.Добавить();
Стр.Свойство = ДопРеквизитСсылка;
НаборДополнительныхРеквизитовКонтрагента.Записать();
КонецЕсли;
Возврат ДопРеквизитСсылка;
КонецФункции
Примеры вызова:
&НаСервере
Функция ДатьЗначениеДопРеквизитаНаСервере(Ссылка, ИдентификаторРеквизита, НаименованиеРеквизита, ТипЗначения = Неопределено, Многострочный = 0) Экспорт
Если ТипЗнч(Ссылка) = Тип(“СправочникСсылка.Контрагенты”) Тогда
НаборСвойствСтрокой = “Справочник_Контрагенты”;
ИначеЕсли ТипЗнч(Ссылка) = Тип(“СправочникСсылка.Партнеры”) Тогда
НаборСвойствСтрокой = “Справочник_Партнеры_Общие”;
ИначеЕсли ТипЗнч(Ссылка) = Тип(“СправочникСсылка.ДоговорыКонтрагентов”) Тогда
НаборСвойствСтрокой = “Справочник_ДоговорыКонтрагентов”;
ИначеЕсли ТипЗнч(Ссылка) = Тип(“ДокументСсылка.ЗаказКлиента”) Тогда
НаборСвойствСтрокой = “Документ_ЗаказКлиента”;
Иначе
Возврат Неопределено;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Реквизит = СоздатьДопРеквизитНаСервере(НаборСвойствСтрокой, ИдентификаторРеквизита, НаименованиеРеквизита, ТипЗначения, Многострочный);
ИскСтрока = Ссылка.ДополнительныеРеквизиты.Найти(Реквизит, “Свойство”);
Если ИскСтрока = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Возврат ИскСтрока.Значение;
КонецФункции
ДанныеДоговора.Вставить(“ПодписантКлиентаФИО”, ДатьЗначениеДопРеквизитаНаСервере(Договор, “Договор_ПодписантКлиентаФИО”, “Подписант клиента ФИО”, ТипСтрока250));
ДанныеДоговора.Вставить(“ПодписантКлиентаДолжность”, ДатьЗначениеДопРеквизитаНаСервере(Договор, “Договор_ПодписантКлиентаДолжность”, “Подписант клиента должность”, ТипСтрока250));
ДанныеДоговора.Вставить(“ОГРН”, ДатьЗначениеДопРеквизитаНаСервере(ДанныеДоговора.Партнер, “Партнер_ОГРН”, “ОГРН”, ТипСтрока250));
ДанныеДоговора.Вставить(“ДействующийНаОсновании”, ДатьЗначениеДопРеквизитаНаСервере(ДанныеДоговора.Партнер, “Партнер_ДействующийНаОсновании”, “Действующий на основании”, ТипСтрока250));
ТипСтрока250 = Новый ОписаниеТипов(“Строка”,,,,Новый КвалификаторыСтроки(250));
ДанныеДоговора.Вставить(“ПодписантКлиентаФИО”, ДатьЗначениеДопРеквизитаНаСервере(Договор, “Договор_ПодписантКлиентаФИО”, “Подписант клиента ФИО”, ТипСтрока250));
ДанныеДоговора.Вставить(“ПодписантКлиентаДолжность”, ДатьЗначениеДопРеквизитаНаСервере(Договор, “Договор_ПодписантКлиентаДолжность”, “Подписант клиента должность”, ТипСтрока250));
ДанныеДоговора.Вставить(“ОГРН”, ДатьЗначениеДопРеквизитаНаСервере(ДанныеДоговора.Партнер, “Партнер_ОГРН”, “ОГРН”, ТипСтрока250));
ДанныеДоговора.Вставить(“ДействующийНаОсновании”, ДатьЗначениеДопРеквизитаНаСервере(ДанныеДоговора.Партнер, “Партнер_ДействующийНаОсновании”, “Действующий на основании”, ТипСтрока250));
23 – 04.07.22 – 20:29
(21) Ну вот еще одно зачатие 1С-ника. А злые языки говорят – вырождаемся.
24 – 04.07.22 – 20:44
(23) Зачался как 1С-ник месяцев 6 назад еще, а сейчас Спасибо всем за то, что грудями выкармливаете!
25 – 04.07.22 – 20:55
(21) Пожалуйста 🙂
>>Подскажите, как узнать используемую в конфигурации версию БСП?
В режиме предприятия посмотреть регистр сведений “Версии подсистем”
У меня, например, СтандартныеПодсистемы версии 3.1.5.385
(22) Кыш! Не порти нам человека своей гггениальностью))
26 – 04.07.22 – 21:03
(22) А если “Дополнительное значение (иерархия)” где?
Гений 1С
27 – 04.07.22 – 22:13
(26) допили