|
v7: Посоветуйте, как реализовать такой изврат | ☑ | ||
---|---|---|---|---|
0
Скользящий
14.12.12
✎
16:48
|
2 базы объединяю по УРБД. Мне надо чтобы в зависимости от константы базы отрабатывался в определенных модулях один код, в случае другой константы другой. Базы практически идентичные, но есть мелкие доработки в коде и там и там. К примеру модули выгрузок через Клиент Банк. Все модули будут вынесены в текст через #ЗагрузитьИзФайла. К сожалению, не получится написать, что если Константа База1, то #ЗагрузитьИзФайла этот файл, если Константа База2 то #ЗагрузитьИзФайла другой файл. Или как то можно извратиться? Можно конечно прямо в одном модуле все прописать через Если - но долго и муторно. Зачем я это делаю?
Объединяю две базы 1С7.7 территориально они разнесены, но учитывается в них одно и то же, переносили документы универсалом раз в месяц и сверяли баланс - да, так бывает, убираю этот анахронизм. |
|||
1
Irek-kazan
14.12.12
✎
16:50
|
не совсем понял, а нельзя на этапе выгрузки в файл определится по какому алгоритму будет загружаться и на основании этого именовать файл
|
|||
2
Amra
14.12.12
✎
16:51
|
(0) Так в текстовике откуда грузится файл пиши код с проверкой константы
|
|||
3
Скользящий
14.12.12
✎
16:52
|
(2) Можно, конечно в каждой процедуре проверять константу и разделить код, но это надо в каждой процедуре писать. Хотелось бы как то, - одна база, один модуль грузится, другая - другой. )
|
|||
4
viktor_vv
14.12.12
✎
17:08
|
В 1C++ есть класс ВыполняемыйМодуль, может поможет
Предназначен для работы с динамическими модулями, передаваемыми в параметре метода в качестве строки. После установки текста модуля скомпилируйте и выполните его. Модуль инициализируется и выполнит операторы, расположенные в конце тела модуля, вне методов. После этого можно обращаться к переменным модуля, как к свойствам этого объекта, и к методам модуля, как к методам объекта. Грузить можно как раз из тестовиков. Особо не копал. |
|||
5
Скользящий
14.12.12
✎
17:11
|
Посмотрю, но грузить при старте лишнюю dll что то не хочется.
|
|||
6
Cthulhu
14.12.12
✎
20:18
|
Какие проблемы-то?
1. Все модули #ЗагрузитьИзФайла 2. В каждой ИБ - СВОЙ комплект текстов модулей. |
|||
7
Cthulhu
14.12.12
✎
20:20
|
ЗЫ: я тебе даже больше скажу.
Если иметь ввиду, что глобальник вообще-то для всех ИБ одинаков. То комплекты текстов модулей можно прям в призапускесистемы в зависимости от каких угодно данных - как угодно готовить. потому что тексты модулей загружаются и компилируются только при их использовании (открытие форм, проведение) - кроме глобальника, он грузится и компилируется при открытии ИБ. |
|||
8
Скользящий
14.12.12
✎
20:22
|
Блин, Ктулху, а ведь ты прав. Выкинуть все модули наружу и так и оставить. ) Правда, надо будет с формами все проверить, поскольку формы и реквизиты диалогов будут одинаковы, возможны конфликты. Глобальник кстати я тоже наружу вытащил, тормозов не замечено.
|
|||
9
Скользящий
14.12.12
✎
20:24
|
Скорее всего, базу объединю, т.е. комплект модулей будет одинаковый, а потом сравню мдшники, и посмотрю что отличается и модули заменю у нужных документов, в случае конфликтов с реквизитами формы доработаю. Спасибо, ты мне открыл глаза на вполне очевидную вещь, чувствовал что где то туплю, но никак не мог сообразить. )
|
|||
10
Cthulhu
14.12.12
✎
20:44
|
(8): глобальник компилируется только при запуске - запуск замедляется, так что при запуске тормоза есть (но не критичные даже при довольно пухлоых глобальниках).
все, что одинаковое - будет в виде одинаковых файлов текстов модулей в разных ИБ. какие "конфликты"???? прим.: кстати, о подменах модулей "на лету" (в процессе эксплуатации базы). чтобы подмененный модул начал работать - надо пере-открыть форму, для которой выполнена подмена текста модуля формы (или начать проведение заного). а вот чтобы подмена глобальника сработала - надо перезапустить базу данных (но это гораздо мягче, чем одновременный выгон всех с правкой конфигурации!). |
|||
11
Надсмотрщик
14.12.12
✎
20:47
|
Проще пареной репы. Твой вопрос не стоит и выеденого яйца.
|
|||
12
Cthulhu
14.12.12
✎
20:49
|
(11): ответ, одинаково универсальный и лечебный для ущемленного самолюбия автора.
или сказать чо хотел?.. ))) |
|||
13
Надсмотрщик
14.12.12
✎
20:51
|
(12) Все на внешних обработках
|
|||
14
Скользящий
14.12.12
✎
20:55
|
(10) Конфликты будут, если в тексте модуля будут задействованы реквизиты, которых нет. Хотя, если формы общие для всех, то да, реквизиты по любому будут. Насчет компиляции знаю, чтобы изменилось то что в глобальнике, надо перезапустить 1С, чтобы то что в форме дока или обработки - переоткрыть форму. Не первый год замужем. )
|
|||
15
mehfk
14.12.12
✎
20:59
|
>потому что тексты модулей загружаются и компилируются только >при их использовании (открытие форм, проведение) - кроме >глобальника, он грузится и компилируется при открытии ИБ.
|
|||
16
mehfk
14.12.12
✎
21:00
|
15+ Есть особенности с turboMD и turboBL(1с++)
|
|||
17
Cthulhu
14.12.12
✎
21:12
|
(14): если УРБД - то сие невозможно (и это - не конфликт, а синтаксическая ошибка).
(16): и ещё возможно до едреней фени "особенностей" при прочих способах использования нештатных механизмов. вплоть до специально рисуемых на коленке вк исключительно в целях наработки количества "особенностей" в использовании штатных механизмов 1с. это что-то меняет в сказанном по сути? |
|||
18
mehfk
14.12.12
✎
21:15
|
(17) Че?
|
|||
19
Скользящий
14.12.12
✎
21:21
|
(17) Первую часть не совсем понял, т.е. если урбы, то невозможны конфликты (сиречь синтаксические ошибки)? )
|
|||
20
Cthulhu
14.12.12
✎
21:23
|
(19): то структура метаданных (и состав реквизитов агрегатных данных) - одинаковы. ну или базы рассинхронизированы - но это уже совсем другая и гораздо более глубокая ж0пa.
(18): по слогам попробуй. |
|||
21
Злопчинский
15.12.12
✎
00:17
|
при старте системы из самой базы получать код для конкретной ПИБ - пихать его в доп.создаваемый глобмодуль и выполнять.
|
|||
22
xXeNoNx
15.12.12
✎
00:27
|
ну если по полной извращаться, то как вариант, то можно грузить код тож из файла
|
|||
23
xXeNoNx
15.12.12
✎
00:32
|
+(22) Код обработки "клиентБанк" например...., но такой изврат я уж давно не видел..., уж легче бухов убедить что нет лучше стандартной обработки загрузки из КБ, чем стандартная
|
|||
24
mehfk
15.12.12
✎
07:55
|
(20) А ты выплюнь МПХ и скажи нормально.
|
|||
25
Скользящий
15.12.12
✎
15:20
|
Напомните плиз, если делать общую базу на Win7, и потом с этого мдшника обновить базe на 2003 сервере или XP - формы не "поедут"? Вроде помниться была такая фича.
|
|||
26
Нуф-Нуф
15.12.12
✎
15:21
|
вы все еще дрочитесь на 7ке?
|
|||
27
Aleksey
15.12.12
✎
15:42
|
(26) ну не всем же на айфон фапать
|
|||
28
Vladal
15.12.12
✎
20:07
|
(25) На XP формы ехали, когда в ней были включены икспишные темы, когда обнаружил эту закономерность, на своей машине включил классическую тему и забыл о съехавших формах.
|
|||
29
KRV
15.12.12
✎
20:11
|
Морды у форм сделай одинаковые, но в зависимости от констант выводи реквизиты? Не?
|
|||
30
Cthulhu
15.12.12
✎
20:35
|
(28): закономерность в том, что двигло 1св7 сохраняет морду с указанием отступов в святой уверенности, что высота заголовка окна и толщина бордюров, которые по дефолту и неизменные в вин95 - точно таки же в любой операционке, в которой юзается пофигуратор - и исходя их этих тупо прошитых в двиге размеров сохранет отступы. в результате при открытии то же самое что при редактировании получается только в единственном случяе - если высота заголовка окна и толщина бордюров во время редактирования/сохранения форм точно такие же, как в вин95 (а таквже в вин2к и в классической схеме ХРюши - но это уже сложилось исторически).
А вот где именно в Вин7 можно указать высоту заголовка окна и толщину бордюров для АПИ-шных системных окошек - вот это вопрос. Кстати, может из встречаюсихся тут гуру подскажет кто?.. |
|||
31
Vladal
16.12.12
✎
01:26
|
(30) Я пока нашел выход в переключении на классическую тему.
Впрочем, и стандартная вроде как нормально работает. |
|||
32
Torquader
16.12.12
✎
02:18
|
(30) Так GetSystemMetrics никто не отменял, как и Set, который позволяет в реестр записать настройки текущей темы.
Хотя, больше всего оно едет, если режим шрифта устанавливать на 125 или 150 процентов - бухгалтера так любят, когда буквы крупные, что на кривые формы им наплевать. Просто в 1С почему-то решили, что размер нужно сохранять относительно края окна, а не клиентской области - ну их тоже можно понять - для скролинга формы у них два окна в одном (внутри одного передвигается другое). P.S. в Windows 95 как и в Windows 3.11 все эти параметры тоже менялись - только там было намного меньше желающих их менять, так как темы были достаточно примитивно реализованы (даже перехода цвета в окне не было). |
|||
33
Ganiev
17.12.12
✎
07:07
|
Если ТекущийИбКод() = ? Тогда
Путь = //Путь к файлу ИначеЕсли ТекущийИбКод() =? Тогда Путь = // Путь к другому файлу КонецЕСли #ЗагрузитИзФайла // путь |
|||
34
Aleksey
17.12.12
✎
07:21
|
(33) И что работает?
|
|||
35
ЧеловекДуши
17.12.12
✎
07:33
|
Все просто, делаешь так, что бы твоя константа не мигрировала в обменах :)
Но ты как наверняка все дело в том, а где именно был создан документ и такой код. То делай се просто, создай общий реквизит в документах и присваивай нужное значение из твоей константы. Тем самым, где бы не выполняли проведение документа, то всегда будет нужный результат. Но по сути, всегда нужно править документы там, где их создают. А не в центре. |
|||
36
Ganiev
17.12.12
✎
08:22
|
(34) А по чему нет? Все работает! Ну еще нужно завязаться на Значение константы!
|
|||
37
Ganiev
17.12.12
✎
08:23
|
(33) Пордон за описку * ТекущаяИБКод()
|
|||
38
vde69
17.12.12
✎
08:26
|
так проще будет:
#ЗагрузитИзФайла ТекущаяИБКод() |
|||
39
Aleksey
17.12.12
✎
08:31
|
Я конечно всё понимаю, но давно 7-ка научилась вычислять выражения в этой директиве? Всегда бралась имя файла и искалась в каталоги пользователя, и если там нет в каталоги ИБ (если конечно не указан полный путь). И всякие извраты типа (33) или (38) вроде бы не работали. Или я что-то путаю?
|
|||
40
vde69
17.12.12
✎
08:37
|
(39) хороший вопрос, сам не проверял...
вообще считаю код во внешнем файле большим злом, конечно можно динамически менять, зато сколько было траблов с потерей актуальной версии и т.д. ИХМО если изменений мало - просто делаем ветки кода, если изменений много - переходим на МОД и обновляем каждую конфигу отдельно |
|||
41
Скользящий
17.12.12
✎
09:08
|
(33) Не будет работать...
|
|||
42
Mikeware
17.12.12
✎
09:19
|
||||
43
Скользящий
17.12.12
✎
09:22
|
Как там у Булгакова? "Советы космического масштаба и космической же глупости..." (С)
|
|||
44
vde69
17.12.12
✎
09:25
|
(42) я последний раз ЗагрузитИзФайла видел 7 лет назад...
|
|||
45
Ёпрст
17.12.12
✎
09:25
|
(0)
Процедура ПриЗагрузкеМодуляФормы(<?>) КонецПроцедуры Синтаксис: Процедура ПриЗагрузкеМодуляФормы(<ИмяОбъекта>)КонецПроцедуры Назначение: Предопределенная процедура вызывается при загрузке модуля формы. Параметры: <ИмяОбъекта> - (Строка) Передается по значению. полный путь к объекту, для которого загружается форма ЗАМЕЧАНИЕ: В качестве параметра в процедуру передается полный путь к загружаемому объекту внутри md ( список всех форм можно получить с помощью метода СписокВсехФорм / AllFormsList ). Если внутри процедуры изменить значение параметра ИмяОбъекта, то загрузится модуль в соответствии с этим новым путем. Если новый путь задан неверно, то будет загружен тот модуль, который предполагался изначально. |
|||
46
Ёпрст
17.12.12
✎
09:26
|
на вот, воткнешь формекс и привет.
|
|||
47
Mikeware
17.12.12
✎
09:26
|
(44) а тут без разницы, сколько лет назад видел. Механизм отработки одинаков везде (и не только в 1С).
|
|||
48
Mikeware
17.12.12
✎
09:30
|
(45) и плодить копии документов?
к тому же, как я понял, ему нужны не только модули форм - но и модули проведений. а в формексе - только для модулей форм. я б заюзал ВыполняемыйМодуль |
|||
49
Ёпрст
17.12.12
✎
09:32
|
(48) почему копии ? всего лишь хранить тексты модулей..
|
|||
50
Ёпрст
17.12.12
✎
09:33
|
а ну да..там подмена объектом целиком
|
|||
51
Ёпрст
17.12.12
✎
09:36
|
ну, тогда класс перехватчик и в нём уже - Загрузитьиз файла который нужон в зависимости от константы..
|
|||
52
Ёпрст
17.12.12
✎
09:37
|
ну и без ВыполняемыйМодуль не обойтись, скорее всего
|
|||
53
Скользящий
17.12.12
✎
09:38
|
Вчера ковырялся, с модулями конечно решение достаточно простое, только тогда если надо модифицировать модули документов, придется модифицировать их в обоих базах сразу, тут главное не забыть и не запутаться. А так работает. Решил все таки сделать одинаковые модули в обоих базах, хоть и выгружаемые наружу, как период отладочный после объединения пройдет, возможно, закину обратно все модули из текстовиков в МДшник.
|
|||
54
Dolly_EV
17.12.12
✎
10:06
|
(0) сведи обе базы к одинаковой конфиге и не парься - имхо, ПРОЩЕ будет побороть бухов в этом случае, ну максимум, пару вилок на "любимые" обработки
|
|||
55
Ganiev
18.12.12
✎
09:35
|
(41) Ребят не гоните у меня 7.7 и ТекущаяИБКод() Работает!
http://1c.moy.su/publ/1-1-0-4 Вам в помощь |
|||
56
Ёпрст
18.12.12
✎
11:27
|
(55) :))))))))))
и ЗагрузитьИзФайла Путь работает ? Наркоман шоле ? |
|||
57
Андрей_Андреич
naïve
18.12.12
✎
11:31
|
(56) Особенно ЗагрузитИзФайла без мягкого знака.
У мну есть сотрудник типо программист - он вообще документацию не читал. Пишет руководствуясь только здравым смыслом. Если я так придумал - так и должно быть. Нормальный язык должон работать нормально и т.д. |
|||
58
Mikeware
18.12.12
✎
11:49
|
(57) "особые приметы: говорит и пишет с акцентом"©
(а Ganiev , похоже, еще и думает с акцентом...) |
|||
59
Cthulhu
18.12.12
✎
21:48
|
(32): а "для тупых"?.. ну, или фразой из анекдота - "ты не выёживайся, клиа, ты пальцем покажи!.."
или мутить искать редактор тем и пачить винду(7) под установку неподписанных тем?.. |
|||
60
Скользящий
18.12.12
✎
22:07
|
(59) Переделал на вин7, просто поставил классическую тему - багов не замечено с формами.
|
|||
61
Cthulhu
18.12.12
✎
22:32
|
(60): Ок, доставлю софт на свежеподаренный сони-ваио - проверю, спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |