Базовый курс. МГ сессия от 12.02.2011
Продолжаем МГ базового курса.
1. Проектирование базы данных.
Есть Детали Д1 и Д2.Они входят в сборку Cб1 и Cб2
А сборки и детали могут входить в Готовую продукцию и вложенность может быть многоуровневая.
С нового месяца в связи с заменой оборудования какая-то из деталей стала производиться быстрее (или медленнее).
Как быть в этом случае при перерасчете производства готовой продукции…. вложенность может быть большой?!
2. Работа со справочниками.
Во многих случаях не могу понять как обратиться к тому или иному объекту.
Например, возьмем справочник. В синтаксис помощнике есть “СправочникМенеджер ” “Справочник Ссылка” “СправочникОбъект«
Но мне хотелось бы пойти наоборот от объекта системы к Сылкам.
Например, есть справочник “Номеклатура” чтобы обратиться к данному справочнику можно через команду “Справочник.Номенклатура” Как обратиться
к элементу справочника
к группе справочника
табличной части справочника
реквизиту
Не знаю к чему еще можно обратиться или могут быть какие-либо ссылки
3. Кэширование возвращаемых значений.
…
Не понял утверждения «Первый раз будет выполнен серверный вызов, во всех остальных случаях обращение к серверу не будет выполняться».
Где располагается кэш серверного модуля? – на сервере или на клиенте? Я понимаю так – при первом вызове с клиента значение функции будет вычислено и помещено в серверный кэш, при последующих – возвращаться из серверного кэша без выполнения кода функции на сервере.
Функция не должна содержать параметров, или кэшируются значения с учетом параметоров?
Пример: ПолучитьКонтрагента(ИНН, КПП) – в теле функции запрос – может ли такая функция кэшироваться?
4. Передача параметров по ссылке.
Интересный момент с передачей параметров всерверную процедуру.
При передаче переменной-объекта в качестве параметра в процедуру, выполняемую на сервере, обратно возвращается другой объект.
Можете прокомментировать такое наблюдение?

12.02.2011
По п.4.
Видимо, после возвращения из серверного вызова для клиентских переменных, измененных на стороне сервера, выделяется новая область памяти и их значения загружаются туда.
Интересны возможные последствия показанного в уроке “эффекта”:
1. Не очищается ли область памяти, выделенная под Б, сразу после возвращения с сервера, а в отладчике видим структуру до вызова только потому, что эта область еще не затерлась другими данными?
2. Если память под Б не очищается, то очищается ли она после окончания процедуры или происходит утечка памяти?
3. Дальнейшее изменение А на клиенте после возврата из серверного вызова, видимо, уже не повлияет на Б, поскольку это будут указатели на совершенно разные области памяти.
На самом деле показанное в уроке поведение является задуманным (это не баг).
И дело здесь в том, что передача по ссылке между клиентом и сервером невозможно.
В любом случае данные будут скопирована на сервер.
А при окончании серверного вызова происходит создание нового объекта (выделение новой области памяти).
Ну а память очищается, с этим проблем быть не должно.
При отсутствии циклов в графе спецификаций разузлование можно сразу расчитать для всего каталога. Для этого достаточно посчитать разузлование от листов конечных комплектующих вверх к готовой продукции выполнив обход узлов по графу.
В случае изменения вариантов комплектации полуфабрикатов можно пересчитать зависимую от измененных узлов часть графа. Зависимость узлов можно хранить в текстовом поле иерархии построенном как Код1.Код2. … .КодН для позиций каталога фиксирующем для узла зависимость от спецификации составляющих узлов с кодами (КодЗависимого)=(Код1), … , (КодН)
Наличие такого поля зависимости преобразует порядок хранения зависимости узлов из реккурсивного в комулятивный.
т.е. я в любой структуре хранения комбинаций структурных единиц каталога смогу выделить например подграф зафисимый от узла (Код1) или нескольких узлов _одним запросом_ вместо реккурсии которая может иметь много уровней.
Хорошая идея, подробно с ней поработаем в курсе продвинутом.
А возможно ли немного подробнее об реализации первого вопроса?
Я имею ввиду про реализацию изменения какого нить из параметров вследствие изменения времени на производство той или иной детали.
Каким образом можно проверять, в каких сборках нужно изменить время?!
Проверять никаким образом не нужно.
Идея, которую я предлагаю – всегда иметь одну активную спецификацию, именно ее использовать при разузловании.
тогда я не понял идею о спецификации… хотя может пока не дошел до изучения, того что нужно.
Здесь я порекомендую попробовать составить простейшую конфигурацию, понимание должно прийти.
Вот этим я и пытаюсь заниматься!