Имя: Пароль:
1C
1C 7.7
v7: Свернуть таблицу значений
0 baribars
 
17.01.22
13:56
Сворачиваю таблицу значений, колонка, по которой сворачивается - текст. При свертке получается одна строка и колонка, по которой сворачивается - пустая. Можно сворачивать только по справочникам что ли?
1 azernot
 
17.01.22
14:02
(0) Код свёртки в студию!
2 baribars
 
17.01.22
14:04
(1) ТЗ.Свернуть("Время","Сумма,Количество");
Время - текст, сумма и количество - числа, их сворачивает нормально.
3 73с
 
17.01.22
14:06
Колонка "Время" как описана при создании?
4 Builder
 
17.01.22
14:07
ТЗ.ВыбратьСтроку();
ТЗ.Свернуть("Время","Сумма,Количество");
ТЗ.ВыбратьСтроку();

Смотреть результат до и после, по результатам доложить.
5 baribars
 
17.01.22
14:08
(3) строка
6 azernot
 
17.01.22
14:09
Сообщить("До свертки");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Сообщить("Время: "+ТЗ.Время + ", Сумма: "+ТЗ.Сумма + ", Кол-во: "+ТЗ.Количество);
КонецЦикла;

ТЗ.Свернуть("Время","Сумма,Количество")

Сообщить("После свертки");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Сообщить("Время: "+ТЗ.Время + ", Сумма: "+ТЗ.Сумма + ", Кол-во: "+ТЗ.Количество);
КонецЦикла;
7 baribars
 
17.01.22
14:10
(4) до светки 3 тыс записей, после свертки -1 запись
8 Эльниньо
 
17.01.22
14:12
Кусок кода, где:
ТЗ.Время =
9 azernot
 
17.01.22
14:13
(7) Что сообщается, если выполнить код из (6)?
10 baribars
 
17.01.22
14:15
(8) ТЗ.Время = "с 9 до 10"; например, значения ТЗ.Время принимает разные, но написание одинаковое, т.е. везде "с 9 до 10" или "с 10 до 11"
11 baribars
 
17.01.22
14:17
(9) до свертки все значения заполнены, после свертки -1 строка, время - пустое значение, сумма и количество - итоговые
12 MWWRuza
 
гуру
17.01.22
14:19
Пробелы в строке? При добавлении строки в таблицу, СокрЛП используете? Колонка как задана в ТЗ, с указанием типа и длины(может с пробелами не умещается) - ?
А так, вообще сворачивает по строке нормально.
13 hhhh
 
17.01.22
14:20
(11) как формируете тз?
14 MWWRuza
 
гуру
17.01.22
14:21
+(12) "(может с пробелами не умещается)"

Или вообще, там тип не строка задан...
15 azernot
 
17.01.22
14:21
(11) Может "Время" как-то по-разному написано? Ну типа в ТЗ через английскую B (би), а при свертке через русскую В (вэ) или наоборот?
16 baribars
 
17.01.22
14:22
(12) при добавлении строки в таблицу вот так например - "с 9 до 10"
17 baribars
 
17.01.22
14:22
(14)     ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Время", "Строка");
    ТЗ.НоваяКолонка("Сумма", "Число");
    ТЗ.НоваяКолонка("Количество", "Число");
18 baribars
 
17.01.22
14:23
(15) тогда бы ошибку выдало, что неверно указано имя колонки
19 Эльниньо
 
17.01.22
14:25
Полтергейст какой-то
20 НЕА123
 
17.01.22
14:26
на (13) нет ответа.
21 azernot
 
17.01.22
14:27
Вот код:

//*******************************************
Процедура Сформировать()
    
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Время");  
    ТЗ.НоваяКолонка("Количество");
    ТЗ.НоваяКолонка("Сумма");
    
    ТЗ.НоваяСтрока();  
    ТЗ.Время = "С 9 до 10";
    ТЗ.Количество = 1;
    ТЗ.Сумма = 10;
    
    ТЗ.НоваяСтрока();  
    ТЗ.Время = "С 9 до 10";
    ТЗ.Количество = 2;
    ТЗ.Сумма = 20;
    
    ТЗ.НоваяСтрока();  
    ТЗ.Время = "С 10 до 11";
    ТЗ.Количество = 1;
    ТЗ.Сумма = 15;
    
    ТЗ.НоваяСтрока();  
    ТЗ.Время = "С 10 до 11";
    ТЗ.Количество = 2;
    ТЗ.Сумма = 30;
    
    Сообщить("До свертки");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
        Сообщить("Время: "+ТЗ.Время + ", Сумма: "+ТЗ.Сумма + ", Кол-во: "+ТЗ.Количество);
    КонецЦикла;
    
    ТЗ.Свернуть("Время","Сумма,Количество");
    
    Сообщить("После свертки");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
        Сообщить("Время: "+ТЗ.Время + ", Сумма: "+ТЗ.Сумма + ", Кол-во: "+ТЗ.Количество);
    КонецЦикла;    
    
    
КонецПроцедуры


вот что сообщает
До свертки
Время: С 9 до 10, Сумма: 10, Кол-во: 1
Время: С 9 до 10, Сумма: 20, Кол-во: 2
Время: С 10 до 11, Сумма: 15, Кол-во: 1
Время: С 10 до 11, Сумма: 30, Кол-во: 2
После свертки
Время: С 9 до 10, Сумма: 30, Кол-во: 3
Время: С 10 до 11, Сумма: 45, Кол-во: 3
22 cincout
 
17.01.22
14:27
(11) Возможно, что-то делается с ТЗ после свертки, из-за чего очищается колонка?
23 1Сергей
 
17.01.22
14:28
Барибарс что-то недоговаривает
24 baribars
 
17.01.22
14:34
(20) ТЗ.НоваяСтрока();
     ТЗ.Время = ВремяЧека;
    ТЗ.Сумма = Запрос.СуммаПродажи;
    ТЗ.Количество = 1;
25 cincout
 
17.01.22
14:39
(24) А что (6) показывает?
26 baribars
 
17.01.22
14:45
нашел свою ошибку, в колонку время писалось пустое значение. Прощу прощения за косяк и спасибо всем за помощь. Вопрос такой - запросом хочу получить время документа. Время = Документ.ЧекККМ.ВремяДок. Дату дает нормально, а время почему-то показывает одно и тоже и какую-то ерунда. Нельзя получить время документа? В журнале же выводит
27 Ryzeman
 
17.01.22
14:51
(26) В 7.7 вроде только через ПолучитьВремя или прямой запрос.
28 Калиостро
 
17.01.22
14:53
(26) В (10) дал ложную информацию, теперь все полтергейст ищут. А черепашка только одна:)
29 baribars
 
17.01.22
14:54
(28) я косяк((
30 baribars
 
17.01.22
14:54
(27) а как тогда выводится время документа в журнале?
31 1Сергей
 
17.01.22
14:55
(30) Магия
32 Chai Nic
 
17.01.22
14:58
(30) Время документа фиксируется только при оперативном проведении, если проводить задним числом, то время будет 12:00
33 baribars
 
17.01.22
14:58
(31) все должно быть объяснимо
34 Chai Nic
 
17.01.22
15:06
(33) Время хранится в журнале в составе DATE_TIME_IDDOC. В 36-ричном виде.
35 Эльниньо
 
17.01.22
15:16
Завязывайте с травкой.

ПолучитьВремя(<?>,,)
GetTime(<?>,,)
Синтаксис:
ПолучитьВремя(<Часы>,<Минуты>,<Секунды>)
Назначение:
Прочитать время документа. Возвращает время документа в переданные для этого переменные <Часы>, <Минуты>, <Секунды>.
Возвращает:
Строковое значение времени записи документа в виде 'ЧЧ.ММ.СС'.

Замечание:
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.
36 Kigo_Kigo
 
17.01.22
16:24
ЧЧ = 0;
ММ = 0;
СС = 0;
Документ.ЧекККМ.ПолучитьВремя(ЧЧ,ММ,СС);
37 Эльниньо
 
17.01.22
16:32
(36)
1. Ему ЧЧ,ММ,СС не нужно.
2. До заполнения ТЗ нужно:
Док = СоздатьОбъект("Документ");
а перед присвоением ТЗ.Время, сделать:
Док.НайтиДокумент(ЧекККМ);
и потом:
ТЗ.Время = Док.ПолучитьВремя();
38 Kigo_Kigo
 
17.01.22
16:49
(37) Ему еще надо проанализировать время, что бы засунуть в труктуру с 9 до 10, с 10 до 11 и т.д.
39 Kigo_Kigo
 
17.01.22
16:51
(38) +Если он попробует свернуть по времени, то практически ничего не свернется, только если доки в одну сек попадут что вообще маловероятно
40 Джордж1
 
17.01.22
16:55
ВремяДок - это не реквизит документа?
41 Злопчинский
 
17.01.22
16:57
(40) не...
42 Джордж1
 
17.01.22
16:58
(40)А как тогда вот это работает у автора вопроса

Документ.ЧекККМ.ВремяДок
43 Эльниньо
 
17.01.22
16:59
(38) Прогнать ТЗ ещё раз и проставить.
ТЗ.Время = "с " + Число(ТЗ.Время) + " по " + (Число(ТЗ.Время) + 1));
44 Kigo_Kigo
 
17.01.22
17:00
А если интервал времени час, то достаточно во время записать "ЧЧ" и свернуть по этой колонке, получится
45 Kigo_Kigo
 
17.01.22
17:02
(43) Зачем 2 раза гонять, когда с первого прогона можно все это сделать?
46 Злопчинский
 
17.01.22
17:02
(42) тогда - реквизит
47 Эльниньо
 
17.01.22
17:12
(44) (45) целиком и полностью
48 Chai Nic
 
18.01.22
08:19
(42) Ну значит у него в ПриЗаписи должна быть установка этого ВремяДок. Если это реквизит.