Версия для печати темы (https://pro1c.org.ua/index.php?s=195344132d2f1b2ad85d3087219ecafc&showtopic=62868)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Вернуть структуру с модуля объекта на клиент

Автор: Inkognito 13.11.20, 12:15

Оптимизирую код обработки, управляемая форма, Бухгалтерия 2.0
Есть табличная часть, по которой проходимся в цикле (по документам). Для каждого документа нужно получить структуру и обработать на клиенте. Сейчас весь код в "МодулеФормы", и хорошо работает. Но вот беда - приходится копировать часть функций с "МодуляФормы" в "МодульОбъекта" (и наоборот). Код становится запутанней, поддерживать все сложнее.
Вопрос: как вызывать функцию получения структуры, если она находится в "МодулеОбъекта", которая должна вернуть структуру?

&НаКлиенте
Процедура Тест()

    Для каждого Строки из Элементы.ТЧДокументы.ВыделенныеСтроки цикл    
        Документ = Элементы.ТЧДокументы.ДанныеСтроки(Строки).Документ;        
                ПолученнаяСтруктура = ПолучитьСтруктуру(Документ); //перенести в "МодульОбъекта" и получить структуру
                //обрабатываем ее

КонецЦикла;

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

&НаСервереБезКонтекста
Функция ПолучитьСтруктуру(Документ)
    
    Структура = Новый Структура;
    Структура.Вставить("Номер", Документ.Номер);
       //...............................

    Возврат Структура;
КонецФункции

Автор: Petre 13.11.20, 12:35

МодульОбъекта = РеквизитФормыВЗначение("Объект");
РезультатМоегоМетода = МодульОбъекта.МойМетод();

А почему бы не переместить содержимое модуля объекта в модуль формы?

Автор: Inkognito 13.11.20, 13:20

Petre
1) Не удается полноценно отлаживать код, который написан в модуле формы. Ставлю точку останова, а результат нет. Код выполняется без каких-либо отладочных остановок. Очень неудобно, по сравнению с "обычными формами" (где ставить точку останова можно где угодно).
2) Использую "Нетленку" для шифрования обработки, так вот модуль формы обфусцирует так, что он начинает очень медленно работать у пользователей. Код, зашифрованный в модуле объекта, работает быстро. По рекоендации техподдержки Нетленки, желательно выносить код в МодульОбъекта для быстроты работы зашифрованного кода.
Вот эти две проблемы и вынуждают переписывать код.

Автор: Gazulo 13.11.20, 13:36

Inkognito @ Сегодня, 14:20 * ,
1) база на клиент-серверная?? https://pro1c.org.ua/redirect.php?https://programmist1s.ru/vklyuchenie-otladki-na-servere-1s/

Автор: Inkognito 13.11.20, 13:41

Нет, обычная локальная 1С. Интересно. Спасибо, попробую.
Попробовал "Отладка - ТолстыйКлиент". Запустил обработку, установил точку останова ПриОткрытии(), обработка открылась но в отладчике остановки не было.

Автор: Gazulo 13.11.20, 13:48

Inkognito @ Сегодня, 14:41 * ,
https://pro1c.org.ua/redirect.php?http://howknow1c.ru/programmirovanie-1c/kak-vkljuchit-otladku-1s.html


https://pro1c.org.ua/redirect.php?http://howknow1c.ru/programmirovanie-1c/metod-otladki-1s.html

Автор: Inkognito 13.11.20, 14:37

Цитата(Petre @ 13.11.20, 13:35) *
МодульОбъекта = РеквизитФормыВЗначение("Объект");
РезультатМоегоМетода = МодульОбъекта.МойМетод();

1) Действительно, переписанный таким образом код заработал и отлично перехватывается в "МодулеОбъекта" отладкой (и это самое главное для меня). Спасибо.

2) Отладка формы так и не влючилась. Подключение сделал. В свойствах конфигурации разрешил использование отладки по протоколу TCP/IP. Отладка в толстом клиенте. Вроде все по инструкции. Но нет...

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua