4.38 Управление итогами регистров. Не заполняется Период
|
|
gslawa | Дата: Понедельник, 08.01.2018, 10:23 | Сообщение # 1 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Запрос который создается функцией Обработка.ирУправлениеИтогамиРегистров.Форма.ЗапросСтатистикиПоПериодам(...) возвращает Period как текстовую строку и не учитывает смещение дат на 2000
MS SQL 2016 Microsoft SQL Server Enterprise (64-bit) 13.0.1742.0
ОС: Windows x86 Microsoft Windows 8.1 version 6.3 (Build 9600) Платформа: 8.3.11.2867 Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.57.10) Режим БД: клиент-серверный Приложение: Обычное приложение 32б Основной режим запуска: Управляемое приложение От имени администратора Windows: Нет Режим совместимости: Версия8_3_10 Инструменты разработчика: Подсистема 4.38
|
|
| |
gslawa | Дата: Понедельник, 08.01.2018, 10:24 | Сообщение # 2 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Добавлено (07.01.2018, 10:57) --------------------------------------------- Вдогонку ещё нужно поправить, наверняка у кого-то показывается У меня пустая (см.вложение)
Для исправления добавил в МодульФормы Обработка.ирУправлениеРегистров.Форма Процедура ОбновитьСтрокуРегистра(...
Код... ПредыдущееЧислоИтогов = 0; Для Каждого СтрокаРезультата ИЗ ТаблицаРезультата Цикл Стр = ПериодыИтогов.Добавить(); Стр.Назначение = СтрокаТаблицыИтогов.Назначение; Стр.Период = СтрокаРезультата.Period; //slawa Нач 20180107 15:38 (ID Если ТипЗнч(СтрокаРезультата.Period) = Тип("Строка") Тогда //вроде можно былобы использовать Стр.Период = ирОбщий.СтрокаДатыWMIВДатуЛкс(СтрокаРезультата.Period); // но не получается её нужно править // поеп так ДатаСтрокой = СтрокаРезультата.Period; ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "-", ""); ДатаСтрокой = СтрЗаменить(ДатаСтрокой, ":", ""); ДатаСтрокой = СтрЗаменить(ДатаСтрокой, "/", ""); ДатаСтрокой = СтрЗаменить(ДатаСтрокой, " ", ""); ДатаСтрокой = СтрЗаменить(ДатаСтрокой, ".", ""); ДатаСтрокой = Лев(ДатаСтрокой, 8); Стр.Период = Дата(ДатаСтрокой); // наверняка будет ошибка при других настройках сервера КонецЕсли; //slawa Кон Стр.ЧислоДетальных = СтрокаРезультата.DetailRows; ...
Добавлено (07.01.2018, 14:41) --------------------------------------------- У меня даты приходят без смещения на 2000 лет, хотя вроде что-то там было устьановлено Поэтому в модуле формы обработки поправил функцию ЗапросСтатистикиПоПериодам так:
... | GROUP BY Period | ) as al | GROUP by Period | ORDER by Period";
//slawa Нач 20180107 15:04 (ID:) Запрос = СтрЗаменить(Запрос, "_Period as Period,", "(case when year(_Period) > 3000 then dateadd(year, -2000, _Period) else _Period end) as Period,"); Запрос = СтрЗаменить(Запрос, "Period as Period,", "(case when year(Period) > 3000 then dateadd(year, -2000, Period) else Period end) as Period,"); //slawa Кон Возврат Запрос;
КонецФункции
|
|
| |
tormozit | Дата: Понедельник, 08.01.2018, 10:38 | Сообщение # 3 |
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
| Спасибо. Ошибку подтверждаю.
|
|
| |
tormozit | Дата: Понедельник, 08.01.2018, 11:01 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
| Похоже в 8.3.11 изменился формат хранения периодов (добавлены 3 знака после запятой). Поэтому метод ADORecordsetToValueTable внешней компоненты GameWithFire не может их корректно преобразовать. Найди в модуле формы строку
Код ТаблицаРезультата = ADOUtils.ADORecordsetToValueTable(РезультатЗапроса) и попробуй ее заменить на
Код ТаблицаРезультата = ирОбщий.ПреобразоватьРезультатADOВТаблицуЗначенийЛкс(РезультатЗапроса, Истина,,,,, 2000); Если не поможет, то замени второй параметр функции на Ложь и результат ее выполнения открой в исследователе объектов (Функция режима отладки Ис), двойным кликом по колонке "Значение" открой редактор таблицы значений и сохрани таблицу значений в файл. Приложи этот файл к своему сообщению.
|
|
| |
gslawa | Дата: Понедельник, 08.01.2018, 12:15 | Сообщение # 5 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Истина не помогла Ложь также ничего не вывела про "и результат ее выполнения открой в исследователе объектов (Функция режима отладки Ис), двойным кликом по колонке "Значение" открой редактор таблицы значений..." не понял просто в отладчике вывел ТЗ (во вложении) если нужно сделать именно так, как ты сказал тогда объясни подробнее куды нажимать
|
|
| |
tormozit | Дата: Понедельник, 08.01.2018, 14:29 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
| К сожалению мне пока непонятно, как универсально опознавать колонки ADO с типом Строка, в которых на самом деле хранится дата с дробной частью. В функции ирОбщий.ПреобразоватьРезультатADOВТаблицуЗначенийЛкс посмотри, чему равен Field.Type для поля Period.
|
|
| |
gslawa | Дата: Вторник, 09.01.2018, 09:27 | Сообщение # 7 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| 202
Добавлено (09.01.2018, 00:46) --------------------------------------------- Думаю как временную меру можно сделать смещение дат так, как было в моем сообщении "> 3000" года, а в статистику выводить строкуДобавлено (09.01.2018, 09:27) --------------------------------------------- Я использую для прямых запросов адо = Новый ComОбъект("ADODB.Connection") Проблем с датами нет
Сообщение отредактировал gslawa - Вторник, 09.01.2018, 02:15 |
|
| |
tormozit | Дата: Вторник, 09.01.2018, 22:29 | Сообщение # 8 |
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
| Цитата gslawa ( ) Проблем с датами нет Поясни подробнее. А то я подумал что ты из той же таблицы считал данные и получил тип Дата у колонки Period. Кстати в колоне MSSQL там какой тип?
|
|
| |
gslawa | Дата: Среда, 10.01.2018, 05:10 | Сообщение # 9 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Нет, извеняюсь В других запросах используется Попробовал именно с этой таблице - та-же проблема.
Тип datetime2(0)
Если период получать так cast(_Period as datetime) as Period, то результат нормальный
|
|
| |
tormozit | Дата: Суббота, 20.01.2018, 17:03 | Сообщение # 10 |
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
| Исправлено в 4.39
|
|
| |