Имя: Пароль:
1C
1С v8
Метод ЗначениеВСтрокуВнутр
,
0 vse_serjezno
 
21.07.15
13:19
Здравствуйте.

Использую метод ЗначениеВСтрокуВнутр, передаю в него ТЗ.

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

Можно как-то решить этот вопрос, ведь не может же быть так, чтобы метод работал только на маленьком количестве данных?..
1 Альбатрос
 
21.07.15
13:22
(0) Передаю до 10 тысяч строк - все норм.
2 vse_serjezno
 
21.07.15
13:22
В СП ничего не сказано о длине возвращаемой строки.
3 Redkiy
 
21.07.15
13:24
Метод используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется.

Используй ХранилищеЗначения.
4 H A D G E H O G s
 
21.07.15
13:24
(0) Отладчик не показывает всех данных, чтобы не зависнуть.
5 vse_serjezno
 
21.07.15
13:24
(1) Поподробнее, пожалуйста.

У меня на 5-ти строках:
{"#",acf6192e-81ca-46ef-93a6-5a6968b78663,
{8,
{3,
{0,"Контрагент",
{"Pattern"},"",0},
{1,"НомерДоговора",
{"Pattern"},"",0},
{2,"ДатаДоговора",
{"Pattern"},"",0}
},
{2,3,0,0,1,1,2,2,
{1,5,
{2,0,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6944"},
{"D",20150714000000},0},
{2,1,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6765"},
{"D",20150713000000},0},
{2,2,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6766"},
{"D",20150713000000},0},
{2,3,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6714"},
{"D",20150713000000},0},
{2,4,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6794"},
{"D",20150713000000},0}
},2,4}
}
}


На 7-ми строках:

{"#",acf6192e-81ca-46ef-93a6-5a6968b78663,
{8,
{3,
{0,"Контрагент",
{"Pattern"},"",0},
{1,"НомерДоговора",
{"Pattern"},"",0},
{2,"ДатаДоговора",
{"Pattern"},"",0}
},
{2,3,0,0,1,1,2,2,
{1,7,
{2,0,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6944"},
{"D",20150714000000},0},
{2,1,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6765"},
{"D",20150713000000},0},
{2,2,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6766"},
{"D",20150713000000},0},
{2,3,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6714"},
{"D",20150713000000},0},
{2,4,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6794"},
{"D",20150713000000},0},
{2,5,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f0,27:b16c00155d62150111e217762454c6a7},
{"S","6878"},
{"D",20150713000000},0},
{2,6,3,
{"#",d8f3ef11-7b5b-4839-9a1e-00a5760323f

Видите? Текст обрывается.
6 ДенисЧ
 
21.07.15
13:24
ограничение на 64КБ.
7 vse_serjezno
 
21.07.15
13:27
(6) ограничение где? это можно как-то настроить?

(3) использую для передачи параметра при печати шаблона Word
8 ДенисЧ
 
21.07.15
13:28
(7) Можно.
Достаточно устроиться на работу в 1с и написать 64бит клиента без ограничений.
9 vse_serjezno
 
21.07.15
13:31
(1) вы в каких случаях этот метод используете?
10 PLUT
 
21.07.15
13:32
11 vse_serjezno
 
21.07.15
13:34
(10) Спасибо.
Сперва с ХранилищемЗначения попробую, если не получится, то про сериализацию подумаю.
12 dk
 
21.07.15
13:35
просто отладчик не показывает всю строку - посмотри на длину строки с 7, 8 и 9 строками
13 Альбатрос
 
21.07.15
13:43
(9)

            ЗапросУТ= БазаУТ.NewObject("Запрос");    
        
        ЗапросУТ.Текст =  "ВЫБРАТЬ
                   |    ТоварыВНТТОстатки.КоличествоОстаток КАК Остаток,
                   |    ТоварыВНТТОстатки.Номенклатура.АлкИдентификатор КАК ИдентификаторНоменклатуры,
                   |    ТоварыВНТТОстатки.Склад.Подразделение.алкИдентификатор КАК Идентификатор
                   |ИЗ
                   |    РегистрНакопления.ТоварыВНТТ.Остатки(&КонДата, Склад.Подразделение.Организация = &Организация) КАК ТоварыВНТТОстатки
                   |";

        ОрганизацияУТ = БазаУТ.Справочники.Организации.НайтиПоРеквизиту("алкИдентификатор", Лицензиат.Идентификатор);
        ЗапросУТ.УстановитьПараметр("КонДата" ,КонецДня(КонПериода));
        ЗапросУТ.УстановитьПараметр("Организация", ОрганизацияУТ);
        
        
        ДанныеУТ = Новый ТаблицаЗначений;
        Состояние("Выборка данных из базы К100...");
        Результат = ЗапросУТ.выполнить();
        ДанныеУТ = ЗначениеИзСтрокиВнутр(БазаУТ.ЗначениеВСтрокувНУТР(Результат.Выгрузить()));
        Результат = "";
14 Serginio1
 
21.07.15
13:52
(13) А не проще?

ЗаписатьXML=Новый ЗаписьXML;
ЗаписатьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписатьXML,Результат.Выгрузить());
стр=ЗаписатьXML.Закрыть();
15 Альбатрос
 
21.07.15
13:57
(14) Проще ))))
16 Serginio1
 
21.07.15
14:20
(15) Ну сделай Функцию

Функция СериализоватьОбъект(Объект)
ЗаписатьXML=Новый ЗаписьXML;
ЗаписатьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписатьXML,Объект);
возврат ЗаписатьXML.Закрыть();
КонецФункции

Можно для интереса сравнить размер строк (в том числе и со сжатием в Хранилище значения)
Стр=XmlСтрока(Новый ХранилищеЗначения(Стр,Сжатие));
        
        
        СтрОриг=XMLЗначение(Тип("ХранилищеЗначения"), Стр).Получить();


и выбрать какой вариант лучше
Ошибка? Это не ошибка, это системная функция.