Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Подмена объектов метаданных (Документ,Справочник) (число прочтений - 31457 )
xxc
Junior Member
**
Отсутствует



Сообщений: 19
Местоположение: Краснодар
Зарегистрирован: 18. Августа 2012
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочник)
Ответ #30 - 29. Августа 2012 :: 12:42
Печать  
Внедрил в демо «Базовая Типовая конфигуpация» (7.70.545) и запустил «Проведение документов» — отвалилось:

ПериодическийРеквизит = СоздатьОбъект("Периодический");
ПериодическийРеквизит.ИспользоватьОбъект("ОбъектМодернизирован", ОсновноеСредство);
{Документ.НачислениеАмортизации.Модуль Документа(30)}: ОбъектМодернизирован не является константой или периодическим параметром!

Отключил подмену для Справочник.ОсновныеСредства и перепроведение успешно завершилось.

Подскажите, движения в этом направлении или иные работоспособные методы контроля программного изменения объектов существуют?
  
Наверх
ICQ  
IP записан
 
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #31 - 30. Июля 2013 :: 07:07
Печать  
artbear писал(а) 13. Апреля 2007 :: 03:35:
Chieftain писал(а) 03. Апреля 2007 :: 08:26:
Хотя можно в 1crcrus.dll можно заменить в ресурсе "106" "ТипЗначенияСтр" на "ТипЗначенияСтрокой" и определить глобальную функцию "ТипЗначенияСтр", которая и будет разбирать типы.

Пока можно использовать подобное решение.


Можно ли здесь выложить этот пропатченный файл 1crcrus.dll
или рассказать методику как его пропатчить самостоятельно?
Второе - предпочтителеьней  Улыбка

Для обоих языков (рус/анг):
ТипЗначенияСтр() => ТипЗначенияСтрокой()
ValueTypeStr() => ValueTypeString()

У меня для этого знаний не достаточно (думаю не только у меня).

НО ОЧЕНЬ НУЖНО. Спасибо.

Кроме того нужно поправить
ОткрытьФорму()
ОткрытьФормуМодально()
для которых в качестве параметра
может быть также передан вместо документа/справочника
объект-КОП....

Поэтому - лучше методику Улыбка
  
Наверх
 
IP записан
 
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
Re: Подмена объектов метаданных (Документ,Справочник)
Ответ #32 - 30. Июля 2013 :: 07:26
Печать  
[quote author=xxc link=1175586636/30#30 date=1346244178]
ПериодическийРеквизит = СоздатьОбъект("Периодический");
ПериодическийРеквизит.ИспользоватьОбъект("ОбъектМодернизирован", ОсновноеСредство);
{Документ.НачислениеАмортизации.Модуль Документа(30)}: ОбъектМодернизирован не является константой или периодическим параметром!
[/quote]

Необходимо также создать свой КОП-наследник от "Периодический",
в котором переопределить метод "ИспользоватьОбъект()"
примерно так:

[code]//#class Периодический = Периодический.ert : Periodic {};
[/code]
и метод класса :

[code]процедура ИспользоватьОбъект(сРеквизит,ОбСпрСчет="") Экспорт
   если ТипЗначения(ОбСпрСчет)=100 тогда
       попытка
           ИспользоватьОбъект(сРеквизит,ОбСпрСчет.ТекущийЭлемент())
       исключение
           ИспользоватьОбъект(сРеквизит,ОбСпрСчет.ТекущийСчет())
       конецПопытки
       возврат;
   конецЕсли;
  ;
конецпроцедуры
[/code]

И ВООБЩЕ ИДЕЯ, ПОКАЗАННАЯ ЗДЕСЬ

должна быть распространена [u]НА ВСЕ[/u] нативные объекты 1С
у которых есть методы в качестве параметров которых
могут быть (случайно или преднамеренно) переданы
вместо нативных агрегатных объектов 1С их "КОП-заменители".....

Пример: если переопределили "Справочник"
то не забываем переопределить
(кроме Периодический.ИспользоватьОбъект())
например, это:

[b]БухгалтерскиеИтоги.ИспользоватьРазделительУчета(Объект)
БухгалтерскиеИтоги.ИспользоватьСубконто(...)
БухгалтерскиеИтоги.ИспользоватьКорСубконто(...)
[/b]
а также - смотрите другие объекты 1С и их методы....

В этом случае гарантированно всё будет работать.

Остается одна загвоздка: вызов глобальных процедур/функций [u](+их англ.синонимы)[/u]
[color=#ff0000]ТипЗначенияСтр()[/color]
[color=#ff0000]ОткрытьФорму()[/color]
[color=#ff0000]ОткрытьФормуМодально()[/color]
[color=#ff0000]наверняка есть другие, нужно смотреть...[/color]
для которых в качестве параметра
может быть также передан вместо документа/справочника
их "КОП-заменитель"....

Для ТипЗначенияСтр() предложено "поправить ресурс 106"
о котором говорилось выше...... Как быть с остальными?

ПРЕДЛАГАЮ УНИВЕРСАЛЬНОЕ РЕШЕНИЕ ДЛЯ ПЕРЕХВАТА ВЫЗОВОВ ГЛОБАЛЬНЫХ ПРОЦЕДУР/ФУНКЦИЙ
здесь [url]http://www.1cpp.ru/forum/YaBB.pl?num=1375173463[/url]

« Последняя редакция: 30. Июля 2013 :: 09:01 - kos »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 
ОтправитьПечать