Имя: Пароль:
1C
 
Вопрос на собеседовании. Оптимизировать запрос в цикле.
, ,
0 Kongo2019
 
16.11.20
12:25
1. 2 39% (9)
2. 1 35% (8)
3. 4 17% (4)
4. 3 9% (2)
Всего мнений: 23

Доброго.
Вот все по собеседованиям хожу типа. Все хочу стать настоящим программистом 1С. А то в наших провинциях, так все отчеты рисуем, та мелочёвка всякая. Но то лирика.
И вот сегодня один вопрос зацепил в тесте.
Вам поставлена задача по доработке нетиповой конфигурации. В данной конфигурации ведется учет остатков товара в регистре накопления  в разрезе номенклатура и серия. Серия является обязательной для заполнения в документах. Для проверки наличия остатка есть функция, в которую предаются два параметра в виде ссылки на Номенклатуру и ее серию, и параметр типа дата. Функция возвращает булево значение, есть на остатке или нет.
Рассмотрев внимательно данную функцию, Вы видите, что там выполняется запрос к регистру накопления. В запросе используется виртуальная таблица с отбором по номенклатуре и серии.
Анализируя работу программы, Вы понимаете, что это так называемый «запрос в цикле». Так как Вам необходимо, по заданию сделать новый документ, который должен иметь табличною часть, в которой возможно несколько строк  с разными значениями номенклатуры и серии, и для проверки Вам необходима будет вызвать процедуру проверки остатка столько раз, сколько у вас строк в  табличной части документа.
Какие ваши действия. Не против, я в голосовалку варианты ответов запихаю.
1. Сообщу руководителю проекта, что данный код не оптимален и предложу переделать.
2. Сообщу руководителю проекта, что данный код не оптимален, но буду использовать уже разработанный функционал.
3. Буду использовать разработанный функционал.
4. Сделаю свою, более оптимальную процедуру.
3 H A D G E H O G s
 
16.11.20
12:28
Других вариантов то и нет.

Тут вопрос на умение работать в команде.

Хороший вопрос.

1
42 Шоколадный глаз
 
16.11.20
13:14
ответить

1
45 pavig
 
16.11.20
13:16
(0)
Ну конечно же
"1. Сообщу руководителю проекта, что данный код не оптимален и предложу переделать."
Вы Специалист или как г*вно в проруби болтаетесь?

Получил требования, начал делать, обнаружил критичную, с твоей точки зрения, уязвимость в производительности системы в случае реализации таким методом, сообщил ответственному лицу о потенциальной проблеме, получил дальнейшие инструкции - оставлять как есть или переделывать как надо. Может, руководство уже знает об этой проблеме и уже решило исправлять это в каком-нибудь из следующих релизов, а сейчас надо очень просто успеть сделать новый функционал (например, просто для демонстрации возможностей заказчику) к дате выхода релиза? Решение этого вопроса не в твоей компетенции в данном случае.
И всё, с тебя взятки гладки, идеальный программист.
Не сделал лишнего ненужного, потратил времени ровно столько, сколько было заложено руководством, и при этом оповестил о проблеме, да еще и вызвался её устранить. Просто красавчик.
Иначе потом начнется "ну я вот решил оптимизировать бла-бла". Пля, кто тебя просил заниматься оптимизацией? Тебе поставили вполне конкретную задачу.

1
77 GANR
 
16.11.20
22:30
Если переделывать 15 минут, то сразу же переделанный вариант предложу. Может мне этот код ещё раз 20 запускать и он будет мне же работу тормозить. На фига мне это терпеть?

1
121 ILM
 
гуру
17.11.20
11:25
На заре моего программирования в 1995 году, в отпуск ушла ведущий специалист отдела разработки. А в её алгоритме ошибка, и начальник отдела попросил меня исправить. Там было 350 строк кода на паскале, когда она вернулась из отпуска, то строк было всего 40, делали они тоже самое, но в три раза быстрее. Она очень на меня сильно обижалась и года три напоминала не лезть в чужой код без разрешения.

1
123 Джинн
 
17.11.20
11:35
Тут как в армии - обнаружил - доложи. А дальше пусть решение принимает тот, кто управляет процессом.

1
126 Oftan_Idy
 
17.11.20
12:02
(0) Конечно надо переделать.
К тому же это не сложно, за день точно управишься, с перекурами.
Сделаешь отдельную функцию, сделаешь в ней запрос к документу, выдашь в результат строки с ошибками.
Заодно управляемую блокировку наложишь на регистр остатков.

Если вдруг будет 100500 строк и станет проблемой большой запрос, тогда и будет уже анализировать какой метод в таком случае использовать. Тогда много мелких запрос переварится лучше.

Оставлять такое извращение как есть - не комильфо, фу таким быть.

1
127 art_id
 
17.11.20
12:20
Сообщить, дальше пусть ответственный решает.
Есть у нас один прог, увидел неоптимальный код, который к его задаче вообще никаким боком, и внес изменения.
В рабочей база в итоге ошибка вылезать стала, благо это была не критичная самописка по учету моб. связи. Вроде ему даже с вертушки в щи не прописали. Скорей всего устно отделался.

1
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.