Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 07:27

Массив товаров. Поиск товара с минимальной ценой

Автор shams, 18 мая 2023, 14:58

0 Пользователей и 1 гость просматривают эту тему.

shams

Здраствуйте хотел бы спросить как сравнить цену чтобы  сделать так чтобы показать пользователю в виде сообщения вида "Самый дешевый товар: Смартфон Samsung Galaxy A12, цена: 352 руб. 55 коп."



&НаКлиенте
Процедура Массивтоваров(Команда)
   

   МассивТоваров = Новый Массив ;
   
   //
   ДанныеRedmi = Новый Структура;
   
   ДанныеRedmi.Вставить("Артикул" , "184601023");
   ДанныеRedmi.Вставить("Наименование" , "Смартфон Xiaomi Redmi 9 3/32GB, зеленый");
   ДанныеRedmi.Вставить("Штрихкод" , "978020137962");
   ДанныеRedmi.Вставить("Цена" , "418.12");
   
   МассивТоваров.Добавить(ДанныеRedmi);
   
   //
   ДанныеGalaxy  = Новый Структура;
   
   ДанныеGalaxy.Вставить("Артикул" , "215543732");
   ДанныеGalaxy.Вставить("Наименование" , "Смартфон Samsung Galaxy A12");
   ДанныеGalaxy.Вставить("Штрихкод" , "478020147962");
   ДанныеGalaxy.Вставить("Цена" , "352.55");
   
   МассивТоваров.Добавить(ДанныеGalaxy);
   //
    Для Каждого ЭлементСтруктуры Из ДанныеGalaxy Цикл
      Сообщить(ЭлементСтруктуры.Ключ + ": " + ЭлементСтруктуры.Значение);
   КонецЦикла;

   
   //
   ДанныеPoco   = Новый Структура;
   
   ДанныеPoco.Вставить("Артикул" , "254514022");
   ДанныеPoco.Вставить("Наименование" , "Смартфон Poco X3 Pro 8");
   ДанныеPoco.Вставить("Штрихкод" , "448021147962");
   ДанныеPoco.Вставить("Цена" , "734.07");
   
   МассивТоваров.Добавить(ДанныеPoco);
   
   //Для Каждого ЭлементСтруктуры Из ДанныеPoco Цикл
   //   Сообщить(ЭлементСтруктуры.Ключ + ": " + ЭлементСтруктуры.Значение);
   //КонецЦикла;

   
   Для Каждого Элемент Из МассивТоваров Цикл
      Если Элемент = МассивТоваров   Тогда
         дешевый   = Элемент;
      КонецЕсли;     
   КонецЦикла;
   
   Сообщить("------");
   Сообщить("Самый дешевый товар: " + ДанныеGalaxy );
   
   
     
КонецПроцедуры

LexaK

shams, сначала исправьте ошибку: Цена должна быть Числом !!!
(вставьте сюда код который получится)
если помогло нажмите: Спасибо!

Afinogen

 B) сделайте реквизит формы с типом таблица значений, добавьте в него колонки  с именами как у вас имена ключей в структуре и вместов сего что  написали

вот этой всей петрушки

   ДанныеGalaxy  = Новый Структура;
   
   ДанныеGalaxy.Вставить("Артикул" , "215543732");
   ДанныеGalaxy.Вставить("Наименование" , "Смартфон Samsung Galaxy A12");
   ДанныеGalaxy.Вставить("Штрихкод" , "478020147962");
   ДанныеGalaxy.Вставить("Цена" , "352.55");
   
   МассивТоваров.Добавить(ДанныеGalaxy);
   //
    Для Каждого ЭлементСтруктуры Из ДанныеGalaxy Цикл
      Сообщить(ЭлементСтруктуры.Ключ + ": " + ЭлементСтруктуры.Значение);
   КонецЦикла;

проосто добавляйте новую строку в таблицу, потмо когда все добавить отсортируйте таблицу по возрастанию  цены и выведите в сообщении все что вам надо


shams

LexaK, Здраствуйте вот исправил теперь что надо сделать


&НаКлиенте
Процедура Массивтоваров(Команда)
   

   МассивТоваров = Новый Массив ;
   
   //
   ДанныеRedmi = Новый Структура;
   
   ДанныеRedmi.Вставить("Артикул" , "184601023");
   ДанныеRedmi.Вставить("Наименование" , "Смартфон Xiaomi Redmi 9 3/32GB, зеленый");
   ДанныеRedmi.Вставить("Штрихкод" , "978020137962");
   ДанныеRedmi.Вставить("Цена" , 418.12);
   
   МассивТоваров.Добавить(ДанныеRedmi);
   
   //
   ДанныеGalaxy  = Новый Структура;
   
   ДанныеGalaxy.Вставить("Артикул" , "215543732");
   ДанныеGalaxy.Вставить("Наименование" , "Смартфон Samsung Galaxy A12");
   ДанныеGalaxy.Вставить("Штрихкод" , "478020147962");
   ДанныеGalaxy.Вставить("Цена" , 352.55);
   
   МассивТоваров.Добавить(ДанныеGalaxy);
   //
   ДанныеPoco   = Новый Структура;
   
   ДанныеPoco.Вставить("Артикул" , "254514022");
   ДанныеPoco.Вставить("Наименование" , "Смартфон Poco X3 Pro 8");
   ДанныеPoco.Вставить("Штрихкод" , "448021147962");
   ДанныеPoco.Вставить("Цена" , 734.07);
   
   МассивТоваров.Добавить(ДанныеPoco);
   
   Для Каждого ЭлементСтруктуры Из ДанныеPoco Цикл
      Сообщить(ЭлементСтруктуры.Ключ + ": " + ЭлементСтруктуры.Значение);
   КонецЦикла;

   
   Сообщить("------");
   Сообщить("Самый дешевый товар: " + ДанныеGalaxy );
   
   

      
КонецПроцедуры

Kvark5d

shams, а дальше надо задуматься - зачем применять Структуру? А потом перечитать комментарий Afinogen и сделать как там написано

LexaK

shams, попробуйте такой код, почитайте коменты
&НаКлиенте
Процедура Массивтоваров(Команда)

//1
   МассивТоваров = Новый Массив ;
   ДанныеRedmi = Новый Структура;
   ДанныеRedmi.Вставить("Артикул" , "184601023");
   ДанныеRedmi.Вставить("Наименование" , "Смартфон Xiaomi Redmi 9 3/32GB, зеленый");
   ДанныеRedmi.Вставить("Штрихкод" , "978020137962");
   ДанныеRedmi.Вставить("Цена" , 418.12);
   МассивТоваров.Добавить(ДанныеRedmi);
   
//2
   ДанныеGalaxy  = Новый Структура;
   ДанныеGalaxy.Вставить("Артикул" , "215543732");
   ДанныеGalaxy.Вставить("Наименование" , "Смартфон Samsung Galaxy A12");
   ДанныеGalaxy.Вставить("Штрихкод" , "478020147962");
   ДанныеGalaxy.Вставить("Цена" , 352.55);
   МассивТоваров.Добавить(ДанныеGalaxy);
   
//3
   ДанныеPoco   = Новый Структура;
   ДанныеPoco.Вставить("Артикул" , "254514022");
   ДанныеPoco.Вставить("Наименование" , "Смартфон Poco X3 Pro 8");
   ДанныеPoco.Вставить("Штрихкод" , "448021147962");
   ДанныеPoco.Вставить("Цена" , 734.07);
   МассивТоваров.Добавить(ДанныеPoco);

   МинЦена = Неопределено; //переменная для товара с минимальной ценой
   Для Каждого ТекТовар Из МассивТоваров Цикл
   Если МинЦена = Неопределено или МинЦена.Цена > ТекТовар.Цена Тогда
   //если у текущего товара цена меньше, запоминаем его в переменной
     МинЦена = ТекТовар;
  КонецЕсли;
      //Сообщить(ЭлементСтруктуры.Ключ + ": " + ЭлементСтруктуры.Значение);
   КонецЦикла;

   Если МинЦена <> Неопределено Тогда
   Сообщить("------");
   Сообщить("Самый дешевый товар: " + МинЦена.Наименование + ", Цена: " + МинЦена.Цена );
   КонецЕсли;
   
   

     
КонецПроцедуры
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск