Имя: Пароль:
1C
 
В типовой розница 2.3 встретился такой код
0 Гений 1С
 
18.01.25
10:57
Я не понимаю, как можно, как не стыдно?
Розница 2.3.21.19

Кстати, в стандартах есть обязательное объявление всех локальных переменных?
1 Волшебник
 
18.01.25
10:59
Какая гадость эта ваша динамическая типизация!
https://vkvideo.ru/video-3183750_456245220
2 TormozIT
 
18.01.25
12:07
(0) Причем тут переменные? Тут "Знач" у параметра "Кодировка" не хватает и некорректный документирующий тип указан у вызова функции (видимо вследствие копирования куска кода)
3 Web00001
 
18.01.25
13:40
(0)Я не понимаю, здесь
Я не понимаю, как можно, как не стыдно?
Ты недоволен, что код написан как-то неправильно. Но вот здесь:
Кстати, в стандартах есть обязательное объявление всех локальных переменных?
Ты говоришь, что у тебя не хватает силы воли открыть ИТС. Ты или крестик сними или трусы надень. Или ты знаешь как писать код по стандартам, либо другим не указываешь как надо писать.
4 AAA
 
18.01.25
13:45
(3)что Вы такой агрессивный ?) будьте добрее
5 Web00001
 
18.01.25
13:49
(4)Никого не оскорбил. Не назвал идиотом. Не обещал втоптать в гавно за неправильные вопросы, как здесь любят(особенно ВР). Просто вижу противоречивые абзацы - подсвечиваю.
6 AAA
 
18.01.25
13:53
(5) ну ок )
7 Гений 1С
 
18.01.25
14:35
(3) я не в 1с работаю. Не на всю страну выставляю свой код
8 Злопчинский
 
18.01.25
15:05
А поясните тупому мне попроще, что здесь не так?
9 Garykom
 
18.01.25
17:10
(0) И чего тебе не нравится?
Классика же передать в процедуру параметр и получить его заполненным
В платформе 1С это почти везде так

Например
Значение = Неопределено;
ЕстьСвойство = НекаяСтруктура.Свойство(Ключ, Значение);
// Значение заполнится
10 Garykom
 
18.01.25
17:09
(8) Есть проблема в неожиданной замене типа переменной Кодировка
Можно передать строку Кодировка = "UTF-8" а получить Кодировка = КодировкаТекста.UTF8
11 Кирпич
 
18.01.25
17:12
(8) Гений тупанул просто. не бери в голову
12 Garykom
 
18.01.25
17:16
(11) Но нельзя не признать что код на скрине (0) слегка того
Ибо массив имен файлов, кто гарантирует что все файлы имеют одну кодировку?
И странный повторный вызов .ПолучитьКодировкуФайла сначала с параметром, затем без него - явно говнокодили
13 Кирпич
 
18.01.25
17:18
(12) "сначала с параметром, затем без него"
Ну может так и надо. Мы же логику не знаем. А смотреть лень. Да и вероятность того, что Гений затупил очень высока.
14 Гений 1С
 
18.01.25
17:18
(12) от 1с такого не ожидал
15 Garykom
 
18.01.25
17:20
(13) Если глядя на код сразу непонятно что он делает - это хреновый код
Не спорю что возможно оно работает, но что это говнокод не отменяет
16 Кирпич
 
18.01.25
17:20
+(13) без параметра вызывают наверное потому что там по умолчанию что то хорошее есть
17 Garykom
 
18.01.25
17:22
(14) в 1С много организаций и сотрудников
встречаются разные

да до недавнего времени Розница и БП были наилучшими по качеству кода
к сожалению это уже не так
18 Кирпич
 
18.01.25
17:22
(15) ты по трем строчкам, вырванным из контекста, хочешь что то понять?
И не Гению придираться к коду какому нибудь. Он сам пишет как курица лапой.
19 Garykom
 
18.01.25
17:27
(18) как минимум вижу что функция "ПолучитьКодировкуФайла" криво написана и неудобна в использовании
почему не добавить в нее параметр "ВозвращатьКодировкуПоУмолчанию = Ложь" ?
Тогда двойной вызов не нужен
20 Кирпич
 
18.01.25
17:28
(19) Ну ты сходи посмотри сначала на функцию. Может там что то гениальное :)
21 Гений 1С
 
18.01.25
18:15
(19) или сделать две функции
(18) в данном случае все понятно. Если на вход подать кодировку, а не строку, будет исключение, потому что она рид-онли.
22 Гений 1С
 
18.01.25
18:16
(17) розницу 2.3 скрестили с УНФ 3.0 с приоритетом УНФ, получился некий странный гибрид
23 Кирпич
 
18.01.25
18:33
(21) "Если на вход подать кодировку, а не строку, будет исключение"
Да не будет никакого исключения. С чего вдруг?
24 Кирпич
 
18.01.25
18:38
+(23) Динамическая типизация! Тебе ж в (1) сразу объяснили :)
25 Кирпич
 
18.01.25
18:55
"будет исключение, потому что она рид-онли"
20 лет Гений жил в неведении. Вот так вот быть писателем, а не читателем. :)
26 Кирпич
 
18.01.25
19:08
Хотя нет. Прошу прощения, я сам затупил. И правда "недоступно для записи"
27 Фокусник
 
18.01.25
21:37
(0) Работает?
28 Garykom
 
18.01.25
21:47
(26) да смена типа переданного параметра в процедуре это частая хрень в типовых
в ДО 2.1 такое есть
там это до маразма доходит, когда реквизит формы передают так и заполняют
29 Guk
 
18.01.25
22:18
нормальный код. что не так?...
30 Гений 1С
 
19.01.25
11:53
(29) проснулся. уже объяснили что не так. ЗНАЧ забыли написать студенты с Селезневской.
31 d4rkmesa
 
19.01.25
12:20
Если придираться к стандартам, то еще Получить* в названии функции лишнее.
32 Волшебник
 
19.01.25
12:29
(31) Кстати, странно, что это не функция, а процедура. Но если она работает в отложенном режиме, то должна называться что-то типа НачатьПолучение...
33 d4rkmesa
 
19.01.25
12:33
(32) Я про функцию ПолучитьКодировкуФайла(...). Но, в процедурах Получить* тоже лишнее, т.к. возникают ассоциации с Get*, лучше что-то вроде ПрочитатьСодержаниеТекстовыхФайлов(...) или ЗаполнитьСодержаниеТекстовыхФайлов(...).
34 Ненавижу 1С
 
19.01.25
13:21
Немного хардкода, если сильно хотите предотвратить передачу по ссылке:


Рез = Неопределено;    МенеджерОфлайнОборудованияВызовСервера.ПолучитьКодировкуФайла(Вычислить("Рез"));
35 Кирпич
 
19.01.25
20:46
(30) Да там не только знач. Там еще нелогичная фигня написана.
А вывод какой? В 1С можно писать откровенную херню и всё будет работать. За это мы и любим 1С :)
36 Гений 1С
 
19.01.25
20:48
(35) можно писать и будешь работать. Пинка под зад назад во франи не дадут
37 Волшебник
 
19.01.25
20:54
(34) и не стыдно?
38 Ненавижу 1С
 
20.01.25
21:44
Вообще вся суть в том, что тут будет ошибка:

Метод(КодировкаТекста.ANSI);

Процедура Метод(Чтото)	

	Чтото = 12;
	
КонецПроцедуры


Но только если вызов метода и сам метод вызываются на одной стороне (либо оба на сервере, либо оба на клиенте) - только в этом случае происходит вызов по ссылке. Если используем вызов с клиента на сервер - то ошибки не будет - используется "вызов по копированию"
39 Гений 1С
 
20.01.25
19:25
(38) проще прописать ЗНАЧ или объявить локальную переменную. Чем писать такое в проде.
40 Ненавижу 1С
 
20.01.25
20:08
(39) какое такое? Я просто убрал всю шелуху и оставил суть ошибки.
Да, разработчик метода по хорошему должен был поставить Знач. Но и к языку вопросы:
1. По умолчанию параметр передается по ссылке, хотя в большинстве языков это не так
2. При передаче с клиента на сервер передача по ссылке превращается в передачу по копированию, что несколько нарушает стройность подхода
41 Garykom
 
20.01.25
22:44
(40) 2 - слегка разное поведение для одного модуля формы с реквизитом формы и разных модулей