Имя: Пароль:
1C
 
Подскажите верную архитектуру для моего случая
,
0 korstin
 
26.05.16
09:08
Разрабатываю расширение для типовой БП.

Встал вопрос, где хранить большой объем кода, который использовать в другом месте. Создание общих модулей недоступно. Пока создал обработку и поместил код в ее модуль.

Что смущает? Приведу код:

&НаСервере
Процедура ОбработатьНаСервере (Запись)

О = Обработки.МояОбработка.СоздатьЭлемент();
О.Выполнить();

КонецПроцедуры

&НаКлиенте
Процедура Обработать ()

Для Каждого Запись Из Записи Цикл
ОбработатьНаСервере(Запись);
КонецЦикла;

КонецПроцедуры

Понимаю, что цикл можно поместить в серверной процедуре, но мне не очень подходит (в цикле хочу делать какие-то интерфейсные вещи, например).

В данном случае обработка будет создана во время каждого вызова, что приведет к увеличению потребляемой памяти, ведь так? Можно ли очистить переменную О после вызова?

Передавать с клиента на сервер обработку не получится. Поместить обработку в переменную на сервере не выходит (при каждом вызове получается Неопределено), поместить во временное хранилище нельзя.

Искал в интернете и на форуме что-нибудь по этому поводу, ничего не нашел. Подскажите верное решение? Спасибо
1 VladZ
 
26.05.16
09:11
(0) "Создание общих модулей недоступно" - базовая что ли? Почему недоступно?
2 aleks_default
 
26.05.16
09:14
(0)Да в любом объекте: регистр, справочник и т. п. Добавляешь текстовое поле неограниченной длины и пиши туда сой код. А потом выполняй через Выполнить().
3 korstin
 
26.05.16
09:14
(1) "Добавить" недоступно на общих модулях

Бухгалтерия предприятия, редакция 3.0 (3.0.43.173)
1С:Предприятие 8.3 (8.3.7.2027)
4 b_ru
 
26.05.16
09:16
(3) Дык настройки поддержки видимо.

В случае с обработкой. Раз она у тебя не внешняя, у нее тоже есть модуль менеджера - можешь там процедуру определить.
5 Mort
 
26.05.16
09:16
А замеры делал?
Создание обработки ничто, по сравнению с серверным вызовом.
6 Mort
 
26.05.16
09:17
+(5) Лучше копать в сторону ухода от серверных вызовов в цикле.
7 korstin
 
26.05.16
09:19
(4) Так и делал, но кода очень много, при программировании платформа уже тупит на анализе

(5) Сделал 100 вызовов, где создается обработка и вызывается пустой метод. 50-60 Мб минимум прироста и не освобождаются, пока не закроешь клиента

(6) Придется отказаться от интерфейсных вещей (допустим, индикатор выполнения), чего не хотелось бы
8 Smile 8D
 
26.05.16
09:21
(1) Потому что человек говорит про расширения, а в них модули появятся только в 8.3.9 (https://wonderland.v8.1c.ru/blog/rasshirenie-moduley/)
9 korstin
 
26.05.16
09:29
(8) Да, читал про это. 8.3.9... Долго ждать
10 b_ru
 
26.05.16
09:30
(7) Напрягись и осознай разницу между модулем менеджера и модулем объекта. Для использования процедуры из модуля менеджера обработку создавать не нужно.
11 hhhh
 
26.05.16
09:44
(9) чего это долго? Может месяц-два.
12 korstin
 
26.05.16
09:54
(11) А в повседневное использование?

(10) Простите дурака. И ведь точно же. Спасибо большое
13 RomanYS
 
26.05.16
10:16
(0) Цикл однозначно на сервер, а для интерфейса
либо отдавать на сервер порциями,
либо запускать фоновое задание и пытаться с ним "общаться" с клиента.
Основная теорема систематики: Новые системы плодят новые проблемы.