Быстрое изменение кода без обновления конфы на мобильных приложениях 1С и не только
Разработка - Мобильная разработка
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Для самой простой и быстро настраиваемой отладки кода предлагаю воспользоваться методом "Выполнить" и web-сервисом для размещения кода, который собственно будем выполнять.
Создаем справочник "ХранилищеКода", в котором будем хранить код. Добавляем в него реквизиты для поиска "Модуль", "Процедура" и собственно реквизит для кода "ТекстМодуля".
Создаем простейший web-сервис. Добавляем в него одну операцию "GetModuleText" с двумя переменными "module","proc" (Имена объектов примерные, вы можете использовать любые). В операции прописываем процедуру:
Функция GetModuleText(module, proc)
Если module="" ИЛИ proc="" Тогда
Возврат ":)";
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ХранилищеКода.ТекстМодуля КАК ТекстМодуля
|ИЗ
| Справочник.ХранилищеКода КАК ХранилищеКода
|ГДЕ
| ХранилищеКода.Модуль = &Модуль
| И ХранилищеКода.Процедура = &Процедура");
Запрос.УстановитьПараметр("Модуль",module);
Запрос.УстановитьПараметр("Процедура",proc);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ModuleText = Выборка.ТекстМодуля;
Иначе
ModuleText = Неопределено;
КонецЕсли;
Возврат ModuleText;
КонецФункции
И собственно все это дело публикуем на веб сервере.
В мобильном приложении для удобства подключения создаем WS-ссылку на web-сервис и вставляем процедуру получения этого кода:
Функция ПолучитьТекстПроцедуры(ИмяМодуля,ИмяПроцедуры) Экспорт
ХранилищеКода = WSСсылки.CodeStorage.СоздатьWSПрокси("http://www.1с.ru","main","mainSoap",,,Новый ЗащищенноеСоединениеOpenSSL);
ХранилищеКода.Пользователь = "User";
ХранилищеКода.Пароль = "xххххххххххххх";
ModuleText = ХранилищеКода.GetModuleText(ИмяМодуля,ИмяПроцедуры);
Возврат ModuleText;
КонецФункции
И вызываем в процедурах и функциях которые хотим отладить:
Если Константы.ИспользоватьКодОтладки().Получить() Тогда
ТекстМодуль = МодульОтладки.ПолучитьТекстПроцедуры("ОбщийКлиент","ОткрытьФайл");
Выполнить(ТекстМодуль);
Если НЕ ПустаяСтрока(ТекстМодуль) Тогда
Возврат;
КонецЕсли;
КонецЕсли;
В итоге при необходимости мы всегда можем этот код изменять налету, без необходимости пересобирать приложение. Кроме того, этот способ можно использовать не только для отладки, но и для работы (и не только с мобильным приложением), что бы оперативно обновлять код всех подключенных пользователей. Для работы в режиме офлайн достаточно добавить похожий справочник в мобильную конфигурацию и записывать в него код например при получении с сервера, или разово по нажатию кнопки. И если интернета нет, то просто получать и исполнять код, находящийся в локальном справочнике.
Проверено на платформе 8.3.13.1690.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
3050 руб.
22.04.2019 124975 739 207
2196 руб.
18.01.2017 152705 235 237
06.10.2026 1923 54 aleksandrboldyusov 0
1 стартмани
13.02.2026 4161 informa1555 5