Size: a a a

1С, БСП, DevOps и Архитектура

2021 February 24

‌‌‎infactum in 1С, БСП, DevOps и Архитектура
этот стикер чуть ли не в закрепе должен быть 😂
источник

H

Hero in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
периодический рс + срез последних = параллельная запись и небольшое замедление чтения.
рс с одним измереним и без периода - явная блокировка по контрагенту и отсутствие параллельности работы. причем как на чтение, так и на запись.
Вот смотри чтоесть сейчас.
Выбираеься таблица контрагента, к ней джойнится ВТшка, в которой просто посчитано количество документов по контрагенту. Этих документов в базе 5 млн. Такой список работает очень медленно из-за группировки в ВТ.
Я думал что самое разумное здесь это при записи документа писать информацию в РС.
Не совсем понял откуда возьмется здесь блокировка и чем это плохо
источник

H

Hero in 1С, БСП, DevOps и Архитектура
И зачем здесь РН я тоже не понял, т.к. накапливать кроме количества докиэументов больше нечего. И вид движения расход тожеьне будет.
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Hero
Вот смотри чтоесть сейчас.
Выбираеься таблица контрагента, к ней джойнится ВТшка, в которой просто посчитано количество документов по контрагенту. Этих документов в базе 5 млн. Такой список работает очень медленно из-за группировки в ВТ.
Я думал что самое разумное здесь это при записи документа писать информацию в РС.
Не совсем понял откуда возьмется здесь блокировка и чем это плохо
тебе для того, чтобы записать в РС, нужно будет поставить исключительную блокировку на регистр по контрагенту. т.к. тебе нужно гарантировать, что параллельная транзакция не начнет делать то же самое - вычитать из регистра, посмотреть, что последняя запись больше/меньше даты документа, обновить при необходимости. и все это в транзакции
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
пока висит исключительная блокировка:
* пользователи не смогу открыть твой дс
* пользователи не смогут провести документ по этому же контрагенту
источник

AS

Alexander Sharov in 1С, БСП, DevOps и Архитектура
1) дата первого документа никогда не меняется. она либо пустая, либо фиксированная.
2) числовые (количество документов .... ) реально в оборотном регистре держать
3) остается "дата последнего документа" - периодический регистр сведений с измерением контрагент. дата документа = дата движения
имхо
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Hero
И зачем здесь РН я тоже не понял, т.к. накапливать кроме количества докиэументов больше нечего. И вид движения расход тожеьне будет.
именно поэтому я и говорил про оборотный регистр
источник

R

Roman in 1С, БСП, DevOps и Архитектура
Hero
Всем привет.
Помогите с архитектурой по задаче.
Есть некий документ, у этого документа есть поле "Контрагент".
При изменении этого документа мне нужно обновлять информацию в регистре, где измерением является контрагент. При чем если контрагент изменился в документе, то и информацию нужно обновить для обоих контрагентов.
Как мне поступить?
Использовать план обмена для регистрации изменений? или использовать подписку на событие? Или вообще вносить информацию при записи документа? Не совсем понятно как контролировать, что изменился контрагент.
В данном случаем мне неважна скорость обновления информацию, важнее надежность и НЕ замедление записи документа.
Не могу понять как правильно начать и запрос в гугл тоже не смог составить :)
Классический вариант контроля изменения реквизита делают используя этотообьект.дополнитеньныесвойства.вставить('контрагентдоизменения',контрагент)
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Alexander Sharov
1) дата первого документа никогда не меняется. она либо пустая, либо фиксированная.
2) числовые (количество документов .... ) реально в оборотном регистре держать
3) остается "дата последнего документа" - периодический регистр сведений с измерением контрагент. дата документа = дата движения
имхо
1) с учетом работы задними числами, может быть все, что угодно))
источник

AS

Alexander Sharov in 1С, БСП, DevOps и Архитектура
чорт.. отвык от работы задними числами...
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Alexander Sharov
чорт.. отвык от работы задними числами...
да, к этому прям быстро привыкаешь)
источник

H

Hero in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
тебе для того, чтобы записать в РС, нужно будет поставить исключительную блокировку на регистр по контрагенту. т.к. тебе нужно гарантировать, что параллельная транзакция не начнет делать то же самое - вычитать из регистра, посмотреть, что последняя запись больше/меньше даты документа, обновить при необходимости. и все это в транзакции
Блокировка мне не нужна.
Я поэтому и хотел о регистрировать изменения, а потом регламентом их обновлять.
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Alexander Sharov
1) дата первого документа никогда не меняется. она либо пустая, либо фиксированная.
2) числовые (количество документов .... ) реально в оборотном регистре держать
3) остается "дата последнего документа" - периодический регистр сведений с измерением контрагент. дата документа = дата движения
имхо
но в целом да, это та же самая идея, что и я предлагал. количество документов - в РН, даты - в периодический рс
источник

AS

Alexander Sharov in 1С, БСП, DevOps и Архитектура
ну ок. тогда два регистра сведений. один "первые документы", другой "последние документы". в одном срез первых, в другом - срез последних =)
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Alexander Sharov
ну ок. тогда два регистра сведений. один "первые документы", другой "последние документы". в одном срез первых, в другом - срез последних =)
а зачем?) можно же в один рс. просто использовать разные вирт таблицы
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Hero
Блокировка мне не нужна.
Я поэтому и хотел о регистрировать изменения, а потом регламентом их обновлять.
нууу... если у тебя какой-то ядрючий OLAP на этом, то да, можно об этом задуматься. но я бы стал так заморачиваться только если бы OLTP-подход начал приводить к проблемам производительности. особенно если критически важно видеть актуальные данные в этом РС секунда-в-секунду
источник

AS

Alexander Sharov in 1С, БСП, DevOps и Архитектура
Nikita Gryzlov
а зачем?) можно же в один рс. просто использовать разные вирт таблицы
а дополнительные часы списать?
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
Alexander Sharov
а дополнительные часы списать?
да легко. сначала выключаем использование итогов в рс, а потом включаем.
источник

NG

Nikita Gryzlov in 1С, БСП, DevOps и Архитектура
с вас тристатысячдаженепятьсот
источник

g

gosn1ck in 1С, БСП, DevOps и Архитектура
Hero
Всем привет.
Помогите с архитектурой по задаче.
Есть некий документ, у этого документа есть поле "Контрагент".
При изменении этого документа мне нужно обновлять информацию в регистре, где измерением является контрагент. При чем если контрагент изменился в документе, то и информацию нужно обновить для обоих контрагентов.
Как мне поступить?
Использовать план обмена для регистрации изменений? или использовать подписку на событие? Или вообще вносить информацию при записи документа? Не совсем понятно как контролировать, что изменился контрагент.
В данном случаем мне неважна скорость обновления информацию, важнее надежность и НЕ замедление записи документа.
Не могу понять как правильно начать и запрос в гугл тоже не смог составить :)
Прочитал 3 раза, но план обмена сюда точно не вписывается - это не тот инструмент
источник