Итак, есть куча бухгалтерских Баз несколько лет работающих пожд 1С 77. причем часть на общей системе налогообложения, часть на УСн, купили 1С 8.... и даже под неё сервачок и даже проинсталлили, в общем есть 1С 8.2 (это была уже моя инициатива, 8.1 проапгрейдить до 8.2) Бухгалтерия Предприятия Профф...
Задача - перегнать остатки на начало 2010 г. и обороты за 2010 г. в снеговика.
Прочитал мануалы, и принялся за дело - подготовили базы в соответствии с инструкцией от 1С, запустили обработку переноса, вариант "Коннект к БД" и она благополучно вывалилась на этапе выгрузки двнных из 77, с воплем о том, что какое то (непонятно какое) значение не могу определить, и поэтому работать дальше невозможно...
Стал разбираться - и оказалось, что стандартная обработка, не "любит" операции введенные вручную, хорошо, что оказалось таковых не так много, правда и операции не все отказалась кушать, но в данном случае было принято решение отключить проводки операций введенных вручную с последующим дублированием таковых в базе 1С8.2
Итак выгрузка пошла... на этапе загрузки 1Сина опять завопила, при попытке записать и провести документы за текущий период - полез выяснять что ей не понраву и вот что нашел:
1. Функция ПровестиДокументы () Модуль формы стандартной обработки "ПереносДанныхИзИнформационныхБаз1СПредприятия77" входящей в состав конфы БП
Кусок кода:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", Организация.Ссылка);
Для Каждого ДокументМетаданные ИЗ Метаданные.Документы Цикл
УСН = ?(ДокументМетаданные.Имя = "ЗаписьКУДиР", Истина, Ложь);
Если ДокументМетаданные.Реквизиты.Найти("Организация") <> Неопределено Тогда
Запрос.Текст = Запрос.Текст + ?(Запрос.Текст = "", "", "
|ОБЪЕДИНИТЬ ВСЕ
|") + "ВЫБРАТЬ """ + ДокументМетаданные.Имя + """ КАК ИмяДокумента, Представление КАК Представление, Ссылка КАК Ссылка, Дата КАК Дата, " + УСН + " КАК УСН ИЗ Документ." + ДокументМетаданные.Имя + "
|ГДЕ НЕ ПометкаУдаления И НЕ Проведен И Дата >= &ДатаНач И Организация = &Организация";
КонецЕсли;
КонецЦикла;
|УПОРЯДОЧИТЬ ПО УСН, Дата, Ссылка";
Явно писан криво - вся ругань шла на криво сформированный запрос по этому куску...
слегонца поправил следующей конструкцией:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", Организация.Ссылка);
Для Каждого ДокументМетаданные ИЗ Метаданные.Документы Цикл
УСН = ?(ДокументМетаданные.Имя = "ЗаписьКУДиР", Истина, Ложь);
//==================================================================
Если ДокументМетаданные.Реквизиты.Найти("Организация") <> Неопределено Тогда
Запрос.Текст = Запрос.Текст + ?(Запрос.Текст = "", "", "
|ОБЪЕДИНИТЬ ВСЕ
|") + "ВЫБРАТЬ """ + ДокументМетаданные.Имя + """ КАК ИмяДокумента,";
Запрос.Текст = Запрос.Текст + ДокументМетаданные.Имя + ".Представление КАК Представление," +
ДокументМетаданные.Имя + ".Ссылка КАК Ссылка," + ДокументМетаданные.Имя + ".Дата КАК Дата"+
" ИЗ Документ." + ДокументМетаданные.Имя + " КАК " + ДокументМетаданные.Имя +"
|ГДЕ НЕ ПометкаУдаления И НЕ Проведен И Дата >= &ДатаНач И Организация = &Организация";
КонецЕсли;
КонецЦикла;
|УПОРЯДОЧИТЬ ПО Дата, Ссылка";
После чего загрузка данных прошла как по маслу...
Резюме:
1. Перед переводом семерочных баз необходимо заставить букхгалтера "вылизать" БД и по возможности устранить ручные операции пользуясь стандартными механизмами 1С Бухгалтерии 77
2. Увы без кодинга не обойдется. но что бы минимизировать сие необходимо сохранить как внешнюю обработку по переводу баз и поправить запрос как написано выше...
Кому пригодилось сие плюсаните плииизз