Найти в Дзене

S7-1500. ANY_DB

Ааааааааааа.... Несколько дней прошло с зудящей мыслью, а что это за фрукт такой ANY_DB. И вот наконец-то теоретическое послание о том что такое ANY_DB и попытки разобраться, а зачем он нужен. Немного неофициальной теории В целом это еще один инструмент для унификации процессов и написании мега универсальных ФБ. Особенность того, что ANY_DB хранит номер DB и может быть использован до того как мы создали дб. В ANY_DB хранится номер любой БД(Ох если все было так просто). Вы не сможете записать в параметр ANY_DB DB с резервирование памяти Так как резервирование памяти мне никуда не тарахтело я могу от него избавиться. И так что мы можем точно писать в ANY_DB: Из этого списка пункты 1 и 3 имеют возможность конвертирования в Variant. В целом есть две команды: И больше с этим типом данных нельзя сделать НИ-ЧЕ-ГО! Как ANY_DB в VARIANT превратить и что с этим дальше делать. В целом после столь скудной теоретической части давайте фантазировать. ANY_DB мы можем конdертить в variant. А дальш
Оглавление

Ааааааааааа.... Несколько дней прошло с зудящей мыслью, а что это за фрукт такой ANY_DB. И вот наконец-то теоретическое послание о том что такое ANY_DB и попытки разобраться, а зачем он нужен.

Немного неофициальной теории

В целом это еще один инструмент для унификации процессов и написании мега универсальных ФБ. Особенность того, что ANY_DB хранит номер DB и может быть использован до того как мы создали дб. В ANY_DB хранится номер любой БД(Ох если все было так просто).

Вы не сможете записать в параметр ANY_DB DB с резервирование памяти
Резервирование памяти и ошибки
Резервирование памяти и ошибки

Так как резервирование памяти мне никуда не тарахтело я могу от него избавиться.

Результат
Результат

И так что мы можем точно писать в ANY_DB:

  1. Экземпляры UDT и системных типов
  2. Экземпляры FB
  3. DB которые были созданы как массив.

Из этого списка пункты 1 и 3 имеют возможность конвертирования в Variant. В целом есть две команды:

  • VARIANT_TO_DB_ANY
  • DB_ANY_TO_VARIANT

И больше с этим типом данных нельзя сделать НИ-ЧЕ-ГО!

Как ANY_DB в VARIANT превратить и что с этим дальше делать.

В целом после столь скудной теоретической части давайте фантазировать.

ANY_DB мы можем конdертить в variant.

А дальше там скармливать что хочешь и куда хочешь, у нас же есть REF_TO и ?=

В коде это будет выглядеть следующим образом:

-3

Ну и если подняться выше, то можно узнать, что на вход ANY_DB я подаю Data_Block_2

Полученные значения
Полученные значения

Тут для закрепления требуется какая-то задачка, но на ум пока ничего толкового не приходит. Разве что какая-то фантастическая сборная линия с тремя операциями по координатам. Но если вдруг у вас появились идеи как это куда-то приделать, то прошу в комментарии.