Имя: Пароль:
1C
1С v8
Сортировка ТаблицыЗначений по моменту времени документа
,
0 RalexR
 
29.10.12
22:39
Добрый вечер! Вобщем вот в чём задача: есть отобранные в таблицу значений ссылки на документы, моменты времени и кое-какие другие данные, есть необходимость сортировать ТЗ по моменту времени. КАК это сделать, может подскажет кто???? слышал что сортировкой таблицы значений (.Сортировать("МоментВремени")) не катит.
1 Feanorko
 
29.10.12
22:39
Сортируй в запросе
2 RalexR
 
29.10.12
22:46
Мне важно менять в Таблице Значений кое какие данные, в том числе для строк задавать новый момент времени и сортировать после изменений. Хотел передавать ТЗ через параметр в запрос и там сортировать и выгружать обратно, но ругается на момент времени : Тип не возможно использовать в запросе. Поискал в интернете такая ошибка выдается когда ТЗ не типизирована, но у меня таблица значений типизирована так как выгружается из запроса.
3 Лефмихалыч
 
29.10.12
22:49
(2) ссылку на документ передавай, у документов есть реквизит МоментВремени
4 ВалераОшкин
 
29.10.12
22:49
(3) Однако голова!
5 Нуф-Нуф
 
29.10.12
22:54
Сортировать по дате и ссылке
6 Лефмихалыч
 
29.10.12
23:00
(4) а, ну да, точно, его ж нельзя в запросе-то использовать. Как-то я об этом не подумал...
7 RalexR
 
29.10.12
23:01
из таблицы значений через ссылку реквизиты объекта не вытаскиваются пишет, ругается на этот элемент "Поле не найдено СсылкаНаРегистратор.МоментВремени".
8 ssh2012
 
29.10.12
23:03
(6) по моменту можно сортировать в запросе
9 Лефмихалыч
 
29.10.12
23:03
+(6) хотя нет, нормально всё сортируется
(7) а это потому, что таблица должна быть типизированной
10 kiruha
 
29.10.12
23:04
Момент времени это дата и индетификатор по сути
поэтому (5)
11 RalexR
 
29.10.12
23:06
но из таблицы значений он отказывается МоментВремени использовать. Полностью типизирована,тк ТЗ которую передаю в прараметр сортирующего запроса, выгружаю  из запроса и пока ещё без всяких изменений как она есть экспериментирую, тоесть ТЗ типизирована.
12 RalexR
 
29.10.12
23:09
всмысле в запросе отказывается МоментВремени использовать в запросе, когда передаем туда таблицу значений через параметр.
13 ssh2012
 
29.10.12
23:10
Можно сортировать ТЗ по колонке момент времени, использовать  СравнениеЗначений
14 ssh2012
 
29.10.12
23:11
ТаблицаЗначений (ValueTable)
Сортировать (Sort)
Синтаксис:
Сортировать(<Колонки>, <Объект сравнения>)
Параметры:
<Колонки> (обязательный)
Тип: Строка. Список имен колонок, разделенных запятыми, по которым производится сортировка таблицы. После каждого имени колонки через пробел может быть указано направление сортировки. Направление определяется: "Убыв" ("Desc") - упорядочивать по убыванию; "Возр" ("Asc") - упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Порядок указания имен колонок таблицы определяет порядок сортировки. Это означает, что сначала таблица сортируется по колонке, указанной первой. Затем группы строк с одинаковым значением в этой колонке сортируются по колонке, которая указана второй, и так далее.
<Объект сравнения> (необязательный)
Тип: СравнениеЗначений. Объект для сравнения значений. Независимо от того, задан объект сравнения или нет, элементы, чьи типы не совпадают, сравниваются по коду типа, а элементы простых типов сравниваются по значению. Дополнительно к этому:
если объект сравнения не задан, то элементы остальных типов сравниваются по строковому представлению;
если объект сравнения задан, то:
объекты сравниваются по идентификатору;
моменты времени сравниваются по дате и идентификатору объекта;
элементы остальных типов сравниваются по строковому представлению.
15 RalexR
 
29.10.12
23:12
Если сортировать так  ТЗ.Сортировать("МоментВремени") то получается совсем ни то.
16 ssh2012
 
29.10.12
23:13
ТЗ.Сортировать("МоментВремени", Новый СравнениеЗначений)
17 kiruha
 
29.10.12
23:14
МоментВремени (PointInTime)
Описание:

Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время(!), а также ссылку(!) на объект базы данных.
18 RalexR
 
29.10.12
23:15
тость в объект сравнения передаем пустой обьект типа СравнениеЗначений?
19 RalexR
 
29.10.12
23:17
Да, тут допустим я обойду, но в дальнейшем мне всё же необходимо передача этой ТЗ с моментов времени в запрос, но я так понимаю это нереально.
20 ssh2012
 
29.10.12
23:17
(18) [если объект сравнения задан, то: ...моменты времени сравниваются по дате и идентификатору объекта; ]
21 Лефмихалыч
 
29.10.12
23:17
(11) значит у тебя там составной тип и среди типов есть не ДокументСсылка
22 RalexR
 
29.10.12
23:22
(21)Да, слушай ка Тип составной и там есть Null  в регистраторе, НО когда удаляю из запроса (с параметром ТЗ) момент времени то всё работает, ни на что не ругается.
23 RalexR
 
29.10.12
23:54
Так и не получается фокус с моментом времени!:(((
24 Classic
 
30.10.12
00:00
(23)
Тип колонки правильно задал?
Давай код
25 RalexR
 
30.10.12
00:27
Вот код примерно вот так, немного в упрощённом виде, для понятности :
|ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Регистратор,
|    ХозрасчетныйДвиженияССубконто.Период,
|    ХозрасчетныйДвиженияССубконто.КоличествоДт,
|    ХозрасчетныйДвиженияССубконто.СубконтоДт1,
|    ХозрасчетныйДвиженияССубконто.СубконтоДт2,
|    ХозрасчетныйДвиженияССубконто.МоментВремени,
|    ""Приход""
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
|            &НачПериода,
|            &КонПериода,
|            Организация = &Организация
|                И СчетДт = &СчетТопливо,
|            ,
|        ) КАК ХозрасчетныйДвиженияССубконто";

Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("СчетТопливо",Счет);     Запрос.УстановитьПараметр("НачПериода",НачалоДня(НачПериода));     Запрос.УстановитьПараметр("КонПериода",КонецДня(КонПериода));
ТабЗначВсеДвижения = Запрос.Выполнить().Выгрузить();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
         |    ТЗДок.МоментВремени,
         |    ТЗДок.Период,
         |    ТЗДок.Регистратор
         |ПОМЕСТИТЬ ВТ
         |ИЗ
         |    &ТЗ КАК ТЗДок
         |;
         |//////////////////////
         |ВЫБРАТЬ  РАЗЛИЧНЫЕ
         |    вт.МоментВремени,
         |    вт.Период
             | вт.Регистратор
         |ИЗ
         |    ВТ КАК вт
             |УПОРЯДОЧИТЬ ПО вт.МоментВремени";  
   Запрос.УстановитьПараметр("ТЗ",ТабЗначВсеДвижения);
   ТабЗначВсеРасходы = Запрос.Выполнить().Выгрузить();
26 RalexR
 
30.10.12
00:29
между двумя запросами в дальнейшем предполагается действия по изменению реквизитов и момента времени, поэтому сортировка таблицы значений необходима.
27 Нуф-Нуф
 
30.10.12
07:07
Всю ветку не читал, сортировку по дате и ссылке уже предлагали?
28 ssh2012
 
30.10.12
10:13
(27) да, в (5)
29 kiruha
 
30.10.12
11:21
(27)
Чувак попался упертый, ему говорят, что момент времени это дата + идентификатор, а он вбил себе в голову, что это что то в базе и ни в какую. Наверно еще как то менять будет
30 cw014
 
30.10.12
11:26
(25) Не взлетит. После выгрузки результат в ТЗ типы колонок становятся составными ("ДокументСсылка,Null")
31 kiruha
 
30.10.12
12:09
Можно ли изменить МоментВремени в пределах одной секунды?
http://www.1c-galaxy.ru/forum4/topic296326/
32 Kashemir
 
30.10.12
12:19
(31) Нельзя
33 Kashemir
 
30.10.12
12:20
Момент времени в 8 = ДатаВремяДокумента + НомерТаблицаДокумента + ИДДокумента.

НомерТаблицаДокумента + ИДДокумента = Ссылка

Хочешь упорядочить в запросе:
1. Упорядочиваешь по времени.
2. Упорядочиваешь по ссылке
34 kiruha
 
30.10.12
12:32
(32)
Это не вопрос, кавычки забыл ))
Это заголовок темы в  приведенной в (31) ссылке - как чел извращался
35 Kashemir
 
30.10.12
12:35
(34) Даже смотреть не вижу смысла. Платформа позволяет максимум - записать новый документ с заданной ссылкой. На этом все возможности для извращения заканчиваются.