Имя: Пароль:
1C
1С v8
Что делает этот код?
↓ (Волшебник 03.03.2024 20:10)
0 miwapython
 
02.03.24
11:16
День добрый.
Прислали тестовое задание.
Поправить код в обработке.
Кода 3 строчки. Не могу понять, что не так.
(// и - исходная строчка)

&НаСервере
//&НаКлиенте // и
Процедура ПриОткрытии(Отказ) // и

Для ит = 4 по 16 Цикл // и
ТабличныйДокумент.Область(ит,1,ит,1).Текст = "Зачем вывожу если потом все равно очищать" + ит; // и
КонецЦикла; // и

ТабличныйДокумент.Очистить(); // и
КонецПроцедуры
1 Волшебник
 
02.03.24
11:16
уберите Очистить() в конце

вместо него добавьте Показать()

только для этого директиву &НаСервере вначале замените на &НаКлиенте
2 Волшебник
 
02.03.24
11:16
школота...
3 Dmitry1c
 
02.03.24
12:39
(1) абсолютно бредовое тестовое задание.

тест
4 PR
 
02.03.24
12:37
Я думаю, что правильным будет весь код закомментить, раз он все-равно делает что-то бесполезное
5 PR
 
02.03.24
12:37
(3) Проверка на наркомана
6 miwapython
 
02.03.24
15:12
Всем спасибо.
За участие.
7 Ботаник Гарден Меран
 
02.03.24
16:37
Выявляет незнание.
8 experimentator76
 
02.03.24
19:18
(0) не работай с мудаками.
этот тест чтобы ты это понял
9 Anton1307
 
02.03.24
23:58
Задание - поправить код на предмет чего?
Какой результат ожидается в конце концов?
10 Гена
 
03.03.24
07:25
Да... уж... Волки.
(0) Михаил, задание просто на понимание типа метода Область табличного документа. Глянул. Тип этот - строка. А тип номеров строк и столбцов области - число. Отсюда и проверка на ошибку Строка + Число.
Вам надо было мгновенно вернуть будущему работодателю правку:
"Зачем вывожу если потом все равно очищать" + Строка(ит);

Ну и для цимеса можно добавить свою рюшечку:
Область(ит,1,ит,1)
Если хочется вывести только одну ячейку, то можно вообще не повторять конечные номера строк и столбцов, это необязательные параметры.

Конечно, я могу ошибаться, ведь и сам впервые глянул, а что такое Область )
11 Garykom
 
03.03.24
07:26
(10) >"Зачем вывожу если потом все равно очищать" + Строка(ит);

про неявное преобразование из числа в строку слышал?
12 Гена
 
03.03.24
07:29
(11) Нет. В данном случае платформа сама поменяет тип? Это всегда было или только с какого-то релиза?
13 Garykom
 
03.03.24
07:32
ТабличныйДокумент (SpreadsheetDocument)
Очистить (Clear)
Синтаксис:
Очистить()
Описание:
Очищает табличный документ.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:
ТабДок.Очистить();
Использование в версии:
Доступен, начиная с версии 8.0.


Фишка ТабличныйДокумент.Очистить() только сервер или толстый клиент
Задачка на знание и как извратиться

ЗЫ
Хотя имхо наркоманство с обеих сторон...

ЗЗЫ
Со стороны разрабов платформы в т.ч. ))
14 Garykom
 
03.03.24
07:30
(12) Не только 1С, многие другие ЯП/платформы тоже самое делают
15 Garykom
 
03.03.24
07:33
Конечно неявное преобразование оно такое
Неразрывный пробел вставит (согласно настройкам) как и Строка()
Правильно делать Формат()
16 Гена
 
03.03.24
07:34
(14) Хм... спасибо за информацию.
Получается, что переменная неявно переводит в свой собственный тип все переменные после присваивания?
17 Garykom
 
03.03.24
07:41
(16) Слегка сложней
а = "строка"+1 - нормально и будет а="строка1"
б = 1 + "строка" - ошибка преобразования "строка" в число

Ну и классика, которая есть почти во всех ЯП со строгой типизацией
Double a,b
Int c
a = b + c - можно, неявно int преобразуется в double, сложит результат в double
c = a + b - низзя! обычно ибо тип double в int никак
18 Гена
 
03.03.24
07:45
(17) Так-так. Ну и для окончательного понимания:
а если сначала оттиповать в первом примере b как строку, всё равно будет ошибка?
b = 1 + "строка"
19 Garykom
 
03.03.24
07:48
(18) ага
обычно тип результата по типу первого слагаемого
т.е. проблема не в b
а в число + Число(строка)
20 Garykom
 
03.03.24
07:52
Некоторые языки со строгой типизацией во избежание подобных ошибок совсем запрещают неявное
Там надо явно преобразовывать, используя разные IntToStr() или StrToInt()
Хотя даже в таких часто в параметрах процедур/функций неявное работает, например println(число) и конечный результат строка, которая будет выведена
21 Гена
 
03.03.24
07:56
(20) Ну да, я привык к прямой типизации )
22 Гена
 
03.03.24
07:59
(20) А по задаче тогда остаётся единственное, Вы правы: клиент или сервер. Тем более, что работодатель дал подсказку прям в начале кода:
&НаСервере
//&НаКлиенте // и
23 Garykom
 
03.03.24
08:13
(22) Процедура ПриОткрытии(Отказ) - это стандартная в 1С и она на клиенте

Конечно может такой код может быть и на сервере
И в этом случае ТС в принципе правильно исправил заменив аннотацию, код будет выполняться
Но не будет иметь смысла, зачем заполнять ячейки если в конце все удалим?

Скорее всего автор задачи (хз чего обкурившись) подразумевал (1)
Исправить Очистить() на Показать()
24 PR
 
03.03.24
10:01
Удивительно, как куча народу пытаются найти смысл в бессмысленной бредятине, домысливают чего-то, спорят до хрипоты
25 PR
 
03.03.24
10:04
Без дополнительной информации единственно верная правка — это все закомментить, потому что это сократит расход ресурсов компьютера безо всякого ущерба для результата

В случае любой фразы давшего тест о том, что нужно было догадаться о том-то и том-то контора идет нахрен как неадекватная, потому что вся работа в ней будет наполнена болью и рассуждениями о том, а нахрена все это вообще надо
AdBlock убивает бесплатный контент. 1Сергей