|
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
|
У меня было по другому, не мог понять почему не отрабатывает
Процедура ПриОкрытии() //труляля КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |