|
Как 1С работает с данными. | ☑ | ||
---|---|---|---|---|
0
kolts23381
27.08.15
✎
18:32
|
Делаю программку которая работает с базой данных на Qt. Разобрался с MVC (модель-представление-контроллер). Есть стратегия редактирования модели onManualSubmit, то есть добавляемые данные кэшируются до тех пор пока не подтвердишь. Удобно удалять строки. Когда данные берешь с базы удалять строки немного неудобно, они не удалятся полностью пока не сделаешь подтверждение, после которого все данные читаются заново.
А как 1с работает с данными которые получает с базы данных. Прочитанные данные как-то кэшируются, но в таком случае неудобно сохранять данные. Или может при открытии документа запускается транзакция, все данные при любом изменении пишутся в базу, транзакция подтверждается при сохранении и откатывается при отказе. |
|||
1
jsmith82
27.08.15
✎
18:39
|
Ну, пусть будет да
|
|||
2
kolts23381
27.08.15
✎
18:44
|
Я забыл поставить знаки вопроса. Во втором абзаце
|
|||
3
jsmith82
27.08.15
✎
18:49
|
(2)(1)
|
|||
4
DTXyupyup
27.08.15
✎
18:54
|
>добавляемые данные кэшируются до тех пор пока не подтвердишь
Как это? |
|||
5
0wl
27.08.15
✎
18:58
|
(0) Все описано в "Профессиональная разработка в 1С Предприятие 8", читать про объектные блокировки, а также события "ПередЗаписью" и "ПриЗаписи". Ну и в профайлер можно посмотреть
|
|||
6
Остап Сулейманович
27.08.15
✎
19:25
|
(0) Не скажу за 1С. Но классика жанра такова:
при чтении создается временный курсор (или вьюха в терминах скуля) и туда складываются выбранные данные. При пессимистической блокировке прочитанные из источника данные сразу блокируются для изменения. (похожим образом себя ведет 77). В семерке если один пользователь открыл документ, то второй может открыть только в режиме просмотра. В восьмерке ИМХО в режиме автоматических блокировок применяется оптимистическая буферизация. И два пользователя легко и непринужденно могут открыть один объект для редактирования. Вот только при записи получат сообщение о несоответствии объекта записям в базе. Пользователь изменяет данные во временном курсоре. После получения команды на запись в БД СУБД либо записывает все изменения и снимает блокировку (при пессимистической буферизации) либо сначала пытается наложить блокировки на изменяемые данные, потом записывает изменения, снимает установленные блокировки и очищает курсоры/вьюхи. как то так. |
|||
7
kolts23381
27.08.15
✎
19:49
|
Насчет вьюхи не подумал. А вообще попробую оттрассировать запросы и посмотреть что происходит
|
|||
8
Гёдза
27.08.15
✎
20:21
|
Объект на форме - это данные в ПАМЯТИ. в базу попадают только после нажатия кнопки "записать"
|
|||
9
Гёдза
27.08.15
✎
20:22
|
никаких транзакций при открытии нет, но форма ставит свою 1сную объектную блокировку, защищающую данные от других форм.
Блокировка ставится при начале редактирования данных |
|||
10
kolts23381
27.08.15
✎
21:07
|
(8) Когда объект новый согласен. А если не новый?
|
|||
11
ДенисЧ
27.08.15
✎
21:12
|
(10) ты уже (5) прочитал?
|
|||
12
Живой Ископаемый
27.08.15
✎
22:09
|
2(10) то что? Объект попадет в память клиента сразу из базы минуя сервер приложений? и о ужас, блокировка не наложится?
|
|||
13
Dен
27.08.15
✎
22:16
|
> Прочитанные данные как-то кэшируются, но в таком случае неудобно сохранять данные.
> Или может при открытии документа запускается транзакция, все данные при любом изменении пишутся в базу, транзакция подтверждается при сохранении и откатывается при отказе. Нет ни того, ни другого. |
|||
14
kolts23381
27.08.15
✎
22:19
|
(13) А что есть? Мне не нужно досканально, только общая идея. Какие данные сидят в памяти, в какой момент происходит согласование с базой данных.
|
|||
15
Dен
27.08.15
✎
22:23
|
(14) При четнии данные помещаются в память, при записи помещатся в базу. Как бы все (чего усложнять?).
|
|||
16
Живой Ископаемый
28.08.15
✎
09:16
|
(15)Согласование с бд происходит в момент вызова метода Записать() объекта или аналогичного набора записей регистра, после отработки всех событий и подписок данные в БД.
|
|||
17
Живой Ископаемый
28.08.15
✎
09:16
|
то есть (14)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |