Вылетает менеджер деталей при выводе итогов

При выведенных итогах в менеджере деталей (например на вкладках родительские/подчиненные документы)при переходе по записям в реестре неправильно считаются итоги, а потом вообще менеджер деталей вылетает. Подсчет идет как суммирование по пользовательским полям типа Дробное число. Количество знаков после коммы не 2(как в пользовательском поле), а максимально возможные 15, причем иногда в последнем знаке попадаются цифры, отличные от 0, чего быть тоже не должно(((
Кстати, при изменении точности для Дробного числа с 4 до 2 в датасете в админке, в таблице значение изменить не удается. Если же вернуть точность на стандартные 4 знака после коммы, проблема с итогами не исчезает.
Не могу понять в чем причина:confused:

Нравится

15 комментариев

"Fishi" написал:при изменении точности для Дробного числа с 4 до 2 в датасете в админке, в таблице значение изменить не удается

Объясните, пожалуйста, подробнее. Вы пытаетесь изменить точность в поле сервиса tbl_*, и не удаётся? Или Вы имели в виду что-то другое?

Попробуйте добиться того, чтобы точность в поле таблицы и в аналогичном поле датасета совпадала. Если не получится сохранить таблицу в базе данных после изменения точности, попробуйте сохранить сервис без обновления структуры БД, а точность в таблице измените средствами СУБД (напр., Enterprise Manager).

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Да, для пользовательского поля точность в датасете и таблице ровна 4. В датасете изменить на 2 можно, а в таблице - нет.

"Лабьяк Олег Игоревич" написал:измените средствами СУБД (напр., Enterprise Manager)

А не подкажете как реализовать в Microsoft SQL Server Management Studio 9.00.3042.00?
Но даже если точность везде ровна 4, при выводе итогов менеджер деталей тоже вылетает.

Выберите нужную таблицу, правой кнопкой мыши вызовите контекстное меню, в нём - пункт Modify. Откроется окно редактирования таблицы, найдите нужное поле и измените его точность (decimal(18, 2)).

Если вылетает менеджер деталей, возможно, что-то не так с обработчиком события OnDatasetAfterPositionChange даталинка реестра. Проверьте, пожалуйста.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Так и делал, изменяю (decimal(18, 4)) на (decimal(18, 2)). Перезапускаю скул, смотрю в админке - в таблице опять точность 4:confused:

upd: кеш чистил)

Вы пересохранили сервис таблицы? Система должна была задать Вам два вопроса: первый касается сохранения сервиса, второй - обновления структуры БД. На первый нужно ответить: "Да", на второй - "Нет".

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Вопрос один:
Следующие таблицы будут изменены в базе данных. Продолжить?
////список таблиц
При сохранении появляется предупреждение о возможности потери данных при преобразовани столбца.
Вот, больше ничего

Это в Management Studio. Я же говорю про сохранение сервиса в Администраторе.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Конфликт инструкции ALTER TABLE с ограничением FOREIGN KEY "...". Конфликт произошел в базе данных, таблица ...(пользовательское поле типа справочник), колонка ID.
Чем одно поле может мешать изменять другое, совсем с ним не связанное?

Скорее всего, в Вашем случае конфликт не связан с изменением числового поля. Просто таблица не пересохраняется из-за нарушения целостности базы данных (в таблице, которую Вы пытаетесь пересохранить, есть ссылка на несуществующий элемент справочника). Необходимо проанализировать указанное поле типа "Справочник" во всех записях таблицы, и если некоторые записи содержат идентификаторы, которых нет в справочнике, необходимо в них обнулить эти поля. Например, с помощью запроса:

update tbl_Account
set CityID = NULL
where not exists (select tbl_City.ID from tbl_City
                  where tbl_City.ID = tbl_Account.CityID)

Вместо tbl_Account необходимо подставить название таблицы, которую Вы пытаетесь пересохранить, а вместо tbl_City - название таблицы справочника. Соответственно изменить и названия колонок таблиц.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Создал нужный запрос(uq_Document). В датасете установил его как запрос на обновление, но результата ноль((
Возможно я что-то делаю не так?

"Лабьяк Олег Игоревич" написал:Если вылетает менеджер деталей, возможно, что-то не так с обработчиком события OnDatasetAfterPositionChange даталинка реестра. Проверьте, пожалуйста.

Изменений не вносил, вот текст:

function dlDocumentsOnDatasetAfterPositionChange(Dataset) {
	if (Dataset.Attributes('IsNew') != true) {
		RefreshDetails();
	}
	Dataset.Attributes('IsNew') = false;
}

Fishi, возможно, я не совсем корректно объяснил. Данный запрос предназначался для удаления некорректных связей со справочником. Его нужно было выполнить один раз в Management Studio, а после этого попытаться сохранить сервис таблицы ещё раз.

Ещё вопрос: в чём проявляется "вылетание" менеджера деталей? Система полностью закрывается, возникает сообщение об ошибке, менеджер деталей становится недоступным и переход по деталям становится невозможным, или что-либо ещё?

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

"Лабьяк Олег Игоревич" написал:Его нужно было выполнить один раз в Management Studio, а после этого попытаться сохранить сервис таблицы ещё раз.

В результате выполнения получилось:
строк обработано: 0
Запрос успешно выполнен
Но сервис таблицы изменить не удается по той же причине.

По поводу второго вопроса:
При выводе итогов (род/доч документы например) для первых нескольких записей из реестра (раздел Документы) итоги выводятся (но нет округления до 2 или 4 знака, а отображаются 15 цифр после коммы),а потом менеджер деталей стает неактивным(серый фон). Никаких сообщений об ошибке тоже нет.

Думаю, нужен удалённый доступ для анализа проблемы.

Если это возможно, вышлите, пожалуйста, параметры удалённого доступа на support@tscrm.com .

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Столкнулся с похожей проблемой, тоже итоги в подчиненных документах. Отправил в саппорт пример для воспроизведения.

--------------------------------------------
Лабитек
Центр разработки приложений

Исправили в билде 3.2.0.63, запрашивайте у саппорта.
--------------------------------------------
Лабитек
Центр разработки приложений

Показать все комментарии