|
Создание аббревиатуры из текстовой строки | ☑ | ||
---|---|---|---|---|
0
ArturR
09.02.13
✎
16:22
|
Подскажите может есть стандартная функция или может какое нибудь типовое решение по созданию аббревиатуры из текстовой строки.
Например: Отдел по ремонту бытовой техники - ОПРБТ. |
|||
28
Живой Ископаемый
09.02.13
✎
17:33
|
2(25) Что приснилось? Что придумал то, что в 10% случаях массив будет сортироваться не так? да, придумали.
|
|||
29
DrShad
09.02.13
✎
17:33
|
(27) опростоволосился ты, когда решил блеснуть знаниями не к месту :))))
|
|||
30
kotletka
09.02.13
✎
17:34
|
1с кстати явно про массив не говорит, но столкнулся с этой проблемой именно на массиве с over 10 тысячами элементов, некоторые элементы почему то добавляло не в конец а произвольно
|
|||
31
Живой Ископаемый
09.02.13
✎
17:35
|
2(24) еще раз, где доказательство того, что массив в случае дл якаждого хоть раз вернет что-то по-другому?
2(30)Я думаю ты врешь, либо просто упустил что, и теперь не хочешь это признавать. |
|||
32
kotletka
09.02.13
✎
17:36
|
и даже спорить небуду, сказал как факт(по крайнеймере для меня), ненравится найдите на итс, то что эта статья есть, это точно факт
|
|||
33
PR
09.02.13
✎
17:37
|
(28) Я сказал ровно то, что сказал.
1. Не для всех коллекций порядок обхода в для каждого будет совпадать с порядком по индексу. 2. Даже если в каких-то коллекциях порядок обхода в для каждого и совпадает с порядком по индексу, то это не является документированным поведением платформы и нет никакой гарантии, что это всегда и на всех платформах так есть и так будет. Всё. Точка. |
|||
34
Живой Ископаемый
09.02.13
✎
17:37
|
итого, факта нет, есть больные фантазии человека, который хочет казаться правым.
|
|||
35
DrShad
09.02.13
✎
17:38
|
(32) как данная статья относится к моему решению по сабжу?
|
|||
36
Живой Ископаемый
09.02.13
✎
17:38
|
2(33) тебя услышал, нет претензий. Ты просто закладываешься на то, что поведение от релиза к релизу сможет поменяться. Этот пойнт годиться.
|
|||
37
PR
09.02.13
✎
17:38
|
(29) Да ладно, че там. Пусть люди каждый сам для себя решит, кто из нас прав, а кто лажанул ;))
|
|||
38
DrShad
09.02.13
✎
17:38
|
(33) а к чему ты вообще это сказал? сделал вброс?
|
|||
39
kotletka
09.02.13
✎
17:40
|
(35)ничего не имею против, нормальное решение, просто подтвердил слова ПР, а то как -то агрессивно на него накинулись, хотя он не туфту сказал
|
|||
40
PR
09.02.13
✎
17:40
|
(38) Попробуй перечитать (33) еще раз :))
Не уверен, что смогу сказать сказанное проще :)) |
|||
41
DrShad
09.02.13
✎
17:41
|
(39) никто не спорит с тем что он сказал, а вот к чему он это сказал непонятно
|
|||
42
Живой Ископаемый
09.02.13
✎
17:42
|
2(39) просто не понятно зачем это нужно было подтверждать ложью и статьями не относящимися к делу.
|
|||
43
DrShad
09.02.13
✎
17:43
|
(40) [ Даже если в каких-то коллекциях порядок обхода в для каждого и совпадает с порядком по индексу, то это не является документированным поведением платформы и нет никакой гарантии, что это всегда и на всех платформах так есть и так будет. ]
не вижу ни одной необходимости, чтобы хоть когда-то для массива была реализована автосортировка |
|||
44
kotletka
09.02.13
✎
17:43
|
(42)выдохни, разрешаю
|
|||
45
DrShad
09.02.13
✎
17:44
|
(42) ну лажанулся Печенкин и надо было как-то съехать не признавая сего факта
|
|||
46
PR
09.02.13
✎
17:47
|
(43) Какая разница что ты видишь?
Это поведение платформы не документировано. Понимаешь? |
|||
47
DrShad
09.02.13
✎
17:48
|
(46) понимаю и что?
|
|||
48
DrShad
09.02.13
✎
17:49
|
+(47) в клюшках были недокументированные методы, но это не означает что их нельзя было юзать
|
|||
49
PR
09.02.13
✎
17:52
|
(48) Но это означало, что лучше их не использовать, если есть документированные :))
|
|||
50
DrShad
09.02.13
✎
17:53
|
а вот упорядочивание соответствия по ключу как раз логично, в тоже время обход соответствия в цикле не логичен
|
|||
51
DrShad
09.02.13
✎
17:54
|
(49) как? ни один документированный метод не позволял получить то что давали они :)))
|
|||
52
DrShad
09.02.13
✎
17:56
|
(49) что предложишь юзать вместо этих методов?
Недокументированные возможности 1С 7.7 _IdToStr() Синтаксис: _IdToStr() Назначение: Возвращает строку - результат преобразования 10-тичного значения в 36-ричное. Параметры: - выражение со значением типа число. _StrToID() Синтаксис: _StrToID() Назначение: Возвращает число - результат преобразования 36-ричного значения в 10-тичное. Параметры: - выражение со значением типа строка. _GetPerformanceCounter() Синтаксис: _GetPerformanceCounter() Назначение: Возвращает число миллисекунд (1000-чных долей секунды) прошедших с момента включения компьютера. Замечание: Разница между значениями двух замеров позволяет определить количество миллисекунд прошедших между замерами. ЗначениеФункции() Англоязычный синоним: FunctionValue() Синтаксис: ЗначениеФункции() Назначение: Метод объекта "Запрос". Возвращает значение функции для текущей группировки. Параметры: - выражение, содержащее порядковый номер функции в запросе. ЗначениеГруппировки() Синтаксис: ЗначениеГруппировки() Назначение: Метод объекта "Запрос". Возвращает значение текущей группировки. Параметры: - выражение, содержащее название группировки в запросе. Пример использования здесь Атрибут объекта Форма МногострочнаяЧасть. Англоязычный синоним MultyColumn. Значение атрибута МногострочнаяЧасть представляет собой ссылку на элемент диалога документа - табличную часть. К атрибуту МногострочнаяЧасть применим метод Видимость(). Пример: Форма.МногострочнаяЧасть.Видимость((Форма.МногострочнаяЧасть.Видимость()+1)%2); Атрибут контекста модуля формы КонтекстПодбора. Англоязычный синоним ContextOfPermanentChoose. Значение атрибута КонтекстПодбора содержит контекст формы подбора, открытой последним вызовом метода ОткрытьПодбор(). С помощью значения этого контекста можно произвольно манипулировать формой подбора, пока она открыта. Пока форма открыта, тип значения данного параметра равен 100 (см. ТипЗначения), если закрыта -0. Пример: Если ТипЗначения(КонтекстПодбора)=100 Тогда КонтекстПодбора.Форма.Закрыть(); КонецЕсли; Метод ВключитьSQL(). Англоязычный синоним EnableSQL(). Метод можно использовать для объектов типа Регистр и Запрос, созданных функцией СоздатьОбъект. Метод имеет один необязательный параметр |
|||
53
PR
09.02.13
✎
17:57
|
(50) Если ты не можешь придумать пример, зачем нужен обход соответствия в цикле, то это еще не значит, что такой обход нелогичен :))
|
|||
54
PR
09.02.13
✎
17:58
|
(51) Вот именно.
А у нас случай, когда штатная замена есть. |
|||
55
DrShad
09.02.13
✎
17:58
|
(53) пример в студию
|
|||
56
PR
09.02.13
✎
17:58
|
(52) Блеснул интеллектом что ли? :)) Я как бы в курсе, про что ты написал в (48), мог бы не уточнять :))
|
|||
57
DrShad
09.02.13
✎
17:59
|
(54) ну так ты пример нашел, когда массив будет отсортирован автоматом?
|
|||
58
DrShad
09.02.13
✎
18:00
|
(56) а я не уточнял - я спрашивал, как документированными методами можно реализовать их аналоги?
|
|||
59
PR
09.02.13
✎
18:01
|
(55) Для Каждого Элемент Из Коллекция Цикл
Если Элемент.Значение > 100 Тогда Сообщить("Ура! Еще один элемент больше 100! Так выпьем же за это!"); КонецЕсли; КонецЦикла; |
|||
60
PR
09.02.13
✎
18:02
|
(57) Я и не собираюсь искать. Зачем? :))
|
|||
61
PR
09.02.13
✎
18:03
|
(58) Тебе там голову что ли напекло? :))
Прочитай (54) еще раз :)) |
|||
62
DrShad
09.02.13
✎
18:03
|
(59) все понятно! слава богу, что у нас с тобой не срослось!
|
|||
63
PR
09.02.13
✎
18:05
|
(62) А то! :))
|
|||
64
Живой Ископаемый
09.02.13
✎
18:05
|
это все лирика. я например понимаю аргументы вас обоих, но в любом случае мне хотелось предпосылок. Например если бы структура хранилась во временных таблицах на СКЛ сервере, я бы допустил такую вероятность.
Ну и наконец, спициально для котлеток, которые аргументируют свою позицию словами "я кажется сам видел в 10% случаев", пытаясь в качестве оправдания добавить квазиэкстремальный объем данных (десятки тысяч и т.д.) "150. Использование универсальных коллекций типа Соответствие и Структура -------------------------------------------------------------------------------- При использовании коллекций типа Соответствие и Структура следует учитывать, что порядок обхода элементов этих коллекций является произвольным. Поэтому, не следует использовать их в качестве условного списка значений, если впоследствии предполагается обход этих значений в определенном порядке. Для таких случаев нужно использовать объекты типа СписокЗначений, ТаблицаЗначений, Массив и т.д. Объекты типа Соответствие и Структура следует применять, когда необходимо быстрое получение значения из коллекции по определенному ключевому полю. " Это из системы стандартов и методик. То есть 1С если даже не гарантирует перебор массив при помощи для каждого, то по крайней мере санкционирует. |
|||
65
PR
09.02.13
✎
18:07
|
(64) О, я вроде про этот текст говорил :))
Весьма похоже :)) |
|||
66
Живой Ископаемый
09.02.13
✎
18:09
|
2(65) так а чтож случилось? забыл что Массив не входит в это исключение? Или этот параграф просто оставил у тебя осадок, что 1с-овским структурам и их сортировке доверять нельзя?
|
|||
67
DrShad
09.02.13
✎
18:09
|
(65) к чему тогда был вброс?
|
|||
70
aka AMIGO
модератор
09.02.13
✎
18:13
|
Достаточно, мужики. Вернитесь к теме.
|
|||
71
kotletka
09.02.13
✎
18:13
|
(69)к сожалению не могу ответить тем же, вы таки по моему мнению хороший спец по 1с, который не скупится помочь дельным советом
|
|||
72
kotletka
09.02.13
✎
18:14
|
(70)а тема уже решена в первых 10 постах
|
|||
73
PR
09.02.13
✎
18:15
|
(66) Я же сказал. Это _не_ документированная особенность :))
|
|||
74
PR
09.02.13
✎
18:18
|
+(73) Что плохого в "Перейти"? :))
|
|||
75
Живой Ископаемый
09.02.13
✎
18:21
|
2(73) Окей. То есть это недокументированная особенность санкционированная 1Сом, и ваше возражение в (7) и (9) мы восприняли очень остро, это было не возражение, а просто что-то типа бурчания под нос "однажды это может не сработать"
|
|||
76
Живой Ископаемый
09.02.13
✎
18:24
|
я просто лелеял все-таки надежду, что может кто-то что-то раскроет неизвестного, поделится какой-то статистикой, которую можно будет повторить... :)
эх.. ;) |
|||
77
PR
09.02.13
✎
18:25
|
(75) Нет, не так :))
Перейти тоже санкционировано 1С. Не так ли? Если 1С что-то санкционировало, это еще не повод это использовать. Есть и другие правила :)) |
|||
78
PR
09.02.13
✎
18:26
|
(76) Ну, 23000 проверок в цикле для массивов по 10000 элементов на SQL базе пока не дали сбоев :))
|
|||
79
Живой Ископаемый
09.02.13
✎
18:28
|
2(77) "Перейти тоже санкционировано 1С. Не так ли? " - я уже не в теме, сорри.
2(77) пф... а у нас тут можно давать ответы только такие, которые соответствую правилам РR? :) |
|||
80
Эмбеддер
09.02.13
✎
18:28
|
я сортирую таблицу значений, потом делаю обход "для каждого"
т.е. я делаю это неправильно и надо делать цикл для i=0 по ТЗ.Количество()-1 ? |
|||
81
PR
09.02.13
✎
18:30
|
(79) О чем ты?
Я просто о том, что есть много правил и санкционированность фирмой 1С не является достаточным для того, чтобы что-то использовать или нет. А вот недокументированность чего-либо вполне себе является аргументом для того, чтобы что-то не использовать, раз есть документированные аналоги. Это не я придумал :)) |
|||
82
Живой Ископаемый
09.02.13
✎
18:31
|
2(81) да, это ты придумал. И конечно есть множетсво людей кто не разделяет твою точку зрения.
2(80) А зачем ты так делаешь? |
|||
83
PR
09.02.13
✎
18:32
|
(80) Если ты сортируешь таблицу, для которой можно использовать "для каждого", то есть выборку по порядку, то это означает, что она у тебя уже отсортирована в нужном порядке. Нахрена ты ее сортируешь еще раз? :))
|
|||
84
PR
09.02.13
✎
18:33
|
(82) Блин, ладно. Оставим спор о вкусах :))
|
|||
85
Эмбеддер
09.02.13
✎
18:37
|
(83) да че далеко ходить делаю поиск по слову сортировка и нахожу такое в бухгалтерии 2.0
Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | * |ИЗ | РегистрСведений.УчетнаяПолитикаОрганизаций КАК УчетнаяПолитика"; Результат = Запрос.Выполнить().Выгрузить(); Результат.Сортировать("Период"); ДеревоУчетнойПолитики = Новый ДеревоЗначений; ДеревоУчетнойПолитики.Колонки.Добавить("Организация"); ДеревоУчетнойПолитики.Колонки.Добавить("Период"); ДеревоУчетнойПолитики.Колонки.Добавить("УчетнаяПолитика"); Для каждого Строка Из Результат Цикл |
|||
86
Эмбеддер
09.02.13
✎
18:40
|
т.е. в принципе в 1/3 случаев после слова "сортировать" далее следует "Для каждого"
|
|||
87
Живой Ископаемый
09.02.13
✎
18:46
|
2(85) А почему кстати они не сортируют сразу в запросе? Считается что небольшую таблицу 1с быстрее посортирует, чем СКЛ-сервер?
|
|||
88
aka AMIGO
09.02.13
✎
18:47
|
(85) >>Для каждого Строка Из<<
вот это здорово! фирменные прогеры применяют для внутренней переменной зарезервированное слово? вполне допускаю, что интерпретатор поймет правильно, как параметр цикла, однако.. нас вроде не так учили :) неуж переучиваться придется? :) |
|||
89
Живой Ископаемый
09.02.13
✎
18:49
|
2(88) Не применяют. А кто вас учил? И почему думаете что "строка" - зарезервированное слово?
|
|||
90
Эмбеддер
09.02.13
✎
18:49
|
(88) "забудьте все чему вас учили"
|
|||
91
aka AMIGO
09.02.13
✎
18:50
|
(88) если в 8-ке функция не Строка(..) а Стр(..) тогда точно, пора :)
(89) (90) всё, забыл, забыл! :) |
|||
92
Живой Ископаемый
09.02.13
✎
18:50
|
+(89) чтобы постигнуть разницу между заревированными не зарезервированными словами, попробуйте выполнить такой код:
Для Каждого КонецЕсли Из |
|||
93
Живой Ископаемый
09.02.13
✎
18:51
|
2(91) А при чем тут название функции к зарезервированным словам?
|
|||
94
aka AMIGO
09.02.13
✎
18:53
|
(92) подозреваю, что проскочит :)
но я применять КонецЕсли точно не буду! (93) отбой.. больше не вмешиваюсь в тему.. |
|||
95
Живой Ископаемый
09.02.13
✎
18:56
|
2(94) не проскочит никогда, потому что КонецЕсли - зарезервированное слово
|
|||
96
PR
09.02.13
✎
18:58
|
(85) А что, если прог работает в 1С, то это сразу автоматом означает, что он профессионал? :))
Мне кажется, (87) и (88) говорят об обратном :)) Непрофессионалы, они такие, всепроникающие :)) |
|||
97
Живой Ископаемый
09.02.13
✎
18:59
|
(88) ни о чем не говорит.
|
|||
98
PR
09.02.13
✎
19:00
|
+(96) Я бы еще за "*" повозмущался, кстати :))
|
|||
99
Эмбеддер
09.02.13
✎
19:00
|
(96) Трудно искать кошку в темной комнате, особенно когда ее нет. Просто признайся что ты не прав
|
|||
100
PR
09.02.13
✎
19:01
|
(99) О, внезапно :)) Опять двадцать пять :))
Неправ в чем? |
|||
101
Живой Ископаемый
09.02.13
✎
19:01
|
и (87) я не просто так привел - это действительно может быть правдой. Например для ТЗ до 10 тысяч строк (ну там правда не количество строк имеет значение, а мегабайты) Я предпочитаю сортировать 1Сом, а не Ораклом например.
|
|||
102
ArturR
10.02.13
✎
19:31
|
Ого! Такой простой вопрос, а вызвал такое бурное обсуждение околовопросной темы.
Нет, конечно все что тут говорилось правильно, но очень хотелось бы на простой вопрос получить простой ответ. Функция Аббревиатура(ТекстоваяСтрока) //составлям аббревиатуру ДлинаСтроки = СтрДлина(ТекстоваяСтрока); Аббревиатура = Сред(ТекстоваяСтрока,1,1); Счетчик=0; Пока Счетчик<=ДлинаСтроки Цикл ТекущийСимвол = Сред(ТекстоваяСтрока,Счетчик,1); Если ТекущийСимвол = " " Тогда Аббревиатура = Аббревиатура + Сред(ТекстоваяСтрока,Счетчик+1,1); КонецЕсли; Счетчик=Счетчик+1; КонецЦикла; Возврат Аббревиатура; КонецФункции // Аббревиатура() Например вот такой. Не фонтан конечно, но для реализации простой задачи подходит. Всем спасибо! |
|||
103
DrShad
10.02.13
✎
19:39
|
(102) еще в первых шести постах было два решения гораздо изящнее
|
|||
104
Живой Ископаемый
10.02.13
✎
20:00
|
2(102) то есть у тебя не типовая, и нет функции ОбщегоНазначения.РазложитьСтрокуВМасиивПодстрок()?
|
|||
105
DrShad
10.02.13
✎
20:02
|
написать ее не сложно даже в нетленке
|
|||
106
vah1
10.02.13
✎
20:09
|
для чего дебилов учить параметрам substr?
- вы единственный ребенок в семье? - да - славатехосподи! (с) авторы пятничной ветки где-то сперли |
|||
107
Web00001
10.02.13
✎
20:17
|
(102)Тебе дали простой ответ, сразу, в двух вариантах (5)и(6)
|
|||
108
DrShad
10.02.13
✎
20:25
|
вот и помогай после этого людям
|
|||
109
PR
10.02.13
✎
20:42
|
(102) LOL
Ты бы сразу сказал, что тебе не нужно простое решение, мы бы подготовились, набросали бы тебе алгоритм помутнее страниц на десять хотя бы :)) |
|||
110
ArturR
10.02.13
✎
20:52
|
Да, у меня не типовая конфигурация. Делаю с нуля, т.к. чтобы ямку выкопать экскаватор не нужен. Вот я и делаю себе маленькую лопатку.
(109) А разве можно ишо проще? |
|||
111
Живой Ископаемый
10.02.13
✎
20:58
|
2(110) Чувак, что ты будешь делать с лопаткой это понятно, но вот как ты собрался уворачиваться от толстых лучей поноса и импотенции, что прямо сейчас летят к тебе?
:) на самом деле, зачем заводил ветку, если все равно собирался делать сам, и не описал граничные условия свое йзадачи? |
|||
112
DrShad
10.02.13
✎
21:01
|
(110) т.е. в каждом месте где тебе нужно будет разложить строку ты будешь копать по ямке? :))))
|
|||
113
DrShad
10.02.13
✎
21:02
|
ох какие же ты решения получишь на следующие свои вопросы - твоя нетленка станет сборищем индийского кода :))))
|
|||
114
ArturR
10.02.13
✎
21:11
|
(111) Обсохнем ;)))
Я думал, что мне сразу кинут пару кусочков кода, в течении 15 минут забуду об этом. Но похоже тут уже все птицы высокого полета, ну и рекомендации дали такого же плана. А я пока глупый пингвин, это тот кто прячет тело свое жирное в утесах, и решение мне порой нужно простенькое. Честно говоря, наверно только пару раз мне тут реально помогли. В основном какашками кидают. |
|||
115
ArturR
10.02.13
✎
21:22
|
(111) Вероятно ты прав. Следующий раз конкретнее вопрос ставить надо. Видать штатный телепат в отпуске :)
|
|||
116
Живой Ископаемый
10.02.13
✎
21:26
|
ну хорошо хоть понимаешь это.
|
|||
117
DrShad
10.02.13
✎
21:29
|
(115) поздно, теперь только копрокод буду тебе писать
|
|||
118
PR
10.02.13
✎
21:32
|
(110) Ты либо тролль либо не очень силен в умственной работе.
Как вариант еще плохое умение читать. Тебе же написали, что в первых шести постах тебе предложили более красивое решение :)) |
|||
119
PR
10.02.13
✎
21:34
|
(114) >>Честно говоря, наверно только пару раз мне тут реально помогли. В основном какашками кидают.
Казалось бы, с чего, да? :)) |
|||
120
PR
10.02.13
✎
21:42
|
На тебе еще один вариант, небольшая модификация (6) :))
МногострочныйТекст = СтрЗаменить(ИсходнаяСтрока, " ", Символы.ПС); Аббревиатура = ""; Для А = 1 По МногострочныйТекст.КоличествоСтрок() Цикл Аббревиатура = Аббревиатура + ВРЕГ(Лев(МногострочныйТекст.ПолучитьСтроку(А), 1)); КонецЦикла; Куда уж проще и понятнее? :)) ЗЫ: за номерацию строк не уверен, с нуля или с единицы, вроде с единицы, лень смотреть :)) |
|||
121
Живой Ископаемый
10.02.13
✎
21:46
|
Функция Аббревиатура(ТекстоваяСтрока)
//составлям аббревиатуру ТекстоваяСтрока=СтрЗаменить(ТекстоваяСтрока," ",Символы.ПС); Аббревиатура = ""; Для Счетчик = 1 По СтрЧислоСтрок(ТекстоваяСтрока) Цикл Аббревиатура= Аббревиатура+Лев(СтрПолучитьСтроку(ТекстоваяСтрока, Счетчик),1); КонецЦикла; Возврат Аббревиатура; КонецФункции // Аббревиатура() |
|||
122
Живой Ископаемый
10.02.13
✎
21:46
|
а, ну да, ВРЕГ
|
|||
123
PR
10.02.13
✎
21:49
|
+(120) Ну да, может правильнее как в (121), только с ВРег :))
|
|||
124
DrShad
10.02.13
✎
21:50
|
кому вы что доказываете - он все что не понимает считает какашками
|
|||
125
DrShad
10.02.13
✎
21:51
|
пусть продолжает совочком котлованы рыть
|
|||
126
ArturR
12.02.13
✎
16:52
|
Москва не сразу строилась.
Разберемся потиху. |
|||
127
ArturR
12.02.13
✎
17:20
|
(120) (121) за доработку и подсказки спасибо
(124) ...и да я пока многого не понимаю Я сказал следующий раз постараюсь более конкретно ставить вопросы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |