Добрый день!
Конфигурация УТ 11.4.6, платформа 8.3.16.1224
Есть необходимость в дополнительный реквизит номенклатуры строкового типа с неограниченной длиной записывать JSON-строку.
Если заполнять этот реквзит в карточке номенклатуры руками, то все в порядке. А вот если попытаться присвоить значение программным способом, то строка обрезается:

```1c
    Если НовыеРеквизитыСтикераЗаполнены Тогда
    ЗаполнитьЗначенияСвойств(СтарыеРеквизитыСтикера, НовыеРеквизитыСтикера);
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, СтарыеРеквизитыСтикера);
    НовыйСтикер = Запись.Закрыть();
    Если СтрокаТЧ.РеквизитыСтикера <> НовыйСтикер Тогда
    ЗначениеРеквизита = НовыйСтикер;
    ДопреквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Данные для печати стикера", Истина);
    Отбор = Новый Структура("Свойство", ДопреквизитСсылка);
    СтрокиДопреквизита = Товар.ДополнительныеРеквизиты.НайтиСтроки(Отбор);
    Записать = Ложь;
    Если СтрокиДопреквизита.Количество() = 0 Тогда
    НовыйРеквизит = Товар.ДополнительныеРеквизиты.Добавить();
    НовыйРеквизит.Свойство = ДопреквизитСсылка;
    НовыйРеквизит.Значение = ЗначениеРеквизита; // Обрезается при присвоении
    ФлагИзменения = Истина;
    ИначеЕсли СтрокиДопреквизита.Количество() = 1 Тогда
    Если Не СтрокиДопреквизита[0].Значение = ЗначениеРеквизита Тогда
    СтрокиДопреквизита[0].Значение = ЗначениеРеквизита;
    ФлагИзменения = Истина;
    КонецЕсли;
    Иначе
    Ошибка = Ошибки.Добавить();
    Ошибка.Артикул = ТоварСсылка.Артикул;
    Ошибка.Реквизит = "Данные для печати стикера";
    Ошибка.Ошибка = "Ошибка: у номенклатуры более одного значения реквизита.";
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
```

Может, кто сталкивался с подобным или в строку с неограниченной длиной как-то по особенному надо записывать значение?
---
Используйте реквизит "ТекстоваяСтрока". Ответ в infostart
---
полагаю, обрезает потому, что задана длина строки для ПланаВидовХарактеристик
---
Вероятно, Вы правы, но как тогда объяснить, что при ручном редактировании дополнительного реквизита с помощью формы элемента никаких ограничений на длину строки не налагается?
---
Для начала лучше выкинуть этот велосипед и использовать УправлениеСвойствами.ЗаписатьСвойстваУОбъекта.
---
Спасибо за подсказку, велосипед переделал:

```1c
    Если НовыеРеквизитыСтикераЗаполнены Тогда
    ЗаполнитьЗначенияСвойств(СтарыеРеквизитыСтикера, НовыеРеквизитыСтикера);
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, СтарыеРеквизитыСтикера);
    НовыйСтикер = Запись.Закрыть();
    Если СтрокаТЧ.РеквизитыСтикера <> НовыйСтикер Тогда
    ДопреквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Данные для печати стикера", Истина);
    СтарыйСтикер = УправлениеСвойствами.ЗначениеСвойства(ТоварСсылка, ДопреквизитСсылка);
    Если СтарыйСтикер <> НовыйСтикер Тогда
    ТаблицаНовыхЗначений = Новый ТаблицаЗначений;
    ТаблицаНовыхЗначений.Колонки.Добавить("Свойство");
    ТаблицаНовыхЗначений.Колонки.Добавить("Значение");
    НовоеЗначение = ТаблицаНовыхЗначений.Добавить();
    НовоеЗначение.Свойство = ДопреквизитСсылка;
    НовоеЗначение.Значение = НовыйСтикер;
    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ТоварСсылка, ТаблицаНовыхЗначений);
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
```

но результат тот же, обрезает(
---
Используйте реквизит "ТекстоваяСтрока". Ответ в infostart
---
Гениально! Как Вы это нашли?! Два дня лазил по интернету - все в пустую!
Да, это решение! Пришлось, правда, вернуть велосипед на место (прошу прощения у RustRR, УправлениеСвойствами обязательно возьму на вооружение!):

```1c
    Если НовыеРеквизитыСтикераЗаполнены Тогда
    ЗаполнитьЗначенияСвойств(СтарыеРеквизитыСтикера, НовыеРеквизитыСтикера);
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, СтарыеРеквизитыСтикера);
    НовыйСтикер = Запись.Закрыть();
    Если СтрокаТЧ.РеквизитыСтикера <> НовыйСтикер Тогда
    ДопреквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Данные для печати стикера", Истина);
    ЗначениеРеквизита = НовыйСтикер;
    Отбор = Новый Структура("Свойство", ДопреквизитСсылка);
    СтрокиДопреквизита = Товар.ДополнительныеРеквизиты.НайтиСтроки(Отбор);
    Записать = Ложь;
    Если СтрокиДопреквизита.Количество() = 0 Тогда
    НовыйРеквизит = Товар.ДополнительныеРеквизиты.Добавить();
    НовыйРеквизит.Свойство = ДопреквизитСсылка;
    НовыйРеквизит.Значение = ЗначениеРеквизита;
    НовыйРеквизит.ТекстоваяСтрока = ЗначениеРеквизита;
    ФлагИзменения = Истина;
    ИначеЕсли СтрокиДопреквизита.Количество() = 1 Тогда
    Если Не СтрокиДопреквизита[0].Значение = ЗначениеРеквизита Тогда
    СтрокиДопреквизита[0].Значение = ЗначениеРеквизита;
    СтрокиДопреквизита[0].ТекстоваяСтрока = ЗначениеРеквизита;
    ФлагИзменения = Истина;
    КонецЕсли;
    Иначе
    Ошибка = Ошибки.Добавить();
    Ошибка.Артикул = ТоварСсылка.Артикул;
    Ошибка.Реквизит = "Данные для печати стикера";
    Ошибка.Ошибка = "Ошибка: у номенклатуры более одного значения реквизита.";
    КонецЕсли;

    //СтарыйСтикер = УправлениеСвойствами.ЗначениеСвойства(ТоварСсылка, ДопреквизитСсылка);
    //Если СтарыйСтикер <> НовыйСтикер Тогда
    // ТаблицаНовыхЗначений = Новый ТаблицаЗначений;
    // ТаблицаНовыхЗначений.Колонки.Добавить("Свойство");
    // ТаблицаНовыхЗначений.Колонки.Добавить("Значение");
    // НовоеЗначение = ТаблицаНовыхЗначений.Добавить();
    // НовоеЗначение.Свойство = ДопреквизитСсылка;
    // НовоеЗначение.Значение = НовыйСтикер;
    // УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ТоварСсылка, ТаблицаНовыхЗначений);
    //КонецЕсли;
    КонецЕсли;
    КонецЕсли;
```