|
Мозговой штурм в код-ревью happysan, Федя Тяпкин, Sserj, phabeZ, zenik, RomanYS, spiller26, reg0303, Волшебник, trad, Мультук, Garykom, 2S, _Batoo, VladZ, Ненавижу 1С, shuhard, АнализДанных, Gucci76, vis, ОператорПК, maxar, KJlag, X Leshiy, Radion, Lemkus, Timon1405, mortal, maxab72, San787, AlexKimp, okmail, Читатель снов, Kigo_Kigo, DeeK, ads55, yurikmellon2, p-soft, trooba, kir-g, AntiBuh, RVN, Prog_man, nick86, PLUT, Доминошник, АгентБезопаснойНацио, ЕRPe, ndrv, viraboy, Greeen, rozer76, calmius, Franchiser, apiary, GlRoznica, Beduin, d4rkmesa, Вадя, sikuda, alexis_nov, Гипервизор, Верещагин, Широкий
| ☑ | ||
|---|---|---|---|---|
|
0
happysan
04.05.26
✎
15:36
|
Всем доброго времени суток!
Прилагаю скрин: https://dropmefiles.com/uAjZc , на котором есть неоптимальный (некорректный) код. Попутно тоже буду приводить замечания по коду, но и буду благодарен полезным комментариям со стороны сообщества. Сейчас данная задача популярна на собеседованиях и хотелось бы максимально изучить данный вопрос и ничего не упустить. Всем заранее спасибо за позитивное и эффективное участие! |
|||
|
1
Гипервизор
04.05.26
✎
15:15
|
Скрин-то сюда прилагаете?
|
|||
|
2
happysan
04.05.26
✎
15:36
|
Прилагался, но не пропустило. Сейчас ещё раз попытаемся. JPG не пропускает? На всякий случай ещё здесь: https://dropmefiles.com/uAjZc
|
|||
|
3
ads55
04.05.26
✎
15:22
|
(2) Да вставьте вы это поделие просто текстом.
Мне этот код уже не нравится.... :) |
|||
|
4
rozer76
04.05.26
✎
15:28
|
(2) мы... вы там всем отделом сейчас собес проходите в рилтайме что ли...))
|
|||
|
5
happysan
04.05.26
✎
15:37
|
В (0) и (2) добавлена ссылка на скрин.
|
|||
|
6
Garykom
гуру
04.05.26
✎
15:37
|
// При изменении элемента формы "Контрагент"
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
// Получим пометку удаления
ПометкаУдаления = ПолучитьПометкуУдаленияНаСервере(Контрагент);
Если ПометкаУдаления = Истина Тогда
ТекстВопроса = "Контрагент помечен на удаление. Очистить?";
Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
Контрагент = Неопределено;
КонецЕсли;
КонецЕсли;
// Если контрагент пустой, заполним сумму договора
Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
Для Каждого СтрокаДоговора Из Объект.ТаблицаДоговоров Цикл
СтрокаДоговора.СуммаДоговора = ПолучитьСуммуДоговора(СтрокаДоговора.ДоговорКонтрагента);
КонецЦикла;
КонецЕсли;
КонецПроцедуры // КонтрагентПриИзменении()
&НаСервере
Функция ПолучитьПометкуУдаленияНаСервере(ТекущийКонтрагент)
Возврат ТекущийКонтрагент.ПометкаУдаления;
КонецФункции // ПолучитьПометкуУдаленияНаСервере()
&НаСервере
Функция ПолучитьСуммуДоговора(ДоговорКонтрагента)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);
Запрос.Текст = "..........";
/// Выполнение запроса, обработка результата
Возврат Выборка.СуммаДоговора;
КонецФункции // ПолучитьСуммуДоговора() |
|||
|
7
happysan
04.05.26
✎
15:38
|
(3) (4) )))
|
|||
|
8
Garykom
гуру
04.05.26
✎
15:38
|
Говнокод + ИИ-код
|
|||
|
9
happysan
04.05.26
✎
15:39
|
(6) Спасибо, а то был только скрин)
|
|||
|
10
Garykom
гуру
04.05.26
✎
15:43
|
1. ПолучитьПометкуУдаленияНаСервере() - нахер отдельно если там внутри одна строка, да еще без запросов
2. = Вопрос() - все современные конфы давно отказ от модальности/синхронности 3. = ПолучитьСуммуДоговора() - в цикле? и внутри запрос? мдя |
|||
|
11
spiller26
04.05.26
✎
15:40
|
(0) Цикл с запросами на каждого контрагента уже плохо.
|
|||
|
12
happysan
04.05.26
✎
15:40
|
(8) Полностью согласен, но полезно разобрать по пунктам.
|
|||
|
13
RomanYS
04.05.26
✎
15:43
|
(10) " нахер отдельно если там внутри одна строка"
Вроде очевидно - на клиенте поле недоступно) |
|||
|
14
RomanYS
04.05.26
✎
15:44
|
(10) +
4. Контекстный вызов без необходимости |
|||
|
15
happysan
04.05.26
✎
15:44
|
(0)(6) Вызов серверной функции ПолучитьСуммуДоговора(ДоговорКонтрагента) с клиента в цикле - неоптимально и некорректно.
|
|||
|
16
RomanYS
04.05.26
✎
15:47
|
Ещё непонятно откуда изменяется Объект.ТаблицаДоговоров.
|
|||
|
17
ads55
04.05.26
✎
15:49
|
(6) это вот такое сейчас на собесах дают? Да, обмельчал кандидат....
Ну самое первое - зачем вы запрос в цикл кидаете? Получите все договору контра и с ними работайте. Сократить можно код, убрав нафиг, в данном случае, не нужные комментарии. Да и проверку "=Истина" зачем? Вопрос() - ПоказатьВОпрос(). PS. Ого, тут уже написали... А всё то же самое.... |
|||
|
18
Garykom
гуру
04.05.26
✎
15:50
|
(13) Это понятно, почему не объединить?
Зачем делать для одной пометки когда можно свою ЗначениеРеквизитаОбъекта/ЗначенияРеквизитовОбъекта сразу сделать? |
|||
|
19
happysan
04.05.26
✎
15:54
|
(18) Всё верно, я тоже этот вариант фиксировал: использовать функцию БСП ОбщегоНазначения.ЗначениеРеквизитаОбъекта().
|
|||
|
20
happysan
04.05.26
✎
15:57
|
(6) Функция ПолучитьСуммуДоговора(ДоговорКонтрагента) - нужно вызывать без контекста.
|
|||
|
21
RomanYS
04.05.26
✎
15:59
|
(19) только это не избавляет от серверной (без контекста конечно) обертки.
Ну и про наличии БСП в задании ни слова, хотя и открыта собственно конфигурация БСП) |
|||
|
22
happysan
04.05.26
✎
15:59
|
(6) Использовать ПоказатьВопрос(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)
|
|||
|
23
happysan
04.05.26
✎
16:02
|
(21) Можно два варианта, я лично, два вариант озвучивал на собеседованиях. И, кстати, всё, что здесь люди сообщили, я тоже озвучивал, но пытливые соискатели ещё чего-то хотели, вот я и решил убедиться, что ничего не упущено.
|
|||
|
24
Garykom
гуру
04.05.26
✎
16:17
|
Если честно то код рабочий, для джуна пойдет на ура
И даже мидл/сеньор сможет отмазаться с таким Ну типа запрос в цикле, потому что есть готовая функция и один хрен по одному контрагенту в ТЧ будет 1-2 договора, нет смысла оптимизировать |
|||
|
25
RomanYS
04.05.26
✎
16:18
|
(24) код рабочий ... по одному контрагенту в ТЧ будет 1-2 договора
Тогда ответь на (16). Поменялся контрагент, идёт обработка ТЧ. А что должно было поменять эту ТЧ!? |
|||
|
26
Radion
04.05.26
✎
16:21
|
(24) если этот контрагент некое общее физическое лицо, через которое идут сотни покупок
|
|||
|
27
Garykom
гуру
04.05.26
✎
16:25
|
(25) Это уже вне задачи :)
|
|||
|
28
Федя Тяпкин
04.05.26
✎
16:38
|
Если ПометкаУдаления = Истина Тогда
убрать "= Истина" |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |