gifts2017

Суммирование (среднее, минимум, максимум, количество чисел) выделенных ячеек отчетов, печатных форм, да и других приложений. Для

Опубликовал Александр Венгер (venger) в раздел Программирование - Практика программирования

Демо конфигурация для системы 1С:Предприятие 7.7

Суммирование (среднее, минимум, максимум, количество чисел) выделенных ячеек
отчетов, печатных форм, да и других приложений.

(c) Venger Alex, Odessa, 2008

Last Update: 29.06.2008

Идея проста: при копировании в буфер обмена (Clipboard) выделенных
ячеек таблиц в буфер обмена попадают текстовые данные (ячейки по
столбцам разделены символами табуляции, по строкам - символами переноса
строк). Соотвественно, можно взять из буфера обмена этот текст, выделить
числа и произвести соотвествующие математические манипуляции с числами
и вывести результат (в строку состояния, например).

Использование тоже просто: открываете конфигурацию в режиме программы,
включаете какой-либо режим просмотра (кнопки на панели инструментов или
пункты меню Режима просмотра), запускаете отчеты и выделяете нужные
ячейки отчетов, копируете их в буфер обмена (Clipboard) и видите в
строке состояния результат. При в ключенном режиме (кроме обычного),
опрос буфера происходит каждые 100 милисекунд, если в буфере появились
текстовые данные, то они добавляются к уже скопированным и происходит
пересчет с учетом добавленных данных, буфер при этом очищается, для
того, чтобы определить новые скопированные данные. Таким образом можно
суммировать и т.д., не связные диапазоны таблиц, выделяя нужные ячейки
и копируя, несколько раз подряд. Если нужно начать заново, то нажимаем Сброс.
Если необходимость в суммировании (или других режимах исчерпана), то стоит
перейти в обычный режим (кнопка на той же панели инструментов или пункт меню
Режима просмотра), для того, чтобы не происходило очищение буфера, если
туда попали текстовые данные. При закрытии 1С, естественно опрос буфера
прекращается, и режим становится обычным.

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

Как приятное следствие, Вы можете скопировать ячейки из одного отчета, потом
из другого, а потом, вообще, из открытого листа Excel, например, или Word,
или Блокнота, и это все будет проссумировано (или другое, в зависимости
от режима) и результат выведен в строку состояния.

При написании использовалась внешняя компонента AddIn_V7MyClipboard.dll.
Автор: Venger Alex, Odessa, 2008
Url: http://infostart.ru/projects/2149/

При написании использовались функции для 1С:Предприятие 7.7
в глобальном модуле предоставленные by Sergey Popov, Usinsk,
Komi.

При написании использовалась внешняя компонента FormEx.dll.
Автор: АЛьФ
Url: http://www.dorex.ru/files/?formex_t.zip

Эти две функции стоит из глобального модуля удалить
(смысла в них нет для данной задачи, но ресурсы жрут):

/

/---------------------------------------------------- Процедура

ПриДвиженииМыши(Конт,Сост,КоординатаПоГоризонтали,КоординатаПоВертикали,ФСО) 

гл8ВывестиРасчетыClipboard();

КонецПроцедуры //---------------------------------------------------- //---------------------------------------------------- Процедура

ПриНажатииКнопкиКлавиатуры(Конт,КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО) 

гл8ВывестиРасчетыClipboard();

КонецПроцедуры //---------------------------------------------------- 

 

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

Наименование Файл Версия Размер
SumCells 61
.1214745059 515,15Kb
25.09.09
61
.1214745059 515,15Kb Скачать

См. также

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

Комментарии

1. Venger (venger) 02.07.08 11:20
Эти две функции стоит из глобального модуля удалить
(смысла в них нет для данной задачи, но ресурсы жрут):

Код
 //----------------------------------------------------
Процедура ПриДвиженииМыши(Конт,Сост,КоординатаПоГоризонтали,КоординатаПоВертикали,ФСО)
        гл8ВывестиРасчетыClipboard();
КонецПроцедуры
//----------------------------------------------------

//----------------------------------------------------
Процедура ПриНажатииКнопкиКлавиатуры(Конт,КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО)
        гл8ВывестиРасчетыClipboard();
КонецПроцедуры
//----------------------------------------------------
Показать полностью


fixxxer834; motogon; +2 1 Ответить
3. DAVID (СССР) 13.08.09 11:28
Вот это действительно достойно. Не знал.
4. Cerebellum (Cerebellum) 15.10.09 16:38
Как бы это все внести в свою конфигурацию. Я не программист, но элементарные действия сделаю.
Пробовал перенести данные из глобальника в глобальник - не получается, а очень нужно.
5. Александр Венгер (venger) 15.10.09 17:14
(4) Давайте так, сегодня-завтра, напишу описание, как внедрить в свою конфу по шагам и выложу.
6. Александр Венгер (venger) 16.10.09 21:11
(4) Глянул, освежил память, инструкцию писать и смысла то нет;) Все очень просто. Помимо кода из глобальника, возьмите файлы: "AddIn_V7MyClipboard.dll" (более свежий можно тут качнуть: http://venger.narod.ru/storage/1Cv77_V7MyClipboard_dll.zip, хотя и тот, что в архиве лежит, тоже пойдет) и "formex.dll" (качнуть можно вот тут, например: http://www.dorex.ru/files/?formex_t.zip) и кладете эти файлы в папку с базой или в папку "Bin" с программой 1С. И еще в интерфейсы пользователей копируете панель инструментов с кнопками из демо-конфы, с теми же формулами в кнопках, иконки по вкусу, да и все... Панельку скопировать очень просто, в окне конфигуратора в демо-конфе, есть вкладка "Интерфейсы", переходите на нее, дважды жмакате мышкой на интерфейсе, в демо-конфе это "Новый", выбираете в окошке "Панели инструментов", открывается окно со списком панелей, выделяете панель (она там одна: "РежимПросмотраТаблицы"), правой кнопкой мыши на нее жмакаете, выбираете "Запомнить", потом в свой конфе также в панелях вставляете и все... Единственно что, какая у Вас конфа? Ну например, Вы можете в свой конфе скопировать что-нибудь из ячеек отчета в буфер обмена и вставить в блокнот, например? Если да, то все Ок. Если нет, то у Вас включена защита таблиц. Обычно в типовых в настройках конфы (в режиме программы) должна быть настройка связанная с защитой таблиц, вот, например, в украинской торговле в меню "Сервис"->"Настройка параметров учета" на вкладке "Вспомогательные" галочка "Запретить редактирование таблиц".... Она должна быть отключена... Вроде как все, если что не получается, то спрашивайте...
7. Cerebellum (Cerebellum) 18.10.09 16:28
С библиотеками и интерфейсами как раз все понятно. А вот по поводу глобальника...? Что и куда надо скопировать из демо-кофы? Конфигурация нестандартная, написанная с нуля. Копировать в начало или в конец? Все подряд или не все? И т.д.
8. Александр Венгер (venger) 19.10.09 12:11
(7) В своем глобальнике ищете последнее объявление глобальной переменной, т.е. последнюю надпись типа "Перем ИмяПеременной Экспорт;", после нее у Вас в глобальнике должны начинаться описания/определения функций и процедур, вот сразу после этой надписи и перед функциями вставляете все, начиная у меня с раздела "Глобальные переменные" и до раздела "Предопределенные процедуры", но их не включая. В разделе "Предопределенные процедуры", ищете у себя в глобальнике процедуру "ПриНачалеРаботыСистемы()" и в начало ее, но после объявления в ее теле переменных, если таковые есть, обычно они объявляются так "Перем ИмяПеременной;", вставляете код, который у меня в этой процедуре прописан, это загрузка внешних компонент. Процедуры "ПриДвиженииМыши" и "ПриНажатииКнопкиКлавиатуры" вставлять не надо, а последнюю строчку, раздел "Тело модуля", вставляете в конец своего глобальника. Все.
Cerebellum; +1 Ответить
9. Cerebellum (Cerebellum) 22.10.09 19:35
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа