Вход | Регистрация
 

Отсечение правых пробелов при копировании ячейки в буфер обмена. Как улучшить поведение?

Отсечение правых пробелов при копировании ячейки в буфер обмена. Как улучшить поведение?
Я
   TormozIT
 
29.12.20 - 10:50
Конфигурация ПО

8.0-8.3.18, обычная и управляемая формы

Проблема

Платформа 1С при копировании в буфер обмена текста ячейки таблицы или табличного документа отсекаются правые (конечные) пробелы

Воспроизведение

Открыть приложенную внешнюю обработку в управляемом клиентском приложении любой базы. Одинарным кликом (без входа в режим редактирования) активировать единственную ячейку таблицы. Нажать сочетание клавиш CTRL+C. Вставить текст в блокнот. Вставится строка "ф". Двойным кликом войти в режим редактирования ячейки и убедиться, что в ней содержится текст "ф  ". Таким образом в буфер обмена текст копируется с отсечением правых (конечных) пробелов.

Аналогичная ситуация и в обычной форме, которую также можно проверить этой же внешней обработкой.

Ради чего это сделано - понятно. Колонки таблиц БД с типом "Строка фиксированной длины" возвращают строковые значения, дополненные до нужной длины пробелами.Тут действительно вреда от удаления пробелов практически нет, а польза есть. Но такие колонки используются практически только для свойства "Код".

А применяется это поведение и к колонкам переменной длины. Мы получаем вред в том, что нет простой возможности скопировать точно то значение, которое находится в ячейке. Хорошо, если есть возможность войти в режим редактирования строки таблицы и тогда можно скопировать оригинальное значение. Но она есть не всегда. В остальных случаях приходится командой "Вывести строки" выводить ячейки в табличный документ и уже там входить в режим редактирования ячейки и оттуда копировать. Последний способ достаточно не очевиден и многие просто не додумаются до этого.

При анализе проблемных ситуаций я много раз терял время по этой причине. Я копировал из ячейки текст и не видел в нем конечных пробелов, а они там были.

Попробовал найти другие приложения, которые ведут себя подобным образом и не смог. Например проверил EXCEL и Microsoft SQL Server Management Studio, где также есть тип "Строка фиксированной ширины".

Предлагаю применять такое отсечение при копировании в буфер обмена только для колонок с фиксированной длиной строки. Если информации о типе длины строки нет, то не применять.
Реализовал такое поведение в разрабатываемой версии ИР https://www.hostedredmine.com/issues/910752

Возможно у кого еще будут идеи как уменьшить негативный эффект от этого поведения?
   TormozIT
 
1 - 29.12.20 - 10:51
   TormozIT
 
2 - 29.12.20 - 10:54
Скачать внешнюю обработку с примером можно в полном описании проблемы https://www.hostedredmine.com/issues/910780
   polosov
 
3 - 29.12.20 - 11:09
(0) Пишешь, что отсекаются пробелы, потом картинки, что не отсекаются. Непонятное описание.
   Ёпрст
 
4 - 29.12.20 - 11:31
(0) шифт инсерт дает такое же поведение?
   TormozIT
 
5 - 29.12.20 - 12:05
(4) Да
   TormozIT
 
6 - 29.12.20 - 19:38
Неужели больше нет идей?
   Cthulhu
 
7 - 29.12.20 - 20:53
есть идея. перед копированием как-то заменять пробелы на неразрывные пробелы. если надо - то после вставки обратно.
   Вафель
 
8 - 29.12.20 - 22:34
копирование из Ексель еще хуже, там перевод строки зачем-то копируется
   TormozIT
 
9 - 30.12.20 - 00:19
(8) Ты слишком подробно описал проблему. Думаю большинство не поймут о чем ты. Я не понял.
   Злопчинский
 
10 - 30.12.20 - 01:34
(8) из экселя куча мусора копируется. у меня у одного клиента постоянно вылазит непечатаемый символ с кодом 28
   ДедМорроз
 
11 - 01.01.21 - 19:21
А в буфере обмена же есть несколько форматов хранения.
Если хочется подробно,то EnumClipboardFormat и смотрим,что там есть и как оно копируется.
   Конструктор1С
 
12 - 02.01.21 - 06:03
(0) у меня не воспроизводится. Строка копируется с пробелами. Пробовал вставлять в ворд, эксель, блокнот, таб. документ 1с, табличное поле и по всякому между ними, и в конфигураторе и в 1с предприятии. ЧЯДНТ? Может ты какую-нибудь хрень установил на комп, которая в буфере обмена шарится?
   Конструктор1С
 
13 - 02.01.21 - 06:06
"Одинарным кликом (без входа в режим редактирования) активировать единственную ячейку таблицы"

Невнимательно прочитал. А зачем ты так делаешь? В экселе поведение при копипасте выделенной ячейки и выделенного в ней текста тоже отличается
   TormozIT
 
14 - 02.01.21 - 10:33
(13) Зачем я так делаю? Опять же странный вопрос, учитывая то, что в (0) есть ответ =) Ну и кажется даже без (0) ответ довольно очевиден - это единственный простой способ скопировать значение недоступной для редактирования ячейки.
   DES
 
15 - 04.01.21 - 10:59
сорри не по теме, в ИР версии дата года съехала (2000)
   Dmitry77
 
16 - 04.01.21 - 12:55
(14) неправильный способ. Жмем cntr+F. Открывается окно с нужным значением и оттуда копируем с пробелами.
   mistеr
 
17 - 04.01.21 - 13:43
(0) >При анализе проблемных ситуаций я много раз терял время по этой причине.

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

Концевые пробелы — зло, которое проще не замечать, чем бороться с ним. :)
   TormozIT
 
18 - 04.01.21 - 17:20
(17) Почему тогда при входе в режим редактирования ячейки/поля концевые пробелы отображаются? Ну удаляли бы тогда их везде автоматически. Сейчас же нет целостности в подходе. Если копирование ячейки в режиме просмотра выполняется для дальнейшего поиска, то удаление пробелов почти всегда будет полезно. А вот если пользователь копирует с целью сравнения значений или другой чувствительной к длине строки цели, то это для него будет вредно. Железным обоснованием на мой взгляд это сложно назвать. Ну и хотелось бы еще примеров приложений, где сделано подобное поведение. Я так и не смог найти.
   DJ Anthon
 
19 - 04.01.21 - 20:53
Зато при создании базы данных и копирования путя из буфера обмена эта падлина не убирает пробелы, а ведь он чаще всего попадает в буфер с пробелами (например, из тотал коммандера). при массовой обработке, баз так на 50, это сильно напрягает. короче, все в 1С работает наоборот. в семерке буфер обмена и поиск по спискам были намного удобнее.
   DJ Anthon
 
20 - 04.01.21 - 20:54
ни разу за 15 лет работы с 1С не видел необходимости пробелов в конце и начале в адресах баз
   DES
 
21 - 13.01.21 - 13:16
на последнем обновлении перестало работать
ВнешниеОбработки.Создать("C:\Program Files\1cv8\ИР\ирПортативный.epf", Ложь).От(Запрос)
а на Портативный 5.71.3p
работает
   TormozIT
 
22 - 13.01.21 - 17:39


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.