Имя: Пароль:
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С
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.