|
Работа с Соответствием | ☑ | ||
---|---|---|---|---|
0
kathleen
07.08.15
✎
11:29
|
Не могу понять от чего зависит порядок элементов в соответствии.
Для ИндексМассива = 0 По ПодСтроки.Количество() - 1 Цикл ВидВремениИКоличество = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ПодСтроки[ИндексМассива], РазделительВГруппе); Если ВидВремениИКоличество.Количество() = 2 Тогда Код = мБуквенныеОбозначения[ВидВремениИКоличество[0]]; Количество = Число(ВидВремениИКоличество[1]); Результат.Вставить(Код, Количество); КонецЕсли; КонецЦикла; В табеле если стоит Я8С8, в соответствии первый элемент явка, второй сверхурочные. Если же я ставлю Я8РВ8, тогда почему-то первый элемент Праздники. В отладчике ничего не нашла. Отчего это может зависеть? |
|||
1
zak555
07.08.15
✎
11:29
|
нет там понятия порядка
|
|||
2
Живой Ископаемый
07.08.15
✎
11:30
|
это не упорядоченная коллекция.
|
|||
3
kathleen
07.08.15
✎
11:30
|
тогда чем отличаются эти два случая?
|
|||
4
kathleen
07.08.15
✎
11:33
|
В первом 2-ой элемент запихивается во вторую позицию, во втором - в первую. При обходе для каждого неправильно заполняется табличная часть
|
|||
5
ДенисЧ
07.08.15
✎
11:33
|
(4) Пихай в упорядоченную коллекцию
|
|||
6
kathleen
07.08.15
✎
11:35
|
(5)Блин, функция из типовой конфы, ну придется переписывать
|
|||
7
zak555
07.08.15
✎
11:49
|
(6) расскажи где применяешь
|
|||
8
shpioleg
07.08.15
✎
11:53
|
(0) Я один не понял, что за проблема с Соответствием?
Задаешь в нем ключ и значение которое хочешь по нему получить. И все. Зачем там порядок? И что значит, "в отладчике ничего не нашла"? мБуквенныеОбозначения что показывает? |
|||
9
sash-ml
07.08.15
✎
11:57
|
(0) соответствие предназначено для быстрого нахождения значения по ключу наподобие (HashMap) поэтому сортировка там оптимизирована по ХэшКоду, и порядок никогда не соблюдается
|
|||
10
kathleen
07.08.15
✎
12:02
|
Я все понимаю о чем вы говорите, для чего служит соответствие. Но в этой фунции почему-то вместо какого-нибудь списка или таблицы значений используется именно соответствие. Разбивается текст ячей на подстроки, потом они запихиваются в соответствие, а потом обход их при помощи "для каждого". Т. о. в строке "Я8РВ8" первое значение явка, а в документе табель реквизит ПервыйВидВремени3 это праздник. При выводе на печать из-за этого ошибка
|
|||
11
kathleen
07.08.15
✎
12:03
|
Конфа белорусских разработчиков
|
|||
12
sash-ml
07.08.15
✎
12:09
|
перепиши при выводе на печать по коду времени.
|
|||
13
shpioleg
07.08.15
✎
12:28
|
(10) Судя по коду, у тебя из соответствия мБуквенныеОбозначения берется буквенный код по Виду времени.
И запихивается, возможно, в структуру Результат. С чего ты взяла, что "потом они запихиваются в соответствие" |
|||
14
Asmody
07.08.15
✎
12:39
|
Соответствие индексируется по ключу для поиска.
Только я в (0) не вижу Соответствия. |
|||
15
Mraque
07.08.15
✎
12:57
|
(0) Подобная ошибка была в типовой базе 1С Документооборот. Пришлось переписать на СписокЗначений() пока разработчики сами в одном из последующих обновлений не изменили эту часть.
|
|||
16
kathleen
07.08.15
✎
13:11
|
(13)(14)вот полностью функция
Функция ПолучитьВидВремениИКоличествоЧасов(Текст , Результат) Экспорт Результат = Новый Соответствие; Если ПустаяСтрока(Текст) Тогда Возврат Истина; КонецЕсли; РазделительВГруппе = " "; РазделительГрупп = Символы.ПС; ПодСтроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Текст, РазделительГрупп); Для ИндексМассива = 0 По ПодСтроки.Количество() - 1 Цикл ВидВремениИКоличество = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ПодСтроки[ИндексМассива], РазделительВГруппе); Если ВидВремениИКоличество.Количество() = 2 Тогда Код = мБуквенныеОбозначения[ВидВремениИКоличество[0]]; Количество = Число(ВидВремениИКоличество[1]); Результат.Вставить(Код, Количество); КонецЕсли; КонецЦикла; КонецФункции // ПолучитьВидВремениИКоличествоЧасов() |
|||
17
Живой Ископаемый
07.08.15
✎
13:33
|
и все равно не видно где инициализируется мБуквенныеОбозначения
|
|||
18
kathleen
07.08.15
✎
13:41
|
(17) да причем тут мБуквенныеОбозначения, в этой функции формируется результат, потом в теле другой фунции этот результат читается в табличную часть документа. Дело именно в том в каком порядке формируются записи в результат
|
|||
19
Живой Ископаемый
07.08.15
✎
13:46
|
Дай значение переменной ПодСтроки для теста
|
|||
20
kathleen
07.08.15
✎
15:38
|
(19)Это массисв из 2-х элементов. В одном случае "Я8" и "РВ8", в другом "Я8" и "С8" . В первом случае в Результат записывается в обратном порядке, во втором в том же порядке
|
|||
21
kathleen
07.08.15
✎
16:12
|
переделала в таблицузначений - все ок
|
|||
22
НеБорис Нуралиев
07.08.15
✎
16:16
|
(16) Странная функция... По всем признакам - это процедура.
|
|||
23
Живой Ископаемый
07.08.15
✎
17:06
|
2(20) м... Если у тебя "В одном случае "Я8" и "РВ8", в другом "Я8" и "С8"", то у тебя в результате будет м...
короче будет только последняя пара: "Я8" "С8" http://www.screencast.com/users/october.hammer/folders/Default/media/c4840d6f-49f3-4994-9d45-b91d6a486045 или я чего-то не понял |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |