Имя: Пароль:
1C
1C 7.7
v7: Рухнул регистр остатки
0 NikNikitch
 
26.08.14
09:40
Добрый день.
Сегодня подарочек с утра. Serv 2008 x64, 1C77 27 SQL, SQL 2005 x86. ПУБ для Украины (теперь как бы для Крыма) почти непеределанный. База 4 года, работала норм.
Регистр Остатки перестал давать неактуальные остатки. Любой документ, где есть расход и ТА на его позицию (не надо рассчитывать остатки) проводится. Двигаю вперед ТА на одну позицию этот же док-т уже кричит нет остатков, остаток = 0 . Перепровожу прошлые док-ты та же ситуация.
Пересчитал итоги, выгрузил -загрузил в новую базу - без результата.
Остаток в глобальном после наложения фильтров берется через ТекущийОстаток = ВремРегистры.Остатки.Остаток(Фирма, Товар, Склад, "ОстатокТовара"); ТекущийОстаток выдает 0
Через запрос остатки и движения по регистру видны на любой день.
1 DasTPID
 
26.08.14
09:42
Резервные копии есть?
2 vde69
 
26.08.14
09:43
не тренди про крым, там теперь ПУБ для России....

по сабжу - смотри "Активность" для каждой записи
3 aka AMIGO
 
26.08.14
09:48
частенько бывает из-за сбоя в индексах
ТИИ пробовал?
4 NikNikitch
 
26.08.14
09:48
(1) Да. Каждую ночь. Но вчера набили много док-тов, не хочется заново добавлять.
(2) 99-95% предприятий еще работают на укр конфигурациях с переделкой под новый ндс. ПУБ для России для новых фирм с российской регистрацией и бухучетом.
По теме, я не понял про "активность", о чем ?
5 NikNikitch
 
26.08.14
09:49
(3) Да. Первое, что сделал
6 NikNikitch
 
26.08.14
09:55
Может ли помочь выгрузка в DBF базу, переиндексация, проверка  и т.д. Потом опять оттуда выгрузка и загрузка в SQL ?
7 Ёпрст
 
26.08.14
09:56
(0) больше кода.
Участвует ли регистр во временном расчете, если да, то на какую позицию ?
8 Ёпрст
 
26.08.14
09:57
(6) нет
9 Ёпрст
 
26.08.14
09:57
Или остаток на ТА всегда нужен ?
10 Ёпрст
 
26.08.14
09:58
11 NikNikitch
 
26.08.14
10:00
Попробовал через прямой запрос, то же самое - остаток 0
(7) Все стандартное
В модуле создаются времрегистры. в глобальном тоже стандартно
Если Конт.ИтогиАктуальны()=0 Тогда
Рег.ВременныйРасчет(1);
Если ТолькоФильтр=0 Тогда
ВремРегистры.РассчитатьРегистрыНа(Конт.ТекущийДокумент());
КонецЕсли;
КонецЕсли;
12 Ёпрст
 
26.08.14
10:03
(11) ну, значит и нет остатков то.
13 Ёпрст
 
26.08.14
10:03
на выбранную позицию с выбранными фильтрами
14 NikNikitch
 
26.08.14
10:04
(12) Обычный запрос из конфигурации дает все остатки. Через временный расчет нет.
15 Ёпрст
 
26.08.14
10:05
ну и это, код в (0) должен быть таким:
//ТекущийОстаток = ВремРегистры.Остатки.Остаток(Фирма, Товар, Склад, "ОстатокТовара");
ТекущийОстаток = Рег.Остаток(Фирма, Товар, Склад, "ОстатокТовара");
16 пипец
 
26.08.14
10:05
проверить БИ и ТА при совместном использовании иногда дают неоднозначные результаты
ЗЫ пересчитать итоги ...
ЗЫЫ переиндексация скуля и дефрагментация , на копии дбсчек

http://blog.galievr.ru/?p=382
http://www.sql.ru/forum/465263/defragmentaciya-indeksov-v-baze-dannyh-ms-sql-2005
17 Ёпрст
 
26.08.14
10:05
хотя непонятно, нахрена использовать этот метод, когда в разы быстрее ВыгрузитьИтоги
18 NikNikitch
 
26.08.14
10:06
Сделал видимость остатков в док-те, снял проведение док-та, остатки есть. Провожу, остатки 0, даже если списание меньше остатка.
19 пипец
 
26.08.14
10:07
20 NikNikitch
 
26.08.14
10:07
(17) Типовая. Несколько лет никто не прикасался, так по мелочам отчеты, формы.
21 Злопчинский
 
26.08.14
10:11
(10) так и знал что бяка... нет чтобы для дбф написать...
;-)
22 Z1
 
26.08.14
10:11
(0)Проверь значение ТА,
также посмотри значение рабочей даты и текущей даты,
проверь Параметры --> Оперативный Учет значение галок
на рабочей базе и на вчерашней копии.

Если это все совпадает то проводи в отладчике вчерашний документ
на копии и на рабочей базе и там где будет первое отличие или поймешь причину или выкладывай сюда.
23 Злопчинский
 
26.08.14
10:12
Побежал за попкорном.. что-то я не верю в чудеса...
24 NikNikitch
 
26.08.14
10:23
(10)
Ошибка для ВзаиморасчетыПокупателей обнаружили 2037123 движений с датой < 01.07.14
Ошибка для ВзаиморасчетыПоставщиков обнаружили 950955 движений с датой < 01.07.14
Для ВыпускПродукции Все Ок
Для НормативныеЗатраты Все Ок
Ошибка для Обороты обнаружили 357874 движений с датой < 01.07.14
Ошибка для Остатки обнаружили 785737 движений с датой < 01.07.14
Ошибка для Партии обнаружили 1173617 движений с датой < 01.07.14
Для ПроизводственныеЗатраты Все Ок
Для Резервы Все Ок
Ошибка для Реализация обнаружили 15164 движений с датой < 01.07.14
Для ЗаказыНаПоставку Все Ок
ОШИБКИ 6.1 нашли ошибок = 5320470
25 Ёпрст
 
26.08.14
10:24
(24) исправляй, че..
26 NikNikitch
 
26.08.14
10:24
(24) ТА двигал назад - вперед, поэтому 01.07
27 NikNikitch
 
26.08.14
10:25
(25) спс за обработку, а как исправлять ? тысячи документов.
28 Злопчинский
 
26.08.14
10:27
927) тупо перепровести базу не покатит..?
29 NikNikitch
 
26.08.14
10:27
(28) с 2009 года... ппц
30 Ёпрст
 
26.08.14
10:29
31 Z1
 
26.08.14
10:32
(27) Проверь сначала обработкой копию.
Если с копией все ок то может гораздо проще будет перебить
вчерашний день чем разобраться и исправить что испортилось.

ТиИ очень может с базой сделать нехорошие вещи.
32 NikNikitch
 
26.08.14
11:17
(30) Пересчитал. Все то же самое.
33 Злопчинский
 
26.08.14
11:18
надо что-то в консерватории поменять...? ;-)
34 Ёпрст
 
26.08.14
11:20
(32) тоже самое что ?
Ошибки выдает или остаток "не верный" ?
35 NikNikitch
 
26.08.14
11:21
(34) Остаток через рассчитанный временный регистр (меньше ТА) = 0. Остаток  на ТА верный. Фильтры одинаковые.
36 NikNikitch
 
26.08.14
11:22
Когда док-т на ТА остаток верный, стоит ТА двинуть вперед хотя бвы на один док, сразу 0.
37 NikNikitch
 
26.08.14
11:23
База 10 гб, упаковал -1.6 гб
38 NikNikitch
 
26.08.14
11:24
Попробую пересчитать обработкой, там где удаляются и создаются снова таблицы итогов
39 ИС-2
 
naïve
26.08.14
11:27
40 ИС-2
 
naïve
26.08.14
11:27
надо удалить файлы *.cdx
41 Ёпрст
 
26.08.14
11:31
(38) а ты чем пересчитывал ?!


(40) у автора - скуль
42 Z1
 
26.08.14
11:31
(40) так в (0) sql
43 Ёпрст
 
26.08.14
11:32
для начала, запустить это:

declare @name nvarchar(128), @Rows int

declare Names cursor static for

select
    table_name
from
    INFORMATION_SCHEMA.TABLES
where
    table_catalog = DB_NAME()
    and left(table_name, 2) In ('RG')
    and table_name != 'dtproperties'

open Names
SET @Rows = @@Cursor_Rows

WHILE @Rows > 0
begin
     FETCH Names Into @name
    SET @Rows = @Rows - 1

    declare @qt nvarchar(128)
    set @qt = N'truncate table +'+@name
    exec sp_executesql @qt
end

close Names
deallocate Names
44 Z1
 
26.08.14
11:32
(0)   22 делал ?
45 Z1
 
26.08.14
11:39
(0) еще можно  удалить хранимые процедуры
двиuающие твой регистр.
При монопольном входе в 1с
1с это обнаружит и пересоздаст эти процедуры
(хотя чтобы они портились не встречал )

Также какой у тебя интервал хранения итогов ?
46 NikNikitch
 
26.08.14
11:43
(43) Use на базу надо делать ?
47 NikNikitch
 
26.08.14
11:45
(43) Сообщение 102, уровень 15, состояние 1, строка 1
Неправильный синтаксис около конструкции "+".
48 Ёпрст
 
26.08.14
11:45
set @qt = N'truncate table '+@name
49 пипец
 
26.08.14
11:50
http://yandex.ru/yandsearch?text=Установка_ТА.ert&lr=10743
-
там есть пересчет регистров
50 NikNikitch
 
26.08.14
11:54
Ура ! Заработало. Два раза прошелся по базе с помощью Установка_ТА_2_3.ert, переподключил базу. Полезла ошибка при монопольном входе. Вошел разделенно. Вышел. Снова монопольно. Все ок.
Всем спасибо, особенно Ёпрст !
51 пипец
 
26.08.14
12:02
(50) все таки для скульных баз нужно делать профилактику типа
- индексация
- дефрагметация
- сбор статистики
- шринки/бэкапы
52 NikNikitch
 
26.08.14
12:04
(51) Делается каждую неделю по расписанию.
53 Z1
 
26.08.14
12:18
можно доделать 10
чтобы искались ошибки по регистру без пересчета итогов регистра,тогда subj будет опредяляться за 5 сек,
наверное особенно это актуально если по каким либо причинам
испортилось не много остатоков а две три строки
т.е. ошибка в данных есть а найти ее практически не реально.
Независимо от того, куда вы едете — это в гору и против ветра!