v7: Посоветуйте, как реализовать такой изврат #643906


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

В этой группе 1С