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

Публикация № 631562

Администрирование - Администрирование данных 1С - Тестирование и исправление

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

У клиента что-то произошло с жестким диском, что потребовало восстановления данных на нем. Базу 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";
Стр.Дата = ДатаОкончания;
Стр.Автор = глТекущийПользователь;
Стр.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь,"ОсновнаяОрганизация");
Стр.Комментарий = "Перенос остатков регистров накопления";
Стр.Ответственный = глТекущийПользователь;

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

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

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

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

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

Тут на ИС есть инструменты, которые загружают движения РН
ВикторП; +1 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. trntv 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. the1 865 09.06.17 12:17 Сейчас в теме
(8) А можно было бы управиться за четверть часа
Консоль запросов -> Запрос к остаткам регистра -> Вывести список в табличный документ -> Загрузка данных из табличного документа в Документ.ОперацияБух или КорректировкаЗаписейРегистров

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

См. также

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    21247    m-rv    17    

Правила обмена больше не нужны

Внешние источники данных Обмен через XML Перенос данных из 1C8 в 1C8 Распределенная БД (УРИБ, УРБД) WEB v8 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    6442    Nikola23    35    

R.I.P. РИБ

Обмен через XML Распределенная БД (УРИБ, УРБД) v8 1cv8.cf Бесплатно (free)

РИБ, спасибо и до свидания.

19.02.2021    7004    1c-intelligence    132    

Перенос данных из ЗУП 2.5 в ЗУП 3.1

Зарплата Перенос данных из 1C8 в 1C8 v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Бесплатно (free)

Довольно часто сталкиваюсь с тем, что у коллег возникает вопрос, как правильно выполнить перенос данных из ЗУП 2.5 в ЗУП 3.1. (Неужели еще кто-то до сих пор работает в ЗУП 2.5? Да, и очень много людей)

25.01.2021    4327    VAAngelov    48    

Регулярные выражения без внешних компонент? Легко! Промо

Практика программирования Обмен через XML v8 Бесплатно (free)

Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.

04.03.2016    66690    starik-2005    106    

Пользователь ИБ не идентифицирован

Тестирование и исправление v8 ERP2 Россия Бесплатно (free)

Реанимация ИБ после такой ошибки

12.01.2021    18077    mrcamomile    80    

Неожиданное использование XDTO

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

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

05.12.2020    2588    simon_sidoruk    22    

Сказ о том, как в одной крупной компании документооборот внедряли, или проблемы типовых обменов между КА и ДО

Интеграция Документоборот 2 Перенос данных из 1C8 в 1C8 v8 ДО КА2 Бесплатно (free)

Приветствую всех. Сегодня пойдет речь о том, как на одной крупной компании внедряли 1С:Документооборот 2.1 в связке с КА 2.4. Вроде бы системы типовые, мы практически не добавляли ничего в них, но проблем было столько, что я решил изложить их в статье. Может, кому-то пригодится это в дальнейшем, и не придется тратить кучу времени на поиск решений.

10.11.2020    5223    maks_20    22    

Повышаем эффективность разработки правил обмена Промо

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    29392    olegtymko    48    

Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3

БСП (Библиотека стандартных подсистем) Перенос данных из 1C8 в 1C8 v8 1cv8.cf УПП1 КД ERP2 Россия Бесплатно (free)

Данный вариант подойдет тем, кто хочет настроить "свой" регулярный обмен с добавлением "своих" планов обмена с использованием правил обмена на КД 2.1.

27.10.2020    4520    байт    13    

Ошибка формата потока данных, частный случай

Тестирование и исправление v8 Бесплатно (free)

Вариант решения ошибки формата потока данных при попытке открытия конфигурации в конфигураторе.

11.07.2020    3019    Zhilyakovdr    6    

Конвертация данных 2. Использование подключаемых обработок в правилах обмена. Конвертация дерева значений

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Разработка правил обмена с использованием подключаемых обработок. В качестве примера рассмотрена реальная задача конвертации дерева значений.

15.06.2020    4633    Drivingblind    8    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники Промо

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    24182    V.Stavinsky    11    

Конвертация данных 2.1. Методика переноса остатков

Перенос данных из 1C8 в 1C8 v8 1cv8.cf УУ Бесплатно (free)

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

12.06.2020    11010    aximo    18    

Механизм XDTO

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

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

12.05.2020    6291    totchaz    4    

Ошибка формата потока. Частный случай при обновлении

Тестирование и исправление v8 УПП1 Бесплатно (free)

При обновлении конфигурации столкнулся с ошибкой формата потока. Нашел вполне экономное решение по времени для решение этой проблемы.

25.04.2020    4968    Gasilin    8    

Взаимодействие между базами 1С через COM Промо

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассмотрено много особенностей взаимодействия между базами 1С по COM технологии

10.08.2015    163567    tormozit    70    

Проверка регистраторов при обновлении конфигурации

Тестирование и исправление v8 Бесплатно (free)

При обновлении конфигурации состав движений документов может быть изменен. Если в них были сделаны движения по своим регистрам, то их нужно восстановить. Если забыть это сделать - данные будут утеряны.

23.04.2020    3127    ipoloskov    10    

Недопустимое состояние объекта !m_usingOldShema [backend - src\DBGenerationsImpl.cpp (2377)]

Тестирование и исправление v8 Бесплатно (free)

Не знаю, что именно вызвало такую ошибку, поэтому напишу, что выполнен был переход с платформы 8.3.10.2561 на 8.3.16.1148. Конфигурация разрабатывалась с использованием хранилища конфигурации. База серверная на Microsoft SQL. В результате изменений в конфигурации, не вызывающих реструктуризацию базы, после нажатия F7 возникло такое сообщение.

04.04.2020    9922    EvgeTrofi    8    

Механизмы проведения документов при обмене по универсальному формату

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    5700    partizand    6    

Использование инструментов разработчика для отладки обменов КД 2.0 Промо

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Пара трюков, благодаря которым жить становится намного проще...

05.05.2017    28172    unichkin    6    

Односторонний обмен ЗУП и БП

Перенос данных из 1C8 в 1C8 v8 БП3.0 ЗУП3.x Россия Бесплатно (free)

Односторонний обмен из ЗУП в БУХ

29.02.2020    7053    VAAngelov    20    

[БСП] Обмен через Конвертацию данных 2.1

Обмен через XML v8 1cv8.cf Бесплатно (free)

Добавим новый план обмена и настроим в БСП типовой обмен через правила конвертации данных (КД 2.1)

03.02.2020    9616    John_d    17    

Бесшовная интеграция через обмен по правилам - миссия выполнима

Практика программирования Интеграция Перенос данных из 1C8 в 1C8 v8 ДО ERP2 Бесплатно (free)

При организации работы с договорами в ERP 2, с помощью бесшовной интеграции с Документооборотом, «типовой» методикой является создание договоров в ЕРП. После создания договора в ЕРП, пользователь «отправляет» договор в ДО по бесшовной интеграции. На практике, весьма часто пользователи хотят видеть обратную схему: вводить договоры в ДО и при этом получать их в ЕРП без «лишних телодвижений». Или даже вводить их независимо в обеих системах – так, чтобы потом «стыковать» по каким-то определенным правилам.

24.01.2020    6028    e-9    4    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    69199    tormozit    27    

Обмен через Конвертацию данных 2.1 во внешней обработке + Запуск внешней обработки по расписанию (БСП)

Обмен через XML v8 1cv8.cf Бесплатно (free)

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

22.01.2020    6769    John_d    31    

Зависает полнотекстовый поиск! Что было? Что я сделал?

Тестирование и исправление v8 БП3.0 Россия Бесплатно (free)

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

10.01.2020    7272    VID1234    14    

Как сделать обмен данными через универсальный формат быстрее? Реализация многопоточного обмена данными

Обмен данными 1С Обмен через XML v8 1cv8.cf Бесплатно (free)

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

31.12.2019    8918    ids79    17    

Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ПостроительDOM Промо

Универсальные обработки Загрузка и выгрузка в Excel Обмен через XML v8 1cv8.cf Бесплатно (free)

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "NativeXLSX" (ПостроительDOM). Обрабатываются данные EXCEL типов: "Строка", "Число", "Дата" ("Время"), "Булево", "Процент", а также изображения.

11.09.2014    76538    StepByStep    27    

"Объект не найден" - не приговор! Простой способ восстановить удаленный объект

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

В статье будет рассмотрен простой способ восстановления удаленного объекта с помощью обработки «Выгрузка и загрузка данных XML».

12.11.2019    9020    Olesia_Matusevich    12    

Решение для клиент-серверной архитектуры на базе POSTGRE SQL при возникновении ошибки "Нарушена целостность структуры конфигурации"

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

При динамическом обновлении возможно нарушении структуры конфигурации. Об этом можно узнать по характерному сообщению: "Нарушена целостность структуры конфигурации", после чего предлагается перезапуск или завершение. Решение описано для клиент-серверной конфигурации на PostgreSQL

07.11.2019    8314    leaguener    5    

Использование XML-схемы из макета внешней обработки

Обмен через XML Универсальные функции v8 1cv8.cf Бесплатно (free)

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    12022    Olesia_Matusevich    10    

Настройка типового обмена данными между: 1С: Предприятие Бухгалтерия ред. 3.0 (БП 3.0) и 1С: Управление торговлей ред. 10.3 (УТ 10.3). Промо

Перенос данных из 1C8 в 1C8 v8 УТ10 Россия Бесплатно (free)

В этой статье я опишу, как настраивается типовой обмен данными между БП 3.0 и УТ 10.3.

29.01.2014    275150    arr    56    

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Обмен через XML v8 1cv8.cf Бесплатно (free)

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

24.10.2019    13222    kraspila    32    

EnterpriseData: простой способ защиты данных в базе получателя при одностороннем обмене

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

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

04.10.2019    7661    handscenter    12    

Исправление ошибки "Для одного ссылочного кода существует более одной таблицы в базе данных"

Тестирование и исправление v8 Бесплатно (free)

Описана методика исправления ошибки путем внесения изменений в sql-таблицы.

23.09.2019    25136    Дмитрий74Чел    87    

Отладка правил обмена 7.7, 8 Промо

Перенос данных из 1С7.7 в 1C8.X Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

29.10.2013    52104    pyrkin_vanya    70    

Практика XDTO. Нюансы

Практика программирования Обмен через XML v8 Бесплатно (free)

Некоторые практические моменты работы с XDTO. Дополнения к очевидному.

23.09.2019    15921    Yashazz    31    

Конвертация Данных. Нюансы использования конструкции "НеЗамещатьОбъект = Истина" в обработчике события "ПриЗагрузке"

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

У конвертации данных есть «особенности», которые «пьют кровь» программистов. Эта статья про очередную обнаруженную «особенность».

10.09.2019    11512    ivanek    21    

Запись/Чтение XML, пример обмена по COM соединению

Обмен через XML v8 1cv8.cf Россия Бесплатно (free)

Пример работы с XML, запись и чтение, обмен по COM между одинаковыми конфигурациями.

08.09.2019    13892    user5300    8    

Обмен по расписанию типовыми средствами. Промо

Распределенная БД (УРИБ, УРБД) Обмен через XML Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Часто перед интеграторами стоит задача организовать автообмен (по расписанию или при наступлении какого-либо события) данными между различными конфигурациями. В этой статье я попробую изложить простую инструкцию, как это можно сделать средствами, заложенными в типовые конфигурации 1С (ЗУП, БП, УПП и т.д.). Для обмена используется подсистема "Обмен данными" из БСП

20.06.2012    104414    kser87    52    

Обмен данными через Web Сервисы

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Ознакомительная статья о том, как загружать\выгружать данные с одной базы в другую, используя Web Сервисы.

02.09.2019    32224    user5300    42    

Выгрузка и загрузка документов с движениями

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

02.09.2019    9338    human_new    13    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    16989    ids79    8    

Заготовка для загрузки файлов по ftp Промо

WEB Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

3 процедуры и 1 макет

03.06.2013    30881    anig99    6    

Перенос дополнительных реквизитов в Конвертации данных 2.0

Перенос данных из 1C8 в 1C8 v8 КД Россия УУ Бесплатно (free)

Пример написания правил обмена (КД 2.0) для переноса дополнительных реквизитов справочника "Номенклатура", в том числе перенос ПВХ с разными типами значений.

13.08.2019    13852    vikulinamari    8    

Конвертация 3.0. Пример доработки: два справочника в один

Обмен через XML v8 КД ERP2 БП3.0 Россия Бесплатно (free)

Доработка правил конвертации путем расширения конфигурации: номенклатура и характеристика (ERP) в номенклатуру (БП).

15.05.2019    7963    forusing    4    

Полезные приемы при работе с Конвертацией данных 2.1. Логирование, интерактивное управление, дозаполнение и постпроведение документов

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Некоторые полезные приемы для КД 2.1, которые могут пригодиться как при доработке типовых правил, так и самописных.

22.04.2019    10870    maks_20    9    

Восстановление работоспособности файловой базы. 3. Конфигурация Промо

Тестирование и исправление Практика программирования v8 1cv8.cf Бесплатно (free)

Восстановление работоспособности разрушенной файловой базы. Этап 3. Лечим конфигурацию.

21.04.2013    51377    andrewks    20    

MS SQL Ошибка СУБД: Предоставленный поток статистики разрушен. Как решить проблему с разрушенной статистикой

Тестирование и исправление v8 1cv8.cf Бесплатно (free)

MS SQL Ошибка СУБД: Предоставленный поток статистики разрушен... Как решить проблему с разрушенной статистикой

16.04.2019    7395    ikorulev    1    

Работа с ComОбъектом 1С 8.2; 8.3

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Определение типов и значений через COM соединение между конфигурациями.

15.04.2019    26227    vik070777    12    

RabbitMQ + Конвертация Данных 3.0

Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

21.03.2019    28607    barelpro    87