Попытка эмуляции кода 7-ки в 8-ке
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Предупреждаю! Писалось для эксперимента, поэтому содержит очень ограниченный функционал предназначенный для проверки самой возможности. Не является законченным решением.
1. Некоторые стандартные функции как СоздатьОбъект достаточно просто реализовать в глобальном модуле.
В данном случае реализовал только для создания справочников. На самом деле вызывается "статический" метод у обработки который создает объект внешней компоненты, которая по сути "прокси" для вызова методов и атрибутов из объекта обработки которая является ссылкой внутри объекта компоненты. Вот такая немного запутанная формулировка, но дальше будет понятней.
Функция СоздатьОбъект(ИмяОбъекта) экспорт
Рез = "";
ДлинаСправочник = СтрДлина("Справочник");
Если НРег(Лев(ИмяОбъекта,ДлинаСправочник))="справочник" Тогда
Рез = Обработки.Справочник.СоздатьПоИмени(Сред(ИмяОбъекта,СтрДлина("Справочник")+2));
КонецЕсли;
Возврат Рез;
КонецФункции
2. Сразу покажу как работает пример для тестирования. Пример простой и выглядит полностью как в 7-ке. Естественно в реальности будет много нюансов.
Процедура ТестСправочникаНажатие(Элемент)
Товары = СоздатьОбъект("Справочник.Номенклатура");
Товары.ВыбратьЭлементы();
Пока Товары.ПолучитьЭлемент() = 1 Цикл
Сообщить(Товары.Наименование);
Сообщить(Товары.Реквизит1);
КонецЦикла;
КонецПроцедуры
3. Работает это так. Когда я обращаюсь к Товары.ПолучитьЭлемент(), то из компоненты происходит вызов функций
Обработки.Справочники.КолвоПараметровМетода(ИмяМетода)
Обработки.Справочники.ВызватьФункцию(ИмяМетода)
... ИначеЕсли ИмяФункции = "ПолучитьЭлемент" Тогда ...
Или когда запрашиваю атрибут
Товары.Реквизит1 , то вызываются
Обработки.Справочники.ПолучитьСвойство(ИмяСвойства)
Обработки.Справочники.УстановитьСвойство(ИмяСвойства,Значение)
Таким образом почти вся логика слоя совместимости ложится на код 8-ки и это позволяет разработать внешнюю компоненту не содержащую специфичного кода для каждой конфигурации...
Вступайте в нашу телеграмм-группу Инфостарт