Перенос данных из базы с поврежденными таблицами

06.06.17

База данных - Инструменты администратора БД

У клиента что-то произошло с жестким диском, что потребовало восстановления данных на нем. Базу 1С вроде бы сохранили, и она даже открылась. Однако при попытке доступа к документу "Платежный ордер, списание денежных средств" база вылетает с ошибкой. Также при получении оборотов за период в целом и по декадам выводились разные цифры. Обработка переноса данных в идентичную конфигурацию не подошла, из-за того, что так же вылетала с ошибкой БД. Ниже опишу мои действия по созданию новой конфигурации.

При попытке доступа к документу "Платежный ордер списание денежных средств" база вылетает с ошибкой.

Ошибка СУБД:
Ошибка SQL: Таблица не найдена '_Document151_VT3126'
по причине:
Ошибка SQL: Таблица не найдена '_Document151_VT3126'

Так же (как выяснилось позже) при получении оборотов за период в целом и по декадам выводились разные цифры. 

Обработка переноса данных в идентичную конфигурацию не подошла, из за того, что так же вылетала с ошибкой БД.

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

Поэтому решил переносить документы вместе с движениями. Задача не замысловатая. В режиме "Предприятие" открыл обработку MD82Exp.epf. Снял все галки и выгрузил описание метаданных в XML файл

Далее запустил конвертацию данных 2.0 и загрузил метаданные в нее.

Так же создал новую конфигурацию но основе имеющейся конфигурации. Запустил ее, произвел первоначальную настройку. Это нужно для того, что бы на счетах, контролируемых системой была установлена соответствующая аналитика.

Далее все просто. Создал новую конвертацию и с помощью мастера автоматический создал правила конвертации объектов.

Нашел ПКО для документа "Платежный ордер списание денежных средств" и событии выгрузки "ПередВыгрузкой" написал два слова:

Отказ = Истина;

Так же с помощью мастера создал правила выгрузки данных.

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

ВЫБРАТЬ
	НАЧАЛОПЕРИОДА(БУ.Период, ДЕНЬ) КАК Дата,
	ИСТИНА КАК Активность,
	БУ.СчетДт,
	БУ.СчетКт,
	БУ.СубконтоДт1,
	БУ.СубконтоДт2,
	БУ.СубконтоДт3,
	БУ.СубконтоКт1,
	БУ.СубконтоКт2,
	БУ.СубконтоКт3,
	БУ.Организация,
	БУ.ВалютаДт,
	БУ.ВалютаКт,
	БУ.СтруктурноеПодразделениеДт,
	БУ.СтруктурноеПодразделениеКт,
	БУ.СуммаОборот КАК Сумма,
	БУ.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаДт,
	БУ.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаКт,
	БУ.КоличествоОборотДт КАК КоличествоДт,
	БУ.КоличествоОборотКт КАК КоличествоКт
ИЗ
	РегистрБухгалтерии.Типовой.ОборотыДтКт(, , Регистратор, , , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Типовой.ДенежныеСредстваНаТекущихБанковскихСчетах), , ) КАК БУ
ГДЕ
	ТИПЗНАЧЕНИЯ(БУ.Регистратор) = ТИП(Документ.ПлатежныйОрдерСписаниеДенежныхСредств)

УПОРЯДОЧИТЬ ПО
	БУ.Период

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

ВЫБРАТЬ
	НАЧАЛОПЕРИОДА(НУ.Период, ДЕНЬ) КАК Дата,
	ИСТИНА КАК Активность,
	НУ.СчетДт КАК СчетДт,
	НУ.СчетКт КАК СчетКт,
	НУ.СубконтоДт1 КАК СубконтоДт1,
	НУ.СубконтоДт2 КАК СубконтоДт2,
	НУ.СубконтоДт3 КАК СубконтоДт3,
	НУ.СубконтоКт1 КАК СубконтоКт1,
	НУ.СубконтоКт2 КАК СубконтоКт2,
	НУ.СубконтоКт3 КАК СубконтоКт3,
	НУ.Организация КАК Организация,
	НУ.ВидУчетаДт,
	НУ.ВидУчетаКт,
	НУ.СтруктурноеПодразделениеДт КАК СтруктурноеПодразделениеДт,
	НУ.СтруктурноеПодразделениеКт КАК СтруктурноеПодразделениеКт,
	НУ.СуммаОборот КАК Сумма,
	НУ.КоличествоОборотДт КАК КоличествоДт,
	НУ.КоличествоОборотКт КАК КоличествоКт
ИЗ
	РегистрБухгалтерии.Налоговый.ОборотыДтКт(, , Регистратор, , , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Налоговый.ДенежныеСредстваВКассеИНаРасчетныхСчетах), , ) КАК НУ
ГДЕ
	ТИПЗНАЧЕНИЯ(НУ.Регистратор) = ТИП(Документ.ПлатежныйОрдерСписаниеДенежныхСредств)

УПОРЯДОЧИТЬ ПО
	НУ.Период

Создал новое ПКО, где объект источник -- пустое значение, а объект приемник -- документ ОперацияБух. Назвал его ОперацияБухПО. Правила конвертации свойств для него так же заполнил автоматически. Создал в ручную ПравилоВыгрузкиДанных со следующими настройками Объект выборки: Не указан Способ выборки: Произвольный алгоритм Правило конвертации: ОперацияБухПО.

Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнаяОрганизация");
БУ = Запросы.БУ.Выполнить().Выгрузить();
НУ = Запросы.НУ.Выполнить().Выгрузить();

Операции = БУ.Скопировать(,"Дата");
Операции.Свернуть("Дата");
Операции.Колонки.Добавить("Номер");
Операции.Колонки.Добавить("ПометкаУдаления");
Операции.Колонки.Добавить("Организация");
Операции.Колонки.Добавить("Автор");
Операции.Колонки.Добавить("Комментарий");
Операции.Колонки.Добавить("Ответственный");
Операции.Колонки.Добавить("Содержание");
Операции.Колонки.Добавить("СтруктурноеПодразделение");
Операции.Колонки.Добавить("ТиповаяОперация");
Операции.Колонки.Добавить("СуммаОперации");

Операции.Колонки.Добавить("Типовой");
Операции.Колонки.Добавить("Налоговый");
Операции.Колонки.Добавить("ЗапрашиваемыеПараметры");

Типовой = Неопределено;
Налоговый = Неопределено;	
ЗапрашиваемыеПараметры = Неопределено;

Выполнить(Алгоритмы.ПодготовитьТаблицыПроводок);

Год = 0;
СЦ = 0;
Для Каждого Операция ИЗ Операции Цикл
	Если Год <> Год(Операция.Дата) Тогда
		Год = Год(Операция.Дата);СЦ = 0;
	КонецЕсли;
	СЦ = СЦ+1;
	Операция.Номер = ПривестиНомерКДлине(Строка(СЦ),11,,"ПО-");
	Операция.ПометкаУдаления = ЛОЖЬ;
	Операция.ТиповаяОперация = Справочники.ТиповыеОперации.ПустаяСсылка();
	Операция.Организация = Организация;
	Операция.Комментарий = "Перенос проводок списания денежных средств за "+Формат(Операция.Дата,"ДФ='dd MMMM yyyy'");
	Операция.Автор = глТекущийПользователь;
	Операция.Ответственный = глТекущийПользователь;
	Операция.Содержание = Операция.Комментарий;
	//
	Операция.Типовой = Типовой.СкопироватьКолонки();
	Операция.Налоговый = Налоговый.СкопироватьКолонки();
	Операция.ЗапрашиваемыеПараметры = ЗапрашиваемыеПараметры.СкопироватьКолонки();
	Строки = БУ.НайтиСтроки(Новый Структура("Дата", Операция.Дата));
	
	СуммаОперации = 0;
	ТЧ = Операция.Типовой;
	Выполнить(Алгоритмы.ПолучитьПроводки);
	Операция.СуммаОперации = СуммаОперации;
	Строки = НУ.НайтиСтроки(Новый Структура("Дата", Операция.Дата));
	ТЧ = Операция.Налоговый;
	Выполнить(Алгоритмы.ПолучитьПроводки);
КонецЦикла;

ВыборкаДанных = Операции;

Что бы не плодить кучу документов сделал так, что бы обороты содились по дням, в независимости от того, сколько за этот день было фактические документов, создается одна операция.

В модуле, для сокращения его размера (и повышения читабельности) создание служебных таблиц вынес в алгоритмы. ПодготовитьТаблицыПроводок и ПолучитьПроводки

//ПодготовитьТаблицыПроводок
Типовой = Новый ТаблицаЗначений;
Типовой.Колонки.Добавить("Активность");
Типовой.Колонки.Добавить("ВалютаДт");
Типовой.Колонки.Добавить("ВалютаКт");
Типовой.Колонки.Добавить("ВалютнаяСуммаДт");
Типовой.Колонки.Добавить("ВалютнаяСуммаКт");
Типовой.Колонки.Добавить("ВидРегламентнойОперации");
Типовой.Колонки.Добавить("КоличествоДт");
Типовой.Колонки.Добавить("КоличествоКт");
Типовой.Колонки.Добавить("НомерЖурнала");
Типовой.Колонки.Добавить("Организация");
Типовой.Колонки.Добавить("Период");
Типовой.Колонки.Добавить("Регистратор");
Типовой.Колонки.Добавить("Содержание");
Типовой.Колонки.Добавить("СтруктурноеПодразделениеДт");
Типовой.Колонки.Добавить("СтруктурноеПодразделениеКт");
Типовой.Колонки.Добавить("СубконтоДт");
Типовой.Колонки.Добавить("СубконтоКт");
Типовой.Колонки.Добавить("Сумма");
Типовой.Колонки.Добавить("СчетДт");
Типовой.Колонки.Добавить("СчетКт");
Налоговый = Новый ТаблицаЗначений;
Налоговый.Колонки.Добавить("Активность");
Налоговый.Колонки.Добавить("ВидРегламентнойОперации");
Налоговый.Колонки.Добавить("ВидУчетаДт");
Налоговый.Колонки.Добавить("ВидУчетаКт");
Налоговый.Колонки.Добавить("КоличествоДт");
Налоговый.Колонки.Добавить("КоличествоКт");
Налоговый.Колонки.Добавить("НомерЖурнала");
Налоговый.Колонки.Добавить("Организация");
Налоговый.Колонки.Добавить("Период");
Налоговый.Колонки.Добавить("Регистратор");
Налоговый.Колонки.Добавить("Содержание");
Налоговый.Колонки.Добавить("СтруктурноеПодразделениеДт");
Налоговый.Колонки.Добавить("СтруктурноеПодразделениеКт");
Налоговый.Колонки.Добавить("СубконтоДт");
Налоговый.Колонки.Добавить("СубконтоКт");
Налоговый.Колонки.Добавить("Сумма");
Налоговый.Колонки.Добавить("СчетДт");
Налоговый.Колонки.Добавить("СчетКт");
ЗапрашиваемыеПараметры = Новый ТаблицаЗначений;
ЗапрашиваемыеПараметры.Колонки.Добавить("Значение");
ЗапрашиваемыеПараметры.Колонки.Добавить("Имя");
ЗапрашиваемыеПараметры.Колонки.Добавить("Представление");
//ПолучитьПроводки
Для Каждого Проводка ИЗ Строки Цикл
	СуммаОперации = СуммаОперации + Проводка.Сумма;
	стрТЧ = ТЧ.Добавить();
	ЗаполнитьЗначенияСвойств(стрТЧ, Проводка);
	стрТЧ.Период = КонецДня(Проводка.Дата);
	стрТЧ.СубконтоДт = Новый Соответствие;
	Если Проводка.СчетДт.ВидыСубконто.Количество() > 0 Тогда
		стрТЧ.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто[0].ВидСубконто, Проводка.СубконтоДт1);
	КонецЕсли;
	Если Проводка.СчетДт.ВидыСубконто.Количество() > 1 Тогда
		стрТЧ.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто[1].ВидСубконто, Проводка.СубконтоДт2);
	КонецЕсли;
	Если Проводка.СчетДт.ВидыСубконто.Количество() > 2 Тогда
		стрТЧ.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто[2].ВидСубконто, Проводка.СубконтоДт3);
	КонецЕсли;
	стрТЧ.СубконтоКт = Новый Соответствие;
	Если Проводка.СчетКт.ВидыСубконто.Количество() > 0 Тогда
		стрТЧ.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто[0].ВидСубконто, Проводка.СубконтоКт1);
	КонецЕсли;
	Если Проводка.СчетКт.ВидыСубконто.Количество() > 1 Тогда
		стрТЧ.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто[1].ВидСубконто, Проводка.СубконтоКт2);
	КонецЕсли;
	Если Проводка.СчетКт.ВидыСубконто.Количество() > 2 Тогда
		стрТЧ.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто[2].ВидСубконто, Проводка.СубконтоКт3);
	КонецЕсли;
КонецЦикла;

Алгоритм "ПодготовитьТаблицыПроводок" просто создает нужные ТЗ.

Алгоритм "ПолучитьПроводки" заполняет аналитику.

На этом, мне казалось, что все. Сохранил правила обмена. Выгрузил данные из битой конфы, загрузил в новую. Все прошло без ошибок.

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

По согласованию с заказчиком было решено перенести лишь входящие остатки на начало года. Для этого создал новый запрос ОСВ_БУ

ВЫБРАТЬ
     &ДатаОкончания КАК Дата,
	БУ.Счет КАК Счет,
	ИСТИНА КАК Активность,
	ВЫБОР  КОГДА БУ.Счет.Вид = &Активный ТОГДА БУ.Счет
			ИНАЧЕ &Счет0  КОНЕЦ КАК СчетДт,
	ВЫБОР КОГДА БУ.Счет.Вид = &Пассивный ТОГДА БУ.Счет
			ИНАЧЕ &Счет0 КОНЕЦ КАК СчетКт,
	ВЫБОР КОГДА БУ.Счет.Вид = &Активный ТОГДА БУ.Субконто1
			ИНАЧЕ NULL КОНЕЦ КАК СубконтоДт1,
	ВЫБОР КОГДА БУ.Счет.Вид = &Активный  ТОГДА БУ.Субконто2
			ИНАЧЕ NULL КОНЕЦ КАК СубконтоДт2,
	ВЫБОР КОГДА БУ.Счет.Вид = &Активный  ТОГДА БУ.Субконто3
			ИНАЧЕ NULL КОНЕЦ КАК СубконтоДт3,
	ВЫБОР КОГДА БУ.Счет.Вид = &Пассивный ТОГДА БУ.Субконто1
			ИНАЧЕ NULL  КОНЕЦ КАК СубконтоКт1,
	ВЫБОР КОГДА БУ.Счет.Вид = &Пассивный  ТОГДА БУ.Субконто2
			ИНАЧЕ NULL КОНЕЦ КАК СубконтоКт2,
	ВЫБОР КОГДА БУ.Счет.Вид = &Пассивный ТОГДА БУ.Субконто3
			ИНАЧЕ NULL КОНЕЦ КАК СубконтоКт3,
	ВЫБОР КОГДА БУ.Счет.Вид = &Активный ТОГДА БУ.Валюта
			ИНАЧЕ NULL КОНЕЦ КАК ВалютаДт,
	ВЫБОР КОГДА БУ.Счет.Вид = &Пассивный ТОГДА БУ.Валюта
			ИНАЧЕ NULL КОНЕЦ КАК ВалютаКт,
	ВЫБОР КОГДА БУ.Счет.Вид = &Активный ТОГДА БУ.СуммаОстатокДт
			ИНАЧЕ БУ.СуммаОстатокКт КОНЕЦ КАК Сумма,
	БУ.Организация,
	БУ.СтруктурноеПодразделение КАК СтруктурноеПодразделениеДт,
	БУ.СтруктурноеПодразделение КАК СтруктурноеПодразделениеКт,
	БУ.ВалютнаяСуммаОстатокДт КАК ВалютнаяСуммаДт,
	БУ.ВалютнаяСуммаОстатокКт КАК ВалютнаяСуммаКт,
	БУ.КоличествоОстатокДт КАК КоличествоДт,
	БУ.КоличествоОстатокКт КАК КоличествоКт
ИЗ
	РегистрБухгалтерии.Типовой.Остатки(&ДатаОкончания, , , ) КАК БУ
УПОРЯДОЧИТЬ ПО
	БУ.Счет.Код

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

Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнаяОрганизация");
Запросы.ОСВ_БУ.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Запросы.ОСВ_БУ.УстановитьПараметр("Счет0", ПланыСчетов.Типовой.Вспомогательный);
Запросы.ОСВ_БУ.УстановитьПараметр("Активный", ВидСчета.Активный);
Запросы.ОСВ_БУ.УстановитьПараметр("Пассивный", ВидСчета.Пассивный);

БУ = Запросы.ОСВ_БУ.Выполнить().Выгрузить();

Операции = БУ.Скопировать(,"Счет");
Операции.Свернуть("Счет");
Операции.Колонки.Добавить("Дата");
Операции.Колонки.Добавить("Номер");
Операции.Колонки.Добавить("ПометкаУдаления");
Операции.Колонки.Добавить("Организация");
Операции.Колонки.Добавить("Автор");
Операции.Колонки.Добавить("Комментарий");
Операции.Колонки.Добавить("Ответственный");
Операции.Колонки.Добавить("Содержание");
Операции.Колонки.Добавить("СтруктурноеПодразделение");
Операции.Колонки.Добавить("ТиповаяОперация");
Операции.Колонки.Добавить("СуммаОперации");

Операции.Колонки.Добавить("Типовой");
Операции.Колонки.Добавить("Налоговый");
Операции.Колонки.Добавить("ЗапрашиваемыеПараметры");

Типовой = Неопределено;
Налоговый = Неопределено;	
ЗапрашиваемыеПараметры = Неопределено;

Выполнить(Алгоритмы.ПодготовитьТаблицыПроводок);
СЦ = 0;
Для Каждого Операция ИЗ Операции Цикл
	СЦ = СЦ + 1;
	Операция.Номер = ПривестиНомерКДлине(Строка(СЦ),11,,"ОСВ-");
	Операция.Дата = ДатаОкончания;
	Операция.ПометкаУдаления = ЛОЖЬ;
	Операция.ТиповаяОперация = Справочники.ТиповыеОперации.ПустаяСсылка();
	Операция.Организация = Организация;
	Операция.Автор = глТекущийПользователь;
	Операция.Комментарий = "Перенос остатов по счету БУ "+Операция.Счет;
	Операция.Содержание = Операция.Комментарий;

	Операция.Типовой = Типовой.СкопироватьКолонки();
	Операция.Налоговый = Налоговый.СкопироватьКолонки();
	Операция.ЗапрашиваемыеПараметры = ЗапрашиваемыеПараметры.СкопироватьКолонки();
	
	Строки = БУ.НайтиСтроки(Новый Структура("Счет", Операция.Счет));
	ТЧ = Операция.Типовой;
	СуммаОперации = 0;
	Выполнить(Алгоритмы.ПолучитьПроводки);
	Операция.СуммаОперации = СуммаОперации;
КонецЦикла;

ВыборкаДанных = Операции;

После этого данные бух. учета у меня сели нормально.

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

ВыборкаДанных = Новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Автор");
ВыборкаДанных.Колонки.Добавить("Комментарий");
ВыборкаДанных.Колонки.Добавить("Организация");
ВыборкаДанных.Колонки.Добавить("Ответственный");
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("Номер");
ВыборкаДанных.Колонки.Добавить("ТаблицаРегистровНакопления");

Запрос = Новый Запрос;
Имена = Новый Структура;

Запрос.УстановитьПараметр("Дата", ДатаОкончания+1);

Для Каждого Рег ИЗ Метаданные.РегистрыНакопления Цикл
	Если Рег.ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Обороты Тогда
		Продолжить;			
	КонецЕсли;
	
	Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрНакопления."+Рег.Имя+".Остатки(&Дата)";
	Результат = Запрос.Выполнить();
	Если НЕ Результат.Пустой() Тогда
		Поля = "";
		Для Каждого Изм ИЗ Рег.Измерения Цикл
			Поля = Поля + Изм.Имя+",";
		КонецЦикла;
		Для Каждого Рес ИЗ Рег.Ресурсы Цикл
			Поля = Поля + Рес.Имя+"Остаток КАК "+Рес.Имя+",";
		КонецЦикла;
		
		Поля = Лев(Поля,СтрДлина(Поля)-1);
		Имена.Вставить(Рег.Имя,Поля);
		ВыборкаДанных.Колонки.Добавить(Рег.Имя);
	КонецЕсли;
КонецЦикла;

Стр = ВыборкаДанных.Добавить();
Стр.ТаблицаРегистровНакопления = Новый ТаблицаЗначений;
Стр.ТаблицаРегистровНакопления.Колонки.Добавить("Имя");
Стр.ТаблицаРегистровНакопления.Колонки.Добавить("Представление");

Для Каждого КиЗ ИЗ Имена Цикл
	сРг = Стр.ТаблицаРегистровНакопления.Добавить();
	сРг.Имя = КиЗ.Ключ;
	сРг.Представление = Метаданные.РегистрыНакопления[КиЗ.Ключ].Синоним;
	
	Запрос.Текст = "ВЫБРАТЬ ИСТИНА КАК Активность,
					|"+КиЗ.Значение+"
					|ИЗ РегистрНакопления."+КиЗ.Ключ+".Остатки(&Дата)";
					
	Стр[Киз.Ключ] = Запрос.Выполнить().Выгрузить();
	Стр[Киз.Ключ].Колонки.Добавить("ВидДвижения");
	Стр[Киз.Ключ].Колонки.Добавить("Период");
	Стр[Киз.Ключ].Колонки.Добавить("Регистратор");
	Стр[Киз.Ключ].ЗаполнитьЗначения(ВидДвиженияНакопления.Приход,"ВидДвижения");
	Стр[Киз.Ключ].ЗаполнитьЗначения(ДатаОкончания,"Период");
КонецЦикла;

Стр.Номер = "ОР-00000001";
Стр.Дата = ДатаОкончания;
Стр.Автор = глТекущийПользователь;
Стр.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь,"ОсновнаяОрганизация");
Стр.Комментарий = "Перенос остатков регистров накопления";
Стр.Ответственный = глТекущийПользователь;

т.е. у меня выгружаются только те регистры, которые имеют остатки.

Проверил в режиме "предприятие" эту обработку, и посмотрел, какие регистры имеют остатки. Создал ПКО для документ "КорректировкаЗаписейРегистров". В нем объект источник так же не указан.

В правила конвертации свойств добавил только те таблицы, которые мне нужны. При настройке ПКС для регистров необходимо снять галочки с реквизитов. т.к. по ним мы в любом случае не получим остатки, соответственно их переносить не нужно. Получилось вот такая картина На этом настройка закончилась, перенос данных отработал и все жили долго и счастливо :) А базы настроили на регулярную резервную архивацию на дисках, не связанных с диском БД!!!

Конвертация данных

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2973    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3524    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177737    1073    0    

849

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27375    79    146    

59

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61314    88    59    

73

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11746    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31110    31    18    

47

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10983    5    8    

9
Отзывы
9. ixijixi 1775 09.06.17 12:17 Сейчас в теме
(8) А можно было бы управиться за четверть часа
Консоль запросов -> Запрос к остаткам регистра -> Вывести список в табличный документ -> Загрузка данных из табличного документа в Документ.ОперацияБух или КорректировкаЗаписейРегистров

Тут на ИС есть инструменты, которые загружают движения РН
ВикторП; +1 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. trntv 25 08.06.17 09:43 Сейчас в теме
Почему ничего не написано про "Тестирование и исправление" из конфигуратора. К чему приводило, чем не подошло.
4. ermek6 22 08.06.17 18:19 Сейчас в теме
(1)
При тестировании база вылетала с той же ошибкой
2. iskdv 08.06.17 09:47 Сейчас в теме
начать с физики "Чек ДБ ФЛ"
5. ermek6 22 08.06.17 18:20 Сейчас в теме
(2) Да. Тоже была первая мысль. Но она ошибку не увидела
3. nk25 08.06.17 14:44 Сейчас в теме
6. ermek6 22 08.06.17 18:23 Сейчас в теме
(3)Нет. Если честно, то даже не искал особо. Да и способ вряд ли подошел бы.
Документ используется, а посему удалять объект конфигурации -- это не наш метод
Судя по тому, что по разным видам оборотов за один и тот же период выдавались разные суммы, были аналогичные проблемы и с служебными таблицами.

Причем картина такая, что неправильные данные подходили бухгалтеру, а вот правильные -- нет.
Это обнаружилось в новой базе, после переноса всех документов с движениями. В ней данные совпадали, и были не подходящими :)
7. nk25 09.06.17 06:05 Сейчас в теме
(6) сколько в итоге потратил времени на перенос?
8. ermek6 22 09.06.17 11:23 Сейчас в теме
(7) Делал в 2 подхода. Каждый часа по 3
9. ixijixi 1775 09.06.17 12:17 Сейчас в теме
(8) А можно было бы управиться за четверть часа
Консоль запросов -> Запрос к остаткам регистра -> Вывести список в табличный документ -> Загрузка данных из табличного документа в Документ.ОперацияБух или КорректировкаЗаписейРегистров

Тут на ИС есть инструменты, которые загружают движения РН
ВикторП; +1 Ответить
14. nvv1970 22.10.17 12:43 Сейчас в теме
(6)
по разным видам оборотов за один и тот же период выдавались разные суммы
Чтобы не задаваться такими вопросами нужно понимать как 1с хранит итоги и какие запросы (с какой периодичностью) их используют.
Цифры итогов не должны соответствовать бухгалтеру! Они должны соответствовать движениям! А уж где лишние движения - бухи и сами разберутся.
ИМХО конвертация - самый сложный метод для решения такого рода задач. SQL - наше все. Как минимум Select, Update, Delete должен уметь использовать любой 1с программист. Необычных случаев, сбоев в работе баз хватает. Делать какие-то глобальные переливки данных через 1с - нонсенс.
10. webester 26 10.06.17 09:29 Сейчас в теме
Странно, что никто никто не написал, что автору надо настроить бекапы. КЭПы в отпуска, что ли уехали.
nvv1970; BomjBandit; +2 Ответить
11. echo77 1868 11.06.17 16:39 Сейчас в теме
У меня что-то с глазами или шрифты во всех формах имеют некий другой размер?
12. ixijixi 1775 13.06.17 11:22 Сейчас в теме
13. ermek6 22 13.06.17 18:21 Сейчас в теме
(11) Да просто я под убунтой сижу. специально по мельче сделал, что бы больше инфы влезало
Оставьте свое сообщение