«Троянский конь» или «скрытые» возможности таблиц 1С
Маленькие хитрости по "взаимодействию" 1С и MS OFFICE или — как создать "троянского" коня. Тайное становится явным.
Все нижеизложенное представлено исключительно в поучительных целях, И АВТОР НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ПОСЛЕДСТВИЯ, КОТОРЫЕ МОГУТ ПРОИЗОЙТИ ВСЛЕДСТВИЕ ПРОЧТЕНИЯ ПРЕДЛОЖЕННОГО МАТЕРИАЛА.
- Описание
- Подробнее
Описание
Итак начнем.
Заходим в конфигуратор 1С.
Меню — Файл — Новый (Ctrl+N)- Создадим внешний отчет (обработку)
Переходим сразу на вкладку «Таблица» — на панели инструментов «Редактор таблиц» есть кнопочка «Вставить новый OLE объект«

нажимаем, появится новый диалог

в данном пример нам нужен «Лист Microsoft Office Excel» (для этого на компьютере должен буть установлен Excel)

В таблице появится знакомый Лист1 от Excel.
Выделяем его и нажимаем клавиши ALT+F11 (откроется встроенный редактор VBA).

Не буду далеко вглублятся про язык, методы и свойства VBA…кому нужно сам найдет
Продолжим — в нашем примере — я напишу команду в предопределенной процедуре Workboor_Open() аналогичную команде 1С — Сообщить(«Привет посетителю Инфостарт»). Сохраняем проект, закрываем.
Снова кликнем на объект EXCEL в таблице — скорее всего (по умолчанию) появится следующий диалог про МАКРОСЫ (их использование запрещено или ограниченно). Как обойти — расскажу дальше.

Нажмем «Не отключать макросы» и увидим прямо в конфигураторе окно:

В свойствах объекта пропишем строчку Лист(Таблица.ТекущийОбъект) — можно в Расшифровке, но можно и в Текст (но это другая история).

Переходим в модуль обработки и пишем функцию Лист (а можно и процедуру)
Для примера покажу 2 варианта
1 вариант:
Внедренный объект сохраняем как Личную книгу макросов — получаем ее путь и сохраняем (заменяем) обновляем.
Теперь барьера на использовании макроса на чужом компьютере больше нет — нам будут доступны все возможности EXCEL и VBA.
В конце можно будет удалить.

2 вариант:
Во втором варианте можно вообще ничего не писать, только в меню — Действия — Свойства формы — поставим галочки

И при открытии обработки написать две строки.
Кому интересно:
Пример обработки с 1 вариантом
Пример обработки с 2 вариантом
а также альтернативный (Доступ к VBA из 1С)
Все нижеизложенное представлено исключительно в поучительных целях, И АВТОР НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ПОСЛЕДСТВИЯ, КОТОРЫЕ МОГУТ ПРОИЗОЙТИ ВСЛЕДСТВИЕ ПРОЧТЕНИЯ ПРЕДЛОЖЕННОГО МАТЕРИАЛА
Также возможен доступ к объекту (возможно интерактивный):
// Доступ к листу книги
ЛистКниги=Объект.Sheets("Лист1");
// Доступ к диаграмме на листе
Диаграмма = Объект.Sheets("Диаграмма1");
// Доступ к данным ячейки
ЛистКниги.Cells(1,1).Value = "До свидание...на память"; Если кому нужен совет или помощь — пишите в личку (вместе решим)

