Имя: Пароль:
1C
1C 7.7
v7: Старый баг в таблице значений ?
,
0 AliAksA
 
12.06.18
09:45
Ещё раз всем привет.

В общем обнаружил, что при сортировке числового поля таблице значений в убывающем порядке, ноль почему-то оказывается на первой позиции.
Это норм, или у меня с 1С-кой что-то? Заранее благодарю.

Таблоид = СоздатьОбъект("ТаблицаЗначений");
Таблоид.НоваяКолонка("Значение", "Число", 5, 0);
...
Таблоид.Значение = 0;
Таблоид.Значение = 1;
Таблоид.Значение = 2;
Таблоид.Значение = 3;
...
Таблоид.Сортировать("-Значение");
...
На выходе: 0, 3, 2, 1.
1 AliAksA
 
12.06.18
09:49
Нет, ну выход я конечно нашел, но некрасиво получается:

Таблоид = СоздатьОбъект("ТаблицаЗначений");
Таблоид.НоваяКолонка("Значение", "Число", 5, 0);
Таблоид.НоваяКолонка("Порядок", "Строка", 5);
...
Таблоид.Значение = Х;
Таблоид.Порядок = Формат(Таблоид.Значение, "Ч(0)5.0");
Таблоид.Сортировать("-Порядок");
2 LienXo
 
12.06.18
09:51
А разве не Сортировать("Значение-")?
3 AliAksA
 
12.06.18
09:55
(2) гыы, точно, огромное спасибо)
хотя плюсик спереди норм срабатывает ...
ТЕМА ЗАКРЫТА
4 AliAksA
 
12.06.18
10:07
Опять открываю тему:
(2) спасает, если это не последнее поле сортировки - если после него отсортировать по другому полю такая же хрень (((
5 AliAksA
 
12.06.18
10:11
+(4) т.е.:

Таблоид = СоздатьОбъект("ТаблицаЗначений");
Таблоид.НоваяКолонка("Значение", "Число", 5, 0);
Таблоид.НоваяКолонка("Строчка", "Строка", 2);
...
Таблоид.Значение = 0; Таблоид.Строка = "сс";
Таблоид.Значение = 1; Таблоид.Строка = "бб";
Таблоид.Значение = 2; Таблоид.Строка = "яя";
Таблоид.Значение = 3; Таблоид.Строка = "рр";
...
Таблоид.Сортировать("Значение-, Строка+");
...
На выходе: 0, 3, 2, 1.
6 hhhh
 
12.06.18
10:14
(4) сортируй по 2м полям. через запятую
7 AliAksA
 
12.06.18
10:18
(6) отсортировал - пример в (5) - можешь проверить лично, баг именно и возникает, когда есть последующая сортировка
8 Кац
 
12.06.18
10:29
Попробуй значение сделать тип строка
9 AliAksA
 
12.06.18
10:31
(8) для числовых значений? догадайся с трех раз что будет ...
в (1) я описал, как вышел из ситуации - может ты это имел ввиду?
10 hhhh
 
12.06.18
10:45
(9) пример вручную сюда писал?

Таблоид.НоваяКолонка("Строчка


Таблоид.Сортировать("Значение-, Строка+");

куда "Строчка" девалась?

давай нормальный пример.
11 HawkEye
 
12.06.18
10:48
(9) если уж с нулем проблемы, то не проще-ли делать Порядок = Х + 1?
12 1Сергей
 
12.06.18
10:51
Чет, не припомню я таких багов в клюшках
13 AliAksA
 
12.06.18
10:51
(10) в обработке тестил, менял - замени на строчка
(11) как вариант, но сделал попроще - напрямую перевел число в в строчное форматированное значение с лидирующими нулями - тогда поле порядка не нужно
(12) а попробуй потести :)
14 1Сергей
 
12.06.18
10:53
(13) поверю на слово. Нет клюшек под рукой
15 AliAksA
 
12.06.18
10:54
(15) Обработкой - вывод через сообщение
16 AliAksA
 
12.06.18
11:09
Не баг, а проблема с таблицей по-ходу, нижеприведенное работает норм (заменил имя таблицы значений):

Процедура Сформировать()
    
    ОчиститьОкноСообщений();
    
    Табличка = СоздатьОбъект("ТаблицаЗначений");
    Табличка.НоваяКолонка("Значение", "Число", 5, 0);
    Табличка.НоваяКолонка("Строчка", "Строка", 2);
    
    Табличка.НоваяСтрока(); Табличка.Значение = 0; Табличка.Строчка = "нн";
    Табличка.НоваяСтрока(); Табличка.Значение = 1; Табличка.Строчка = "бб";
    Табличка.НоваяСтрока(); Табличка.Значение = 2; Табличка.Строчка = "бб";
    Табличка.НоваяСтрока(); Табличка.Значение = 2; Табличка.Строчка = "яя";
    Табличка.НоваяСтрока(); Табличка.Значение = 3; Табличка.Строчка = "яя";
    Табличка.НоваяСтрока(); Табличка.Значение = 3; Табличка.Строчка = "рр";
    
    Табличка.Сортировать("-Значение, +Строчка");
    Табличка.ВыбратьСтроки();
    Пока Табличка.ПолучитьСтроку() = 1 Цикл
        Сообщить("" + Табличка.НомерСтроки + " = " + Табличка.Значение + " (" + Табличка.Строчка + ")");
    КонецЦикла;

КонецПроцедуры

В ОКНЕ СООБЩЕНИЙ:

1 = 3 (рр)
2 = 3 (яя)
3 = 2 (бб)
4 = 2 (яя)
5 = 1 (бб)
6 = 0 (нн)

Уфффф, вообще крыша едет ...
17 AliAksA
 
12.06.18
11:57
Ниже приведен оригинал на котором споймал баг.
На форме отчета реквизит НаДату типа "Дата" и флажки ПоСчету602, ПоСчету603, ПоСчету604, ПоСчету76.
Внутри:


Перем Таблоид, Печатник;
Перем СумФормат, КолФормат;

//************************************************************************************************************
Процедура ПриОткрытии()
    
    НаДату = ТекущаяДата();
    СумФормат = "Ч-18.2.'";
    КолФормат = "Ч-5.0";
    
    Если ПоСчету602 + ПоСчету603 + ПоСчету604 + ПоСчету76 = 0 Тогда
        ПоСчету602 = 1; ПоСчету603 = 1; ПоСчету604 = 1; ПоСчету76  = 1;
    КонецЕсли;
    
    Таблоид = СоздатьОбъект("ТаблицаЗначений");
    Таблоид.НоваяКолонка("Статус",    "Строка");
    Таблоид.НоваяКолонка("Счет",    "Счет");
    Таблоид.НоваяКолонка("Валюта",    "Справочник.Валюты");
    Таблоид.НоваяКолонка("Агент",    "Справочник.Контрагенты");
    Таблоид.НоваяКолонка("Докум",    "Документ");
    Таблоид.НоваяКолонка("Позиция");
    Таблоид.НоваяКолонка("Сумма",    "Число", 18, 2);
    Таблоид.НоваяКолонка("Срок",    "Дата");
    Таблоид.НоваяКолонка("Проср",    "Число", 5, 0);
    //Таблоид.НоваяКолонка("Проср",    "Строка", 5);
    
КонецПроцедуры // ПриОткрытии()
//************************************************************************************************************
Процедура ВыборкаДанных()
    
    Если ПоСчету602 + ПоСчету603 + ПоСчету604 + ПоСчету76 = 0 Тогда
        ПоСчету602 = 1; ПоСчету603 = 1; ПоСчету604 = 1; ПоСчету76  = 1;
    КонецЕсли;
    
    СписСчетов = СоздатьОбъект("СписокЗначений");
    Если ПоСчету602 = 1 Тогда СписСчетов.ДобавитьЗначение(СчетПоКоду("60.2")); КонецЕсли;
    Если ПоСчету603 = 1 Тогда СписСчетов.ДобавитьЗначение(СчетПоКоду("60.3")); КонецЕсли;
    Если ПоСчету604 = 1 Тогда СписСчетов.ДобавитьЗначение(СчетПоКоду("60.4")); КонецЕсли;
    Если ПоСчету76  = 1 Тогда СписСчетов.ДобавитьЗначение(СчетПоКоду("76"));   КонецЕсли;
    
    БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.Накл);
    БухИтоги.ВыполнитьЗапрос(НаДату, , СписСчетов, , , 1, , "СВ");
    
    БухИтоги.ВыбратьСчета();
    Пока БухИтоги.ПолучитьСчет() = 1 Цикл
        БухИтоги.ВыбратьВалюты();
        Пока БухИтоги.ПолучитьВалюту() = 1 Цикл
            
            БухИтоги.ВыбратьСубконто(1);
            Пока БухИтоги.ПолучитьСубконто(1) = 1 Цикл
                БухИтоги.ВыбратьСубконто(2);
                Пока БухИтоги.ПолучитьСубконто(2) = 1 Цикл
                    
                    ВидДока = СокрЛП(БухИтоги.Субконто(2).Вид());
                    Если Найти(ВидДока, "Выписка") > 0 Тогда
                        СрокОплаты = БухИтоги.Субконто(2).ДатаДок;
                    Иначе
                        СрокОплаты = глСрокОплаты(БухИтоги.Субконто(2));
                    КонецЕсли;
                    
                    Если СрокОплаты = Дата(0) Тогда Продолжить; КонецЕсли;
                    ВалютаОплаты = ?(БухИтоги.СНК("В")=0, Константа.ОсновнаяВалюта, БухИтоги.Валюта);
                    Если ПустоеЗначение(ВалютаОплаты) = 1 Тогда Продолжить;    КонецЕсли;
                    СуммаОплаты = ?(БухИтоги.СНК("В")=0, БухИтоги.СНК("С"), БухИтоги.СНК("В"));
                    Если СуммаОплаты = 0 Тогда Продолжить; КонецЕсли;
                    
                    Таблоид.НоваяСтрока();
                    Таблоид.Статус    = "Докум";
                    Таблоид.Счет    = БухИтоги.Счет;
                    Таблоид.Валюта    = ВалютаОплаты;
                    Таблоид.Агент    = БухИтоги.Субконто(1);
                    Таблоид.Докум    = БухИтоги.Субконто(2);
                    Таблоид.Позиция    = глПозицияДока(Таблоид.Докум);
                    Таблоид.Сумма    = СуммаОплаты;
                    Таблоид.Срок    = СрокОплаты;
                    Таблоид.Проср    = Макс(НаДату-СрокОплаты, 0);
                    //Таблоид.Проср    = Формат(Макс(НаДату-СрокОплаты, 0), "Ч(0)5.0");
                    
                КонецЦикла;
            КонецЦикла;
            
        КонецЦикла;
    КонецЦикла;
    
КонецПроцедуры // ВыборкаДанных()
//************************************************************************************************************
Процедура ОбработкаДанных()
    
    Итоговая = СоздатьОбъект("ТаблицаЗначений");
    Таблоид.Выгрузить(Итоговая);
        
    Итоговая.Свернуть("Счет, Валюта, Агент", "Сумма");
    Итоговая.ВыбратьСтроки();
    Пока Итоговая.ПолучитьСтроку() = 1 Цикл
        Таблоид.НоваяСтрока();
        Таблоид.Статус    = "Агент";
        Таблоид.Счет    = Итоговая.Счет;
        Таблоид.Валюта    = Итоговая.Валюта;
        Таблоид.Агент    = Итоговая.Агент;
        Таблоид.Сумма    = Итоговая.Сумма;
    КонецЦикла;
    
    Итоговая.Свернуть("Счет, Валюта", "Сумма");
    Итоговая.ВыбратьСтроки();
    Пока Итоговая.ПолучитьСтроку() = 1 Цикл
        Таблоид.НоваяСтрока();
        Таблоид.Статус    = "Валюта";
        Таблоид.Счет    = Итоговая.Счет;
        Таблоид.Валюта    = Итоговая.Валюта;
        Таблоид.Сумма    = Итоговая.Сумма;
    КонецЦикла;
    
    Итоговая2 = СоздатьОбъект("ТаблицаЗначений");
    Итоговая.Выгрузить(Итоговая2);
    
    Итоговая.Свернуть("Счет", "Сумма");
    Итоговая.ВыбратьСтроки();
    Пока Итоговая.ПолучитьСтроку() = 1 Цикл
        Таблоид.НоваяСтрока();
        Таблоид.Статус    = "Счет";
        Таблоид.Счет    = Итоговая.Счет;
    КонецЦикла;
        
    Таблоид.Сортировать("+Счет, +Валюта, +Агент, -Проср, +Позиция");
    Таблоид.НоваяСтрока();
    Таблоид.Статус        = "Итоги";
        
    Итоговая2.Свернуть("Валюта", "Сумма");
    Итоговая2.ВыбратьСтроки();
    Пока Итоговая2.ПолучитьСтроку() = 1 Цикл
        Таблоид.НоваяСтрока();
        Таблоид.Статус    = "ИтВал";
        Таблоид.Валюта    = Итоговая2.Валюта;
        Таблоид.Сумма    = Итоговая2.Сумма;
    КонецЦикла;
    
КонецПроцедуры // ОбработкаДанных()
//************************************************************************************************************
Процедура ПечатьОтчета(перОбновить=0)
    
    Если перОбновить = 0 Тогда
        Печатник = СоздатьОбъект("Таблица");
    Иначе
        Печатник.Очистить();
    КонецЕсли;
    Печатник.ИсходнаяТаблица("Основная");
    _Заглавие = "Кредитоская задолженность на " + Формат(НаДату, "Дддммгггг") + " г.";
    Расшифровка = "Обновить";
    Печатник.ВывестиСекцию("Шапка");
    
    Таблоид.ВыбратьСтроки();
    Пока Таблоид.ПолучитьСтроку() = 1 Цикл
        
        _Счет        = "По бух.счету «" + СокрЛП(Таблоид.Счет) + "»";
        _Валюта        = СокрЛП(Таблоид.Валюта.ПолнНаименование)
                    + " (" + СокрЛП(Таблоид.Валюта.НаименованиеДляБанка)
                    + "), код " + СокрЛП(Таблоид.Валюта.Код);
        _Контрагент = СокрЛП(Таблоид.Агент.Наименование);
        _Документ    = глПредставДока(Таблоид.Докум);
        _Сумма        = Формат(Таблоид.Сумма, СумФормат);
        _Срок        = Формат(Таблоид.Срок, "Дддммгггг");
        _ПрД        = Формат(Число(Таблоид.Проср), КолФормат);
        
        Если Таблоид.Статус = "Валюта" Тогда
            Расшифровка = Таблоид.Валюта;
        ИначеЕсли Таблоид.Статус = "Агент" Тогда
            Расшифровка = Таблоид.Агент;
        ИначеЕсли Таблоид.Статус = "Докум" Тогда
            Расшифровка = Таблоид.Докум;
        КонецЕсли;
        
        Печатник.ВывестиСекцию(Таблоид.Статус);
    КонецЦикла;
    
    _Колонтитул = _Заглавие;
    Печатник.ПовторятьПриПечатиСтроки(5, 5);
    Печатник.ПараметрыСтраницы(1, , , 15, 7, 7, 7, 7, 7, 1);
    Печатник.КоличествоЭкземпляров(1);
    Печатник.ТолькоПросмотр(1);
    Печатник.Показать(_Колонтитул);
    
КонецПроцедуры // ПечатьОтчета()
//************************************************************************************************************
Процедура Сформировать(перОбновить=0)
    
    ОчиститьОкноСообщений();
    Таблоид.УдалитьСтроки();
    
    ВыборкаДанных();
    Если Таблоид.КоличествоСтрок() = 0 Тогда
        Предупреждение("Данные по заданным условиям не обнаружены !");
        СтатусВозврата(0); Возврат;
    КонецЕсли;
    
    ОбработкаДанных();    
    ПечатьОтчета(перОбновить);
    
КонецПроцедуры // Сформировать()
//************************************************************************************************************
Процедура ОбработкаЯчейкиТаблицы(перЗначение, перФлаг)
    
    Если перЗначение = "Обновить" Тогда
        Сформировать(1);
    ИначеЕсли ТипЗначенияСтр(перЗначение) = "Документ" Тогда
        ОткрытьФорму(перЗначение);
    ИначеЕсли ТипЗначенияСтр(перЗначение) = "Справочник" Тогда
        ОткрытьФорму(перЗначение);
    КонецЕсли;

КонецПроцедуры // ОбработкаЯчейкиТаблицы(перЗначение, перФлаг)
//************************************************************************************************************

в глобальнике:

//************************************************************************************************************
Функция глПозицияДока(перКонтекст) Экспорт
    Перем Часов, Минут, Секунд;
    
    Если перКонтекст.Выбран() = 1 Тогда
        Возврат перКонтекст.ПолучитьПозицию();
    Иначе
        ТекущееВремя(Часов, Минут, Секунд);
        Возврат СформироватьПозициюДокумента(перКонтекст.ДатаДок, Часов, Минут, Секунд);
    КонецЕсли;
    
КонецФункции // глПозицияДока(перКонтекст)
//************************************************************************************************************
18 AliAksA
 
12.06.18
12:01
+(17) переменные СумФормат и КолФормат задать можно ручками - форматы вывода циферей.
Рабочий вариант заремован в двух местах.
Не могу понять почему выходит такая байда, сори ...
19 hhhh
 
12.06.18
12:28
(18) сортируй просто числа. Не надо СумФормат и КолФормат - это дебилизм. После формата - это у тебя уже строки получаются, причем разной ширины. Сразу плучается "100" < "99"
20 AliAksA
 
12.06.18
12:32
(19) форматы используются только при выводе на печать - значения обрабатываются непосредственно перед передачей данных в секции таблицы
21 NSSerg
 
12.06.18
12:38
(17) У тебя в примере есть сортировки перед "Проср", уверен что они одинаковы? И в примере "-" перед названием колонки в сортировать.
Ты можешь честно привести пример на котором глючит?
У тебя в ветке нет ни одного рабочего примера подтверждающего (4)
22 AliAksA
 
12.06.18
12:42
(21) тестирующая обработка в (16) - работает норм, в (17) - рабочий отчет, на котором споймал баг, а перед этим я с середины теста копипастил
23 AliAksA
 
12.06.18
12:42
(21) сортировка в (17) - оригинал
24 Попытка1С
 
12.06.18
12:45
(23) А что тебя не устраивает в (16)?

у тебя сортировка в обратном порядке по колонке Значение.

выводиться

1 = 3 (рр)
2 = 3 (яя)
3 = 2 (бб)
4 = 2 (яя)
5 = 1 (бб)
6 = 0 (нн)

первая цифра это номер сточки
25 AliAksA
 
12.06.18
12:47
(24) да (16) устраивает - это тест, а мне нужно чтобы (17) взлетел - вот он "косячит"
26 NSSerg
 
12.06.18
12:48
(22) В примере в (17) "-" перед "проср", а не после.
И перед сортировкой по "Проср" есть еще сортировки.
(23) В (4) Ты описываешь глюк с минусом после названия колонки. А примере у тебя минус перед.
Ты издеваешься? Ты можешь выложить глючный пример демонстрирующий глюк (4)?

Таблоид.Сортировать("+Счет, +Валюта, +Агент, -Проср, +Позиция");
в духе (4) должно выглядеть
Таблоид.Сортировать("Проср-, Позиция+");
Ну и после сортировки у тебя строки добавляются.
27 NSSerg
 
12.06.18
12:49
(25) Ты хочешь чтоб тебе помогли, но не хочешь выложить код который глючит, и который ты сам описал в (4). Как же тебе помочь?
28 Попытка1С
 
12.06.18
12:50
Никаких глюков в ТЗ при сортировки нет, об этом было бы давно известно.
29 NSSerg
 
12.06.18
12:52
(28) Глюк при сортировке в ТЗ есть, и это давно известно.
Только совершенно не такой.
30 AliAksA
 
12.06.18
12:53
(28) (29) щас дам результаты теста кода в (17)
31 Попытка1С
 
12.06.18
12:53
(29) если ты про метод КоличествоСтрок() то я в курсе. но к (0) да это не относиться.
32 NSSerg
 
12.06.18
12:55
(30) Зачем нужны результаты кода в (17)?
(31) Он сам не понимает что делает. На форуме пишет одно, в коде другое. Сам себя путает, и тех кто пытается помочь тоже.
33 AliAksA
 
12.06.18
13:03
(31) (32) все спасибо, нашел - проблема не в таблоиде, а в секциях вывода (Печатник)
в процедуре печати вставил код:

Если Таблоид.Статус = "Докум" Тогда
            Сообщить("" + Таблоид.Счет + " - " + Таблоид.Валюта.Код + " - " + СокрЛП(Таблоид.Агент.ИНН)
            + " = " + Таблоид.Проср + " | " + Таблоид.Позиция);
        КонецЕсли;

он показал все норм, а вот на печатной форме - хрень:

TRADELINE EUROPE L.P.             13'235.00                                
белорусский рубль (BYN), код 933            826'259.62                                
(Д) ОАО " Хозтовары" Гомель                345.84                                
Поступление материалов № 2033665 от 31.05.2018 г.                345.84    30.07.2018    -                        
Поступление материалов № 3235913 от 06.02.2018 г.                  0.60    26.02.2018      106                        
Поступление материалов № 3235967 от 27.02.2018 г.                  2.02    19.03.2018       85                        
БелЦХТ, ЧТУП, г. Могилев                  2.62                                
Поступление материалов № 4796896 от 26.04.2018 г.                 40.00    26.04.2018       47                        
ГЛХУ "Пинский лесхоз", г. Пинск                 40.00
34 AliAksA
 
12.06.18
13:04
+(33) спецом скопипастил кусок выходной таблицы - первый раз такое вижу (((
35 AliAksA
 
12.06.18
13:05
+(33) вот ещё для примера: см. ООО "БЕЛКРАТХИМ":

Поступление материалов № 2558561 от 31.05.2018 г.                 27.48    31.05.2018       12                    
Поступление материалов № 3366013 от 06.06.2018 г.                 27.48    06.06.2018        6                    
ООО "Аквафортез"                137.40                            
Поступление материалов № 4926073 от 25.05.2018 г.              1'366.20    25.05.2018       18                    
Поступление материалов № 4926082 от 31.05.2018 г.              1'611.60    31.05.2018       12                    
Поступление материалов № 4926056 от 16.05.2018 г.                369.32    05.06.2018        7                    
ООО "БЕЛКРАТХИМ"              5'457.02                            
Поступление материалов № 4926072 от 25.05.2018 г.                847.20    14.06.2018    -                    
Поступление материалов № 4926083 от 31.05.2018 г.              1'262.70    20.06.2018    -                    
Поступление материалов № 3816664 от 26.05.2018 г.              4'549.53    26.05.2018       17                    
Поступление материалов № 3816831 от 04.06.2018 г.              3'265.49    04.06.2018        8                    
ООО "Белхимсеть"              7'815.02                            
Поступление материалов № 0741152 от 11.10.2017 г.                140.33    11.10.2017      244                    
ООО "ВодаХит"                140.33                            
Поступление материалов № 0789994 от 27.04.2018 г.             21'041.18    17.05.2018       26                    
Поступление материалов № 0789992 от 21.04.2018 г.             21'490.18    21.05.2018       22                    
Поступление материалов № 1453351 от 11.05.2018 г.             10'615.92    10.06.2018        2                    
ООО "МалиГрупп"             53'147.28
36 AliAksA
 
12.06.18
13:07
а вот окно сообщений показывает что сортировка в норме:

60.2 - 933 - 200041474 = 45 | #20180329 345580000    489855  
60.2 - 933 - 200041474 = 16 | #20180427 605380000    492941  
60.2 - 933 - 200041474 = 0 | #20180601 461000000    496225  
60.2 - 933 - 190990345 = 258 | #20170927 404150000    473079  
60.2 - 933 - 190990345 = 175 | #20171219 767390000    480444  
60.2 - 933 - 300208810 = 19 | #20180524 595110000    495531  
60.2 - 933 - 300208810 = 0 | #20180606 390200000    496634  
60.2 - 933 - 100947766 = 223 | #20171101 566130000    475328  
60.2 - 933 - 191285066 = 206 | #20171019 603560000    473991  
60.2 - 933 - 191285066 = 206 | #20171019 603660000    473993  
60.2 - 933 - 290987477 = 45 | #20180428 788230000    493165  
60.2 - 933 - 290987477 = 45 | #20180428 788330000    493166  
60.2 - 933 - 290987477 = 12 | #20180531 508440000    496124
37 Попытка1С
 
12.06.18
13:08
моксель сам ничего не сортирует, как выводишь так и будет.
38 AliAksA
 
12.06.18
13:10
(37) и тем неменее - если подскажешь как и чем - сфоткаю экран
39 NSSerg
 
12.06.18
13:11
Ни малейшей связи между (35) и (36) не вижу.
Почему ты считаешь что там хрень?
40 NSSerg
 
12.06.18
13:11
(38) Ты считаешь что в (35) что-то не так. Что конкретно тебя в (35) не устраивает?
41 AliAksA
 
12.06.18
13:14
(39) (40) - в (33) и (35) - копипаст с таблицы вывода на печать - там прочерки (=0) лидируют!!!
а в (36) результат вставки в процедуру печати:

Таблоид.ВыбратьСтроки();
    Пока Таблоид.ПолучитьСтроку() = 1 Цикл
        
        Если Таблоид.Статус = "Докум" Тогда
            Сообщить("" + Таблоид.Счет + " - " + Таблоид.Валюта.Код + " - " + СокрЛП(Таблоид.Агент.ИНН)
            + " = " + Таблоид.Проср + " | " + Таблоид.Позиция);
        КонецЕсли;
        
        _Счет        = "По бух.счету «" + СокрЛП(Таблоид.Счет) + "»";
        _Валюта        = СокрЛП(Таблоид.Валюта.ПолнНаименование)
                    + " (" + СокрЛП(Таблоид.Валюта.НаименованиеДляБанка)
                    + "), код " + СокрЛП(Таблоид.Валюта.Код);
        _Контрагент = СокрЛП(Таблоид.Агент.Наименование);
        _Документ    = глПредставДока(Таблоид.Докум);
        _Сумма        = Формат(Таблоид.Сумма, СумФормат);
        _Срок        = Формат(Таблоид.Срок, "Дддммгггг");
        _ПрД        = Формат(Число(Таблоид.Проср), КолФормат);
        
        Если Таблоид.Статус = "Валюта" Тогда
            Расшифровка = Таблоид.Валюта;
        ИначеЕсли Таблоид.Статус = "Агент" Тогда
            Расшифровка = Таблоид.Агент;
        ИначеЕсли Таблоид.Статус = "Докум" Тогда
            Расшифровка = Таблоид.Докум;
        КонецЕсли;
        
        Печатник.ВывестиСекцию(Таблоид.Статус);
    КонецЦикла;
42 AliAksA
 
12.06.18
13:15
+(41) вывод в окно сообщений идет параллельно:

Пока Таблоид.ПолучитьСтроку() = 1 Цикл
        
        Если Таблоид.Статус = "Докум" Тогда
            Сообщить("" + Таблоид.Счет + " - " + Таблоид.Валюта.Код + " - " + СокрЛП(Таблоид.Агент.ИНН)
            + " = " + Таблоид.Проср + " | " + Таблоид.Позиция);
        КонецЕсли;

результат - разный
43 MWWRuza
 
гуру
12.06.18
13:17
(38)Ни чем. Стандартные средства Windows. Кнопка PrtScrn, открываете пайнт, вставить из буфера, вырезать нужный кусок, создать файл, вставить вырезанное, сохранить как JPG.
Это если действительно ничего нет. А так, куча программ и сервисов существует для скриншотов...
44 AliAksA
 
12.06.18
13:22
Ещё раз после того как укоротил код:

Таблоид.ВыбратьСтроки();
    Пока Таблоид.ПолучитьСтроку() = 1 Цикл
        
        Если Таблоид.Статус = "Докум" Тогда
            Сообщить("" + Таблоид.Счет + " - " + Таблоид.Валюта.Код
            + " - " + СокрЛП(Таблоид.Агент.ИНН)    + " = " + Таблоид.Проср);
        КонецЕсли;
        
        _Счет        = "По бух.счету «" + СокрЛП(Таблоид.Счет) + "»";
        _Валюта        = СокрЛП(Таблоид.Валюта.ПолнНаименование)
                    + " (" + СокрЛП(Таблоид.Валюта.НаименованиеДляБанка)
                    + "), код " + СокрЛП(Таблоид.Валюта.Код);
        _Контрагент = СокрЛП(Таблоид.Агент.Наименование);
        _Документ    = глПредставДока(Таблоид.Докум);
        _Сумма        = Формат(Таблоид.Сумма, СумФормат);
        _Срок        = Формат(Таблоид.Срок, "Дддммгггг");
        _ПрД        = Формат(Число(Таблоид.Проср), КолФормат);

в окне сообщений:

60.4 - 933 - 200297153 = 47
60.4 - 933 - 200297153 = 16
60.4 - 933 - 200297153 = 15
60.4 - 933 - 200297153 = 12
60.4 - 933 - 200297153 = 12
60.4 - 933 - 200297153 = 12
60.4 - 933 - 200297153 = 0
60.4 - 933 - 200548726 = 132
60.4 - 933 - 200062076 = 85
60.4 - 933 - 200062076 = 57
60.4 - 933 - 200062076 = 25
60.4 - 933 - 200062076 = 0
60.4 - 933 - 191021390 = 829
60.4 - 933 - 191021390 = 802
60.4 - 933 - 191021390 = 802
60.4 - 933 - 190510854 = 371

как видим - все норм - нули по одному ИНН - на последней позиции

а на печатной форме - хрень!!! (см. ниже)

Услуги сторонних организаций № 352-6 от 31.05.2018 г.                 16.51    31.05.2018       12                
Услуги сторонних организаций № 342-6 от 31.05.2018 г.                271.62    31.05.2018       12                
ЖКХ г. Пинска              1'181.92                        
Услуги сторонних организаций № 297-27 от 28.05.2018 г.                256.50    27.06.2018    -                
Банковская выписка № 000141 от 31.01.2018 г.              3'788.33    31.01.2018      132                
ЗАО " Амкодор-Пинск"              3'788.33                        
Услуги сторонних организаций № 48 от 22.02.2018 г.                269.89    19.03.2018       85                
Услуги сторонних организаций № 140 от 22.03.2018 г.                296.96    16.04.2018       57                
Услуги сторонних организаций № 238 от 23.04.2018 г.                296.96    18.05.2018       25                
ЗАО "Траст-Запад"              1'140.77                        
Услуги сторонних организаций № 334 от 21.05.2018 г.                276.96    15.06.2018    -                
Услуги сторонних организаций № 35 от 05.03.2016 г.                 90.00    05.03.2016      829                
Услуги сторонних организаций № 51 от 01.04.2016 г.                792.00    01.04.2016      802                
Услуги сторонних организаций № 44 от 01.04.2016 г.                550.00    01.04.2016      802                
ЗАО "Центр промышленной оценки"              1'432.00                        
Банковская выписка № 000518 от 06.06.2017 г.                 44.00    06.06.2017      371                
ЗАО Гудвилл Инвест                 44.00                        
Услуги сторонних организаций № 02/18 от 16.01.2018 г.                262.00    23.01.2018      140
45 Вася Теркин
 
12.06.18
13:22
(0) Отличный вброс. Пятница, это ты?
46 Вася Теркин
 
12.06.18
13:23
Больше кода!!! Или ада?
47 NSSerg
 
12.06.18
13:28
в (44) во втором блоке последняя строчка 140 дней.
В первом блоке нет такого значения.
48 NSSerg
 
12.06.18
13:29
В первом блоке 16 строк. Во втором 13.
(44) Ты издеваешься?
49 ptiz
 
12.06.18
13:31
Вот что бывает, когда убедил себя в том, чего нет.
50 AliAksA
 
12.06.18
13:32
(47) ага заметил, дописал тест - сортировка по агенту нарушена ((( как её вылечить?
вот копипаст окна сообщений - тут наглядно видно как последняя запись по контрагенту к следующему попадает:

60.4 - 933 - 200297153 = 12
60.4 - 933 - 200297153 = 12
60.4 - 933 - 200297153 = 12
ЖКХ г. Пинска - 200297153
60.4 - 933 - 200297153 = 0
60.4 - 933 - 200548726 = 132
ЗАО " Амкодор-Пинск" - 200548726
60.4 - 933 - 200062076 = 85
60.4 - 933 - 200062076 = 57
60.4 - 933 - 200062076 = 25
ЗАО "Траст-Запад" - 200062076
60.4 - 933 - 200062076 = 0
60.4 - 933 - 191021390 = 829
60.4 - 933 - 191021390 = 802
60.4 - 933 - 191021390 = 802
ЗАО "Центр промышленной оценки" - 191021390
60.4 - 933 - 190510854 = 371
ЗАО Гудвилл Инвест - 190510854
51 NSSerg
 
12.06.18
13:32
+(48)+(47)
В печатной форме 13 строк с документами, в окне сообщений 16.
В печатной форме последняя строчка 140 дней. В овне сообщений нет такого значения.
(44) Проблема не в сортировке.
(50) Это не объясняет (47) и (48)
52 AliAksA
 
12.06.18
13:34
(51) смотри (50) - там наглядно видно как нарушена сортировка - общая запись по контрагенту внутрь попадает
53 AliAksA
 
12.06.18
13:34
+(52) ориентируйся по ИНН
54 catena
 
12.06.18
13:35
(52)А где код на вывод "общая запись по контрагенту"?
55 AliAksA
 
12.06.18
13:37
(51) все понял - в строке заглавной контрагента тоже нулевое значение у Проср)
(54) в процедуре печати:

//************************************************************************************************************
Процедура ПечатьОтчета(перОбновить=0)
    
    Если перОбновить = 0 Тогда
        Печатник = СоздатьОбъект("Таблица");
    Иначе
        Печатник.Очистить();
    КонецЕсли;
    Печатник.ИсходнаяТаблица("Основная");
    _Заглавие = "Кредитоская задолженность на " + Формат(НаДату, "Дддммгггг") + " г.";
    Расшифровка = "Обновить";
    Печатник.ВывестиСекцию("Шапка");
    
    Таблоид.ВыбратьСтроки();
    Пока Таблоид.ПолучитьСтроку() = 1 Цикл
        
        Если Таблоид.Статус = "Докум" Тогда
            Сообщить("" + Таблоид.Счет + " - " + Таблоид.Валюта.Код
            + " - " + СокрЛП(Таблоид.Агент.ИНН)    + " = " + Таблоид.Проср);
        ИначеЕсли Таблоид.Статус = "Агент" Тогда
            Сообщить("" + Таблоид.Агент + " - " + СокрЛП(Таблоид.Агент.ИНН));
        КонецЕсли;
        
        _Счет        = "По бух.счету «" + СокрЛП(Таблоид.Счет) + "»";
        _Валюта        = СокрЛП(Таблоид.Валюта.ПолнНаименование)
                    + " (" + СокрЛП(Таблоид.Валюта.НаименованиеДляБанка)
                    + "), код " + СокрЛП(Таблоид.Валюта.Код);
        _Контрагент = СокрЛП(Таблоид.Агент.Наименование);
        _Документ    = глПредставДока(Таблоид.Докум);
        _Сумма        = Формат(Таблоид.Сумма, СумФормат);
        _Срок        = Формат(Таблоид.Срок, "Дддммгггг");
        _ПрД        = Формат(Число(Таблоид.Проср), КолФормат);
56 AliAksA
 
12.06.18
13:38
Щас буду репу чесать, как сделать доп.сортировку
57 NSSerg
 
12.06.18
13:38
(52) А что ты хотел? Статус присваиваешь до сортировки, потом сортируешь. Строчка с статусом уходит в середину записей по агенту.
(52) Еще раз спросить?
Объясни (47) и (48)
Зачем ты вводишь в заблуждение?
Откуда у тебя взялось в печатной форме значение дней просрочки которого нет в окне сообщений?
Почему разное количество строк?
58 AliAksA
 
12.06.18
13:41
(57) ВСЕ - ВЗЛЕТЕЛО !!!

надо было так:
Таблоид.Сортировать("+Счет, +Валюта, +Агент, +Статус, -Проср, +Позиция");

результат из окна сообщений:
ЖКХ г. Пинска - 200297153
60.4 - 933 - 200297153 = 47
60.4 - 933 - 200297153 = 16
60.4 - 933 - 200297153 = 15
60.4 - 933 - 200297153 = 12
60.4 - 933 - 200297153 = 12
60.4 - 933 - 200297153 = 12
60.4 - 933 - 200297153 = 0
ЗАО " Амкодор-Пинск" - 200548726
60.4 - 933 - 200548726 = 132
ЗАО "Траст-Запад" - 200062076
60.4 - 933 - 200062076 = 85
60.4 - 933 - 200062076 = 57
60.4 - 933 - 200062076 = 25
60.4 - 933 - 200062076 = 0

ВСЕМ ОГРОМНОЕ СПАСИБО !!!
59 NSSerg
 
12.06.18
13:41
И в (0) и в (5) - написано то, чего не было в твоих тестах.
в (44) тоже написано не то что выдал твой тест. Зачем ты это делаешь?
60 Злопчинский
 
12.06.18
13:43
Может зае-банить пользователя за неадекватность?
61 AliAksA
 
12.06.18
13:43
(59) я сам не знал откуда ноги растут - как мог - так и описал (
отдельное спасибо
62 AliAksA
 
12.06.18
13:44
(59) в (44) - реальный копипаст из окна вывода, просто скопировал немного разные куски - отчет слишком большой - задолбался бы искать одинаковые куски - вот и разница
63 NSSerg
 
12.06.18
13:50
(62) понятно.
64 AliAksA
 
12.06.18
13:52
(63) сори, просто раньше не требовалось сортировки по просрочке - все работало норм, а тут добавил - быстро надо было - ну чуть крыша и не поехала поэтому и написал с вопросом "Баг ли это ?"
65 Злопчинский
 
12.06.18
14:18
Это что, я раз два часа охреневал, не мог понять почему предопределенная ПриОткрытии(), не отрабатывает.. уже собирался на 8-ку перейти... Потом - перед тем как на форум писать - мы ж должны пил не морочить тупой херней - прозрел...

Функция ПриОткрытии()
//траляля
КонецФункции

..она и не отрабатывает..
ржал минут 15 над собой
66 AliAksA
 
12.06.18
14:22
(65) да всяко бывает - я точку с запятой в запросе после строки не поставил - целый день искал почему запрос не отрабатывает)))
67 NSSerg
 
12.06.18
14:26
(65) Буквально на днях провозился кучу времени.
в глДействия(Конт, СписокДействий)
По действию во внешнюю обработку передавался конт.Текущийдокумент()
Добавил действие которое работает с контекстом, а не с записанным документом. Копированием двух строк.
В обработке обрабатывается ТЧ, и загружается обратно в документ.
Поменял конт.Текущийдокумент() на конт. А оно не работает. Ни в какую.
Что оказалось - действий много, и они очень похожи

Если Действие = "Отчет о движениях документа" Тогда
            глСформироватьДвиженияДокумента(Конт);
        иначеесли Действие="Прослушать разговор" тогда
            ОткрытьФорму("Отчет",конт,КаталогИБ() + "\ExtForms\Прослушать разговор.ert");
        иначеесли Действие="История изменений" тогда
            ОткрытьФорму("Обработка.ПоказатьИсториюИзменений",Конт);

И далее в таком духе куча строк. Час убил. Оказалось не в той строке конт.Текущийдокумент() поменял на конт.
68 Злопчинский
 
12.06.18
14:30
Действие="Прослушать разговор"
..
это хорошо, что ты дальше раскладку по глДействия не привел... Судя по всему у тебя там есть

Действие="Направить лампу в лицо"

и прочие проистекающие...
69 Злопчинский
 
12.06.18
14:31
(67) я думал, ты уже на 8-ку давно перешел...
70 NSSerg
 
12.06.18
14:32
(69) У меня много баз. И те и те.
71 Злопчинский
 
12.06.18
14:33
(70) Программист-бетонщик?
72 NSSerg
 
12.06.18
14:36
(68) ИМХО надо или на справочник переделать, либо на *.efd.
У нас привязка разговора оператора к документам сделана. Из заявки можно прослушать разговор оператора принявшего заявку по телефону. Запись видео тоже была с привязкой к документу взвешивания, но не прижилось.
(71) Не вижу ни малейшей разницы на чем писать.
73 МихаилМ
 
12.06.18
15:45
в 1с77 нужно сортировать со звездочкой по внутреннему представлению.
74 NSSerg
 
12.06.18
15:51
(73) ИМХО лучше уж Тогда Агент+,Агент*
Чтоб по алфавиту, а среди дублей по внутреннему представлению
75 Злопчинский
 
12.06.18
16:01
(73) (74) угу, я раз так нарвался, по недомыслию... Сортировал по договорам, а там везде "Основной договор"...
76 Попытка1С
 
12.06.18
16:10
(65) А в чем тут трабла..?
77 Попытка1С
 
12.06.18
16:10
Нет тела функции или чего?
78 NSSerg
 
12.06.18
16:11
(77) Процедура
79 Попытка1С
 
12.06.18
16:12
бгг)
80 Попытка1С
 
12.06.18
16:13
У меня было по другому, не мог понять почему не отрабатывает

Процедура ПриОкрытии()

//труляля

КонецПроцедуры