|
v7: В справочнике номенклатура появились элементы Р.ФС | ☑ | ||
---|---|---|---|---|
0
OnePrg
10.10.21
✎
23:24
|
В справочнике номенклатура появились элементы Р.ФС
Р.ФС-1 Р.ФС-2 и т.д. Это что? Восстановленные ссылки при тестировании и исправлении? |
|||
1
acanta
10.10.21
✎
23:37
|
Родители восстановленных ссылок при ТИИ вероятно..
|
|||
2
OnePrg
10.10.21
✎
23:38
|
пометил вручную на удаление, провёл удаление, открываю - они на месте со снятой пометкой удаления
|
|||
3
Злопчинский
11.10.21
✎
00:57
|
восстановленные потерянные элементы.
сделай штатный поиск ссылок - увидишь где они задействованы. самовольное снятие пометок удаления программой - у себя не встречал. возможно, вручную снята пометка удаления подчиненных элементов, что автоматом привело к связанной отмене удаления родителей. |
|||
4
OnePrg
12.10.21
✎
10:41
|
В последнее время много таких элементов стало появляться после каждого ТИИ. База на SQL. В чём может быть причина?
|
|||
5
Злопчинский
12.10.21
✎
12:44
|
Кривые обмены с Риб как вариант. Неаккуратная работа с транзакцияии как вариант. Удаление без контроля ссылок.
??? |
|||
6
OnePrg
12.10.21
✎
16:44
|
(5) Кривые обмены от чего? От кривых рук программиста или сбой на уровне системы?
|
|||
7
Злопчинский
12.10.21
✎
16:49
|
(6) Скорее от кривых рук... могу ошибаться, конечно.
Возможно проводились подчистики 1supdts или нарушена ручками логика обменов. что-то куда-то не уходило или наоборот приходило, когда в базе не д.б. |
|||
8
OnePrg
12.10.21
✎
16:53
|
(7) Перед каждым обменом выполняем обработку чистки 1supdts. Посмотри пожалуйста, тут бяка может быть?
ПолучитьПриходныеНакладныеСУстановкойРозничнойЦены(); RS = СоздатьОбъект("ODBCRecordset"); RS.ВыполнитьСкалярный(" |IF OBJECT_ID('tempdb..#ТаблВрем', 'U') IS NOT NULL | DROP TABLE #ТаблВрем; |CREATE TABLE #ТаблВрем (КодИБ Char(3),СкладКод int);"); RS.Подготовить(" |insert into #ТаблВрем(КодИБ, СкладКод) |values(?, ?)"); RS.ВыполнитьSQL_ИзТЗ(тбСклады); Склады = СоздатьОбъект("Справочник.МестаХранения"); тбСклады.НоваяКолонка("Склад"); Если тбСклады.КоличествоКолонок() = 3 Тогда тбСклады.ВставитьКолонку("П",1); тбСклады.ВыводитьПиктограммы("П"); тбСклады.ВыбратьСтроки(); Пока тбСклады.ПолучитьСтроку() = 1 Цикл тбСклады.П = 2; Склады.НайтиПоКоду(тбСклады.СкладКод); тбСклады.Склад = Склады.ТекущийЭлемент(); КонецЦикла; КонецЕсли; тбСклады.УдалитьКолонку("СкладКод"); тбСклады.ВыбратьСтроки(); Пока тбСклады.ПолучитьСтроку() = 1 Цикл Если тбСклады.П = 1 Тогда Продолжить; КонецЕсли; Сообщить(тбСклады.Склад); //*************************************** // очищаем документы //*************************************** ТекстЗапроса = " |SELECT | Т1.OBJID as [Док $Документ], | Т1.IDDocDef as Док_вид, | Склады.ID as [Склад $Справочник.МестаХранения], | Т1.DBSIGN, | Т1.OBJID |FROM |( |SELECT | U.OBJID, | J.IDDocDef, | U.DBSIGN, | ТаблВрем.СкладКод |FROM | _1SUPDTS as U |INNER JOIN | _1Sjourn as J ON U.TypeID=J.IDDocDef And U.OBJID=J.IDDoc |LEFT JOIN | #ТаблВрем as ТаблВрем ON U.DBSIGN=ТаблВрем.КодИБ) as Т1 |LEFT JOIN | $Справочник.МестаХранения as Склады ON Т1.СкладКод = Склады.Code |WHERE | Склады.ID = :ВыбСклад | AND NOT Т1.OBJID IN (SELECT Val FROM #спПН)"; RS.УстановитьТекстовыйПараметр("ВыбСклад", тбСклады.Склад); RS.УложитьСписокОбъектов(спПН, "#спПН"); тбОбмен = RS.ВыполнитьИнструкцию(ТекстЗапроса); тбУдалять = СоздатьОбъект("ТаблицаЗначений"); тбУдалять.НоваяКолонка("OBJID"); тбУдалять.НоваяКолонка("DBSIGN"); тбОбмен.ВыбратьСтроки(); Пока тбОбмен.ПолучитьСтроку()=1 Цикл Удалять = 0; Если ПустоеЗначение(тбОбмен.Склад) = 1 Тогда Удалять = 1; ИначеЕсли ДокументСклада(тбОбмен.Док,тбОбмен.Склад) = 0 Тогда Удалять = 1; КонецЕсли; Если Удалять = 1 Тогда тбУдалять.НоваяСтрока(); тбУдалять.OBJID = тбОбмен.OBJID; тбУдалять.DBSIGN = тбОбмен.DBSIGN; КонецЕсли; Если тбУдалять.КоличествоСтрок()=1000 Тогда RS.ВыполнитьСкалярный(" |IF OBJECT_ID('tempdb..#тбУдалять', 'U') IS NOT NULL | DROP TABLE #тбУдалять; |CREATE TABLE #тбУдалять (OBJID Char(9),DBSIGN Char(3));"); RS.Подготовить(" |insert into #тбУдалять(OBJID, DBSIGN) |values(?, ?)"); RS.ВыполнитьSQL_ИзТЗ(тбУдалять); ТекстЗапроса = " |DELETE | _1SUPDTS |FROM | _1SUPDTS as U |INNER JOIN | #тбУдалять as тбУдалять ON U.OBJID = тбУдалять.OBJID and U.DBSIGN = тбУдалять.DBSIGN"; RS.ВыполнитьИнструкцию(ТекстЗапроса); тбУдалять.УдалитьСтроки(); КонецЕсли; КонецЦикла; RS.ВыполнитьСкалярный(" |IF OBJECT_ID('tempdb..#тбУдалять', 'U') IS NOT NULL | DROP TABLE #тбУдалять; |CREATE TABLE #тбУдалять (OBJID Char(9),DBSIGN Char(3));"); RS.Подготовить(" |insert into #тбУдалять(OBJID, DBSIGN) |values(?, ?)"); RS.ВыполнитьSQL_ИзТЗ(тбУдалять); ТекстЗапроса = " |DELETE | _1SUPDTS |FROM | _1SUPDTS as U |INNER JOIN | #тбУдалять as тбУдалять ON U.OBJID = тбУдалять.OBJID and U.DBSIGN = тбУдалять.DBSIGN"; RS.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить(" документы"); //*************************************** // очищаем справочник переоценки //*************************************** //Сообщить("Удаляем из обмена переоценки;..."); ТекстЗапроса = " |DELETE | _1SUPDTS |FROM | _1SUPDTS as U2 |INNER JOIN | $Справочник.Переоценки as Переоценки ON U2.TypeID=3494 And U2.OBJID=Переоценки.ID |LEFT JOIN | #ТаблВрем as ТаблВрем ON U2.DBSIGN=ТаблВрем.КодИБ |LEFT JOIN | $Справочник.МестаХранения as Склады ON ТаблВрем.СкладКод = Склады.Code |WHERE | Склады.ID <> $Переоценки.Склад AND Склады.ID = :ВыбСклад"; RS.УстановитьТекстовыйПараметр("ВыбСклад", тбСклады.Склад); RS.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить(" переоценки"); тбСклады.П = 1; КонецЦикла; |
|||
9
OnePrg
12.10.21
✎
16:55
|
(7) как например ручками можно нарушить логику обменов?
|
|||
10
Злопчинский
12.10.21
✎
17:23
|
(9) я хз.. например - удалить принудительно элементы справочника без обмена. а потом с обменом приходят эти данные этим элементам...
|
|||
11
Злопчинский
12.10.21
✎
17:24
|
(8) я хз, по УРБД слаб. Не люблю этот механизм. Без извращений нормально не сделать обмены.
|
|||
12
АгентБезопасной Нацио
12.10.21
✎
18:49
|
(11) зря ты так. нормальный механизм. да, не хватает штатных возможностей, но вполне устойчивый... МОД косячил, да. а с УРБД даже со всякими извращениями типа "снежинки" проблем не было...
(10) если они придут с обменом - то они будут "натуральные", а не "ФС" (5) ну еще работа редактированием справочников в списке, и что-то еще было с ИспользоватьСписокЭлементов. (4) если индексы в порядке - то из-за соотношения радиусов. |
|||
13
acanta
12.10.21
✎
19:09
|
Возможно, периферия периодически чистит базу у себя с удалением чужих элементов или своих ненужных. В журнале регистрации что? Каков уид (значениевстрокувнутр) этих ссылок и их место создания?
В конфигурации есть доработки по урбд (префикс иб создания в кодах и номерах, дата создания в элементах и документах, базы урбд как справочник с какими то настройками, например прав, место создания и редактирования в объектах и т.д. и т.п.) |
|||
14
acanta
12.10.21
✎
19:11
|
Мод в свое время мы не рискнули к сожалению..
|
|||
15
victuan1
13.10.21
✎
04:09
|
(14) Считаю, что к счастью. МОД та еще какашка.
|
|||
16
OnePrg
13.10.21
✎
16:11
|
Ну ладно элементы "ФС", но выходим на то, что после каждого обмена нужно делать ТИИ потому что начинаются глюки типа
- 1С вылетает, когда снимаешь иерархию в списке справочника - 1С зависает, когда пытаешься открыть карточку определённого товара, при этом другие товары отрываются Перед обменом делаем чистку 1supds, неужели в этом может быть причина разрушения базы? |
|||
17
Злопчинский
13.10.21
✎
16:53
|
(16) проверяй на циклические ссылки и неправильность ссылок.
|
|||
18
Arbuz
14.10.21
✎
15:55
|
Было такое, только не "ФС", а, кажись, "РС". На периферийке обесточили комп во время записи в базу. Похерились некоторые таблички. Их в целом вылечили, потерялось буквально меньше десятка строк. После обмена появились эти артефакты в справочнике номенклатуры, причём появились как новые, так и перезаписались существующие вместе с подчинёнными. Мы достаточно легко и быстро это поправили - бэкапы, логи, голова, руки. Я убеждён в (0) то кривой обмен - 146%, тому что в (8) такое.
|
|||
19
АгентБезопасной Нацио
14.10.21
✎
15:59
|
(18) кривой - не обмен. (хотя на говнокод из 8 смотреть страшновато).
у меня апдейтс корректировался (сначала DTSом в батнике, потом триггером) лет 8 (и 3 после), никаких проблем не было... |
|||
20
Arbuz
14.10.21
✎
17:57
|
(19) Так то у вас не кривой, а у него кривой, там же логика хромает на все конечности, не считая запросы в циклах и сбор данных мимо запросов, там же какие-то пересекающиеся выборки. Вот это "выборка в ТЗ -> выполнил запрос с данными из ТЗ -> выборка в ещё ТЗ по результату -> раз в 1к итераций ещё запрос с данными ТЗ -> лапша после цикла с тем же запросом", да и всё остальное - это же, мля, шиза полная. Ему же, вообще-то, говорили в смежных ветках, что OBJID нельзя собирать с потолка.
|
|||
21
АгентБезопасной Нацио
14.10.21
✎
18:20
|
(20) ну я уже говорил, что причина - в отношении радиусов...
|
|||
22
Ёпрст
14.10.21
✎
23:41
|
(8)
это пять! |LEFT JOIN | $Справочник.МестаХранения as Склады ON Т1.СкладКод = Склады.Code |WHERE | Склады.ID = :ВыбСклад | AND NOT Т1.OBJID IN (SELECT Val FROM #спПН)"; |
|||
23
Ёпрст
14.10.21
✎
23:44
|
Если что, (8) в топку.
+ если нужна помощь, то описать задачу, что именно нужно выкинуть из файла регистрации изменений. А с той кашей, что в (8) ничего хорошего не выйдет. Неудивительно, что понасоздавались ссылки из прибитых (недогруженных) рибом при ТиИ.. ЗЫ: накой вообще ТиИ запускают - тоже, загадка |
|||
24
Злопчинский
15.10.21
✎
00:48
|
(23) Пацифисты потому что.. Не могут убить в себе перфекциониста...
|
|||
25
OnePrg
15.10.21
✎
10:56
|
(22) Объясни пожалуйста
|
|||
26
Ёпрст
15.10.21
✎
14:49
|
(25) че объяснять то ?
left join там не нужен от слова совсем, код справочника склады - тоже. |
|||
27
Ёпрст
15.10.21
✎
14:50
|
пихать во времянку код справочника.. тоже не надо.
Как и сама времянка и подготовленный запрос там не впёрлись ни раху. |
|||
28
Ёпрст
15.10.21
✎
14:51
|
*разу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |