|
Обрезает строку неограниченной длины | ☑ | ||
---|---|---|---|---|
0
Mechanik21
18.06.20
✎
15:10
|
На форме происходит загрузка текста Устава из макетов разделов.
Для хранения Устава используется таблица СодержаниеРазделов, в которой есть реквизит СодержаниеПункта. Раньше в объекте формы для каждого раздела существовало по таблице. Раньше код работал так: 1) В новый табличный документ получался макет с содержанием раздела. 2)Табличный документ с помощью построителя отчета преобразовывался в ТЗ. 3) ТЗ загружалось в соответствующую таблицу раздела: Объект.<РазделУстава>.Загрузить(ТЗ); Потом сказали, что всё должно быть динамично - переделал на две таблицы (разделы и содержание разделов), чтобы юзер мог сам добавлять разделы и пункты. Теперь происходит вот что. 1) В новый табличный документ получается макет с содержанием раздела. (так же как раньше) 2)Табличный документ с помощью построителя отчета преобразовывается в ТЗ.(так же как раньше) 3)В новую таблицу значений (ИтоговаяТаблица), никак не привязанную ни к форме ни к объекту, дописываются пункты нового раздела. Различаются по колонке "наименование раздела". Дописываются просто циклом. 4)Итоговая таблица загружается в Табличную часть объекта: Объект.СодержаниеРазделов.Загрузить(ИтоговаяТаблица). Но если в первом варианте все работало без нареканий, то во втором внезапно содержание пунктов стало обрезаться 525 символами. А у меня есть пункты и по 2000 симв. Строки типа неограниченной длины и в СодержаниеРазделов (указано в свойствах) и в ИтоговойТаблице ( Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки()) ) В чём может быть причина? |
|||
1
Ёпрст
18.06.20
✎
17:08
|
(0) а где видно эти содержания пунктов ?
и писать новый квалификтоарстроки не надо |
|||
2
Ёпрст
18.06.20
✎
17:09
|
достаточно ОписаниеТипов("Строка")
|
|||
3
Ёпрст
18.06.20
✎
17:09
|
или вообще не типизировать, если в запрос не пихаешь
|
|||
4
Mechanik21
19.06.20
✎
09:20
|
(1) сначала указывал Новый ОписаниеТипов("Строка") не помогло
потом Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки()) потом Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(20000)) потом стал проверять квалификаторы строки Новый ОписаниеТипов("" + ТипЗнч(НовоеСодержаниеРазделов.СодержаниеПункта)+ "") КвалификаторыСтроки.Длина = 0; КвалификаторыСтроки.ДопустимаяДлина = Переменная Обрезаться не должно вроде как, а режет |
|||
5
Галахад
гуру
19.06.20
✎
09:28
|
А реквизиты Объект.СодержаниеРазделов какого типа?
|
|||
6
sitex
naïve
19.06.20
✎
09:29
|
(0) в Итоговая таблице все нормально все присутствует ?
|
|||
7
Mechanik21
19.06.20
✎
09:39
|
(5) тут конкретно интересен реквизит СодержаниеПункта
у него Тип Строка Длина 0 НеограниченнаяДлина = Истина |
|||
8
Mechanik21
19.06.20
✎
09:40
|
(6) в итоговой таблице содержание пункта обрезается до 525 символов в строке
|
|||
9
Mechanik21
19.06.20
✎
09:41
|
(3) изначально вообще не типизировал, только когда заметил и начал копать
|
|||
10
sitex
naïve
19.06.20
✎
09:43
|
(8) Тогда от сюда и начни копать. или код покажи. Гадать сложно...
|
|||
11
Mechanik21
19.06.20
✎
09:45
|
Что ещё удалось выяснить:
Эксперимент вот такой проводил: ТипЗнч(Строка.СодержаниеПункта) = ТипЗнч(НовоеСодержаниеРазделов.СодержаниеПункта) выдаёт ложь ТипЗнч(НовоеСодержаниеРазделов.СодержаниеПункта) = Не определено В два слова НоваяСтрока = Строка.СодержаниеПункта - записывается всё нормально А вот если НовоеСодержаниеРазделов.СодержаниеПункта = НоваяСтрока опять режет |
|||
12
Mechanik21
19.06.20
✎
09:47
|
[CODE]Для каждого Строка Из ТЗ Цикл
НовоеСодержаниеРазделов = ТЗСодержаниеРазделов.Добавить(); НовоеСодержаниеРазделов.Использовать = Строка.Использовать; НовоеСодержаниеРазделов.НаименованиеРаздела = Строка.НаименованиеРаздела; НовоеСодержаниеРазделов.НомерПунктаВУставе = Строка.НомерПунктаВУставе; //СодержаниеПунктаБуфер = Строка.СодержаниеПункта; //Проверка = ТипЗнч(НовоеСодержаниеРазделов.СодержаниеПункта) = ТипЗнч(Строка.СодержаниеПункта); НовоеСодержаниеРазделов.СодержаниеПункта = СодержаниеПунктаБуфер;//обрезается вот здесь //Тип = Новый ОписаниеТипов("" + ТипЗнч(НовоеСодержаниеРазделов.СодержаниеПункта)+ ""); //ЗаполнитьЗначенияСвойств(НовоеСодержаниеРазделов, Строка); КонецЦикла; [/CODE] |
|||
13
Mechanik21
19.06.20
✎
09:49
|
ТЗ это таблица раздела, преобразованная из макета. Здесь всё нормально.
ТЗСодержаниеРазделов - ТЗ объявлена в коде, локальная переменная. В неё дописывается каждый раздел |
|||
14
dka80
19.06.20
✎
09:59
|
(13) код объявления ТЗСодержаниеРазделов покажи
|
|||
15
Mechanik21
19.06.20
✎
10:01
|
(14) Изначально это была одна строка
ТЗСодержаниеРазделов = Новый ТаблицаЗначений; потом к ней добавилось // добавим в таблицу значений колонки ТЗСодержаниеРазделов.Колонки.Добавить("Использовать", Новый ОписаниеТипов("Булево")); ТЗСодержаниеРазделов.Колонки.Добавить("НаименованиеРаздела", Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки())); ТЗСодержаниеРазделов.Колонки.Добавить("НомерПунктаВУставе", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(10))); ТЗСодержаниеРазделов.Колонки.Добавить("СодержаниеПункта", Новый ОписаниеТипов("Строка")); с вариациями из (4) кстати первые данные в неё добавляются копированием ТЗСодержаниеРазделов = ТЗОбщиеПоложения.Скопировать(); вдруг важно |
|||
16
dka80
19.06.20
✎
10:02
|
И да, вместо вот этого
НовоеСодержаниеРазделов.Использовать = Строка.Использовать; НовоеСодержаниеРазделов.НаименованиеРаздела = Строка.НаименованиеРаздела; НовоеСодержаниеРазделов.НомерПунктаВУставе = Строка.НомерПунктаВУставе; НовоеСодержаниеРазделов.СодержаниеПункта = Строка.СодержаниеПункта; лучше написать ЗаполнитьЗначенияСвойств(НовоеСодержаниеРазделов, Строка) |
|||
17
sitex
naïve
19.06.20
✎
10:02
|
(12) НовоеСодержаниеРазделов.СодержаниеПункта если режет именно в 525, то явно указано именно значение где то.
|
|||
18
dka80
19.06.20
✎
10:03
|
(15) ТЗСодержаниеРазделов.Колонки.Добавить("СодержаниеПункта");
|
|||
19
sitex
naïve
19.06.20
✎
10:06
|
(15) Переименуй на время "СодержаниеПункта" в "СодержаниеПункта1" и посмотри что туда по длине падет.
|
|||
20
Mechanik21
19.06.20
✎
10:18
|
В общем выяснилось.
Это из-за копирования. В первой таблице, которую добавляю в Итоговую копированием самый длинный пункт как раз 525 символов. Переписал на цикл первую таблицу - резать перестало Всем спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |