Не оптимальный запрос

1. veritasuna12 3 05.03.23 11:44 Сейчас в теме
Тут заложено более 20 ошибок и неоптимальных решений. Помогите пожалуйста найти

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Партия КАК Партия,
| Товары.Количество КАК Количество,
| Товары.Сумма КАК Сумма,
| Заказы.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| Документ.ПоступлениеТоваров.Товары КАК Товары
|ЛЕВОЕ СОЕДИНЕНИЕ
|РегистрНакопления.ЗаказыПоставщикам.Остатки(&Период, Контрагент = &Контрагент) КАК Заказы
| ПО Товары.Номенклатура = Заказы.Номенклатура
| И Товары.Партия = Заказы.Партия
|ГДЕ
| Товары.Ссылка = &Ссылка
| И (Заказы.Номенклатура, Заказы.Партия) В
| (ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Партия
| ИЗ
| Документ. ПоступлениеТоваров.Товары КАК Товары
| ГДЕ
| Товары.Ссылка = &Ссылка)
|ИТОГИ
| СУММА(Количество),
| СУММА(Сумма),
| СУММА(КоличествоОстаток)
|ПО
| Номенклатура,
| Партия";
ВыборкаНоменклатура = Запрос.Выполнить().Выбрать();
Пока ВыборкаНоменклатура.Следующий() Цикл
Если ВыборкаНоменклатура.Количество > ВыборкаНоменклатура.КоличествоОстаток Тогда
Сообщить("Количество в поступлении "
4
+ВыборкаНоменклатура.Количество
+ " " + ВыборкаНоменклатура.Номенклатура.ЕдиницаИзмерения
+ " превышает остаток по заказам "
+ВыборкаНоменклатура.КоличествоОстаток
+ " " + ВыборкаНоменклатура.Номенклатура.ЕдиницаИзмерения);
Иначе
ВыборкаПартия = ВыборкаНоменклатура.Выбрать();
Пока ВыборкаПартия.Следующий() Цикл
СуммаВал = СуммаВал
+ РегистрыСведений.КурсыВалют.ПолучитьПоследнее(
ВыборкаПартия.Партия.Дата
,Новый Структура("Валюта", Справочники.Валюты.НайтиПоНаименованию(«USD»)));
Движение = РегистрыНакопления.ЗаказыПоставщикам.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаПартия.Номенклатура;
Движение.Количество = ВыборкаПартия.Количество;
КонецЦикла;
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Количество = ВыборкаНоменклатура.Количество;
Движение.Сумма = ВыборкаНоменклатура.Сумма;
Движение.СуммаВал = СуммаВал;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 05.03.23 12:01 Сейчас в теме
(1) Это что - конкурс какой-то?
3. veritasuna12 3 05.03.23 12:35 Сейчас в теме
4. RustamZz 05.03.23 12:39 Сейчас в теме
(3) Которую вы не можете решить? Ну да выглядит ужасно, но если работает, то ладно - сойдет.
6. user1863362 05.03.23 12:59 Сейчас в теме
(3)
Задачка
А что будет с тем, кто её решит?
5. lmnlmn 69 05.03.23 12:52 Сейчас в теме
(1) Помочь найти или сделать работу за вас?
7. user1863362 05.03.23 13:04 Сейчас в теме
(1)
заложено более 20 ошибок и неоптимальных решений

А, это значит вот кто собеседование проходит. А почему не указал, что это все происходит в обработке проведения, и тебе достаточно найти минимум 15?
9. user856012 14 05.03.23 13:27 Сейчас в теме
(1)
более 20 ошибок и неоптимальных решений. Помогите пожалуйста найти
Ну,начнем сразу с 21-й: автор поленился хотя бы форматировать код своей задачки и оформить его соответствующими тегами, а разбирать код в виде плоского серого текста - удовольствие на любителя.

Посмотрим, много ли таковых найдется...
homer_; Anchoret; darkultro37; user1863362; DesertPunk; +5 Ответить
10. user1863362 05.03.23 13:31 Сейчас в теме
(9) Там есть
Опыт более 10 лет. Платформы 7.7, 8. Обновления, доработка любых конфигураций, перенос остатков, данных. СКД, конвертация данных, ОЛЕ. Интеграция с внешними системами.
А вот про лень и уважение к коллегам ничего нет, действительно.
8. user1863362 05.03.23 13:11 Сейчас в теме
А, не про обработку проведения таки указал, я не заметил
Ну, давай тогда прямо здесь тебя и пособеседуем.

Документ ПоступлениеТоваров при проведении делает движения по 2 регистрам:
· приход по регистру накопления ТоварыНаСкладах
· расход по регистру накопления ЗаказыПоставщикам
Запись в регистр накопления ТоварыНаСкладах делается в рублях (Сумма) и в долларах (СуммаВал). Курс берется на дату партии.
Документ может содержать в табличной части Товары тысячи строк с различными партиями.
Ниже представлена обработка проведения документа ПоступлениеТоваров.
Необходимо указать на ошибки и неоптимальные решения в процедуре проведения.


Что ты уже нашел?
11. user1863362 06.03.23 09:08 Сейчас в теме
Кандидат, ну где же ты?
12. Vitaly1C8 06.03.23 10:30 Сейчас в теме
Ну например в запросе

ВЫБРАТЬ // РАЗЛИЧНЫЕ <<< стоит дабавить
| Товары.Номенклатура,
| Товары.Партия
| ИЗ
| Документ. ПоступлениеТоваров.Товары КАК Товары
| ГДЕ
| Товары.Ссылка = &Ссылка

В основном запросе нужно сгруппировать по Номенклатура, Партия, суммировать Количество

ВыборкаНоменклатура = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
13. Dr.HiHi 2 06.03.23 11:12 Сейчас в теме
практически все - это грубейшая ошибка...
параметры в запрос даже не передаются %))
соединение с остатками %))
сгруппировать таблицу товаров поступления и вынести в виртуальную таблицу (не во вложенную)... и кардинально изменить запрос%))
списание по партиям можно сделать в самом запросе
в заказе поставщика указана партия %)) это еще что за х..ня
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот