09.06.2017 Анатолий Бурнашев 19246
Разрушена структура базы данных 1С предприяти...
Содержание
1. Спасти рядовую пятницу
2. Конфигуратор, у нас проблемы
3. Что делать, шеф?
4. Второй шаг – круг задач
5. Попытки решения
5.1. Попытка 1 - тестирование-исправление ИБ через директиву командной строк
5.2. Попытка 2 - копирование таблиц Config, Configsave, Params и DBSchema из работоспособной копии ИБ средствами MS SQL
5.3. Попытка 3 - очистка таблицы configsave средствами MS SQL
5.4. Попытка 4 - копирование разрушенных таблиц из работоспособной копии ИБ средствами MS SQL
6. Решение, которое помогло:
6.1. Подключение
6.2. Перенос справочников 1С
6.3. Перенос документов 1С
6.4. Проведение документов 1С 
7. Выводы. Как избежать поломки структуры данных базы 1С

Спасти рядовую пятницу


Пятница – это не только друг Робинзона. Это – почти выходной. Должен же быть в рабочем календаре день, когда можно подумать о горячих выходных и прохладных напитках.  Как минимум, стоит остерегаться резких движений, чтобы сберечь настоящие выходные для команды и пользователей. Во многих софтверных компаниях считается дурным тоном выпускать новые релизы в конце недели. К примеру, Apple «катит» по вторникам. В Яндексе запрещено «катить» по пятницам и перед Новым Годом. 
Но однажды пятнице не повезло. Когда сроки горят, а дедлайны давят, всегда найдется чему пойти не так. И дальнейшее развитие событий сильно зависит от компетенций вашей uber-команды. 

Конфигуратор, у нас проблемы


Это было обычное обновление конфигурации. Структура данных не поменялась, бизнес-логика тоже. По «большой просьбе» одного из пользователей, решили обновить рабочую базу. 
Одно «но»: технологическое окно уже закончилось и основные изменения конфигурации уже были запущены в работу.
«Надо!» – пользователь просит. Что ж, надо – значит надо: программист привычно нажал F7 и согласился с предложением Конфигуратора «обновить динамически».
Через пару часов стало понятно, что база умерла: попытка войти в режиме «1С:Предприятие» отправляло систему «в дамп» после исполнения нескольких строк модуля приложения. Конфигуратор открывался и работал, но попытки внести изменения также приводили к краху без подробностей в журнале регистрации и технологическом журнале.

В результате база перестала открываться. Совсем.
Попытки войти в «1С:Предприятие» не пускали пользователей дальше окна авторизации. Конфигуратор открывался и работал, но без толку для решения задачи: попытки обновить информационную базу и/или выполнить восстановление также приводили к краху. 
Анализ СУБД показал, что динамическое обновление разрушило структуру таблиц. Теперь-то каждый разработчик в команде знает, что «динамические обновления» – это зло. И все знают неформальное название – «демоническое обновление». Да, с этого момента динамические обновления в компании для рабочей базы запрещены. Но «фарш невозможно провернуть назад» и утерянная база не запускается. 
Утеряно несколько сотен документов реализации, с сотнями товарных позиций. 

Что делать, шеф? 


Сначала мы оценили, чем в итоге располагаем.
Не так много, но не безнадежно:
* Слепок информационной базы, который делается регулярно по расписанию каждые два часа. Нам «повезло» и восстанавливать потребуется 1 час 53 минуты работы пользователей. 
* База, работоспособна на уровне СУБД.
* На уровне COM-соединения работоспособность также сохранилась, 
* Проектная команда собралась из разных проектов. (Да, специалист в фирме франчайзи – это универсальный боец и швец, и тд. Пожалуй, это главное, что помогло решить вопрос оперативно).
С этим понятно. Какие потери? 
* Примерно два часа работы нескольких сотен пользователей. В основном – документы реализации и заказы покупателей.
* Да, можно восстановить данные по первичке. Но! Представьте себе пару часов работы сотен пользователей в разгар рабочего дня.
* На календаре конец первого квартала – это годовая бухгалтерская, налоговая отчетность. Плюс квартальная отчетность перед партнерами. 
* Плюс скоро начислять зарплату и вознаграждения по договорам.
 

    Второй шаг – круг задач

 
Оценив масштаб последствий, стало очевидно, что ситуация исправима. Как выяснилось позже – это оптимистичный вывод, но оптимистам везет. 
Итак, утерян относительно небольшой по времени период – чуть меньше двух часов работы пользователей.
Это сотни документов с табличными частями до сотен строк. Несколько сотен элементов справочников.
И надо было определить, какие из потерь критичны для результата, а что можно пропустить и решить в дальнейшем другими путями.
Например, очень непросто восстанавливать записи (а тем более, итоги) регистров бухгалтерии по двум причинам. Первая – это низкая производительность по сравнению с другими структурами данных. Вторая – сложность организации как в СУБД, так и на уровне объектной модели «1С:Предприятие».
Но так как за эти два часа ручные корректировки регистров бухгалтерии не выполнялись, то можно записи отдельно от документов не восстанавливать. Все движения, подчиненные регистраторам, можно восстановить перепроведением восстановленных документов. 

     

Попытки решения


Попытка 1. Тестирование-исправление ИБ через директиву командной строки Конфигуратора. Примерно так:
1cv8.exe config /IBCheckAndRepair -Rebuild
А также тестирование/исправление СУБД
dbcc checkdb('<db_name>', REPAIR_ALLOW_DATA_LOSS )
Конфигуратор стартовал, висел в списке процессов некоторое время и дальше падал без объяснения причин. Технологический журнал при этом с упорством Капитана Очевидность сообщал о разрушении таблицы с планом обмена.
 
Попытка 2. Копирование таблиц Config, Configsave, Params и DBSchema из работоспособной копии ИБ средствами MS SQL
ins ert into [base2009].[Dbo].[Config] sel ect * from [BaseCopy].[Dbo].[Config]
Это помогло – удалось пройти дальше окна авторизации. Но модуль приложения все равно падал с исключением при попытке опросить планы обмена. Отключить проверку в этом куске кода не удалось, так как попытки сохранить конфигурацию приводили к падению Конфигуратора на этапе анализа структуры ИБ 
То есть мы продвинулись дальше, но какая разница – перепрыгнул ты пропасть на четверть или наполовину? Как говорится, go fish. 
 
Попытка 3. Очистка таблицы configsave средствами MS SQL
Примерно так: 
DR OP TABLE [ConfigSave]
CRE ATE TABLE [ConfigSave]( [FileName] [nvarchar](128) NOT NULL, [Creation] [datetime] NOT NULL, [Modified] [datetime] NOT NULL, [Attributes] [smallint] NOT NULL, [DataSize] [int] NOT NULL, [BinaryData] [image] NOT NULL)
INS ERT IN TO ConfigSave SELECT * FR OM Config 
Тоже помогло, Но с тем же эффектом, что и предыдущая попытка.
 
Попытка 4. Копирование разрушенных таблиц из работоспособной копии ИБ средствами MS SQL
Оценив количество модифицированных таблиц, мы прикинули сколько SELE CT'ов придется написать... и решили, что несколько дней без базы компания не выдержит 

   

  Решение, которое помогло 


1. Была восстановлена база из «слепка», снятого за два часа до разрушения таблиц.
2. Дальше немного магии: код на 1С, который помог восстановить данные, накопленные пользователями со времени снятия крайнего слепка.
3. Так как платформа в режиме COM-соединения гораздо легче и более прозрачно оперирует с СУБД, то система успешно стартует и дает выполнить запросы. 
Итак, код решения, которое сработало:

Подключение


        1. Из копии подключаемся к разрушенной рабочей базе через COM-соединение.  В отличие от обычного подключения, сеанс стартует успешно
 


Перенос справочников 1С


        2. Загружаем те справочники, которых еще нет в копии


 


Перенос документов 1С


        3. Загружаем те документы, которых еще нет в копии

 


Проведение документов 1С


    4. Чтобы восстановить движения, перепроводим проведенные документы, загруженные в копию



Выводы. Как избежать поломки структуры данных базы 1С?


Удалось ли нам спасти ту пятницу? И да, и нет. 
У пользователей случился «сокращенный рабочий день» и тут, пожалуй, да – отдыхать полезно. 
Большинство проектной команды получило свою порцию адреналина. И ушли с работы тоже вовремя. 
Руководитель проекта и эксперт по технологическим вопросам крупных внедрений получили много интересной и поучительной работы на выходные :)
Успеху в этой ситуации способствовали регулярные бэкапы и быстрая диагностика. Бэкап облегчил восстановление. А диагностика «в восемь рук» позволила быстро найти тот вариант, который сработал. То ,что он оказался пятым по счету и его не было на Инфостарте, в школе или на форумах только подтверждает ценность проектного опыта команды. 
Что делать в будущем во избежание подобных ситуаций? Всю округу соломкой не устелить, но вот чек-лист для критичных ситуаций.
• Диагностика
o Команде знать и уметь работать с: 
- техническим журналом;
- подсистемой «Инструменты разработчика» (Сергей, привет и огромное спасибо за твой многолетний труд); 
- Sql + инструменты администрирования субд;
- инструментом диагностики операционной системы и оборудования.
o Держать под рукой эти инструменты, желательно в виде коротких пошаговых инструкций и скриптов
• Лечение
- Будьте экспертом. Неважно в данном случае, лучший ты сыщик с дипломом или без диплома. Важен экспертный подход к решению задач
o Мыслить гибко 
•Профилактика
- Бэкапы - регулярно
- Каждому знать, где лежат и как часто делаются
- Админам написать инструкции (а лучше скрипты) для оперативного восстановления.
 
Если Вы дочитали эту статью до конца, можно с уверенностью пожелать спокойных выходных!


Анатолий Бурнашев,
руководитель отдела внедрения ООО “Кодерлайн”

Наши проекты

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

Отрасль:
Торговля

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные работы по обслуживанию сервера MS SQL;
- Оптимизация производ...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделения:
• распределение ролей стало более четким и структурированны...

Автоматизация документооборота в компании ООО "Ликард"
ООО «Ликард» (ОАО ЛУКОЙЛ)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:Документооборот КОРП

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

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот» для сервиса «1С:Облачная карта решений»; - Возможность интеграц...

ООО «Еврорадиаторы»
ООО «Еврорадиаторы»

Отрасль:
1С:ERP 2.4

Внедренное типовое решение:

Специалисты «Кодерлайн» помогли перенести базу из текущей системы «1С:ERP 2.2» в новую систему «1С:ERP 2.4». ...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходов и расходов в разрезе управленческого учета - Установлены форм...

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные активы
Основные средства
Расчет зарплаты и кадровы...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

Внедренное типовое решение:
1С:Управление строительной организацией

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад и логистика;
- Транспорт;
- Планирование расхода ГС...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

ООО «ПКП КАБЭЛЕКТРОСНАБ»
ООО «ПКП КАБЭЛЕКТРОСНАБ»

Отрасль:
Производство кабельной продукции

Внедренное типовое решение:
1С:Управление небольшой фирмой 1.6

- Оформление заказов покупателей;
- Управление складскими запасами;
- Анализ запасов/остатков...

Автоматизации бизнес-процессов учета и планирования на базе «1С:ERP Управление предприятием 2.0»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Создание полноценной управленческой системы взамен существующих
- Внедрением подсистем «Нормативное планирования», «Мобильное АРМ», «Ре...

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:

- Совместная работа по внедрению разных решений, в том числе «1С:ERP Управление предприятием», «1С:Управление корпоративными финансами»...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение