gifts2017

Как из 1С правильно УКАЗАТЬ MS EXCEL как нужно печатать документы !

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

У кого не вызывала злость следующая ситуация - красиво отформатированная печатная форма - очень элегантно смотрится в 1С (*.mxl), но НАЧАЛЬНИКУ нужно послать в формате MS EXCEL (*.xls). Что мы делаем? Файл- Сохранить как...- сохраняем в *.xls отправляем ШЕФУ и тут звонок...."Ты видел что ты мне послал ???"
Знакомо :-) ?

Сразу предупреждаю, что это не программа, а рассказ - как пошагово добиться нужного результата. Одна из идей, а не панацея (с рабочим примером). Предложите лучшую - буду премного благодарен.

Рассказ для платформы 7.7 (результат проверен на WIN XP и MS OFFICE 2003)

Начнем...

Все Вы отличные программисты и всегда в программном коде для вывода на печать печатной формы писали типа...

ТП=СоздатьОбъект("Таблица");
.....
ТП.Опции(,,,,,,,);
ТП.ПовторятьПриПечатиСтроки(,);
ТП.ПовторятьПриПечатиСтолбцы(,);
ТП.ПараметрыСтраницы(,,,,,,,,,,,);
....

Ну и так далее...

Красиво форматировали макет (объединяли строки, столбцы, задавали направление текста вертикальное...), выводили на печать и все это радовало глаз (в 1С). Но, увы, при сохранении в формате *.xls многие форматы новоиспеченный документ забывал. И приходилось опять вручную форматировать таблицу.

Но мы же с Вами программисты! Давайте облегчим нашу работу....

Итак, нужно как-то передавать в EXCEL параметры форматирования (отображения) документа.

Для этого выберем старый проверенный способ - строковой параметр, разделенный запятой.

    1. Где его хранить (параметр в сохраненном документе) ?

  • Как вариант, записывать в ячейку (пусть будет А1)
  • Чтобы не отображался параметр при печати из 1С, цвет шрифта сделаем равным цвету фона таблицы
  • А как наш параметр будет отличаться от другого текста? Пусть начинается с префикса "1С,"

     2. Как его передавать в нужную таблицу ?

  •  Для этого напишем процедуру в глобальном модуле или модуле формы объекта

         ДобавимПараметрыДляФорматаВЭксель

        (Таб,               //Макет таблицы в которую нужно поместить метку

         ФиксСтрок="",      // Число, сколько строк нужно закрепить в окне EXCEL

         ФискСтолбцов="",   // Число, сколько столбцов нужно закрепить в окон EXCEL

         ФлагЗакрепОкна="", // 0 - не закреплять, 1 - закрепить разделитель окна

         ПовторСтрНач="",   // начальная строка для повтора при выводе на печать

         ПовторСтрКон="",   // конечная строка для повтора при выводе на печать

         ОриенСтр=""        // ориентация страницы, 1 - портрет, 2 - ландшафт

         ) Экспорт
 
Таким образом мы с Вами добились, что нужные документы в 1С имеют "секретный пакет" для EXCEL, но, а он-то не знает, что со всем этим делать ?

Для этого в MS OFFICE существуют макросы (на языке VBA). Например есть предопределенный макрос Workbook_Open(). Все, что будет написано в его процедуре, будет выполнятся при открытии новой книги EXCEL.

Правда, я думаю, не разумно будет каждый документ проверять на предмет наличия параметра из 1С, поэтому добавим командную панель с кнопочками, при нажатии на которую документ будет моментально "приводиться" к нужному виду.

В прилагаемой обработке НастройкаТаблицыВЕхсель - сама процедура ДобавимПараметрыДляФорматаВЭксель() и пример работы. Отредактируйте ее под себя или просто скопируйте. Запустив обработку, у Вас в Вашем EXCEL добавится командная панель , как на рисунке.

(кстати как она появляется, предлагаю выяснить Вам, как домашнее задание - очень иногда бывает полезный пример - 1 из вариантов я уже описывал http://infostart.ru/public/19983/ )

 

Если будет интересно для Вас, добавлю другие шаблоны.

 

ОТВЕТ (решение задачи - статья)

Как удалить эту дополнительную панель РАЗ И НАВСЕГДА

  • В EXCEL правой кнопкой по любой панели инструментов (например по слову "файл")- настройка - Панель инструментов - выбрать "Формат_1С" удалить.
  • Или удалить вот этот файл:
     "C:\Documents and Settings\ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ\Application Data\Microsoft\EXCEL\XLSTART\PERSONAL.XLS";
  • Или запустить обработку из вложения к этой публикации ("Удалить книгу макросов")

Скачать файлы

Наименование Файл Версия Размер
НастройкаТаблицыВЕхсель.ert 294
.ert 41,00Kb
19.02.12
294
.ert 41,00Kb Скачать
Удалить книгу макросов 25
.ert 6,50Kb
19.02.12
25
.ert 6,50Kb Скачать

См. также

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

Комментарии

1. Борис Скворцов (gaglo) 15.12.09 15:37
Уважаемый Автор! Раз уж тема Экселя настолько интригует... Почему не сделано последних полшага упрощения? Не надо добавлять командную панель, на которую еще нужно и "нажатие" вручную. Надо сделать - в 1С - собственную кнопку "Сохранить в Эксель", которая будет впихивать в соответствующий файл (только сохрненный из 1С) процедуру Auto_open, которая (процедура) будет делать всю черновую работу, которую ВЫ (или кто-то) ей поручите, и которая (кнопка) будет запускать Эксель с загрузкой сохраненного файла; в Конце Концов, обходить уровень безопасности МС Офиса Вы уже умеете; и вот - нажав на кнопку 1С, всего лишь после некоторого ожидания (и без новых нажатий) получите уже приведенный к нужному виду документ...
PS а ЧТО, 7.7 настолько много форматов забывает? Я никогда с ней не работал, всё 8.0-8.1-... Там вроде красиво сохраняется в формат Эксель...
2. Юрий Тимофеев (Tatitutu) 15.12.09 15:51
(2)
которая будет впихивать в соответствующий файл (только сохрненный из 1С) процедуру Auto_open

не есть правильно, в каждой книге хранить макрос , а Auto_open вообще зло...
а если человеку нужно отправить по почте ?
я написал - это не есть ПРОГРАММА, это вариант - хороший вариант упрощения ручной работы.

в Конце Концов, обходить уровень безопасности МС Офиса Вы уже умеете

:D я давнно это умел, наверное с рождения )))
В данном случае представлен пример , который не снимает УРОВЕНЬ БЕЗОПАСНОСТИ МАКРОСОВ, а просто игнорирует штатными средствами офиса и если разобрать сам пример....кто знает тот поймет.

Почему не сделано последних полшага упрощения?

Каждый должен сам выбрать и сделать СВОЙ шаг...

Я никогда с ней не работал

так даже и не скачал файл, а судишь и судишь по шаблону - здесь немного другая ситуация....
в этой простой обработке показан пример , как во внешнем отчете
можно "скрытно" записать процедуры и функции на языке VBA и запускать на компьютере пользователя. Я видел много разработок в которых использует файл шаблона EXCEL c макросами.

7.7 настолько много форматов забывает?

- закрепление строк и столбцов (шапка документа при прокрутке остается на месте
- ориентация страницы
- повторяющиеся строки при печати
- отображение сетки и заголовков
- объединение (разъединение) объединенных ячеек
- меняет направление вертикального текста

- можно добавить колонтилы
- можно добавить нумерацию листов
- можно добавить фильтр с условиями
- можно сделать группировку строк
- можно добавить формулы
- сжать размер в РАЗЫ
- можно сделать практически все

в теме показан принцип решения рутинной задачи.
3. Parazyte (Parazyte) 15.12.09 20:36
4. Александр Цегельников (markers) 16.12.09 04:28
Цитата
которая будет впихивать в соответствующий файл (только сохрненный из 1С) процедуру Auto_open


не есть правильно, в каждой книге хранить макрос , а Auto_open вообще зло...
а если человеку нужно отправить по почте ?
я написал - это не есть ПРОГРАММА, это вариант - хороший вариант упрощения ручной работы.

Вообще-то можно засунуть макрос в книгу, исполнить его и снести. я так делал!
5. Василий (ded00786) 16.12.09 08:36
4
Вообще-то можно засунуть макрос в книгу, исполнить его и снести. я так делал!


Хорошая мысль
6. oleg oleg (legioner) 16.12.09 09:08
Очень правильное решение
7. Борис Скворцов (gaglo) 16.12.09 09:32
(2)
не есть правильно, в каждой книге хранить макрос

и ещё раньше:
не разумно будет каждый документ проверять на предмет наличия параметра из 1С

... а вот командную панель с кнопочками добавить и разумно, и правильно? Ну не понял, почему так проведена граница.
Auto_open - зло, согласен; но написал так, для примера; markers вот подытожил, как надо бы делать.
так даже и не скачал файл, а судишь и судишь по шаблону - здесь немного другая ситуация....

... а тут я чего-то не понял... не понял... Не скачал, ибо куда мне его девать? Ясно же написал я, что с семеркой не работаю. И что значит "судишь"? Я минус влепить не пытался. Не судил. А обсуждал. Моя мысль: описанный в статье метод требует двух нажатий на кнопки: раз в 1С и второй уже в Екселе. Его можно улучшить, убрав необходимость в Екселе что-то нажимать.
Или статью надо было назвать "Как из 1С правильно запихнуть новую командную панель в Ексель"? В этом отличие ситуации?
Ну ладно, нешаблонный ход делаю: ставлю плюс, пока могу, и файл скачаю; запустить не смогу, так хоть распотрошу и до текста модуля доберусь. С найлучшими пожеланиями.
8. Юрий Тимофеев (Tatitutu) 16.12.09 09:33
(4)
Вообще-то можно засунуть макрос в книгу, исполнить его и снести. я так делал!


можно , кто же спорит...но
- создавать в каждой книге макрос, а потом его удалять
(думаю в моем данном примере способ более элегантый)

- во вторых в твоем способе "На примере MS EXCEL если в файле есть макрос. То при открытии книги появится вопрос (открывать или не открывать) и предупреждение "типа макросы отключены". Все по честному...в настройках имеется 4 уровня безопасности (Очень высокая,Высокая,Средняя и Низкая)" - ты открываешь дыру в ОФИСЕ
так если уровень безопасности выше Низкой, то ТВОЙ макрос не запустится. Знаю обойти можно, но опять же для каждого документа....лишняя трата времени

- можешь выложить пример или это только слова ?
9. Юрий Тимофеев (Tatitutu) 16.12.09 09:41
(7) Я тоже рад тебя снова слышать. Привет.

Моя мысль: описанный в статье метод требует двух нажатий на кнопки: раз в 1С и второй уже в Екселе. Его можно улучшить, убрав необходимость в Екселе что-то нажимать.


нет немного не так ты понял
- панель создается один раз (фишка как она создается - это намек)
- а потом ВСЕ печатные формы из 1С (имеющие параметр) - одним кликом форматируются, преобразовываются именно так , как нужно нам.

Вот сам проанализируй пример :
- пользователь сформировал отчет в 1С, сохранил его где то в EXCEl
открывает его (если таблица не стандартная) то
- для печати задает поля печати, область печати, какие строки нужно повторять на каждой странице, ориентация страницы, какой принтер, сколько копий, каких копий, колонтитулы - сколько времени у него зайдет (а если таких документов от 100 и больше)
И ты заходите Вы и нажимаете кнопочку (или настраиваете на автораспознование - да Вас на руках носить будут - правда не долго, быстро к хорошему привыкают.
10. Игорь Исхаков (Ish_2) 16.12.09 09:52
Засиделся ты на 77. Не скучно ?
11. Илья Ануфриев (aipnnov) 16.12.09 09:56
А если нет Exel не установили потому что дорогой, а шефу необходимо отправить именно в формате .xls, тогда как?
12. Юрий Тимофеев (Tatitutu) 16.12.09 09:58
(10) да ладно...
Как то уже отвечал кому- то

8-ка - это работа, а 7 - это для души (хобби+EXCEL)

13. Юрий Тимофеев (Tatitutu) 16.12.09 10:03
(11) Я же написал в шапке - что это пример разработки алгоритма.
Не нужно искать причины и отговорки, нужно думать.
Есть цель и задача должна быть выполнена.

А если нет Exel не установили потому что дорогой, а шефу необходимо отправить именно в формате .xls, тогда как?

и что он (ШЕФ) с этим файлом будет делать или у него дома пиратка ?

- а если нет 1С, как сформировать отчет для шефа
- а если нет компьютера
- а если нет шефа
- а....
искать и применять другие решения , автоматизировать процес
- Шеф, будет Еxcel - напишу программу которая из отчетов будет ляльку делать (не экономь)



14. Илья Ануфриев (aipnnov) 16.12.09 10:24
(13) Я понимаю, что мы "любим" офис и стоим на том, что каждый должен его иметь в офисе и дома, чтобы этот пример алгоритма использовать, и желательно "1С версии 6.0 или счеты с костяшками" для души так сказать...

- Шеф, будет Еxcel - напишу программу которая из отчетов будет ляльку делать (не экономь)


Если ты так разговариваешь со своим шефом, то я тебе не завидую...

Если что либо предлагать, хоть пример, связывая 1С со сторонним ПО нужно учитывать универсальность, кто-то ведь будет использовать данный пример.

Почему-бы не представить пример алгоритма, для того-же самого сохранения в xcel через ООо или другие бесплатные альтернативы офиса.
15. Юрий Тимофеев (Tatitutu) 16.12.09 10:31
(14)
Если ты так разговариваешь со своим шефом, то я тебе не завидую...

и не завидуй - зависть еще никого до добра не доводила
Я - ШЕФ
(и сам с собой только иногда разговариваю)

Смотри, что в шапке написано:
Сразу предупреждаю это не программа, а рассказ - как пошагово добиться нужного результата - одна из идей, а не панацея (с рабочим примером)

Илья - ты ТОЖЕ даже не скачал файл и выражаешь свое мнение субъективно, ты скачай и сам - найди и расскажи , каким образом - формируется КОМАНДАЯ ПАНЕЛЬ "ФОРМАТ_1С"
- только не говори , что с ключешками не работаешь , и EXCEL нет.


Почему-бы не представить пример алгоритма, для того-же самого сохранения в xcel через ООо или другие бесплатные альтернативы офиса.


так представь - молодым у нас дорога и работы не початый край. Удачи.
16. Борис Скворцов (gaglo) 16.12.09 11:14
(9) - ну смутил ты мой покой!
Докладываю, что домашнее задание выполнил, даже без семёрки.
Действительно, настройка безопасности Офиса лихо обойдена.
При старте обработки (ПриОткрытии, что ли - форму в целом я не вижу) просто записывается в одно нужное место файловой системы заранее заготовленный файл Екселя , да так, что Ексель при следующем своем запуске, без вопросов, открывает его вперед всех нужных и ненужных файлов; а в файле том есть как раз названная в статье Workbook_Open() функция, и она опять же без вопросов втыкает Екселю новую панель имени тебя; и в мой Ексель уже попала такая панель; только панель у меня не работает, ибо рабочий каталог Ексель не соответствует твоим предположениям, макросы не находятся.
Но! Уж извини, элегантного во всем твоем способе нашел только одно: как спрятан в обработке готовый файл Екселя; я б до такого не додумался. (Теперь запомню!). А рожать новую панель в бедном Екселе - ну, ИМХО, неэлегантно.
У моего "улучшения" же - есть один недостаток вельми большой: кнопку сохранения в Ексель надо делать нестандартную. И небось ко всем отчетам по отдельности привязывать. И на нем я ни капельки не настаиваю.
17. Юрий Тимофеев (Tatitutu) 16.12.09 11:23
(16) Ну вот - совсем другое дело !!! Спасибо.
Но! Уж извини, элегантного во всем твоем способе нашел только одно
ты не поверишь, а это и есть сама суть этой обработки (мой маленький секретик)

а то что:
Ексель при следующем своем запуске, без вопросов,

в этом нет никакого секрета, вопрос на запуск макроса задается офисом - если только он находится в локальной (открываемой) книге, если же он находится в личной книге МАКРОСОВ - да есть и такая) то все хорошо, но не из EXCEL ни из 1С - программно не запишешь макрос в личную книгу МАКРОСОВ - я в этом примере показал спобоб обхода.

и в мой Ексель уже попала такая панель; только панель у меня не работает

там всего то делов поправить строчу , место сохранения и усе )))
18. Александр Рытов (Арчибальд) 16.12.09 11:26
Разберем ексель на элементарные частицы! :D
19. Сергей Огородников (Serg O.) 16.12.09 12:13
Если директору надо... есть дополнительный стимул
ПЕРЕВОДИТЬ весь учет на 8-ку (с нового года особенно!)

хочет красоты - пусть раскошеливается

кстати до кучи и компы обновить надо... мол 8-ка на "г..." - не работает,
иииизззвииинитеееее......

а так конечно можно левой рукой правое ухо чесать
и изворачиваться кто как умеет,
но это проблемы с ТАКИМ боссом - не решает!
(есть такой личный опыт, к сожалению)

Дави на кошелек и точка!

или сработает или свои "хотения" требования к тебе лично поубавят...
20. Vera (vera024) 17.12.09 16:49
очень удобно. Спасибо :)
Tatitutu; +1 Ответить
21. Илья Ануфриев (aipnnov) 18.12.09 09:57
Я посмотрел очень внимательно, давно уже не прикасался к 7.7 поэтому пришлось кое-что вспомнить. Молодец, ставлю +.
22. Сергей (Che) Коцюра (CheBurator) 19.12.09 02:01
все это можно и нужно рассматривать как "финты" и обучаловку - что, несомненно, полезно. Больший вопрос вызывает необходимость перекидки чего-то в эксель... это востребовано в соновном там где "бизнес-процессы" не "устоялись" или пока что непонятно что и как - вот и крутят в экселе пытаясь вытащить "что и как".. как только становится ясно - нафиг эксель, все считаем/показываем в 1Ске... ПО ВОЗМОЖНОСТИ!
23. Юрий Тимофеев (Tatitutu) 19.12.09 10:02
(22) в последнее время много "брожу" по стране... и могу точно сказать ответить тебе на фразу
"это востребовано в соновном там где "бизнес-процессы" не "устоялись"

да это так и правильлно, но

если сравнить по количеству использования EXCEL и 1С - у 1С шансов на успех намного меньше, во многих местах об 1С вообще не слышали и подозревают, что 1С есть и успешно существует, но за то EXCEL - это ЦАРЬ и БОГ - "основная офисная" программа.
24. larissa builova (larisab) 19.12.09 12:19
(22) У меня есть клиенты, которые используют 1С 77 по минимуму. Все остальное ведется в excel, масса отчетов и расчетов для отчетности в другой стране. Периодически просят различные выгрузки-загрузки. Перетаскивать в 1С их учет нет надобности, просто не профинансируют. Выгружать я конечно умею, а вот сделать дальнейшие манипуляции с данными в екселе научится надо. Немало клиентов существуют на зарубежные гранты - у них тоже актуально. В банках, пенсионных фондах excel один из основных инструментов.
25. D (d_z_k) 21.12.09 14:40
Хочу сказать, что эта тема вышла с ИТС диском за Декабрь 2009, и там есть все описание, то что здесь выложенно!!! :o
26. Юрий Тимофеев (Tatitutu) 21.12.09 14:59
(25) 8-) :o ссылку(копипаст) скинь мне в личку если не трудно, ИТС давно уже не видел и не смотрел. Заинтриговал. Напиши в каком разделе
(только что выборочно посмотрел - нет там ничего похожего) Поправь меня если это не так.
27. Олег С (slimuz) 15.07.16 06:55
А на 1С 8 как передать параметры форматирования при сохранении в .xlsx ? Как найти модуль отвечающий за сохранение ?
28. Валерий (aka AMIGO) 15.11.16 15:18
Файл PERSONAL.XLS в обработке не выводится. В отладчике видно, как процесс наступает на Объект.SaveAs(ИмяФайла):
Попытка
Объект.SaveAs(ИмяФайла);
Исключение
Сообщить("Облом-с!");
КонецПопытки;
и сообщает про облом.
Файла нет.
29. Юрий Тимофеев (Tatitutu) 16.11.16 12:20
(28) aka AMIGO, спасибо
но это статье более 6 лет и MS EXCEL уже не тот ))) и права нужно другие для пользователя.
Все работает - тут показан принцип (так сказать идея)
30. Sergey Andreev (starik-2005) 16.11.16 12:52
Отправляйте начальникам в HTML - будет круто!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа