|
форма объекта, как сохранить значение (ХранилищеЗначений) в ТЧ ? | ☑ | ||
---|---|---|---|---|
0
vde69
24.06.20
✎
12:18
|
есть документ с ТЧ "файлы" в нем 1 реквизит с видом "ХранилищеЗначений"
делаю о = РеквизитФормыВЗначение("Объект"); о.Файлы.Загрузить(мТЗ); // тут в о.файлы.файл - нормальный формат хранилища ЗначениеВРЕквизитФормы(о, "Объект"); о = РеквизитФормыВЗначение("Объект"); // а вот тут в о.файлы.файл - фигня |
|||
1
TormozIT
гуру
24.06.20
✎
12:20
|
||||
2
vde69
24.06.20
✎
12:24
|
(1) да, та-же проблема, но решения не вижу
проблема не с получением а с сохранением данных |
|||
3
vde69
24.06.20
✎
12:25
|
(1) ты как-то победил?
|
|||
4
Вафель
24.06.20
✎
12:25
|
там же в 0 есть решение. посто не нравится оно ему
|
|||
5
vde69
24.06.20
✎
12:29
|
(4) мне оно то-же не нравится, по факту это означает кучу файлов в темпах, со всеми вытекающими от сюда проблемами безопасности..
|
|||
6
Вафель
24.06.20
✎
12:30
|
не нрав переходи на фузину
|
|||
7
vde69
24.06.20
✎
12:31
|
(6) ты кого на фузину послал ?
:))) |
|||
8
vde69
24.06.20
✎
12:56
|
короче сделал так
создал реквизит с типом "произвольный", ПриСозданииНаСервере() файлы = Новый ХранилищеЗначений(РеквизитФормыВЗначение("Объект").Файлы.Выгрузить()); ПерезЗаписьюНаСервере ТекущийОбъект.Файлы.Загрузить(Файлы.Получить()) |
|||
9
Вафель
24.06.20
✎
13:07
|
можно не произвольный а строка
ибо это адрес |
|||
10
vde69
24.06.20
✎
13:11
|
(9) я сделал работу без временного хранилища, без создания временных файлов...
данная переменная реально доступна только на сервере, хотя ее и можно передать на клиент, но там с ней ничего не сделаешь, так как внутри нее таблица значений, то есть ее на клиенте невозможно десериализовать.... |
|||
11
fisher
24.06.20
✎
13:16
|
> есть документ с ТЧ "файлы" в нем 1 реквизит с видом "ХранилищеЗначений"
Это будет жесть, ибо при работе с документом как с объектом в память будет все это вычитываться. В том числе при обращениях через точку. В БСП же предлагается рабочее решение. Создание служебного справочника для документа с такой необходимостью. А на форме можешь представлять его в виде ТЧ. |
|||
12
PuhUfa
24.06.20
✎
13:18
|
А зачем принципиально в ТЧ иметь ХранилищеЗначений? Я использовал стандартный механизм прикрепления файлов к документу, а в строке ТЧ храню ссылку на прикрепленный к документу файл.
|
|||
13
fisher
24.06.20
✎
13:20
|
(12) > в строке ТЧ храню ссылку на прикрепленный к документу файл
Судя по тому, что ТЧ у ТС называется "Файлы", ему даже этого не требуется. |
|||
14
vde69
24.06.20
✎
13:21
|
(11) да все нормально будет...
в массивные выборки эта ТЧ не попадает (физически это отдельная таблица) в памяти 1 объекта - это пофиг, ТЧ не большие и размер одной картинки не большой, банально 1000 строк по это 0.5 гига памяти, а у меня средний документ это 15...20 строк |
|||
15
fisher
24.06.20
✎
13:25
|
(14) При работе запросами как раз особых проблем нет. Но нафига при любой работе с этим документом как с объектом тебе все эти картинки? Тупо перепровести пачку таких документов - это все эти картинки загружать/выгружать по каждому документу. Зачем этот цирк? Просто же все делается. На спичках экономишь.
|
|||
16
vde69
24.06.20
✎
13:41
|
(15) я при не интерактивном перепроведении не использую объект (и уже давно), я движения формирую по ссылке.
|
|||
17
fisher
24.06.20
✎
13:56
|
(16) "Навешиваешь" без перезаписи объекта? Интересно. Что ж, не буду учить отца. Хочется заложиться на отсутствие объектного доступа в конфе - закладывайся. А лично я всегда против оверинжениринга, но всегда за профилактику.
|
|||
18
vde69
24.06.20
✎
14:45
|
(17) штатное проведение то-же работает через Ссылку но при этом отрабатывают все подписки как положено.
У меня система проведения позволяет делать перепроведение только по выбранным регистрам, что очень удобно при востановлении последовательности или пересчете себестоимости. Кроме того у меня есть возможность делать движения у не проведенных документов, это нужно например для документов которые имеют несколько статусов или например имею согласование |
|||
19
fisher
24.06.20
✎
14:55
|
(18) И каким образом срабатывают подписки на запись/проведение документа при отсутствии записи/проведения документа? А если есть запись документа - есть и его чтение.
|
|||
20
vde69
24.06.20
✎
15:38
|
(19) есть штатное проведение (например из формы) и есть проведение обработками без события записи документа.
код формирования проводок один для этих двух способов, это очень удобно во многих случаях (особенно при всякой автоматизации) |
|||
21
fisher
24.06.20
✎
15:43
|
(20) Я и с первого раза понял. Но потом ты упомянул подписки. А подписки при такой схеме работать не будут.
|
|||
22
Конструктор1С
24.06.20
✎
16:58
|
(0) а зачем ты хранишь картинки прямо в документе? Ну прикрути регистр сведений и напиши к нему API в модуле менеджера. За этот API дёргай из формы документа/модуля объекта
|
|||
23
ДедМорроз
24.06.20
✎
17:04
|
Так нужно хранить и перепроверить или редактировать?
Просто,использование решистра при редактировании документа с привязкой к строкам-это нетривиальная задача,так как может получиться,что строки поменяли местами,а в регистре забыли,и также,вопрос,где хранить изменения до записи документа?наверное,в отдельном регистре? |
|||
24
FIXXXL
24.06.20
✎
17:10
|
(23) чего там нетривиального?
ключ строки - текстовыйУИД при открытии - чтение из РС в реквизит (ТЧ) формы при записи - запись в РС |
|||
25
Конструктор1С
24.06.20
✎
17:14
|
(23) всё там просто. В регистре достаточно двух измерений
- ссылка на документ - идентификатор строки (УникальныйИдентификатор) последний пользователю не отображается и генерируется автоматически перед записью документа (если пустой в строке) и всё |
|||
26
ДедМорроз
24.06.20
✎
17:42
|
Чтение и запись вопросов не вызывает
А редактирование,причем синхронно с редактированием документа. Например,пользователь поменял картинку в строке,а потом отказался от сохранения документа,если в регистре будет новая картинка,то пользователь очень удивится. |
|||
27
Конструктор1С
24.06.20
✎
17:46
|
(26) зачем синхронно-то редактировать? Это только самому себе жизнь усложнять. Храни в памяти и складывай в регистр при записи документа
|
|||
28
vde69
24.06.20
✎
18:16
|
(27) хранить что-то не в самом документе не очень хорошо, например пометил на удаление документ, что при этом произойдет с записью в регистре?
то есть нужно делать доп подписки "приУдалении" которые чистят регистр, а обмены? там то-же не все гладко... а не типовые действия с документом? например групповое изменение реквизитов? а как доступ давать RLS ? запросом через пару точек? или в регистр надо вставлять доп реквизиты для доступа? продолжать? |
|||
29
hhhh
24.06.20
✎
18:50
|
(28) ну разве галочка Ведущее на измерении Документ не решает эту проблему? При удалении документа удалится и запись в регистре.
|
|||
30
Конструктор1С
24.06.20
✎
18:51
|
(28) проблемы надуманные, всё это прекрасно разруливается без какого-либо геморроя
|
|||
31
ДедМорроз
25.06.20
✎
09:09
|
Можно вообще файлы хранить в отдельной директории,включив в имя файла гуид типа,гуид документа и номер строки.
Просто,когда мы подразумеваем,что что-то привязывается к номеру строки документа,то мы ожидаем синхронности редактирования этого чего-то с редактированием строк документа. Если этого нет,то можно говорить,что мы связали что-то отдельное с документом и номером его строки. И никакой привязки нет. (28) проблемы сохранения в регистре уже после окончания редактирования не такие уж громадные,по сравнению с проблемами редактирования. Что касается удаления,то ведущее измерение решает этот вопрос. В обмене даже лучше,если что-то отдельно,так как его можно будет передавать только при изменении. С rls можно вообще не заморачиваться,если сделать запрет на доступ к регистру,и использовать функции,где явно передается ссылка документа,по которой права можно прекрасно проверить. При хранении,регистр можно рассматривать как виртуальную табличную часть,единственное,что здесь есть возможность чтения/записи,минуя создание объекта документа. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |