Вход | Регистрация


1С:Предприятие ::

Метки: 

выбрать записи с макс датой из ТЗ, остальные удалить

Я
   pilot_iv
 
28.12.12 - 10:29
Как можно,не используя временные таблицы, найти в таблице значений строки с одинаковыми значениями, но разной датой, выбрать строку с максимальной,с меньшими удалить. В результате посмотреть, чтоб остались строки с одной - максимальной датой, если есть строки с датой меньшей максимальной -удалить. Таблица значений генерируется внешней системой.
 
 
   pilot_iv
 
1 - 28.12.12 - 10:30
т.е на первом шаге сравниваем строки - если все одинаково,оставляем с максимальной датой остальные удаляем.
   Maxus43
 
2 - 28.12.12 - 10:31
а почему не используя ВТ? достаточно непростой алгоритм будет, а запросом пару раз тыкнуть мышкой. Группиировка по всем полям и Макс по дате
   sidalexsandr
 
3 - 28.12.12 - 10:33
Свернуть (GroupBy)  
 
Синтаксис:  

 Свернуть(<Колонки группировок>, <Колонки суммирования>)  
 
Параметры:  

 <Колонки группировок> обязательный  
 
Тип: Строка. Имена колонок, разделенные запятыми, по которым необходимо группировать строки таблицы значений.  
 
 <Колонки суммирования> необязательный  
 
Тип: Строка. Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках таблицы значений.  

Описание:  

Осуществляет свертку таблицы значений по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются.
   Maxus43
 
4 - 28.12.12 - 10:34
(3) где макс дата? только суммирование же
   pilot_iv
 
5 - 28.12.12 - 10:34
в вт придется типизировать кучу полей
   Maxus43
 
6 - 28.12.12 - 10:35
(5) щас не типизированы? всем "строку" тип сделай, кроме даты
   Maxus43
 
7 - 28.12.12 - 10:36
Или юзай (3), сворачивай по всем кроме даты.
Потом в цикле обходи ТЗ_Новая, юзай ТЗ.НайтиСтроки и из них выбирай дату и записывай в ТЗ_Новая
   newfantom
 
8 - 28.12.12 - 10:41
Может, сортировать по дате
   Gesperid
 
9 - 28.12.12 - 10:45
(0) сортируешь по значению и по дате, обходишь ТЗ в обратном порядке, по ходу удаляешь
   pilot_iv
 
10 - 28.12.12 - 10:53
как это примерно должно в коде выглядеть (9)
 
 Рекламное место пустует
   Maxus43
 
11 - 28.12.12 - 10:56
(10) не прокатит так, тебе надо сравнить на все совпадающие колонки, чтоб понять дубль или нет, более правильно имхо (6)(7)
   Gesperid
 
12 - 28.12.12 - 10:59
(11) он не сказал, что колонок со значением несколько, да и в этом случае решаемо
   Maxus43
 
13 - 28.12.12 - 11:00
(12) говорил, и там их много что ппц, раз не хочет даже в ВТ сувать. Типизировать лень, а сравнивать кучу колонок с предыдущей записью ТЗ думаешь не лень будет?
   Gesperid
 
14 - 28.12.12 - 11:02
(13) про ключевые поля слышал?
   Maxus43
 
15 - 28.12.12 - 11:03
(14) я то слышал.
хз, пусть автор озвучит критерии номрально, я так понял что в (0) надо сравнивать абсолютно все столбцы, а дату только максимальную
   Reset
 
16 - 28.12.12 - 11:05
Из озвученных условий я бы делал (9).
Простейший однопроходный цикл
   Reset
 
17 - 28.12.12 - 11:05
Если столбцов несколько, это совершенно не затрудняет
   Maxus43
 
18 - 28.12.12 - 11:06
(17) как будешь сравнивать с предыдущей строкой цикла? чтоб убрать дубль.
Мення бы не затруднило типизировать колонки вобще, и не изобретать велосипед
   Reset
 
19 - 28.12.12 - 11:09
(18)
Меня бы не затруднило завести переменную для хранения предыдущей строки, и не изобретать велосипед
_Простейший_Цикл_
   Reset
 
20 - 28.12.12 - 11:11
А если брать шире - то полученная автором таблица явно откуда-то получена (думаю из запроса). Вот такм заранее и отобрать как в (2)
   Maxus43
 
21 - 28.12.12 - 11:11
(19) и потом сравнивать Если СтараяСтрока.Колонка1 = СтараяСтрока.Колонка1 И СтараяСтрока.Колонка2 = СтараяСтрока.Колонка2 И ... И СтараяСтрока.Колонка50 = СтараяСтрока.Колонка50 ?
   Reset
 
22 - 28.12.12 - 11:11
(21) Да
   Reset
 
23 - 28.12.12 - 11:12
(21) Ты тоже Если-ненавистник? :)
   Maxus43
 
24 - 28.12.12 - 11:12
(22) неэстэтично на мой взгляд. запросы наше всё!
   Reset
 
25 - 28.12.12 - 11:12
Долой язык 1С как класс ? :)
   Maxus43
 
26 - 28.12.12 - 11:12
(23) да это номрально, если там не 82 сравнения
   Gesperid
 
27 - 28.12.12 - 11:14
(21) ключевых полей, обычно, сильно меньше 50
   Reset
 
28 - 28.12.12 - 11:15
(27) Если их больше или сравнимо, имхо нужно в консерватории править чтото, т.е. в алгоритме :)
   Maxus43
 
29 - 28.12.12 - 11:15
(27) ждём автора, чего из пустого в порожнее)
в шаблонах есть даже конструкторы описания типов, Типизирование займёт мало времени
   pilot_iv
 
30 - 28.12.12 - 12:22
всем спасибо, проблему решил фактически просто через сортировку и удаление записей с меньшей датой
   pilot_iv
 
31 - 28.12.12 - 12:22
т. е сортирую, из 1 строки получаю макс дату, потом сравниваю все строки на нее и с меньшими убираю.



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует