VoShk

22
Рейтинг

VoShk



  •   Регистрация: 08.07.2008 (15 лет назад)

  •   Был(а) на сайте: 09.04.2024

Друзья
  • Станислав Лаптев
Подписчики 3

Рейтинг 22


Комментарии

Adminпроверка логической целостности - удаляются объекты, что приводит к новым ошибкам#3 22.07.21 14:48
Возможно, кому-то пригодится - оставлю потомкам...

Коротко: проблема была в полях составного типа.

Теория: на уровне SQL значения составного типа содержат три поля вида *_TYPE, *_RRRef, *_RTRef. Поле _TYPE хранит тип значения - 0x01, если составное значение пустое; 0x02-0x07 - строка, числа и т.д; 0x08 (подробнее)
Что происходит во время ТиИ: 1С создаёт временную таблицу (_tmpRCT) с номерами всех потенциально возможных значений _RTRef (всех номеров таблиц) и происходит запрос (если тестирование без исправления) или удаление (если тестирование и исправление) всех объектов, у которых тип значения неправильный или неправильный номер таблицы:
Код
DELETE FR OM dbo._Document426 
WH ERE 
 _Fld9956_TYPE < 0x01 OR _Fld9956_TYPE > 0x08 OR 
 (_Fld9956_TYPE = 0x08 AND _Fld9956_RTRef NOT IN (sel ect TabID fr om dbo._tmpRCT))


Методика исправления: пока база тестировалась скопировал таблицу _tmpRCT (хотя её и сгенерировать можно, но дольше), нашёл запросом (select'ом по аналогии с delete выше) строчки и причины почему они не нравились 1С, исправил. Исправить можно просто перезаписав эти объекты в режиме предприятия без изменений. Возможно, так же поможет просто выгрузка/загрузка через .dt - не проверял.
Adminпроверка логической целостности - удаляются объекты, что приводит к новым ошибкам#1 18.07.21 23:45
Ситуация:
Платформа 8.3.16.1148, ms sql 2016. При выполнении тестирования исправления в лог выводятся сообщения вида:
Проверка таблицы Document426: удалено 108 записей

Следом вида:
Проверка логической целостности. Документы. ПланПродаж. Табличная часть имеет записи, не относящиеся ни к одной записи главной таблицы. Количество – 222

Ну и апофеозом:
Проверка логической целостности. РегистрСведений.ПланПродаж
Неверная ссылка на регистратор.


Таблица Document426 это и есть документ ПланПродаж, сообщения выводятся для нескольких типов документов, часть из удаляемых при этом документов помечены на удаление, но участвуют в других документах/регистрах.

Все 108 удаляемых документа из примера не помечены на удаление, проведённые. 222 записи табличных частей - ровно строки эти 108 заголовков (шапок, записей основной таблицы). Неверные ссылки на регистратор - ссылки на 108 удалённых заголовков.

Т.е. вместо исправления логической целостности платформа плодит ошибки.

Вопрос: как платформа определяет, что объекты надо удалить и как её в этом разубедить? Визуально в SQL две соседние записи (которые платформа оставляет и которую платформа удаляет) ничем не отличаются (кроме уид и реквизитов, естественно).

ЗЫ Сделать ТиИ, а потом запросом вернуть удалённое - не пробовал, да и как то неправильно, и возвращать придётся в кучу мест (оно очищает те же журналы от "неправильных" документов), и нет гарантии, что следующее ТиИ не повторит удаление.
Devграфики работы по дням#2 05.02.19 10:15
Вместо РегистрСведений.ГрафикРаботыСотрудников.СрезПоследних(, ) создать таблицу с данными на каждый день периода - как это сделать, кажется, в "минимализмах" встречалось
DevОптимизация запроса#32 05.02.19 10:05
(30) индексирование вот это:

Код
ВЫБРАТЬ 
Заказ.Ссылка КАК ЗаказПокупателя 
ПОМЕСТИТЬ ВТ_ЗаказыПокупателя 
<skipped>
ИНДЕКСИРОВАТЬ ПО 
ЗаказПокупателя

Что физически происходит - создаётся новая таблица, потом она целиком сканируется для создания индекса и создаётся кластерный индекс, который содержит все колонки таблицы, т.е. создаётся ещё одна такая же таблица
DevОптимизация запроса#29 05.02.19 9:55
(28) Нет, там будет произведено связывание таблиц с index scan в худшем случае, что чаше быстрей создания отдельной таблицы.

По поводу индексирования: индексирование тратит слишком много времени и обычно неэффективно в случае однократного использования таблицы далее (там создаётся кластерный индекс, что, по сути, равно созданию второй таблицы)
DevОптимизация запроса#27 05.02.19 9:41
Как вариант:

Код
ВЫБРАТЬ 
    ВЫРАЗИТЬ(ЗаказыПокупателейОстатки.ЗаказПокупателя КАК Документ.ЗаказПокупателя) КАК ЗаказПокупателя
ИЗ
    РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ 
   Документ.ЗаказПокупателя КАК ЗаказыПокупателейДокументы ПО ЗаказыПокупателейДокументы .Ссылка В (&МассивДокументов)
И ЗаказыПокупателейОстатки.ЗаказПокупателя = ЗаказыПокупателейДокументы.Ссылка
ГДЕ
    НЕ ЗаказыПокупателейОстатки.КоличествоОстаток = 0
СГРУППИРОВАТЬ ПО ЗаказПокупателя
DevПомогите с настройкой вида отчета#4 17.04.14 19:49
Запрос по типу:
Выбрать ы.Ссылка, ы.ТипТЧ, ы.Аналитика из
(
Выбрать ы.Ссылка, "Товары" КАК ТипТЧ, ы.Номенклатура КАК Аналитика из Документ.Декларация.Товары как ы
объединить все
Выбрать ы.Ссылка, "Страны" КАК ТипТЧ, ы.Страны из Документ.Декларация.Страны как ы
) как ы

Тогда можно сделать группировку по сслке и типу тч
DevСКД: итоги начальных и конечных остатков#1 17.04.14 18:14
Доброго времени суток, коллеги!

Вопрос: есть отчёт, сгруппированный по периодам, на каждую дату есть начальные и конечные остатки, можно ли средствами СКД в итоги по строке вывести начальный остаток как начальный остаток первого периода отчёта, а в конечный остаток - конечный остаток последнего периода отчёта?
DevНужен программист 1С 8!#42 15.04.13 15:02
(39) CaptainMorgan,
Вопрос 1:
- не вижу корреляции между нахождением применению мозга и желанием сменить работу...
- я видел как людей с опытом в 10 лет, который ни о чём, так и 1-2 года, которые весьма адекватные и знающие. От 3х лет это, по факту, перестраховка HR от некомпетентности. Если бы у меня был выбор между 1Сником, который долго (>5-6лет) работал, но ничему не научился и успешным (5-10 крупных внедрённых проекта) сишником, который решил себя попробовать на новом поприще - я лучше возьму второго, но это мои тараканы.
Вопрос 2: много или мало, имхо, это к опросам Левада-центр, а "от 110" это наше предложение...
DevЧто быстрее выполняется: вложенные запросы или временные таблицы в запросах?#6 15.04.13 12:24
(4) newborn, из опыта вложенные чаще бывают быстрей, но иногда лучше пожертовать скоростью в угоду удобочитаемости, а то сами же и не разберётесь через год что и как оно делает...