Имя: Пароль:
1C
1С v8
Как найти минимум
0 TRABANT
 
09.10.11
16:19
Здрасти подскажие пожалуйста алгоритм как выводить минимальное значение табличной части документа
1 asady
 
09.10.11
16:19
Запросом получить и вывести
2 TRABANT
 
09.10.11
16:20
А можете простейший приер привести? Я пытался через цикл реализовать
3 asady
 
09.10.11
16:23
ВЫБРАТЬ МИНИМУМ(Док.Количество) ИЗ Документ.ТвойДок.Товары КАК Док
ГДЕ Док.Ссылка=&СсылкаНаТвойДок
4 asady
 
09.10.11
16:23
(2) пример (3) работает если док записан.
5 TRABANT
 
09.10.11
16:27
Проверил в констукторе запросов вроде работает

ВЫБРАТЬ
   МИНИМУМ(Документ1ТабличнаяЧасть1.Число) КАК Число
ИЗ
   Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1
6 Нуф-Нуф
 
09.10.11
16:27
(4) та ну?
7 zak555
 
09.10.11
16:28
(5) документ один в БД ?
8 TRABANT
 
09.10.11
16:29
Да,для тестов создал сижу тестирую
9 TRABANT
 
09.10.11
17:13
Можно глупый вапрос? как мне теперь вывести полученные в запросе данные? Через отладчик он находит мин значение..Но в сообщение ничего не видет:(
Процедура ТабличнаяЧасть1ЧислоПриИзменении(Элемент)
Запрос = Новый Запрос();
Запрос.Текст =
   "ВЫБРАТЬ
   |МИНИМУМ(Документ1ТабличнаяЧасть1.Число) КАК Число
   |ИЗ
   |Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1";
   
Результат = Запрос.Выполнить();

ЭлементыФормы.Ммм.Значение = "мин значение:"+результат;

сообщить ("-"+Результат);

КонецПроцедуры
11 PR
 
09.10.11
17:14
(9) Тебе не кажется, что стоит прочитать документацию? Так, для начала :))
12 TRABANT
 
09.10.11
17:19
Да кажется вот и читаю..:) заодно тут вапросы задаю,может кто чего подскажет толкового.
13 TRABANT
 
09.10.11
17:29
разобрался
   Запрос = Новый Запрос();
Запрос.Текст =
   "ВЫБРАТЬ
   |МИНИМУМ(Документ1ТабличнаяЧасть1.Число) КАК Число
   |ИЗ
   |Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1";
   
Выборка = Запрос.Выполнить().Выбрать();
Выборка.следующий();
Сообщить ("мин" + Выборка.число);
14 Doomer
 
09.10.11
17:47
И кто говорил что программисту 1С не нужны алгоритмы сортировки и поиска?
15 ILM
 
гуру
09.10.11
18:08
(13)
(7) Намекает, что нужно вам ещё отбор по  документу добавить в запрос

Запрос = Новый Запрос();
Запрос.Текст =
   "ВЫБРАТЬ
    |МИНИМУМ(Документ1ТабличнаяЧасть1.Число) КАК Число
   |ИЗ
    |Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1
|ГДЕ
|  Документ1ТабличнаяЧасть1 = &СсылкаДокумента";

Запрос.Установитьпараметр("СсылкаДокумента", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.следующий();
Сообщить ("мин" + Выборка.число);
16 ILM
 
гуру
09.10.11
18:09
##|  Документ1ТабличнаяЧасть1.Ссылка
17 Grusswelle
 
09.10.11
18:10
мдя
18 TRABANT
 
09.10.11
18:11
спасибо за советы
19 AlStorm
 
09.10.11
18:17
Интересно, тупо перебором по табличной части будет медленнее, чем в запросе?
Если процедура в форме этого документа запускается, то сомневаюсь...
20 TRABANT
 
09.10.11
18:22
так же испытал таки образом:
Функция ПолучитьМинимальноеЗначение()
   Минзначение = ТабличнаяЧасть1[0].Число;
   //МинЗначение = Товары[0].Количество;
   Для каждого СтрокаТЧ из ТабличнаяЧасть1 Цикл
   //Для каждого СтрокаТЧ Из Товары Цикл
     МинЗначение = ?(МинЗначение < СтрокаТЧ.число, МинЗначение, СтрокаТЧ.число);
   //МинЗначение = ?(МинЗначение < СтрокаТЧ.Количество, МинЗначение, СтрокаТЧ.Количество);
   КонецЦикла;

Возврат МинЗначение;

КонецФункции

Процедура Кнопка1Нажатие(Элемент)
МинЗначение = ПолучитьМинимальноеЗначение();
ЭлементыФормы.ТекстовоеПоле.Значение = "Минимальное количество в табличной части = " + МинЗначение ;

КонецПроцедуры
21 Alexandr Puzakov
 
09.10.11
19:03
А нЕ запросом пользоваться уже не модно?
22 Aleksey
 
09.10.11
19:11
(21) Сейчас тебя объяснят, что настоящий 1С-ник использует только ПРЯМОЙ запрос, все остальные вообще не программисты, которые используют запрос на языке 1С
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан