gifts2017

"Троянский конь" или "скрытые" возможности таблиц 1С

Опубликовал Юрий Тимофеев (Tatitutu) в раздел Обмен - Загрузка и выгрузка в Excel

Маленькие хитрости по "взаимодействию" 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 = "До свидание...на память"; 

Если кому нужен совет или помощь - пишите в личку (вместе решим)

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Андрей (Свой) 17.12.09 12:34
эту бы энергию, да мирных целях :)
2. Роман Ершов (MRAK) 17.12.09 12:37
(0) эх... кризис, походу у тебя, раз такой ерундой маешься....
3. larissa builova (larisab) 17.12.09 12:42
(0)
На этом мой "курс" по EXCEL на этом сайте заканчивается - больше не буду отвлекать Вас от важных дел. Я всем сердцем понимаю , что Вы это все безусловно знаете и знали еще тогда когда солнце было молодым, но все равно напишу хоть для себя , чтобы не забыть

Нет, многие не знают. Многим нужно. Это прекрасная серия статей. Продолжай, пожалуйста!!!
4. Юрий Тимофеев (Tatitutu) 17.12.09 12:42
(2) таки да... зубов нет, зрение ослабло...песок - зато не скользко
susorov; gaglo; ACE$; +3 Ответить 1
5. Роман Ершов (MRAK) 17.12.09 12:44
6. larissa builova (larisab) 17.12.09 12:45
(1)(2)
Лукавите, господа! Часики и рабочие столы вам не кажутся такими уж бесполезными ;) Про иконки я уже не говорю - это вообще хиты :D
7. Василий (ded00786) 17.12.09 13:57
Ща добрые люди наплодят макровирусов из 1С :D
А статья - отличная, кратко и по делу....
Tatitutu; +1 Ответить
8. Murat Кертмен (Kertman) 17.12.09 16:24
Долго искал применение к екселю и на тебе на блюдечке, с синей каемочкой. :)
9. Юрий Тимофеев (Tatitutu) 17.12.09 16:28
(8) что искал - расскажи (подскажу) или вместе запустим
10. Дониэла Иванова (Доня) 17.12.09 19:52
Ставлю плюс
Поигралась чуть-чуть, но для меня это пока сложно, надо долго доходить.
Даже такие возможности, как вставка в таблицу "екселя" уже заманчиво.
Програмного язака я не знаю, а вот в XLS работаю давно.
Это конечно мне пригодиться.
Спасибо
11. Дима (Димча) 17.12.09 19:56
Да. 1С без окружения - это уже не интересно.
Однозначно полнезная информация !!!
12. Дониэла Иванова (Доня) 17.12.09 20:35
Автору:
Теперь при входе в XLS всегда высвечиваетсч панель Формат_1С
А как ее убрать совсем
Я убираю через сервис/... а при новом открытии XLS она опять есть
Куда зайти и удалить ее, где она прячестся?
Она мне мешает пока
13. Вячеслав Кадацкий (marsohod) 18.12.09 01:22
Доходчиво :)
Как бы не началось движение 1С-хак :D
Tatitutu; +1 Ответить
14. Сергей (Che) Коцюра (CheBurator) 18.12.09 03:12
за код
имяпапки="c:\ljrevtync унд сеттингс итд "- тебя рас пять надо...
15. Сергей (Che) Коцюра (CheBurator) 18.12.09 03:17
на самом деле, суть этих вещей была бы легко понята если бы изучали наследие матсеров, так сказать...
http://www.infostart.ru/public/14134/
1.0 (17.10.2005, выложена в общий доступ), на Исе 08.06.2006 - сделал по решению Абрахамса - голову ломал минут 10...
16. Александр Рытов (Арчибальд) 18.12.09 07:41
(14)
тебя рас пять надо...
:oops:
17. Юрий Тимофеев (Tatitutu) 18.12.09 08:44
(12) посмотри код - так указан путь как пишет уважаемый (14)
и там удалите файл Personal.xls - это и есть личная книга макросов.
(14) я понимаю Вашу агрессию, но чем она вызвана ))) - это пример
ту строчку Имяпапки .... мог бы написать 16 -ю различными способами
- пример из (12)
18. Борис Скворцов (gaglo) 18.12.09 09:54
...разоблачение магии все-таки наступило! Рад. Доволен. Пишите ещё. Да побольше!
19. Ярослав Радкевич (WKBAPKA) 18.12.09 10:51
Статья однозначно полезная. Автору плюс
20. Дониэла Иванова (Доня) 18.12.09 12:25
(17) Прошу, напишите мне путь дословно, не могу найти!
21. Юрий Тимофеев (Tatitutu) 18.12.09 15:48
(20)
Как удалить панель РАЗ И НАВСЕГДА

е EXCEL правой кнопкой по любой панели инструменов (например по слову "файл")- настройка - Панель инструментов - выбрать "Формат_1С" удалить.

удалить вот этот файл:


"C:\Documents and Settings\ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ\Application Data\Microsoft\EXCEL\XLSTART\PERSONAL.XLS";

или
Запустить обработку из шапку "Удалить книгу макросов"
22. Алексей Быков (strax) 19.12.09 15:33
это шутка такая Новогодняя ? - ведь этого не пожет быть в принципе
можнаж скорее всего
на третьем рисунке в коде написано
Привет посетилю , а на пятом рисунке уже Привет посетителю
Но развод прикольный, если бы все мечты были явью
23. Юрий Тимофеев (Tatitutu) 21.12.09 15:06
(22) Ну что за люди ?
Какой монтаж где и причем тут развод ?
24. Александр Маляев (maljaev) 22.12.09 13:24
(22) Что конкретно тебя удивляет? И о чем твои мечты? Аффтару респект, всё вроде как логично но мысль внедрять макросы в объекты почему-то не приходила. Люблю я всякие извраты, но чисто в порядке хобби.
larisab; PeRom; Tatitutu; +3 Ответить 1
25. Юрий Тимофеев (Tatitutu) 22.12.09 14:37
(24)
Люблю я всякие извраты, но чисто в порядке хобби

ну вот прям, мою мысль озвучил. Спасибо
26. Сергей Лосников (Lars Ulrich) 23.12.09 15:25
27. vesax (vesax) 23.12.09 20:38
28. Владимир Мелещенко (vligm) 24.12.09 11:20
29. Юрий Тимофеев (Tatitutu) 24.12.09 12:47
(28) ну как интереснее стало, что сам нашел и без подсказки ?
30. Владимир Мелещенко (vligm) 24.12.09 13:06
31. Александр Шишкин (Шёпот теней) 29.12.09 23:00
ТиТаТуТу ... не могу тебе написать сообщение в личной карточке.... выдаЁт ошибку ...

... всЁ хорошо ..? ... всЁ хорошо..! ...
... рад за тебя ... с Уважением к тебе Александр Шишкин (Шёпот теней) ...

... вот ...

32. Olga (Джиневра) 06.01.10 14:05
Спасибо, спасибо. Как раз искала: как обратиться программно к объекту Лист Эксель. А все - как всегда - легко и просто оказалось :)
Даже расскажу для чего использовала объект: для вертикального вывода текста в печатной форме. Ну, вдруг кому идея пригодится.
ЗЫ. Да, и про 25-й релиз я в курсе... ну просто: вдруг нет возможности обновиться, а использовать вертикальный текст хочется... тогда можно и этим объектом обойтись ;)
33. Алексей Кирюшин (int18h) 12.01.10 20:24
Гыг... Эдак подытожу за всех: колбасим оле злой мегакулхацкерскийсуперсистемадробильныйпаролетырующий сервер тарим гденть затем ваяем инклудер автоматом интегрирующий оле объект в мxl... Конфикер курит, убыдки миллиардные, бухи пачками стреляются и выкидываются из окон... И наступит АРМАГЕДОН. :) (дядь Жень матай на ус...)
34. Сергей Степанюк (modul) 15.03.10 23:46
Я так понял сдесь описана работа с оле объектом.
35. Виталий (Zergil) 08.06.11 21:57
За оле объект ничего не скажу, а вот скрин модуля интересен возможностью свертки структур(процедур, прочих операторных скобок) в семерке. Что это за приблуда и где ее посмотреть можно?
36. Сергей (Che) Коцюра (CheBurator) 09.06.11 01:02
Это и еще куча всего, что делает 8-ку совершенно ненужной %-)
http://infostart.ru/public/15540/
Andris_infostart; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа