Имя: Пароль:
1C
1C 7.7
v7: Контекст модуля документа
,
0 Shrk_V_V_V
 
15.08.18
11:17
Есть некоторая функция про документ, которую в восьмерке я бы положил в модуль объекта. Куда ее положить в семерке? Если тоже в модуль объекта документа, то как получить  контекст модуля документа? В глобальный модуль или накопировать во все места где вызывается не очень хочется((
1 1Сергей
 
15.08.18
11:18
глВзятьКонтекст
2 Остап Сулейманович
 
15.08.18
11:21
(0) "В глобальный модуль ... не очень хочется"

Жизнь штука несправедливая...
3 MWWRuza
 
гуру
15.08.18
11:26
+(2)
Во во...
Зачем такие сложности... Положить в глобальный модуль, с дирекивой "Экспорт", в единственном экземпляре, и вызывать потом уже ото-всюда, где она нужна.
4 Время
 
15.08.18
11:30
(2) Не соглашусь...
Справедливая. Только понятие справедливости отлично от человечьего.
5 ADirks
 
15.08.18
12:52
(0) Штатненько - только в ГМ.
А по людски - в класс 1С++.
6 Shrk_V_V_V
 
15.08.18
13:04
Я правильно понимаю, что контекст я только формы могу получить? Контекст модуля объекта получить нельзя?
7 ADirks
 
15.08.18
13:07
(6) правильно
но опять же, штатненько ты не сможешь что-то там вызвать из этого контекста
8 Builder
 
15.08.18
13:11
В 7-ке есть 3 основных места куда можно что то положить:
1. Глобальный модуль.
2. Модуль формы.
3. Модуль документа (используется только при проведении документа)

Вот в зависимости от задачи и решай куда положить.
9 Время
 
15.08.18
13:15
(5) Кстати... У меня в классах столько лежит... Тоже не смогла придумать - куда запихнуть.
10 Shrk_V_V_V
 
15.08.18
13:29
(7) Смогу. И вызываю. Если мы про форму говорим. Я могу положить код в обработку, открыть форму, выполнить функцию и закрыть обработку. Но могу не значит хочу))
11 Shrk_V_V_V
 
15.08.18
13:33
Понятно. Пока распихаю по углам, в глобальный модуль не могу себя заставить положить. Будет время- буду курить 1спп, тем более он(а) уже включен(а) в проект.
12 ADirks
 
15.08.18
13:42
(10) Методы контекста вызываются потому, что 1С++ загружается. В своё время для этого была отдельная компонента (TurboBL), потом её включили в состав 1С++.
Для надёжности желательно явно разрешить этот функционал, а то бывает... наступали как-то, долго ничо понять не могли...

оНастр = СоздатьОбъект("УправлениеНастройками");
оНастр.Включить("TurboBL");
13 Shrk_V_V_V
 
16.08.18
07:08
(12) Это место я не понимал, спасибо большое. Думал, что сами клюшки так умеют..
14 Salimbek
 
16.08.18
08:53
(11) "Будет время- буду курить 1спп" - а чего тама курить то? Для этой тему начало очень простое: создаешь файл в каталоге ИБ defcls.prm и внутрь пишешь:
класс АнализДокумента = classes\АнализДокумента.ert {}
Далее создаешь обработку, в модуле которой вставляешь свою функцию с ключевым словом Экспорт, типа

Функция Анализ(Конт) Экспорт
  Рез = ?(Конт.Флаг=1, "Крестик", "Нолик");
  Возврат Рез;
КонецФункции

и сохраняешь эту обработку в подкаталог classes с именем АнализДокумента.ert
А далее в любом нужном месте пишешь:

обр = СоздатьОбъект("АнализДокумента");
Результат = обр.Анализ(глВзятьКонтекст(Контекст));
15 Shrk_V_V_V
 
16.08.18
09:04
Хочется детально познакомится с технологией, прежде чем использовать в боевом проекте. Мне нравится иметь иллюзию понимания, что происходит))
16 Shrk_V_V_V
 
16.08.18
09:12
Второй момент -  грамотная раздача файликов. Поскольку клиентов МНОГО.
17 Salimbek
 
16.08.18
09:22
(15) Дык, знакомься, я просто описываю тебе "Быстрый вход", без того, чтобы много доков читать, а далее уже внимательно изучай: http://www.1cpp.ru/docum/icpp/html/classes.html
(16) Второй момент, это то, что если отключишь настройку "EnableOptimization", то классы будут грузиться с диска каждый раз при обращении, что позволит дописывать функционал без необходимости отключения пользователей от 1С-ки. Хотя лучше для этого пользоваться методом ОчиститьДанныеОптимизацииКлассов у MetaInfoClasses
18 Shrk_V_V_V
 
16.08.18
09:26
(17) Спасибо
19 Shrk_V_V_V
 
16.08.18
09:29
Про много клиентов я имел в виду не много человек, сидящих в одной конфе, а несколько тысяч конф, расположенных в разных местах. Соответственно есть проблема грамотно раздать файлики и не запутаться в версиях файликов и конфигураций.
20 Peltik
 
16.08.18
09:37
(17) " что позволит дописывать функционал без необходимости отключения пользователей от 1С-ки."

А для этого и не обязательно 1cpp подключать
21 Salimbek
 
16.08.18
10:13
(20) Угу, вариантов много и разных, как с помощью ТурбоМД, так и просто #LoadFromFile. У каждого есть свои плюсы/минусы.
22 ADirks
 
16.08.18
11:44
(14) блин, недавно же была тема про "глВзятьКонтекст()" ...
не надо так писать, а надо:
Результат = обр.Анализ(Контекст);

насмотрелись типовых, понимаешь...
23 ADirks
 
16.08.18
11:48
(19) Если это конфигурация, в которую лазишь только ты, то лучше не в файлы классы складывать, а в сам МДшник. Тогда главный хедер будет в обработке defcls, классы тоже в обработках, и объявление класса будет выглядеть

класс ТДокумент = класс_ТДокумент@MD : Документ
{
};
24 Salimbek
 
16.08.18
13:46
(22) Не ругайся нащальниканама! Моя не со зла!
(23) Так ведь для обновления придется всех выгонять из базы, а в файликах - положил новое, дал команду всем Очистить оптимизацию и вперед, к новым вершинам...
25 ADirks
 
16.08.18
13:56
(24) это хорошо, когда база одна, и вся твоя
а когда это серийный продукт, то лучше уменьшить гемор при обновлении, ибо упаришься потом разбираться, что у кого пошло не так.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn