|
v7: Глюк при вызове глобальной функции со значениями "по умолчанию" или...? | ☑ | ||
---|---|---|---|---|
0
wopot
20.04.21
✎
12:35
|
Ситуация следующая: в табличной части документа есть реквизит "ДатаКон" типа "Дата", рядом с ним есть колонка с функцией ДеньНеделиКраткоПоДате(ДатаКон), в колонку рядом с датой выводится день недели "пн", "вт" и т.д.
Функция в глобальном модуле очень простая Функция ДеньНеделиКраткоПоДате(ПромДата,Заглавными=0) Экспорт .... .... Если Заглавными=0 Тогда Возврат ДниНедели[НомерДняНедели(ПромДата)]; ИначеЕсли Заглавными=1 Тогда Возврат Врег(ДниНедели[НомерДняНедели(ПромДата)]); КонецЕсли; КонецФункции Всё бы ничего, и работает уже десятилетие, но сегодня увидел очень странную вещь. В некоторых строках, причём довольно бессистемно день недели был не строчными (пн, вт, ср), а заглавными буквами (ПН, ВТ, СР), будто функция вызывалась как ДеньНеделиКраткоПоДате(ДатаКон, 1). Первый раз такое вижу, что бы это могло быть не знаю. Windows Server 2016, 1c 7.7.027, FormEX 2.0.5.147 |
|||
1
Злопчинский
20.04.21
✎
12:38
|
(0) начать надо с того, что функция написано говнокодисто.
|
|||
2
wopot
20.04.21
✎
12:40
|
В чем "говнокодистость" заключается? ;)
|
|||
3
Злопчинский
20.04.21
✎
12:41
|
плюс к этому верхнйи регистр по данному коду - не обязательно следствие работы функции, а вполне возможно что уже загнано в массив ВРЕГами
. Если Заглавными=0 Тогда Возврат НРег(ДниНедели[НомерДняНедели(ПромДата)]); |
|||
4
wopot
20.04.21
✎
12:42
|
Функция ДеньНеделиКраткоПоДате(ПромДата,Заглавными=0) Экспорт
Перем ДниНедели[7]; Если ПустоеЗначение(промДата)=1 Тогда Возврат " "; КонецЕсли; ДниНедели[1]="пн"; ДниНедели[2]="вт"; ДниНедели[3]="ср"; ДниНедели[4]="чт"; ДниНедели[5]="пт"; ДниНедели[6]="сб"; ДниНедели[7]="вс"; Если Заглавными=0 Тогда Возврат ДниНедели[НомерДняНедели(ПромДата)]; ИначеЕсли Заглавными=1 Тогда Возврат Врег(ДниНедели[НомерДняНедели(ПромДата)]); ИначеЕсли Заглавными=2 Тогда пром=ДниНедели[НомерДняНедели(ПромДата)]; Возврат врег(лев(пром,1))+сред(пром,2); КонецЕсли; КонецФункции // ДеньНеделиПоДате |
|||
5
Злопчинский
20.04.21
✎
12:42
|
(2) в том, что "я знаю что на вход не будет ничего кроме 0 и 1"
а тут внезапно 2! |
|||
6
wopot
20.04.21
✎
12:44
|
Если обратили внимание, то там ещё и ... было, которое заменяло массив и часть кода. Собственно, сути эти, наверное, не меняет :)
В экранной форме было так 01.05.2021 сб 01.05.2021 сб 03.05.2021 ПН - то есть понедельник почему-то пошёл заглавными 05.05.2021 ср После выхода и входа в 1С, всё стало работать, как и прежде |
|||
7
1Сергей
20.04.21
✎
12:46
|
Случаем не оп ОЛЕ соединение с базой?
|
|||
8
wopot
20.04.21
✎
12:48
|
Нет
|
|||
9
Злопчинский
20.04.21
✎
12:50
|
(6) "После выхода и входа в 1С, всё стало работать, как и прежде"
- ну так и надо было проверить не выходя... код вроде прсотой, траблов быть не должно... |
|||
10
wopot
20.04.21
✎
12:53
|
Десять лет и не было :)
Если бы своими глазами не увидел, то словам пользователя бы не поверил. В табличной части даже раскраска не используется. Формула в "свойствах текста" формула ДеньНеделиКраткоПоДате(ДатаНач) А такое впечатление, что 1С отрабатывала как ДеньНеделиКраткоПоДате(ДатаНач,1) только места выбирала случайным образом. Сейчас сколько не пробовал воспроизвести это у себя, ничего такого не получается. |
|||
11
Злопчинский
20.04.21
✎
13:04
|
(10) догадки можно строить бесконечно...
|
|||
12
Kigo_Kigo
20.04.21
✎
13:39
|
Серека еще сырая! :)
|
|||
13
Злопчинский
20.04.21
✎
13:59
|
(12) Может дело в прокладке?!
|
|||
14
wopot
20.04.21
✎
14:22
|
(13) Всякое бывает
Но в конкретной ситуации, именно этой функции лет 10, а конфигурации скоро 20... Поэтому явно стечение обстоятельств, но какое и каких? |
|||
15
Злопчинский
20.04.21
✎
17:05
|
Никогда такого не было и вот - опять!
|
|||
16
SleepyHead
гуру
20.04.21
✎
17:54
|
(2) А что, если в параметр "Заглавными" передать 2 ?
|
|||
17
Cthulhu
21.04.21
✎
03:27
|
афигеть...
Сред("пнвтсрчтптсбвс",НомерДняНедели(ПробДата)*2-1,2); |
|||
18
Андрей_Андреич
naïve
21.04.21
✎
05:25
|
(17) Если тебе платить за строчки кода - с голода помрешь :=)
|
|||
19
Андрей_Андреич
naïve
21.04.21
✎
06:06
|
(17) Код нечитаемый - у ТС лучше :)
|
|||
20
wopot
21.04.21
✎
06:26
|
(17) Кратко и лаконично!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |