Имя: Пароль:
1C
1С v8
Создание аббревиатуры из текстовой строки
,
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) ...и да я пока многого не понимаю
Я сказал следующий раз постараюсь более конкретно ставить вопросы.