|
Как вычислить максимальное значение в ТЗ | ☑ | ||
---|---|---|---|---|
0
ugorchina
19.04.18
✎
11:20
|
Добрый день!
есть ТЗ (ТаблицаЗначений) в ней есть две колонки Арт | Цена записи могут быть такого вида 123 | 15 123 | 25 123 | 35 321 | 10 321 | 12 321 | 40 321 | 53 как видно есть артикулы одинаковые необходимо их сгруппировать и вычислить максимальное значение цены но вот как это сделать? помогите пожалуйста |
|||
1
ugorchina
19.04.18
✎
11:21
|
здесь читал но там не сказано ничего о группировки (ну или я не нашел ( )
https://www.forum.mista.ru/topic.php?id=551881 |
|||
2
Eastert
19.04.18
✎
11:22
|
Отсортировать по убыванию цены и выбрать первую запись
|
|||
3
aka AMIGO
19.04.18
✎
11:23
|
Я-б сделал сортировку по полю "Цена", а в цикле проверял бы изменение Арт. Изменился - стал-быть, максимальная цена
|
|||
4
PLUT
19.04.18
✎
11:24
|
(0) запросом
|
|||
5
aka AMIGO
19.04.18
✎
11:24
|
(2) По убыванию = ++, и еще - ему надо для каждого Арт
|
|||
6
Eastert
19.04.18
✎
11:24
|
(3) ТЗ.Сортировать("Цена Убыв");
МаксимальнаяСтрока = ТЗ[0]; , а при чем здесь колонка Арт? если надо найти максимальное значение цены? |
|||
7
ugorchina
19.04.18
✎
11:25
|
(6) мне надо получить по каждому артиклу максимальную цену
|
|||
8
aka AMIGO
19.04.18
✎
11:26
|
(6) См.(7). У меня интуиция :)
|
|||
9
Eastert
19.04.18
✎
11:26
|
(7) Аа, можно закинуть в запрос, и там сгурппировать
|
|||
10
Junibot
19.04.18
✎
11:26
|
(0) максимальное значение цены для каждого арт?
|
|||
11
Волшебник
19.04.18
✎
11:26
|
(7) ТЗ.Сортировать("Артикул Возр, Цена Убыв");
|
|||
12
ugorchina
19.04.18
✎
11:26
|
Результат = Новый Структура("Макс,Мин");
ЗапросМакМин = Новый Запрос; ЗапросМакМин.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ЗапросМакМин.Текст = "ВЫБРАТЬ | РабТаблица._ПолеМакс КАК Макс, | РабТаблица._ПолеМин КАК Мин |ПОМЕСТИТЬ РабочаяТаблица |ИЗ | &РабТаблица КАК РабТаблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(РабочаяТаблица.Макс) КАК Макс, | МИНИМУМ(РабочаяТаблица.Мин) КАК Мин |ИЗ | РабочаяТаблица КАК РабочаяТаблица |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ РабочаяТаблица"; ЗапросМакМин.Текст = СтрЗаменить(ЗапросМакМин.Текст, "_ПолеМакс" , ПолеМакс); ЗапросМакМин.Текст = СтрЗаменить(ЗапросМакМин.Текст, "_ПолеМин" , ПолеМин); ЗапросМакМин.УстановитьПараметр("РабТаблица", тзДанные); РезМаксМин = ЗапросМакМин.Выполнить().Выгрузить(); Результат["Макс"]= РезМаксМин[0].Макс; Результат["Мин"] = РезМаксМин[0].Мин; Возврат Результат; |
|||
13
ugorchina
19.04.18
✎
11:27
|
+(12) как сгруппировать здесь?
|
|||
14
pasha_d
19.04.18
✎
11:27
|
Если надо сгруппировать по артикулу - то для начала ТЗ.Свернуть("Арт", "Цена");
|
|||
15
ugorchina
19.04.18
✎
11:27
|
(14) и что я получу?
|
|||
16
aka AMIGO
19.04.18
✎
11:27
|
(14) :)
|
|||
17
Eastert
19.04.18
✎
11:27
|
(13) в конструкторе запроса на вкладке Группировка
|
|||
18
ugorchina
19.04.18
✎
11:28
|
(10) да!
|
|||
19
pasha_d
19.04.18
✎
11:28
|
(15) ты же пишешь, что есть одинаковые артикулы и что необходимо их сгруппировать
|
|||
20
ugorchina
19.04.18
✎
11:30
|
(19) понятно что я знаю что надо сделать! но я не знаю как!
|
|||
21
pasha_d
19.04.18
✎
11:31
|
Вычислить максимальную цену и при этом их сгруппировать по артикулу - вещи несовместимые)
|
|||
22
ugorchina
19.04.18
✎
11:32
|
Результат = Новый Структура("Макс,Мин");
ЗапросМакМин = Новый Запрос; ЗапросМакМин.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ЗапросМакМин.Текст = "ВЫБРАТЬ | РабТаблица._ПолеМакс КАК Макс, | РабТаблица._ПолеМин КАК Мин |ПОМЕСТИТЬ РабочаяТаблица |ИЗ | &РабТаблица КАК РабТаблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(РабочаяТаблица.Макс) КАК Макс, | МИНИМУМ(РабочаяТаблица.Мин) КАК Мин |ИЗ | РабочаяТаблица КАК РабочаяТаблица |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ РабочаяТаблица"; ЗапросМакМин.Текст = СтрЗаменить(ЗапросМакМин.Текст, "_ПолеМакс" , ПолеМакс); ЗапросМакМин.Текст = СтрЗаменить(ЗапросМакМин.Текст, "_ПолеМин" , ПолеМин); ЗапросМакМин.УстановитьПараметр("РабТаблица", тзДанные); РезМаксМин = ЗапросМакМин.Выполнить().Выгрузить(); Результат["Макс"]= РезМаксМин[0].Макс; Результат["Мин"] = РезМаксМин[0].Мин; Возврат Результат; дополните пож группировкой по арт каму не сложно спаисбо |
|||
23
Junibot
19.04.18
✎
11:33
|
(18)
ВЫБРАТЬ ВремТЗ.Арт, МАКСИМУМ(ВремТЗ.Цена) КАК Цена ИЗ ВремТЗ КАК ВремТЗ СГРУППИРОВАТЬ ПО ВремТЗ.Арт |
|||
24
ugorchina
19.04.18
✎
11:33
|
(21)с чего Вы взяли?
|
|||
25
ugorchina
19.04.18
✎
11:33
|
(230 спасибо! добрый человек!
|
|||
26
ugorchina
19.04.18
✎
11:35
|
потом запрос циклом перебирать верно?
|
|||
27
PLUT
19.04.18
✎
11:36
|
(26) можно в ТЗ выгрузить
ТЗ = Запрос.Выполнить().Выгрузить(); |
|||
28
Вафель
19.04.18
✎
11:37
|
а можно построителем запроса, он умеет напрямую из тз читать без обращения к серверу субд
|
|||
29
ugorchina
19.04.18
✎
11:41
|
(28) построителем запроса Вы имели в виду конструктором? я плохо еще знаю 1с 8
|
|||
30
Вафель
19.04.18
✎
11:42
|
|
|||
31
ugorchina
19.04.18
✎
11:42
|
(23) погодите а это не дополнение к моему а новый запрос?
|
|||
32
МихаилМ
19.04.18
✎
11:43
|
за запрос надо увольнять за профнепригодность.
1с имеет как минимум 3 механизма для расчета максимума тз: построительзапроса, анализданных общая статистика, скд. а алгоритм без полного перебора прост: копию тз, добавить поле счетчик, заполнить поле 1, свернуть в поле счетчик будет кол-во записей. тз сортировать , выбирать последние записи в группировке |
|||
33
ugorchina
19.04.18
✎
11:45
|
так верно?
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВремТЗ.Арт КАК Арт, | МАКСИМУМ(ВремТЗ.Цена) КАК Цена |ИЗ | ВремТЗ КАК ВремТЗ | |СГРУППИРОВАТЬ ПО | ВремТЗ.Арт"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА |
|||
34
Вафель
19.04.18
✎
11:46
|
(32) мне кажется одинарный перебор будет быстрее сортирвоки и свертки
|
|||
35
ugorchina
19.04.18
✎
11:46
|
(32) если я пользую свернуть для ТЗ по артикулу
разве не не сложат все цифры цены? |
|||
36
ugorchina
19.04.18
✎
11:47
|
(27) а для чего мне помещать то? мне надо регистр после этого записать эти данные! помещу я в еще одну ТЗ после ее всеравно перебирать НЕ?
|
|||
37
МихаилМ
19.04.18
✎
12:00
|
(35) цену не нужно сворачивать. нужно сворачивать поле счетчик, чтобы узнать кол-во записей в группировке.
|
|||
38
ugorchina
19.04.18
✎
12:01
|
ОписаниеТипЦеновогоЧисла = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,2));
ТЗЦеныТоваров1 = Новый ТаблицаЗначений; ТЗЦеныТоваров1.Колонки.Добавить("Артикул"); ТЗЦеныТоваров1.Колонки.Добавить("Цена", ОписаниеТипЦеновогоЧисла); СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 123; СтрЦены.Цена = 10; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 123; СтрЦены.Цена = 21; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 123; СтрЦены.Цена = 30; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 123; СтрЦены.Цена = 55; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 25; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 10; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 48; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 23; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 05; //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗЦеныТоваров1.Артикул КАК Артикул, | МАКСИМУМ(ТЗЦеныТоваров1.Цена) КАК Цена |ИЗ | ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1 | |СГРУППИРОВАТЬ ПО | ТЗЦеныТоваров1.Артикул"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Арт = ВыборкаДетальныеЗаписи.Артикул; Цен = ВыборкаДетальныеЗаписи.Цена; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА ошибка Ошибка при вызове метода контекста (Выполнить) по причине: по причине: {(5, 2)}: Таблица не найдена "ТЗЦеныТоваров1" <<?>>ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1 |
|||
39
ugorchina
19.04.18
✎
12:02
|
(38) шо не так то?
|
|||
40
Zmich
19.04.18
✎
12:02
|
(38) ИЗ &ТЗЦеныТоваров1 + Запрос.УстановитьПараметр
|
|||
41
ugorchina
19.04.18
✎
12:04
|
(40) до РезультатЗапроса = Запрос.Выполнить();
или после? |
|||
42
ugorchina
19.04.18
✎
12:05
|
(40) так верно?
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗЦеныТоваров1.Артикул КАК Артикул, | МАКСИМУМ(ТЗЦеныТоваров1.Цена) КАК Цена |ИЗ | &ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1 | |СГРУППИРОВАТЬ ПО | ТЗЦеныТоваров1.Артикул"; Запрос.УстановитьПараметр("ТЗЦеныТоваров1",ТЗЦеныТоваров1); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Арт = ВыборкаДетальныеЗаписи.Артикул; Цен = ВыборкаДетальныеЗаписи.Цена; КонецЦикла; |
|||
43
Junibot
19.04.18
✎
12:08
|
(32) хороший алгоритм
|
|||
44
ugorchina
19.04.18
✎
12:09
|
+(42) еще ошибка (
Ошибка при вызове метода контекста (Выполнить) по причине: по причине: Содержимое объекта данных может быть выбрано только во временную таблицу |
|||
45
МихаилМ
19.04.18
✎
12:10
|
(34) сортировка все равно будет. без сортировки и одной колонки можно с соответствием. все зависит от кол-ва строк и колва группировок
|
|||
46
Zmich
19.04.18
✎
12:12
|
(44).
"ВЫБРАТЬ | ТЗЦеныТоваров1.Артикул КАК Артикул, | ТЗЦеныТоваров1.Цена КАК Цена |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1; | |ВЫБРАТЬ | ТЗ.Артикул КАК Артикул, | МАКСИМУМ(ТЗ.Цена) КАК Цена |ИЗ | ТЗ |СГРУППИРОВАТЬ ПО | ТЗ.Артикул"; |
|||
47
Zmich
19.04.18
✎
12:13
|
(44) + И тип поля Артикул в таблице значений тебе нужно явно описать.
|
|||
48
ugorchina
19.04.18
✎
12:20
|
(46), (47)
ошибка Ошибка при вызове метода контекста (Добавить) по причине: Несоответствие типов (параметр номер '2') вот мой нов код ОписаниеТипЦеновогоЧисла = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,2)); ТЗЦеныТоваров1 = Новый ТаблицаЗначений; ТЗЦеныТоваров1.Колонки.Добавить("Артикул", "Строка"); ТЗЦеныТоваров1.Колонки.Добавить("Цена", ОписаниеТипЦеновогоЧисла); СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 123; СтрЦены.Цена = 10; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 123; СтрЦены.Цена = 21; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 123; СтрЦены.Цена = 30; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 123; СтрЦены.Цена = 55; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 25; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 10; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 48; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 23; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = 321; СтрЦены.Цена = 05; //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗЦеныТоваров1.Артикул КАК Артикул, | ТЗЦеныТоваров1.Цена КАК Цена |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1; | |ВЫБРАТЬ | ТЗ.Артикул КАК Артикул, | МАКСИМУМ(ТЗ.Цена) КАК Цена |ИЗ | ТЗ |СГРУППИРОВАТЬ ПО | ТЗ.Артикул"; Запрос.УстановитьПараметр("ТЗЦеныТоваров1",ТЗЦеныТоваров1); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Арт = ВыборкаДетальныеЗаписи.Артикул; Цен = ВыборкаДетальныеЗаписи.Цена; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА |
|||
49
Zmich
19.04.18
✎
12:24
|
(48). 123 - не Строка, "123" - Строка
|
|||
50
PLUT
19.04.18
✎
12:28
|
+(49) варианты:
""+123; "123"; Строка(123); |
|||
51
hhhh
19.04.18
✎
12:29
|
(48) как-то так
ТЗЦеныТоваров1.Колонки.Добавить("Артикул", ОписаниеТипаСтрока); |
|||
52
hhhh
19.04.18
✎
12:30
|
(50) по идее СтрЦены.Артикул = 123; тоже правильно. преобразуется ведь
|
|||
53
ugorchina
19.04.18
✎
12:30
|
спасибо работает
ОписаниеТипЦеновогоЧисла = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,2)); ОписаниеТипСтрок = Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(30)); ТЗЦеныТоваров1 = Новый ТаблицаЗначений; ТЗЦеныТоваров1.Колонки.Добавить("Артикул", ОписаниеТипСтрок); ТЗЦеныТоваров1.Колонки.Добавить("Цена", ОписаниеТипЦеновогоЧисла); СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "123"; СтрЦены.Цена = 10; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "123"; СтрЦены.Цена = 21; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "123"; СтрЦены.Цена = 30; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "123"; СтрЦены.Цена = 55; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "321"; СтрЦены.Цена = 25; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "321"; СтрЦены.Цена = 10; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "321"; СтрЦены.Цена = 48; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "321"; СтрЦены.Цена = 23; СтрЦены = ТЗЦеныТоваров1.Добавить(); СтрЦены.Артикул = "321"; СтрЦены.Цена = 05; //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗЦеныТоваров1.Артикул КАК Артикул, | ТЗЦеныТоваров1.Цена КАК Цена |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1; | |ВЫБРАТЬ | ТЗ.Артикул КАК Артикул, | МАКСИМУМ(ТЗ.Цена) КАК Цена |ИЗ | ТЗ |СГРУППИРОВАТЬ ПО | ТЗ.Артикул"; Запрос.УстановитьПараметр("ТЗЦеныТоваров1",ТЗЦеныТоваров1); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Арт = ВыборкаДетальныеЗаписи.Артикул; Цен = ВыборкаДетальныеЗаписи.Цена; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА |
|||
54
pasha_d
19.04.18
✎
13:42
|
(24) с того, что если вы сгруппируете вашу ТЗ по артикулу, то максимальную цену вы уже не увидите, т.к. строки просуммируются и свернутся. Почитайте что-нибудь на досуге по 1С прежде чем такие вопросы задавать.
|
|||
55
ugorchina
20.04.18
✎
11:16
|
(54) ну так у меня то все получилось! при пользовании свернуть по артикулу да у нас цена суммируется но при группировке мы получаем сгруппированный тот же список по артикулу где и вычисляем самую максимальную с чего вы взяли что они при группировке суммируются?
|
|||
56
ugorchina
20.04.18
✎
11:22
|
по сути при пользовании свернуть мы видим следующие данные
было арт | цена 123 | 12 123 | 15 321 | 20 321 | 35 321 | 48 Стало арт | цена 123 | 27 321 | 103 а при использовании группировки мы видим следующее было арт | цена 123 | 12 123 | 15 321 | 20 321 | 35 321 | 48 Стало арт ->123| цена | 12 | 15 арт ->321| цена | 20 | 35 | 48 в последнем примере мы уже по артикулу видим массив его цен а имея это легко вычисляем масимальную из них или не прав? |
|||
57
Мимохожий Однако
20.04.18
✎
11:26
|
(56) Прикольно
|
|||
58
catena
20.04.18
✎
11:28
|
(56)Бред. Разберитесь в отличиях СГРППИРОВАТЬ и ИТОГИ.
|
|||
59
pasha_d
20.04.18
✎
12:23
|
(56) Класс, чо
|
|||
60
Zmich
20.04.18
✎
12:34
|
(56). Ерунда какая-то. Код из (53) выдаст только записи с максимальной ценой по каждому артикулу (по которому и сгруппировали). Остальные записи проигнорируются. И вообще не понял, кстати, (54) - с чего там будет суммирование? Если бы функция СУММА(Цена) использовалась вместо МАКСИМУМ(Цена) - тогда бы и просуммировалась цена. Но не в этом случае.
|
|||
61
ugorchina
20.04.18
✎
14:17
|
(60) почему ерунда?
я понимаю что в коде мы работаем в запросе и он сразу выдает по арт максимум цены НО я писал в (56) данные до Функции мксимум() |
|||
62
ugorchina
20.04.18
✎
14:18
|
+(61) (56) это не результат моего зарпоса а результат только части его!
|
|||
63
ugorchina
20.04.18
✎
14:20
|
+(62)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗЦеныТоваров1.Артикул КАК Артикул, | ТЗЦеныТоваров1.Цена КАК Цена |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1; | |ВЫБРАТЬ | ТЗ.Артикул КАК Артикул, | ТЗ.Цена КАК Цена |ИЗ | ТЗ |СГРУППИРОВАТЬ ПО | ТЗ.Артикул"; Запрос.УстановитьПараметр("ТЗЦеныТоваров1",ТЗЦеныТоваров1); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Арт = ВыборкаДетальныеЗаписи.Артикул; Цен = ВыборкаДетальныеЗаписи.Цена; КонецЦикла; например так что мы получим в выборке? разве не второй вариант из (56) ? |
|||
64
ugorchina
20.04.18
✎
14:46
|
+(63) тестанул получаю тоже что и таблице значений
)))) |
|||
65
Вафель
20.04.18
✎
14:47
|
(63) А где МАКСИМУМ?
|
|||
66
ugorchina
20.04.18
✎
14:49
|
(65) я уюрал специально что бы показать что это не бред для (60)
|
|||
67
Ненавижу 1С
гуру
20.04.18
✎
14:50
|
эх, не завезли еще в коллекции 1С LINQ
|
|||
68
singlych
20.04.18
✎
14:50
|
(63) так мы получим "Поле не входит в группу Цена"
|
|||
69
ugorchina
20.04.18
✎
14:54
|
(68) ок а так?
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗЦеныТоваров1.Артикул КАК Артикул, | ТЗЦеныТоваров1.Цена КАК Цена |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1; | |ВЫБРАТЬ | ТЗ.Артикул КАК Артикул, | ТЗ.Цена КАК Цена |ИЗ | ТЗ |СГРУППИРОВАТЬ ПО | ТЗ.Артикул, | ТЗ.Цена"; |
|||
70
Ненавижу 1С
гуру
20.04.18
✎
14:55
|
(69) только надо так:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗЦеныТоваров1.Артикул КАК Артикул, | ТЗЦеныТоваров1.Цена КАК Цена |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗЦеныТоваров1 КАК ТЗЦеныТоваров1; | |ВЫБРАТЬ | ТЗ.Артикул КАК Артикул, | МАКСИМУМ(ТЗ.Цена) КАК Цена |ИЗ | ТЗ |СГРУППИРОВАТЬ ПО | ТЗ.Артикул"; |
|||
71
lEvGl
гуру
20.04.18
✎
14:56
|
71!
|
|||
72
Вафель
20.04.18
✎
14:56
|
все-таки лучше через построитель
|
|||
73
lEvGl
гуру
20.04.18
✎
14:58
|
еще через адодб в экселе, например, намутить в скл хранимую процедуру, подсоединиться, вычислить и еще много много вариантов
|
|||
74
ugorchina
20.04.18
✎
15:01
|
(73) :-)
(71) не понял |
|||
75
ugorchina
20.04.18
✎
15:01
|
(70) кто о чем )
|
|||
76
ugorchina
20.04.18
✎
15:03
|
+(75) я о (56) а Вы уважаемый (70)?
|
|||
77
ugorchina
20.04.18
✎
15:03
|
в общем чего мы спорим вот так все работает как надо!
Процедура УстановитьНовуюЦену(ТЗЦеныТоваров) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗЦеныТоваров.Артикул КАК Артикул, | ТЗЦеныТоваров.Цена КАК Цена |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗЦеныТоваров КАК ТЗЦеныТоваров; | |ВЫБРАТЬ | ТЗ.Артикул КАК Артикул, | МАКСИМУМ(ТЗ.Цена) КАК Цена |ИЗ | ТЗ |СГРУППИРОВАТЬ ПО | ТЗ.Артикул"; Запрос.УстановитьПараметр("ТЗЦеныТоваров",ТЗЦеныТоваров); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ДокОст = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент(); ДокОст.Дата = ТекущаяДата(); ДокОст.Комментарий = "Установка Цен сформирован при обмене с 1с 7" ; ДокОст.Ответственный = ПараметрыСеанса.ТекущийПользователь; НовСтр = ДокОст.ТаблицаРегистровСведений.Добавить(); НовСтр.Имя = "ЦеныНоменклатуры"; НовСтр.Представление = "Цены номенклатуры"; ДокОст.Записать(); НовыеДанные = ДокОст.Ссылка; НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(НовыеДанные); Записывать = Ложь; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Записывать = Истина; НоменклНовЦена = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",СокрЛП(ВыборкаДетальныеЗаписи.Артикул)).Ссылка; Если НоменклНовЦена <> Справочники.Номенклатура.ПустаяСсылка() Тогда НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Период = НовыеДанные.Дата; НоваяЗапись.Активность = Истина; НоваяЗапись.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001").Ссылка; НоваяЗапись.Номенклатура = НоменклНовЦена; Новаязапись.Валюта = Справочники.Валюты.НайтиПоКоду("974").Ссылка; НоваяЗапись.Цена = ВыборкаДетальныеЗаписи.Цена; Новаязапись.ЕдиницаИзмерения = НоменклНовЦена.ЕдиницаХраненияОстатков.Ссылка; КонецЕсли; КонецЦикла; Если Записывать = Истина Тогда НаборЗаписей.Записать(); КонецЕсли; КонецПроцедуры |
|||
78
ugorchina
20.04.18
✎
15:04
|
(54) Вы не правы!
|
|||
79
pasha_d
20.04.18
✎
15:50
|
(78) если вы свернете методом ТЗ.Свернуть("Арт", "Цена");
то из Вашей таблицы из (1) останется 2 строчки: 123 75 321 115 как Вы хотите получить максимум по каждому артикулу после этого? после этого метода можно получить лишь 1 максимум по всей таблице артикулов - то есть 115. Или я просто не понял того, что Вы хотите получить в итоге? |
|||
80
ugorchina
20.04.18
✎
16:29
|
(79) я уже все получил что касаемо последних сообщений я пытался доказать в (54) что он (она) не прав(а) !
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |