Предыстория задачи “превращения” ЕРП в КА 2 / УТ 11
К нам обратился заказчик, для которого учет в 1С:ERP оказался слишком сложным. А возможности программы - излишними. Заказчик принял решение перейти на ведение учета в 1С:Комплексной автоматизации 8, ред. 2.
Кстати, если вас интересует таблица сравнения функционала самых популярных современных программ 1С для ведения учета, можете запросить ее у нас:
Закажите конвертацию ЕРП в КА 2 в компании Moscowsoft
Такая задача имеет свои нюансы. Далее по тексту рассказываем о некоторых из них. Но это не все трудности, с которыми столкнется специалист, который будет заниматься таким переходом в ERP на КА 2. Поэтому для экономии своего времени сил обратитесь к нам за ее выполнением.
Инструкция по шагам, как “превратить” 1С:ЕРП в 1С:Комплексная автоматизация
- Сделайте резервную копию базы 1С:ERP
- В конфигураторе выберите
Конфигурация - Открыть конфигурацию(если не открыта). - Зайдите
Конфигурация - Поддержка - Настройка поддержки. - Нажмите
Разрешить редактировать. НажмитеСнять с поддержки. Сделайте так для каждой из подсистем. - Когда конфигурация уже вообще не надо поддержке, выберите
Конфигурация - Загрузить конфигурацию из файла. Выбирайте тот же релиз 1С:Комплексной автоматизации или 1С:Управление торговлей, что и у 1С:ERP. Например, если ЕРП релиза 2.5.26.106, то нужно выбирать файл конфигурации (формата cf) релиза КА 2.5.26.106 или УТ 11.5.26.106.
Теоретически в конце пройдет загрузка конфигурации и ваша база станет стандартной конфигурацией “на замке”, но уже КА или УТ.
На практике возникают ошибки. Дело в том, что в ERP существенно больше видов документов. И они могут быть в измерениях записей независимых регистров сведений. То есть при попытке выполнить конфигурацию 1С “видит”, что в результате появятся записи регистров сведений с пустыми измерением. И откатывает реструктуризацию - пишет ошибку “при выполнении записи регистра сведений … станут неуникальными”.
Что делать с этой ошибкой?
Исправление ошибки реструктуризации
Мы выполняли задачу конвертации 1С:ERP в 1С:Комплексная автоматизация и решали проблему неуникальных записей регистров сведений следующим образом.
-
Некоторые технические регистры просто очистили. Например, регистр сведений
ВерсииОбъектов:Набор = РегистрыСведений.ВерсииОбъектов.СоздатьнаборЗаписей(); Набор.Записать();
- Открыть сравнение и объединение конфигураций, выбрать в дереве Документы и составить список документов, которые есть в ERP, но отсутствуют в Комплексная автоматизация.
- Каждый раз при исправлении одного регистра сведений 1С будет показывать вам только один следующий объект. А ошибка реструктуризации, как понимаете, отображается только в самом конце реструктуризации. Таким образом, процесс может очень сильно растянуться.
Программный код перед конвертацией ERP в Комплексная автоматизация
В результате работ из абзаца выше у нас получился следующий код (далее по тексту). Хотим добавить, что с выходом новых релизов программ 1С этот код устареет. Кроме того, он сработал у нашего заказчика. В случае другой реальной рабочей базы 1С скрипт может понадобиться немного другой. Звоните нам по телефону +74996733375 или пишите описание своей задачи на почту task@moscowosft.com.
Набор = РегистрыСведений.ВерсииОбъектов.СоздатьнаборЗаписей(); Набор.Записать(); МассивТипов = Новый Массив(); МассивТипов.Добавить(Тип("ДокументСсылка.ПередачаДавальцу")); МассивТипов.Добавить(Тип("ДокументСсылка.ЭтапПроизводства2_2")); МассивТипов.Добавить(Тип("ДокументСсылка.ОтчетДавальцу")); МассивТипов.Добавить(Тип("ДокументСсылка.ПоступлениеСырьяОтДавальца")); МассивТипов.Добавить(Тип("ДокументСсылка.ВводОстатковОСМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ВозвратСырьяДавальцу")); МассивТипов.Добавить(Тип("ДокументСсылка.ОтчетДавальцу2_5")); МассивТипов.Добавить(Тип("ДокументСсылка.НачальныеОстаткиНЗППоПартиямПроизводства")); МассивТипов.Добавить(Тип("ДокументСсылка.ОтчетДавальцуМеждуОрганизациями")); МассивТипов.Добавить(Тип("ДокументСсылка.АмортизацияНМАМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.АмортизацияОСМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ВводИнформацииОПрошлыхРемонтах")); МассивТипов.Добавить(Тип("ДокументСсылка.ВводОстатковНМАМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ВводОстатковОСМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ВозвратСырьяДавальцу")); МассивТипов.Добавить(Тип("ДокументСсылка.ДоступностьВидаРабочихЦентров")); МассивТипов.Добавить(Тип("ДокументСсылка.ДоступностьРабочихЦентров")); МассивТипов.Добавить(Тип("ДокументСсылка.ЗаказДавальца")); МассивТипов.Добавить(Тип("ДокументСсылка.ЗаказДавальца2_5")); МассивТипов.Добавить(Тип("ДокументСсылка.ЗаказНаПроизводство")); МассивТипов.Добавить(Тип("ДокументСсылка.ЗаказНаПроизводство2_2")); МассивТипов.Добавить(Тип("ДокументСсылка.ЗаказНаРемонт")); МассивТипов.Добавить(Тип("ДокументСсылка.ИзменениеПараметровНМАМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ИзменениеПараметровОСМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.КорректировкаЗаказаМатериаловВПроизводство")); МассивТипов.Добавить(Тип("ДокументСсылка.МаршрутныйЛистПроизводства")); МассивТипов.Добавить(Тип("ДокументСсылка.НачальныеОстаткиНЗППоПартиямПроизводства")); МассивТипов.Добавить(Тип("ДокументСсылка.НачальныеОстаткиНЗППоПодразделениям")); МассивТипов.Добавить(Тип("ДокументСсылка.ОперацияМеждународный")); МассивТипов.Добавить(Тип("ДокументСсылка.ОтчетДавальцу")); МассивТипов.Добавить(Тип("ДокументСсылка.ОтчетДавальцу2_5")); МассивТипов.Добавить(Тип("ДокументСсылка.ОтчетДавальцуМеждуОрганизациями")); МассивТипов.Добавить(Тип("ДокументСсылка.ПереводОсновныхСредствИнвестиционногоИмуществаМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ПередачаДавальцу")); МассивТипов.Добавить(Тип("ДокументСсылка.ПеремещениеНМАМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ПеремещениеОСМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ПлановаяКалькуляция")); МассивТипов.Добавить(Тип("ДокументСсылка.ПлановаяКалькуляция2_2")); МассивТипов.Добавить(Тип("ДокументСсылка.ПоступлениеСырьяОтДавальца")); МассивТипов.Добавить(Тип("ДокументСсылка.ПринятиеКУчетуНМАМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ПринятиеКУчетуОСМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.ПроизводственнаяОперация2_2")); МассивТипов.Добавить(Тип("ДокументСсылка.ПроцессПодготовкиБюджетов")); МассивТипов.Добавить(Тип("ДокументСсылка.РазрешениеНаЗаменуМатериалов")); МассивТипов.Добавить(Тип("ДокументСсылка.РегистраторГрафикаПроизводства")); МассивТипов.Добавить(Тип("ДокументСсылка.РегистрацияДефекта")); МассивТипов.Добавить(Тип("ДокументСсылка.РегламентнаяОперацияМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.СменноеЗадание")); МассивТипов.Добавить(Тип("ДокументСсылка.СписаниеНМАМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.СписаниеОСМеждународныйУчет")); МассивТипов.Добавить(Тип("ДокументСсылка.УстановкаЗначенийНаработки")); МассивТипов.Добавить(Тип("ДокументСсылка.УстановкаНормативовПроизводственныхРасходов")); МассивТипов.Добавить(Тип("ДокументСсылка.ЭкземплярФинансовогоОтчета")); МассивТипов.Добавить(Тип("ДокументСсылка.ЭтапПроизводства2_2")); Выборка = РегистрыСведений.ДанныеПервичныхДокументов.Выбрать(); Пока Выборка.Следующий() Цикл ТипДокумента = ТипЗнч(Выборка.Документ); Если МассивТипов.Найти(ТипДокумента) <> Неопределено Тогда Набор = РегистрыСведений.ДанныеПервичныхДокументов.СоздатьНаборЗаписей(); Набор.Отбор.Документ.Установить(Выборка.Документ); Набор.Записать(); КонецЕсли; КонецЦикла; Выборка = РегистрыСведений.ЗаданияКРасчетуСебестоимости.Выбрать(); Пока Выборка.Следующий() Цикл ТипДокумента = ТипЗнч(Выборка.Документ); Если МассивТипов.Найти(ТипДокумента) <> Неопределено Тогда Сообщить("Зашли " + ТипДокумента + ". Документ: " + Выборка.Документ); Набор = РегистрыСведений.ЗаданияКРасчетуСебестоимости.СоздатьНаборЗаписей(); Набор.Отбор.Документ.Установить(Выборка.Документ); Набор.Записать(); КонецЕсли; КонецЦикла; Выборка = РегистрыСведений.КлючиДоступаКОбъектам.Выбрать(); Пока Выборка.Следующий() Цикл ТипДокумента = ТипЗнч(Выборка.Объект); Если МассивТипов.Найти(ТипДокумента) <> Неопределено Тогда Сообщить("Зашли " + ТипДокумента + ". Документ: " + Выборка.Объект); Набор = РегистрыСведений.КлючиДоступаКОбъектам.СоздатьНаборЗаписей(); Набор.Отбор.Объект.Установить(Выборка.Объект); Набор.Записать(); КонецЕсли; КонецЦикла; Выборка = РегистрыСведений.НаличиеФайлов.Выбрать(); Пока Выборка.Следующий() Цикл ТипДокумента = ТипЗнч(Выборка.ОбъектСФайлами); Если МассивТипов.Найти(ТипДокумента) <> Неопределено Тогда Сообщить("Зашли " + ТипДокумента + ". Документ: " + Выборка.ОбъектСФайлами); Набор = РегистрыСведений.НаличиеФайлов.СоздатьНаборЗаписей(); Набор.Отбор.ОбъектСФайлами.Установить(Выборка.ОбъектСФайлами); Набор.Записать(); КонецЕсли; КонецЦикла; Выборка = РегистрыСведений.РаспределениеЗапасов.Выбрать(); Пока Выборка.Следующий() Цикл ТипДокумента = ТипЗнч(Выборка.ЗаказНаОтгрузку); Если МассивТипов.Найти(ТипДокумента) <> Неопределено И Не ЗначениеЗаполнено(Выборка.ЗаказНаОтгрузку) Тогда Сообщить("Зашли " + ТипДокумента + ". Документ: " + Выборка.ЗаказНаОтгрузку); Набор = РегистрыСведений.РаспределениеЗапасов.СоздатьНаборЗаписей(); Набор.Отбор.ЗаказНаОтгрузку.Установить(Выборка.ЗаказНаОтгрузку); Набор.Записать(); КонецЕсли; КонецЦикла; Выборка = РегистрыСведений.РаспределениеЗапасов.Выбрать(); Пока Выборка.Следующий() Цикл ТипДокумента = ТипЗнч(Выборка.ЗаказНаПоступление); Если МассивТипов.Найти(ТипДокумента) <> Неопределено Тогда Сообщить("Зашли " + ТипДокумента + ". Документ: " + Выборка.ЗаказНаПоступление); Набор = РегистрыСведений.РаспределениеЗапасов.СоздатьНаборЗаписей(); Набор.Отбор.ЗаказНаПоступление.Установить(Выборка.ЗаказНаПоступление); Набор.Записать(); КонецЕсли; КонецЦикла; // Набор = РегистрыСведений.РаспределениеЗапасов.СоздатьнаборЗаписей(); // Набор.Записать(); МассивТипов = Новый Массив(); Выборка = РегистрыСведений.СведенияОФайлах.Выбрать(); Пока Выборка.Следующий() Цикл Тип = ТипЗнч(Выборка.Файл); Если МассивТипов.Найти(Тип) = Неопределено Тогда МассивТипов.Добавить(Тип); КонецЕсли; Попытка Владелец = Выборка.Файл.ВладелецФайла; ТипВладельца = ТипЗнч(Владелец); Если МассивТипов.Найти(ТипВладельца) <> Неопределено Тогда Сообщить("Зашли " + ТипДокумента + ". Файл: " + Выборка.Файл); Набор = РегистрыСведений.СведенияОФайлах.СоздатьНаборЗаписей(); Набор.Отбор.Файл.Установить(Выборка.Файл); Набор.Записать(); КонецЕсли; Исключение КонецПопытки; КонецЦикла; Для Каждого Элемент Из МассивТипов Цикл // Сообщить(Элемент); КонецЦикла;














































