Имя: Пароль:
1C
 
Ограничение на реквизит "строка неограниченной длины"
0 Tsar
 
30.07.07
20:22
Платформа v77R25
Ситуация: При выполнении процедуры ЗначениеИзСтроки() 1С выпадает с ошибкой памяти.
Вопрос: Если какое-то ограничение на реквизит "строка неограниченной длины"
1 Эльниньо
 
31.07.07
09:39
Что в строке?
2 Tsar
 
31.07.07
10:34
(1)Есть раница? Ну если интересует, то список значений с агрегатными значениями, типа документ ;)
3 Эльниньо
 
31.07.07
10:39
(2) Чтоооо? Что получить в результате хочешь?
4 dk
 
31.07.07
10:46
Смотря как записывал :)
Тут наткнулся на ограничение комментария в 255 символов. Т.е. по базе строка неограниченной длины, но реквизит документа на форме был без галки "многострочность"
5 Tsar
 
31.07.07
11:20
Коментарии это нетот случай ;) - В модуле ты тоже в одну строку можешь набрать только 255 символов ;).
Рекевизит "Строка неограниченой длины". Результаты длительных расчетов методом ЗначениеВСтроку() записываеться в этот реквизит, чтобы при последующем открытии их не требовалось пересчитывать ;). Но насколько я подозреваю есть ограничение, т.к. если записываеться большое количество данных при попытке их прочитать вываливаеться ошибка памяти. Интересно какое ;)
6 Эльниньо
 
31.07.07
11:23
(5) ЖКК про ЗначениеИзСтроки() вынимательно прочитай. Не там копаешь.
7 Tsar
 
31.07.07
11:37
(6) Извени, но что такое ЖКК, в описании функции ЗначениеИзСтроки() (Описание языка 1С) никаких ограничений нету
8 Эльниньо
 
31.07.07
12:22
(7)
ЗначениеИзСтроки(<?>);
Синтаксис:
ЗначениеИзСтроки(<СистСтрока>)
Назначение:
Преобразование из строкового системного представления во внутреннее значение.
Возвращает: Значение, которое получено из строкового системного представления.
Параметры:
<СистСтрока> - строковое представление объекта в системном виде.
Подробнее см. в документации, глава ''Системные процедуры и функции''

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

Хватит?
9 Tsar
 
31.07.07
13:19
(8) Не понимаю (6), почему не там копаешь?. Смотрим глава "Системные процедуры и функции":
Из описания функции ЗначениеВСтроку() следует, что строковое системное представление:
"Строковое представление имеет специальный системный формат, т. е. предназначено не для отображения, а просто для возможности выпол­нения строковых операций с объектами, например при экспорте-импорте информации между разными конфигурациями (например, при помощи OLE). При преобразовании агрегатных типов данных, данный системный формат использует идентификаторы объектов, как они даны в конфигура­торе, а также значения кода (для элементов справочников) и номера (для документов), поэтому при передаче такого строкового представления в другую (похожую) конфигурацию функция ЗначениеИзСтроки сделает попытку восстановить значение объекта по его строковому описанию."

От туда же под внутренним значением подразумеваеться:
"значения любых типов данных, доступных в конфигурации, как ба­зовых, так и агрегатных типов данных, за исключе­нием тех типов данных, которые не имеют собст­венно значения — это касается таких объектов как «Периодический», «Таблица», «ФС», «Запрос», «XBase» и т. п. Однако, объекты типа «СписокЗна­чений» и «ТаблицаЗначений» использовать можно — он преобразуется в строковое представление."

Функция ЗначениеИзСтроки() являеться обратной Функции ЗначениеВСтроку() - смысл понятий один и тотже.
10 Tsar
 
31.07.07
13:29
В дополнение к (5): Все расчеты по документу выведены в диалоге в виде ТаблицЗначений. Реквизита с таким типом данных для документа создать нельзя. Поэтому создан реквизит с типом "строка неограниченной длины" и Таблица расчетов методом ЗначениеВСтроку() сохраняеться в этот реквизит. Но когда количество данных в Таблице расчетов достаточно большое, при попытке востановить ее из реквизита методом ЗначениеИзСтроки() вываливаеться ошибка памяти. Когда количество данных в Таблице расчетов небольшое - такой проблемы не возникает. Отсюда делаю вывод, что для Реквизита с типом данных "строка неграниченной длины" есть ограничение, вот только какое? И как его можно проследить еще перед записью?
11 Эльниньо
 
31.07.07
13:32
(10) Так бы и сказал, а то в (2) "список значений с агрегатными значениями, типа документ"

Строку с формы убери.
12 Tsar
 
31.07.07
13:44
(11) Сам реквизит со строкой не отображаеться никогда и нигде, он просто используеться для хранения данных
13 Эльниньо
 
31.07.07
14:46
Длину строки после ЗначениеВСтроку() в студию
14 IUnknown
 
31.07.07
14:54
(10)ограничение есть для скульных версий, из-за особенностей скула... для дбф пофих... правда с такими сиптомани 1С не валится...
15 DrZombi
 
гуру
31.07.07
15:06
(12)А зачем тебе значение в строку?
Куда данные экспертируешь и пошему не приведешь пример програмного кода и картинку, картинку лучше смешную :)
16 Torquader
 
31.07.07
16:26
Есть мнение, что 1С падает при переходе размера строки через 65536 байт.
Можно попробовать просто создать строку этого или большего размера и запихнуть в "СтрокуНеограниченнойДлины". Если вывалится, то бить на несколько строк.
17 Ковычки
 
31.07.07
16:33
(0) Не делай так, чтобы не быть битым...
18 Ковычки
 
31.07.07
16:35
(10) за это, надо в дворники, да и то еще подумать...
методы сделать как хочешь есть и не один, без всяких там строк...
19 Tsar
 
31.07.07
17:03
(16) Я тоже уже подобную информацию нарыл
Нашел выход: Перед записью пакую строку архиватором, а потом записываю в реквизит - немного дольше, но уже без эксцесов ;)
20 France
 
31.07.07
17:09
и еще был какой то баг, связанный с местом реквизита в структуре метаданных..
рек1 - число
рек2- строка
рек3 - строка неогр. длины - способствовало вроде бы краху 1С............
21 romix
 
модератор
31.07.07
17:27
В 1С есть косяк с оч. длинными строками.
Я бы хранил нечто длинное в файликах/папках с datetime+guid - ссылкой.
22 Tsar
 
31.07.07
17:38
(21) Этот варинт на разработке ;), просто база живая-производственная и ее остановить низя
23 Ковычки
 
31.07.07
17:55
(22) выгнал бы, и даже на дворника не пустил...
24 Tsar
 
31.07.07
18:24
(23) Угу, вакансию дворника занял бы ты...
Там можно мести куда хочешь и как хочешь :)
25 FreeFin
 
31.07.07
18:28
(24) Не, дорогой, мести придется таки тебе.
26 Ковычки
 
31.07.07
18:32
Может и несколько котегорично, о объяснять про целосность и прочее лениво...
27 Tsar
 
31.07.07
18:48
Ну поверьте, нет другого способа кроме строки или внешнего файла. Просто сам документ содержит в себе несколько конструкций, состав которых не постоянен. Добавлять примерно 50 реквизитов и при увеличении ассортимента изготавливаемых конструкций увеличивать это значение по меньшей мере не рационально.
28 Ковычки
 
31.07.07
18:56
(27) Поверь есть, и даже в некоторых конфах реализовано...
К примеру есть понятие характеристики и свойства, представь себе комплектное задание в 300 строк и по 3-5 свойств, тоже вроде много ?
А все проста - служебный документ (который и проводить то ненадо) надо только привязку/перевязку к строкам основного сделать, и показывать то его ненадо, все будет в ТЗ на основном и только для нужных строк...
29 Tsar
 
31.07.07
18:59
(25)(28) Фирма занимаеться производством металопластиковых окон, ролетов, дверей. Представте просто их вариации формы и внешнего вида, сколько размеров и скольки деталей вам нужно расчитать и сохранить. Притом количество деталей всегда разное, как и их свойства
30 Tsar
 
31.07.07
19:05
В добавок к (29). Этот документ являеться Заказом, который оформляеться и прощитываеться на куче дилер-центров непосредственно в присутствии заказчика. Я просто не представляю какой объем по обяснению пользователям (дилерам) нужно каждый раз было бы проводить при появлении нового вида продукции, а если еще учесть навыки работы с компьютером, то мне легче через строку
31 Botanik8888
 
31.07.07
19:06
Блин куча же специализированных решений под это есть, зачем велосипед мутить
32 Tsar
 
31.07.07
19:07
(31) Его замутили до меня, а я его вынужден крутить
33 Botanik8888
 
31.07.07
19:08
кстати (28) дело говорит
34 insider
 
31.07.07
19:08
(28)+1
35 Botanik8888
 
31.07.07
19:10
кстати а что ты понимаешь под новым видом продукции
36 Torquader
 
31.07.07
19:21
У меня страница html, в немного закодированном виде хранилась, как строка неограниченной длины в реквизите справочника. Всё работает нормально, только медленно.
Поэтому есть предложение хранить в строке xml-файл.
37 Ковычки
 
31.07.07
19:24
(29)(30) Представь мебельное производство, серийное...
(36) удалим элемент - что будет ?
38 Ковычки
 
31.07.07
19:28
+(37) в мебельном одно изделие может быть в более чем 20-30 ипостасиях, что будет со справочником ? и не просто ипостасиях, онож состоит из многих полуфабрикатов...
...
Делай документ - СвойстваДокумента и вяжи его со строками по реквизиту ГУИ либо просто в нем НомерСтрокиТЧ (но тогда его перестраивать при изменениях в основном, но так просче)
39 insider
 
31.07.07
19:28
(36) агрегатные объекты нельзя хранить таким образом, пр манипуляциях с ними теряются ссылки. только отдельный (невидимый) документ и табличная часть в виде ТЗ, которая формирутся из него.
40 Torquader
 
31.07.07
19:33
(39)
Насколько я понял, он как раз и не хочет создавать справочники, а хранит таблицу значений в виде строк и ещё каких-то описаний.
Если у него есть справочники - тогда не ясно, почему он не хочет делать подчинённый документ.

Кстати, а что будет, если элементами таблицы значений будут вложенные таблицы значений (я такое обычно при формировании отчёта делаю) - и это всё положить в строку ?
41 Tsar
 
01.08.07
11:10
(40) Насчет вложеных Тз в Тз - при вложении в строку все коректно работает. Есть только ограничения при записи этой строки в реквизит, что обусловлено свойствами дбфов, в скульных базах это ограничение еще пожоще.