Решение проблемы с открытием периода ТиС

Публикация № 529015 05.06.16

Задачи пользователя - Корректировка данных

2Gb Книга продаж DBF RG4343

Способ решения проблемы с открытием периода в конфигурации "Торговля и склад" версии 7.7 (вызванной регистром "Книга продаж")

Довелось столкнуться с такой вот ситуацией: более 10 лет используется конфигурация "Торговля и склад". Очень даже успешно используется, была немного доработана, работает быстро, делает что нужно. В общем, идиллия. Но ничто не длится вечно...

В один "прекрасный" день, а точнее в ночь на первое число как обычно в монопольном режиме попытался открыть период, и вот тебе раз:

Ошибка при открытии периода

Очень даже не вовремя. Первое число выпало на среду, нужно работать, а никак. База довольно большая, поэтому тестирование и исправление не помогло ни в каких вариантах. За первую ночь ничего не решил. Единственным выходом было установить рабочую дату на последний день прошлого месяца и работать таким образом. Здесь необходимо отметить, что этот вариант следует использовать только в качестве крайней меры, так как все сопутствующие документы также придётся заводить этой датой. В первую очередь это касается документов поступления. Чтобы не возникло путаницы, в будущем мы договорились в комментарии документов указывать реальную дату и ручками после решения проблемы вернуть всё на круги своя.

Итак, полумеры были приняты, взялся за дело. Так что же такое за "Error #: -120"? Выяснить не составило особого труда. Эта ошибка возникает, когда размер файла dbf превышает 2Gb. Не буду утверждать на 100%, но это вроде как не только проблема базы данных 1С версии 7.7, но и всех DBF в целом. Отсортировал все файлы в базе данных по размеру и действительно: удивительно, поразительно. Он единственный такой большой, следующий по величине в три раза меньше.

Первым делом посмотрел файл 1Cv7.DD, который содержит описание всех таблиц информационной базы. Оказалось, что это регистр "Книга продаж"

#===============================================================================
#==TABLE no 157    : Регистр КнигаПродаж
# Name    |Descr                         |Type[A/S/U]|DBTableName|ReUsable  
T=RG4343  |Регистр КнигаПродаж           |A          |RG4343     |1         
#-----Fields-------
# Name      |Descr               |Type|Length|Precision
F=PERIOD    |Period Registr      |D   |8     |0        
F=SP4336    |(P)КредДокумент     |C   |13    |0        
F=SP4337    |(P)СтавкаНДС        |C   |9     |0        
F=SP4365    |(P)ВидДолга         |C   |9     |0        
F=SP4338    |(P)СуммаНДС         |N   |16    |2        
F=SP4339    |(P)СуммаРуб         |N   |16    |2        
F=SP4340    |(P)СуммаНП          |N   |16    |2        
#----Indexes------
# Name     |Descr         |Unique|Indexed fields                                              |DBName     
I=PROP     |PERIOD+PROP   |0     |PERIOD,SP4336,SP4337,SP4365                                 |PROP       
#

Первое, что пришло в голову, это ещё раз попробовать сделать тестирование и исправление со следующей комбинацией галок:

Пересчёт итогов

   При просмотре файла выяснилось следующее: в колонке "Period Registr" стоял 2005 год и записей было очень много, потом 2006, 2007 и так далее. Так как эти записи относились к более ранним периодам, а документы в журнале начинались с 2011 года, соответственно было сделано предположение, что кто-то сворачивал базу, может и неоднократно, но вероятно, немножко кривыми ручками. Предполагалось, что после пересчёта итогов лишние записи уберутся и останется только изящно запустить тестирование и исправление ещё раз, но уже только с одной галкой "Упаковка таблиц информационной базы".

   На это была убита ночь со среды на четверг, но к огромному огорчению, к открытию магазина процесс не завершился, пришлось всё останавливать, доставать базу из архива и работать опять на 31 числе прошлого месяца. К сожалению, я не смог придумать никакого способа хотя бы примерно оценить время выполнения данной операции, а в данном случае эта оценка весьма бы пригодилась для принятия решения.

   Ситуация начинала уже раздражать. Всегда неприятно ощущать бессилие перед программой. Попросив пользователей ещё денёк поработать на 31 числе на ночь с четверга на пятницу была предпринята попытка свернуть информационную базу за 2 года в надежде сократить размер злополучного файла.

   Как только завершился рабочий день, разумеется сделав архив, запустил свёртку базы на 1.01.2013 года, так как документы там были с января 2011 года. Утром с огорчением увидел, что процесс ещё во всю идёт, а уже нужно начинать работать. Опять попросил уже изрядно нервных пользователей потерпеть, и стал думать, ЧТО ЖЕ ДЕЛАТЬ???!!!!

   Слава Богу, суббота и воскресенье выходной и соответственно и плечо раззудится, и рука размахнётся. В пятницу после завершения рабочего дня, быстренько сделал архив и снова запустил свёртку на мощном сервере. Но для надёжности взял домой базу, чтобы не класть все яйца в одну корзину.

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

   Пришлось порыться в документации. Основное назначение регистра "Книга продаж" — оперативное ведение учета НДС по каждому покупателю. Залез в конфигурацию, просмотрел, как он работает:

Книга продаж

Нажал на волшебную кнопочку "Описание" и узнал всё, чо нужно:

Регистр "Книга продаж" предназначен для ведения учета НДС, выставленного
покупателям в расходных документах. Движение приход регистра производится при
проведении документов реализации ТМЦ и услуг покупателям и движение расход - при
включении сумм в книгу продаж (документами "Формирование книги продаж" и
"Запись книги продаж"). По этому регистру производится построение отчета "Книга
продаж".

СТРУКТУРА РЕГИСТРА "КНИГА ПРОДАЖ"

ИЗМЕРЕНИЯ

КредДокумент
Здесь проставляется значение документа, которым были реализованы ТМЦ или услуги
покупателю.

СтавкаНДС
Ставка НДС.

ВидДолга
Вид долга, может принимать значения из перечисления "Виды долга". Практически
означает бухгалтерский счет, на котором ведется учет выставленного покупателю НДС.

РЕСУРСЫ

СуммаРуб
В этом ресурсе ведется учет суммы продаж всего, включая НДС и НП, в валюте
бухгалтерского учета.

СуммаНДС
В этом ресурсе ведется учет суммы НДС продаж, в валюте бухгалтерского учета.

СуммаНП
В этом ресурсе ведется учет суммы НП продаж, в валюте бухгалтерского учета.

РЕКВИЗИТЫ

КодОперации
Код хозяйственной операции движения.

ДокументОплаты    
Документ оплаты задолженности. Документ оплаты, по которому произошло
включение в книгу продаж. Проставляется при формировании движения по
включению сумм в книгу продаж.

СтавкаНП
Ставка НП продажи. Проставляется при проведении документов реализации. 

Возможно, кому-то это регистр крайне необходим, но похоже, это не наш случай, и я подумал, раз десять лет этот регистр горько не был никому нужен, то и дальше не понадобиться. А что если удалить из него все записи?

   А дальше как в песне, "как легко на плоской карте стрелку начертить, а потом идти придётся через горы и овраги....". Нужен был инструмент для выполнения данной операции. Так как я не любитель копаться в dbf, взял то, что подсказал Яндекс. И был это DBF Commander. Обалденная программа, на 20 дней выдаётся бесплатно. Разумеется, можно было взять любую другую, но зачем тратить время, если она позволяет добиться результата. Повторюсь, ни в коем случае не рекламирую эту программу, подойдёт любая, позволяющая удалять записи из DBF и паковать его, даже Visual FoxPro.

   Открыл при помощи DBF Commander файл RG4343.DBF, там оказалось почти 25000000 записей!!! Открывался файл минуты три. В меню "Правка" оказался очень удобный пункт "Удалить все записи", им я и воспользовался. Commander жевал файл почти час, уже готов был испугаться, но наконец-то все записи покраснели. Осталось только выбрать следующий пункт "Паковать таблицу".

   После этой процедуры файл из многотонного бегемота больше двух гигов превратился в пушинку 257 байт. Не забыв удалить индексный файл RG4343.CDX, запустил программу в монопольном режиме. Индекс моментально перестроился и вышло приглашение открыть новый период.

   С замиранием сердца я ждал результат. И вот он сладкий миг победы!!! Период открыт! Причём очень быстро. Попробовал перепровести несколько реализаций, всё хорошо. Они вызывают записи в RG4343.DBF, но с нулями в колонках.

   На всякий случай обратился ещё раз к 1Cv7.DD:

#===============================================================================
#==TABLE no 158    : Регистр (Дв.) КнигаПродаж
# Name    |Descr                         |Type[A/S/U]|DBTableName|ReUsable  
T=RA4343  |Регистр (Дв.) КнигаПродаж     |A          |RA4343     |1         
#-----Fields-------
# Name      |Descr               |Type|Length|Precision
F=IDDOC     |ID Document's       |C   |9     |0        
F=LINENO    |LineNo              |N   |4     |0        
F=ACTNO     |Action No           |N   |6     |0        
F=DEBKRED   |Flag Debet/Kredit   |N   |1     |0        
F=SP4336    |(P)КредДокумент     |C   |13    |0        
F=SP4337    |(P)СтавкаНДС        |C   |9     |0        
F=SP4365    |(P)ВидДолга         |C   |9     |0        
F=SP4338    |(P)СуммаНДС         |N   |16    |2        
F=SP4339    |(P)СуммаРуб         |N   |16    |2        
F=SP4340    |(P)СуммаНП          |N   |16    |2        
F=SP4341    |(P)КодОперации      |C   |9     |0        
F=SP4342    |(P)ДокументОплаты   |C   |13    |0        
F=SP5345    |(P)СтавкаНП         |C   |9     |0        
#----Indexes------
# Name     |Descr         |Unique|Indexed fields                                              |DBName     
I=IDLINE   |of IDDOC+LineN|0     |IDDOC,LINENO,ACTNO                                          |IDLINE     
#

   Это движения того же самого регистра. Он содержал около 350000 записей. На всякий случай зачистил и его. В результате получил значительное ускорение работы всей базы.

   Возможно, у проблемы было и другое решение. Если интересно, давайте обсудим.

   Зачем я всё так подробно описал? А потому, что ситуации у всех разные и не нужно, возможно, стрелять из пушки по воробьям. Может, кому-то поможет тестирование и исправление, а может просто прочтение этого материала натолкнёт на спасительную мысль.

   Надеюсь, моя статья кому-то поможет.

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. andrewks 1356 05.06.16 21:16 Сейчас в теме
жесть какая, и это вместо того, чтобы просто удалить два dbf и два cdx и запустить в монопольном режиме
goatmen; vbuots; AlexLM75; apatyukov; const000; NoRazum; KRJ; +7 Ответить
2. zemskov 65 05.06.16 22:01 Сейчас в теме
Не поленился, проверил. Действительно получилось. Где же вы раньше были?
Я думал, что 1С только индексы умеет восстанавливать. Теперь буду знать. Спасибо.
4. spectre1978 59 05.06.16 22:22 Сейчас в теме
(2) не поверите - можно создать чистую папку и положить туда dd и md от вашей конфигурации. Затем запустить семерку монопольно, указать ей эту папку - и она создаст там полностью готовую к работе программу! Почти готовую - не будет файлов прописей, v7plus, внешних печатных форм и т.д. плюшек. Но зайти и начать работать можно будет, да.
3. spectre1978 59 05.06.16 22:17 Сейчас в теме
10 лет и быстро работает? Документооборот, видимо, небольшой. У меня после пяти лет начали довольно чувствительно щекотать блокировки при обращении к журналу документов, даже с учетом того что юзеров около 10. Пришлось удалять доки и переносить остатки. А по существу - да, можно удалять DBF и она их пересоздаст. Я обычно всегда так и очищал файловую семерку - удалял регистровые и документные dbf и cdx и часть справочников по вкусу. Потом ТИИ и здрасте, чистая база с заполненными справочниками.
AlexLM75; +1 Ответить
5. zemskov 65 05.06.16 22:32 Сейчас в теме
Спасибо за комментарии. Я это уже понял. С 7.7 дружу уже 15 лет, дописывал конфигурации "Комплексная" и "ЗиК", но вот этого, представляете, не знал, хотя можно было догадаться. DD - это видимо Data Description, а MD разумеется MetaData
6. CheBurator 3110 05.06.16 22:35 Сейчас в теме
Автору тотальное два в первую очередь за незнание предметки
Многие доки в тисе двигают книгу продаж в плюс
То есть грубо говоря исчисляют ндс с которым надо рассчитаться с государством
Если вы не делали регламентные документы каждый месяц формирования книги продаж и покупок - которые минусовали накопленные плюсы - то вы с государством не рассчитывались
Об этом свидетельствует огромный размер файла итогов - который должен быть в штатной ситуации во много раз меньше файла движений
А так все записи за все предыдущие месяцы каждвй раз клонировались на каждый следующий месяц что и привело к бяке вашей

Насчет удаления файлов уже сказали

А так чтобы не чистить каждый раз - достаточно в коде где идет запись в книги продаж покупок просто поставить сразу после входа в соответствующие процедуры возврат и все, и в паре мест закомментировать где идет без вызова процедур. Таким образом кучу лет занулил у себя книги продаж и покупок, регистр кассы и банкаи забыл про них
goatmen; AlexLM75; const000; +3 Ответить
7. CheBurator 3110 05.06.16 22:40 Сейчас в теме
То есть на следующий период можно сказать в штатном случае переносятся только итоги по незакрытому документообороту, незакрытого документооборота обычно намного меньше чем полного документооборота
В этом случае открытие периода практически не зависит от размера базы
Если вы наблюдаете различимое на глаз увеличение открытия периода с каждым месяцем - то скоро но случится

Как говорится
1сник и жнец и швец и пи..ц
8. zemskov 65 05.06.16 22:47 Сейчас в теме
Я эту базу обслуживаю только 4 месяца, бывший программер откланялись...
Если внимательно статью почитать, то я не сразу решился книгу продаж грохнуть, магазин работает на упрощёнке, без НДС, так что он и не нужен. Насчёт зануления я тоже думал, но ещё руки не дошли, так, наверное и сделаю.
9. CheBurator 3110 06.06.16 01:56 Сейчас в теме
10. perforator 08.06.16 08:30 Сейчас в теме
(8) После правки кода снова грохни записи регистра, которые сейчас снова записываются, а то эти хвосты так и будут тянуться, если не перепровести документы, которые сейчас набивают.
AlexLM75; +1 Ответить
11. zemskov 65 08.06.16 10:41 Сейчас в теме
Обязательно. Пока они не сильно раздуваются, ещё ничего не делал.
12. МимохожийОднако 140 13.06.16 09:49 Сейчас в теме
Неплохой рассказ для застолья одинэсников
13. lvictor58 135 16.06.16 00:44 Сейчас в теме
У нас в Калининграде тоже 90% фирм на упрощенке сидят. Не знаю как сейчас со вступлением в ВТО будет... Но разработчики ТиС как то эту тему проигнорировали насчет того, что упрощенцам и книга продаж и книга покупок нах.. не нужна. Как и кому либо еще. Вряд ли найдется кто-то, кто сидя на общем режиме рискнет формировать ее только по данным торговых операций. Наиболее полная и достоверная информация по отчетности по НДС всегда ведется в бух. учете!
AlexLM75; +1 Ответить
14. spectre1978 59 27.06.16 23:23 Сейчас в теме
(13) lvictor58, ТиС не имеет полноценной поддержки уже очень давно, поэтому каждый, кто ее использует, должен понимать соответствующие риски и уметь решать вопросы, возникающие при подобных изменениях извне. А если нужно чтобы все происходило само собой - тогда только УТ11 и ИТС...
15. CheBurator 3110 12.12.18 14:13 Сейчас в теме
и.. это.. фраза "Открыл при помощи DBF Commander файл RG4343.DBF, там оказалось почти 25000000 записей!!!" - про 25 млн записей несколько "сыровата".. ;-) в файловой версии 1Ска поддерживает только 16 млн записей в ДБФ
16. user1767943 06.04.22 02:06 Сейчас в теме
Автор поста ГЕНИЙ пытливости ума и сопротивления препятствиям, и человеколюбия! Вы может быть и не поверите, но 6 лет спустя от этого поста я столкнулась с абсолютно идентичной проблемой!!! Внезапно в последний день месяца не дает открыть период. Программист, которая мне все это устанавливала и 10 лет помогала - исчезла, искренне надеюсь, что жива, здорова и тд, просто что-то пошло н так в средствах связи. Дальше сама - попытка свертки (фиг- вылетела на открытии периода), попытка диагностики и исправления (2 суток - вылетела). Перекопала весь интернет, прочитала про все коды ошибок, ничего не помогло - либо очень сложно и непонятно, либо не помогает. Везде виноват это файл, но нигде нет понятной пошаговой инструкции борьбы. Позвонила друзьям и знакомым, дали пару протекций - и! " оу, 7, торговля+склад, еще и с периферией. такая древность, нет не полезем".Отчаялась. Пошла по объявлениям услуг - ответ один - переходите на 8-ку цена от 7 до .. тр р. И тут нахожу этот пост.... Аккуратно, с опаской читаю, инфо поняла, спускаюсь к коментам, грущу, опять что-то не так. А потом, ну и наплевать, сделаю как написано! Однако смутил товарищ andrewk. В итоге я его прозвала злым ГЕНИЕМ (Вам сложно было не просто возмутиться, а нормально написать, что сделать?). В итоге возникла компиляция из поста и первого комента. Я не стала скачивать доп программы, просто удалила этот весьма надоевший мне dbf файл (самый большой какой нашла), запустила монопольно и опять, блин все все вылетело.... Но я дама упрямая, запустила опять, пишет "программа завершена аварийно, проиндексировать ...;", думаю все ни раз читали этот вопрос). Тут терпение лопнуло, думаю да делай что хочешь, все равно не работаешь, жму Да, 2-3 минуты индексировала. Все!!!!!!!!!!!!! Боже, ЗАРАБОТАЛА!!!!!
PS. ОГРОМНАЯ БЛАГОДАРНОСТЬ автору поста и чуть-чуть поменьше andrewk! И да, моей базе в этот день было ровно 10 лет, без обрезания, без каких-либо вмешательств, файл dbf был 2 092 810 КБ. И меня совершенно не беспокоит НДС, тк изначально была ЕНВД, а теперь УСН.
Оставьте свое сообщение

См. также

Исправление ошибок DBCC CHECKDB (1С, SQL) вручную

Корректировка данных Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Если Вы наблюдаете сообщение "could not continue scan with nolock" и подобные ему - значит эта статья для Вас. В статье рассказывается, как поправить ошибки выданные DBCC CHECKDB вручную.

01.07.2013    103859    Вадимко    7    

51

Восстановление БД 1с 7.7 после шифрования вирусом файлом

Корректировка данных Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

После расшифровки антивирусом базы - у всех файлов отсутствует 20% начала файла. Способ восстановить данные с минимальными потерями

19.11.2012    19730    msvsoft    9    

14

Нарушена структура индексов таблицы CJ447

Корректировка данных Расчет 7.7 1С:Зарплата и кадры 7.7 Россия Бесплатно (free)

При попытке войти в базу 1С:Зарплата и Кадры 7.7 стала возникать ошибка: "Нарушена структура индексов таблицы CJ447. Для восстановления запустите программу в монопольном режиме!". Каким образом удалось устранить эту ошибку - далее.

15.11.2011    17420    Nicholas    11    

3

Исправляем ошибку в документе Корректировка Остатков ОС В связи с вступлением норм НК (конфигурация 287 Бухгалтерии для Украины)

Учет ТМЦ Адаптация типовых решений Корректировка данных Бухгалтерский учет 7.7 Украина Бухгалтерский учет Бесплатно (free)

При проведении анализа переноса остатков на 1 апреля 2011 года в конфигурации 287 Бухгалтерии для Украины обнаружена некорректная работа документа КорректировкаОстатков ОС. В сообщении - текст измененной процедуры модуля документа. (Если кому интересно - ошибка связана с использованием имени реквизита табличной части ПервСтоимость в модуле документа).

06.07.2011    9138    sergefox    6    

5

Простейший способ очистить базу данных от мусора и исправить ошибки

Корректировка данных Чистка данных OpenConf Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Бесплатно (free)

Столкнулся с ситуацией: все проводки (бухгалтерия) удвоены! во всех отчётах, при этом проводки по документам верны. КРАЙ! заготовок на такой случай нет... Скопировал на флешку, а потом сделал вот такие шаманские действия:

15.12.2010    17348    vladimir_makarov    40    

37

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

Восстановление потерянных реквизитов документов v 7.7

Инструменты администратора БД Поиск данных Корректировка данных Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

В ранее записанных и проведённых документах пропали неторые реквизиты. В результате в отчётах полный бардак. Как я решил эту проблему.

13.09.2010    13030    vladimir_makarov    8    

7

Сравнение производительности 1с под DBF-ADS-CodeBase-SQL.

Корректировка данных Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Представлено сравнение выполнения таких задач в 1с, как заполнение, проведение и отмена проведения документа в режиме сервера терминалов через Virtual PC на одном ПК.

11.02.2008    13613    tarasenkov    6    

7