|
Как сослаться на текущую базу данных? (аналогично COM-объекту) |
☑ |
0
AndrewZloy
19.01.12
✎
08:12
|
Имею процедуру, делающую нечто в переданной ей параметром 1С 8.2 базе (обычно – COM-объект). Но, в том числе, она должна срабатывать и с текущей базой. Создавать для этого дополнительный COM нелепо, нельзя ли просто записать нечто типа
БД = ЭтаБаза();
и дальше с этим БД работать? В руководствах не нашёл, а – вполне вероятно, есть такое.
|
|
1
rs_trade
19.01.12
✎
08:22
|
(0) нет такого. да и не надо.
|
|
2
AndrewZloy
19.01.12
✎
08:31
|
Тёзка, увы! – мне надо. )))
Иначе программа вырастает ровно вдвое – делается «почти копия» всех строк, только вместо «БД.тратата» везде ставлю просто «тратата», – маразм.
Кстати, корневой объект существует во многих современных (грамотно построенных) системах программирования, неужели 1С оказалась и здесь «бааальшим оригиналом»?
|
|
3
Ursus maritimus
19.01.12
✎
08:39
|
Да уж прям в два раза. Меняется только создание объектов
Новый или Новый ComОбъект.
Создание объектов можно делать по условию или вынести в отдельную функцию
|
|
4
AndrewZloy
19.01.12
✎
09:05
|
А все кусочки типа …Записать(БД.РежимЗаписиДокумента.Проведение), = БД.Константа.ХХХХ и т.п. лажа?
Может, не в два, но – очень заметно.
Я пока вывернулся, описав вначале переменные типа
Если Локально тогда
ТамКонстанты = Константы;
ТамДокументы = Документы;
........
Иначе
ТамКонстанты = БД.Константы;
ТамДокументы = БД.Документы;
........
КонецЕсли
и дальше пишу везде вместо БД.Константы.ххх ===> ТамКонстанты.ххх, но – не красиво сие… А было бы – отделался бы одной строчкой.
|
|
5
1с-кин
19.01.12
✎
09:32
|
(0) вроде сложности как раз с получением констант и прочих перечислений-ТЗ из другой базы.
Вот где кода немеряно на единицу результата.
А к "своим" объектам 1с обращается сразу, без "предисловий" - у них и так заграмождена структура метаданных.
Или я не так понял?
|
|
6
AndrewZloy
19.01.12
✎
09:39
|
Да вопрос не в сложности, а в том, можно ли единообразно обратиться к своей базе, как к базе из COM-объекта? Т.е, как сослаться на объект – «текущая база»?
Обидно сделать программу для COM и дополнительно её усложнять для "своей" базы.
|
|
7
1с-кин
19.01.12
✎
09:43
|
(6) вы все равно привязаны к одной базе, откуда запускаете, поэтому она - текущая, и обращение - напрямую к её объектам.
А как вы хотели в противном случае запускать обработку? вне 1с?
|
|
8
AndrewZloy
19.01.12
✎
10:10
|
Блиииин… Да знаю я, к чему привязан и как к ней обращаться. )))
Ещё раз поясняю: есть процедура, УЖЕ работающая через COM с «прочими» базами. Я хочу, чтобы она срабатывала и для текущей базы, причем – без лишних «если … то …». Для этого естественно ей подсунуть в параметре вместо CОМ чужой базы свою. Но как на эту «свою» сослаться, не создавая для неё COM-объекта?
(Вопрос приобрёл уже академический зарактер "на будущее" – пока спрашивал, переписал я процедурку, хотя и неизящно выглядит)
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший