4.38 Управление итогами регистров
|
|
gslawa | Дата: Суббота, 06.01.2018, 15:15 | Сообщение # 1 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Конфигурация БП КОРП 3.0.57.10 MS SQL 2016 ИР 6.4.38 интегрирована в конфигурацию Запускаю УправлениеИтогамиРегистров Нажимаю галку "Показывать структуру хранения" Выделяю строку РегистрБухгалтерии.ЖурналПроводок... Нажимаю галку "Статистика по текущему регистру" Получаю ошибку:
"{Обработка.ирУправлениеИтогамиРегистров.Форма.Форма.Форма(503)}: Ошибка при вызове метода контекста (Open) РезультатЗапроса.Open(ТекстЗапроса, мСоединениеADO, adOpenStatic, adLockOptimistic, adCmdText); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Неправильный синтаксис около ключевого слова "then". "
Смотрю в отладчике в этой строке (503) ТекстЗапроса =
"Select Period, sum(TotalsRows) as TotalsRows, sum(DetailRows) as DetailRows , sum(TotalsNonZeroRows) as TotalsNonZeroRows, sum(TotalsZeroRows) as TotalsZeroRows From (SELECT _Period as Period, 0 AS DetailRows, count(*) as TotalsRows, sum(case when then 1 else 0 end) as TotalsZeroRows, sum(case when then 0 else 1 end) as TotalsNonZeroRows FROM _AccRgAT07552 GROUP BY _Period UNION all SELECT Period as Period, count(*) as DetailRows, 0 as TotalsRows, 0 as TotalsZeroRows, 0 as TotalsNonZeroRows From ( SELECT DATEADD(MONTH,1+DATEDIFF(MONTH,0, _Period),0) as Period FROM _AccRg7539 ) as v GROUP BY Period ) as al GROUP by Period ORDER by Period "
Между "case when" и "then" нет условия
По другим регистрам та-же историяДобавлено (06.01.2018, 15:15) --------------------------------------------- Добавлю: режим работы обычное приложение.
|
|
| |
tormozit | Дата: Суббота, 06.01.2018, 17:09 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6175
Репутация: 156
Статус: Оффлайн
| Нужна полна информация для технической поддержки http://devtool1c.ucoz.ru/forum/2-2-1 Покажи все строки из инструмента "Структура хранения БД" с отбором по метаданным этого регистра.
|
|
| |
gslawa | Дата: Суббота, 06.01.2018, 18:11 | Сообщение # 3 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Такой?
|
|
| |
tormozit | Дата: Суббота, 06.01.2018, 18:39 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6175
Репутация: 156
Статус: Оффлайн
| Относительно "информация для технической поддержки" нет. Обычно после прочтения http://devtool1c.ucoz.ru/forum/2-2-1 такой вопрос не возникает.
|
|
| |
gslawa | Дата: Суббота, 06.01.2018, 18:47 | Сообщение # 5 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| ОС: 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
|
|
| |
tormozit | Дата: Суббота, 06.01.2018, 18:48 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 6175
Репутация: 156
Статус: Оффлайн
| Найди строку кода в модуле формы
Код Если МетаРегистр.Ресурсы.Найти(ПолеИтогов.ИмяПоля) <> Неопределено Тогда И в отладчике попробуй разобраться, почему это условие не выполняется.
|
|
| |
gslawa | Дата: Суббота, 06.01.2018, 19:14 | Сообщение # 7 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Хор Гляну
|
|
| |
gslawa | Дата: Воскресенье, 07.01.2018, 10:57 | Сообщение # 8 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Хор У меня уже время (в хабаровске) 02:30 - спать пора
Добавлено (06.01.2018, 19:39) --------------------------------------------- хотел спросить про скриншот, но уже завтра
Добавлено (07.01.2018, 06:54) --------------------------------------------- 1с 8.3.11.2867 Системная функция ПолучитьСтруктуруХраненияБазыДанных возвращает некоторые данные с пустым ИмяПоля
Нужно подменить вызов этой функции на ирПолучитьСтруктуруХраненияБазыДанных
Нужно добавить новую в ОбщийМодуль.ирГлобальный
Код Функция ирПолучитьСтруктуруХраненияБазыДанных(ОбъектыМетаданных, ИменаБазыДанных) Экспорт //slawa Нач 20180107 12:57 (ID:) Кон Результат = ПолучитьСтруктуруХраненияБазыДанных(ОбъектыМетаданных, ИменаБазыДанных); //ВерсияПлатформы = Новый СистемнаяИнформация().ВерсияПриложения; Для каждого КаждыйМета Из Результат Цикл Для каждого КаждоеПолеИзМета Из КаждыйМета.Поля Цикл Если Не ЗначениеЗаполнено(КаждоеПолеИзМета.ИмяПоля) Тогда НачалоИмениВМетаданных = СтрНайти(КаждоеПолеИзМета.Метаданные, ".", НаправлениеПоиска.СКонца); Если НачалоИмениВМетаданных <> 0 Тогда КаждоеПолеИзМета.ИмяПоля = Сред(КаждоеПолеИзМета.Метаданные, НачалоИмениВМетаданных+1); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Возврат Результат; КонецФункции
Может нужно проверять версию, но мне кажется она не так часто вызывается
Сообщение отредактировал gslawa - Воскресенье, 07.01.2018, 07:19 |
|
| |
gslawa | Дата: Воскресенье, 07.01.2018, 11:05 | Сообщение # 9 |
Лейтенант
Группа: Проверенные
Сообщений: 61
Репутация: 32
Статус: Оффлайн
| Я про это во вложении
|
|
| |
tormozit | Дата: Воскресенье, 07.01.2018, 18:40 | Сообщение # 10 |
Генералиссимус
Группа: Администраторы
Сообщений: 6175
Репутация: 156
Статус: Оффлайн
| Код Функция УсловиеНулевогоИтога(Знач ПолноеИмяРегистра, Знач СтрокаХраненияИтогов) МетаРегистр = Метаданные.НайтиПоПолномуИмени(ПолноеИмяРегистра); ПоляТаблицыИтогов = СтрокаХраненияИтогов.Поля; Если СтрокаХраненияИтогов.Назначение = "ИтогиМеждуСчетами" Тогда // Антибаг платформы 8.3.8. В описании полей не указаны метаданные Возврат "1=0"; КонецЕсли; УсловиеНулевыхРесурсов = ""; Для Каждого ПолеИтогов Из ПоляТаблицыИтогов Цикл ИмяПоля = ПолеИтогов.ИмяПоля; Если Не ЗначениеЗаполнено(ИмяПоля) Тогда // Антибаг платформы 8.3.11 https://bugboard.v8.1c.ru/error/000016790.html ИмяПоля = ирОбщий.ПолучитьПоследнийФрагментЛкс(ПолеИтогов.Метаданные); КонецЕсли; Если МетаРегистр.Ресурсы.Найти(ИмяПоля) <> Неопределено Тогда Если УсловиеНулевыхРесурсов <> "" Тогда УсловиеНулевыхРесурсов = УсловиеНулевыхРесурсов + " | AND "; КонецЕсли; УсловиеНулевыхРесурсов = УсловиеНулевыхРесурсов + ПолеИтогов.ИмяПоляХранения + " = 0"; КонецЕсли; КонецЦикла; Возврат УсловиеНулевыхРесурсов; КонецФункции
Попробуй такой вариант функции. Использовать предлагаемую тобой функцию ирПолучитьСтруктуруХраненияБазыДанных не хочется, т.к. она является антибагом платформы, но делает больше и дольше чем можно в конкретном месте.
Проблема пустых свойств ИмяПоля мной уже отправлялась пару лет назад в 1С и они ее вроде бы исправили 8.3.9 https://bugboard.v8.1c.ru/error/000016790.html , но в 8.3.11 видимо опять сломали. Я сейчас им снова написал.
|
|
| |
tormozit | Дата: Воскресенье, 07.01.2018, 18:41 | Сообщение # 11 |
Генералиссимус
Группа: Администраторы
Сообщений: 6175
Репутация: 156
Статус: Оффлайн
| По смещению дат заведи пожалуйста отдельную тему, иначе проблема рискует затеряться.
|
|
| |
tormozit | Дата: Суббота, 20.01.2018, 17:03 | Сообщение # 12 |
Генералиссимус
Группа: Администраторы
Сообщений: 6175
Репутация: 156
Статус: Оффлайн
| Исправлено в 4.39
|
|
| |