Имя: Пароль:
1C
1С v8
Можно ли расширением заменить полностью общий модуль?
0 Гена
 
гуру
25.02.25
12:14
Вопрос теоретический.
Есть общий модуль ABC. Можно ли его полностью заменить на EF_01_ABC и надо ли потом во всех местах конфигурации делать замену в обращении к ABC на EF_01_ABC ?
1 Fedor-1971
 
25.02.25
12:17
(0) Целиком - это для каждой процедуры/функции сделать заглушку Вместо и потом изменять алгоритмы работы оных
Вот только зачем всё забивать?
2 Гена
 
гуру
25.02.25
12:18
(1) Увы... Сам модуль скрыт под сообщением:
"Исходный текст модуля отсутствует".
3 Волшебник
 
25.02.25
12:19
(2) Можно взломать, декомпилировать
4 Доминошник
 
25.02.25
12:20
(0)
Можно ли его полностью заменить на EF_01_ABC

Заменить - можно.

надо ли потом во всех местах конфигурации делать замену в обращении к ABC на EF_01_ABC ?

Нет, не надо.
5 Fedor-1971
 
25.02.25
12:23
(2) тогда придётся выкопать все обращения к данному модулю из конфигурации и написать свои алгоритмы, а вызовы изменять не придётся
6 Fedor-1971
 
25.02.25
12:26
(3) Можно, но, возможно, что простая реализация процедур/функций займёт сравнимое время
7 Регистр
 
25.02.25
12:27
(3) Что, уже началось ?

(как в известном анекдоте: "Так, я гляжу, товарищ полковник все время то на часы смотрит, то на
*, то на часы, то на *! А потом как товарищ полковник ему
по роже дал, так я подумал, что по всей стране началось")
8 Гена
 
гуру
25.02.25
12:27
(3) Хочется легально... почти )
(4) Итак, я вижу по коду какие на выходе из чёрного ящика ABC есть внутри функции и процедуры. Создаю расширение EF_01_ABC, внутри прописываю эти функции и процедуры. И всё?
Во всех местах конфы, где есть, например,
Что-то = ABC.Процедура_1();
не надо заменять на  EF_01_ABC.Процедура_1(); ?

Что-то слишком гладко получится, нет?
9 Волшебник
 
25.02.25
12:28
(7)(8) Если кому-то нужно моё разрешение, то я его даю.
10 Регистр
 
25.02.25
12:28
(6) ты тот самый d.Fedor ? Или ты другой Fedor ?
11 Fedor-1971
 
25.02.25
12:30
(8) Попробуй добавить в расширение любую функцию из открытого общего модуля с префиксом "Вместо" и проверь отладчиком её вызов
Тупо попадёшь в расширение
12 Волшебник
 
25.02.25
12:30
ГК РФ. Статья 1280. Свободное воспроизведение программ для ЭВМ и баз данных. Декомпилирование программ для ЭВМ
3. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ) или поручить иным лицам осуществить эти действия, если они необходимы для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой, при соблюдении следующих условий:

1) информация, необходимая для достижения способности к взаимодействию, ранее не была доступна этому лицу из других источников;

2) указанные действия осуществляются в отношении только тех частей декомпилируемой программы для ЭВМ, которые необходимы для достижения способности к взаимодействию;

3) информация, полученная в результате декомпилирования, может использоваться лишь для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, не может передаваться иным лицам, за исключением случаев, когда это необходимо для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, а также не может использоваться для разработки программы для ЭВМ, по своему виду существенно схожей с декомпилируемой программой для ЭВМ, или для осуществления другого действия, нарушающего исключительное право на программу для ЭВМ.
13 Fedor-1971
 
25.02.25
12:30
(10) Походу другой
14 Гена
 
гуру
25.02.25
12:35
(11) Да это ежу понятно. Но! когда в коде ЕСТЬ заменяемая функция. Но ведь её явно НЕТ в скрытом модуле.
15 Bigbro
 
25.02.25
12:36
модуль в ошибки падает крашится или зависает надолго?
если нет так просто после возврата свой алгоритм допилить и все.
в свое время с Рарус-автотранспортом именно так пришлось обойтись, поскольку там был кривой расчет.
а исправлять они отказались, предложили УАТ купить)))
16 Fedor-1971
 
25.02.25
12:42
(12) Это слабо подойдёт, т.к. правообладатель ОДИН и по его решению часть кода спрятана.
Тут если только скрытый код содержит явную ошибку, мешающую работе и не исправляемую, например, за неделю и нет возможности откатиться к предыдущей версии.
Примерный план действий: Официальное письмо разработчику - тра-ля-ля (переписка, что  работа остановлена) - результат: отдайте деньги козлодоевы или мы сами починим и вы нам "И с деньгами не нать, и без денег не нать"
17 Волшебник
 
25.02.25
12:46
(16) Почитайте внимательно. Деньги за программу заплачены. В закрытом модуле содержится ошибка. Чтобы её исправить, вы имеете законное право декомпилировать модуль.
18 Fedor-1971
 
25.02.25
12:46
(14) Как это нет, берёшь и пишешь руками, т.е. имя функции тебе известно, место вызова то же
примерно так:

&Вместо("ВызываемаяФункция")
Функция EF_01_ВызываемаяФункция()

А параметры достанешь из обращения в открытой части кода
19 Доминошник
 
25.02.25
12:54
(14) Заимствуем модуль целиком в расширение

И далее - как сказано в (18) начинаем в расширении писать свои обработки процедур и функций (не забывая про параметры).

Проблема может быть, если в параметрах оригинальных процедур и функций есть что-то типа "ЗНАЧ", " = Неопределено" и т.п.
20 Гена
 
гуру
25.02.25
13:04
(18) Ладно. Спасибо. Поверю. Пока поверю... )
Что-то как-то сомнюк... Может при обращении кода к чёрному ящику там компиллируется наименование функции и наше "Вместо" квакнет...
Но... поверю специалистам, что сработает.
21 bolder
 
25.02.25
13:07
(0) это другой подход.Мне нравится предложение (1) и (11).Все входы черного ящика переопределяем в расширении.Работает на ура.
22 bolder
 
25.02.25
13:08
(20) Вместо сработает первым.
23 Гена
 
гуру
25.02.25
13:10
(21) (22) Мерси.
Ну и на фига тогда прятать модуль, если на раз обходится?
[вопрос риторический]
24 Волшебник
 
25.02.25
13:12
(23) Прятать исходники бизнес-программы — это вообще преступление.
25 bolder
 
25.02.25
13:14
(23) Нетривиальный код )))И деньги.
26 Злоп
 
25.02.25
13:40
А что в этих закрытых может быть нетривиального? Ладно я понимаю, какая-нибудь оптимизационная задача спрятана или что-нить сложное неочевидное...
27 bolder
 
25.02.25
13:43
(26) Ну допустим.Просто массивный код с каким то ноу хау.Продающийся на известном ресурсе с доступом на определенный период.
28 Доминошник
 
25.02.25
13:55
(26) В типовой БП закрыты (как минимум) несколько ОМ по работе с ЛК ЕНС: ЕдиныйНалоговыйСчетЛичныйКабинет, ЕдиныйНалоговыйСчетИнтеграцияБП, ЕдиныйНалоговыйСчетИнтеграцияВызовСервера, ЕдиныйНалоговыйСчетИнтеграцияВызовСервераБП, ЕдиныйНалоговыйСчетИнтеграцияПовтИсп, ЕдиныйНалоговыйСчетЛичныйКабинет
29 Fedor-1971
 
25.02.25
14:00
(26) Например, проверка лицензионного ключа и несколько расчётных процедур, чтобы тупо не отключили
30 Eiffil123
 
25.02.25
14:00
(24) покупатель может не покупать программу без исходников, если он за опенсорс-решения
31 bolder
 
25.02.25
14:01
(28) И правильно.Нефиг всяким хакерам в ЛС ФНС лазить.
32 stix2010
 
25.02.25
14:13
(0) если он не глобальный
33 Bigbro
 
25.02.25
14:52
(26) рарус там прятал расчет себестоимости.
видимо от стыда прятал, поскольку работал он криво, приходилось править выходные данные.
34 eddy_n
 
25.02.25
15:07
(26) Любая вещь, связанная с шифрованием.
35 Волшебник
 
25.02.25
15:10
(34) Алгоритм шифрования должен быть открытым. Вся секретность должна быть обеспечена секретным ключом.
36 bolder
 
25.02.25
15:11
(32) Глобальный заменяется на неглобальный.С такими же именами процедур. Вызов будет по методу в (0), прийдется везде менять.Все заработает.
37 _Дайвер_
 
25.02.25
17:01
Префиксы EF расширений только для исправлений от 1С, там через БСП подрубаются они как то, не помню точно, но свои расширения работать вроде как отказываются. Делай свой префикс расширения и херачь везде &Вместо
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший