Замена объектов в регистрах, периодических реквизитах и записях журнала расчетов.
Точный перенос данных по OLE (Импорт по OLE) 7.7
Отличия от уже изобретенных велосипедов:
- Подключение к другой базе с возможностью переноса не только справочников и документов, но и счетов, значений констант, проводок, периодических значений справочников, как с привязкой документов, так и без нее, ДВИЖЕНИЙ ПО РЕГИСТРАМ И ЗАПИСЕЙ ЖУРНАЛОВ РАСЧЕТА в простой интерактивной форме.
- Перенос можно делать из старых копий базы данных по внутреннему идентификатору (для полного совпадения элементов баз, часто требуется для восстановления данных). Есть возможность отбора по периодам документов, периодических движений, записей журналов, в том числе и для каждого вида объекта. Отсутствующие связанные объекты будут созданы. Поэтому перенося один объект, можно перенести сотню связанных с ним во избежание нарушения логической целостности. Можно непосредственно выбрать переносимые объекты в окне подбора для каждого вида объектов. Подробная информация о процессе переноса и запись журнала в файл. Конфигурации могут даже отличаться — в этом случае данные будут перенесены только по совпадающим реквизитам (бета). Есть возможность переноса отдельных записей журналов расчета, проводок, движений регистра (в платной версии). Для справочников есть возможность установления списка реквизитов, определяющих их уникальность (Код, Наименование, и т. д.) для правильности поиска существующих элементов.
- Для переноса движений документов требуется штатный механизм перепроведения документов. Во избежание проблем невозможности проведения и чтобы не использовать дополнительные внешние компоненты, используется модифицирование файла конфигурации несколькими программными вставками. Они безопасны, и после переноса можно вернуть файл md на место (при модифицировании сохраняется его резервная копия). В результате документы проводятся с сохранением движений, которые переносом затрагивать не требуется (например, переносим записи журналов, а периодические значения реквизитов справочников, установленные документами, остаются нетронутыми).
- После переноса можно проверить список перенесенных объектов, открыть каждый объект и убедиться в верности переноса. После чего можно продолжить перенос других объектов.
Описание:
Данная обработка предназначена для переноса данных с выбранной базы 1С 7.7 в текущую.
Далее будут использоваться следующие термины: тип — например, справочник, вид — например, Валюты, объект — например, рубль, реквизит — например, Наименование, синхронизация — копирование всех реквизитов объекта.
Данные переносятся только по совпадающим по типу и наименованию реквизитам.
Вместе с документами переносятся их движения (по выбору). Для этой опции необходима обработка конфигурации кнопкой «Обработать конфигурацию», которая внесет небольшие изменения в модули проведения документов, после переноса можно вернуть конфигурацию обратно кнопкой Вернуть конфигурацию либо вручную (оригинальная конфигурация будет находиться в каталоге базы. Обработка базовой конфигурации невозможна. Для этого сначала ее необходимо перевести на конфигурацию ПРОФ. Если у вас нет ключей на ПРОФ-версию, обработку производить не рекомендуется.
На свой страх и риск можно открыть и сохранить конфигурацию в конфигураторе, предварительно сохранив оригинальную конфигурацию. После переноса можно вернуть оригинальную конфигурацию обратно без потери данных. Проверено.
В главном окне соответствующими кнопками устанавливаются общие настройки переноса всех видов справочников, документов и т. д. Если какой-нибудь вид имеет свои настройки переноса, то их необходимо настроить на соответствующих вкладках, установив курсор на нужном виде документа или справочника. Если необходимо установить общие настройки для нескольких видов объектов, в главном окне необходимо открыть соответствующие настройки, отметить галочками нужные виды и установить настройки. Кроме настроек переноса можно указать перенос конкретных объектов данного вида. Если напротив вида объекта стоит галочка (в левом списке), то будут перенесены все объекты данного вида, галочка в правом списке означает, что данный объект будет синхронизирован (в случае успешного переноса эти галочки будут сняты и их можно будет установить заново). В случае успешного переноса будет выведен список перенесенных объектов с соответствиями.
Объекты ищутся в текущей базе по реквизитам уникальности и владельцам объекта в случае необходимости либо по внутреннему представлению, которое совпадает только в случае, если одна база получена копированием другой.
Параллельно созданные объекты имеют разные внутренние представления, поэтому при переносе таких объектов с включенным режимом По внутреннему представлению может привести к ошибке записи объектов по причине неуникальности.
Прочитайте справку перед переносом.
05.11.2011. Багфикс, исправлены критические ошибки. Добавлено автоматическое определение реквизитов справочников, по которым должен происходить поиск объектов. Сейчас это намного эффективнее. Ручная работа больше не требуется.
03.12.2011. Доработана возможность возврата конфигурации обратно, багфикс, есть описание.
05.12.2011. Добавил возможность закрытия программы или выключения компьютера по завершении, обойден баг платформы, убраны ограничения строк, добавлена информативность сообщений.
07.01.2012 Сделал замену объектов на том же движке (который позволяет вмешиваться в движения по регистрам и периодике). Делаю поиск дубликатов и ещё парочку полезных фич. Замена объектов доступна на предпоследней вкладке. Замена пока доступна в бета-версии, релиз близко, уже пишу справку. Предлагаю оценить и выразить пожелания. Убрал небольшой баг переноса.
в целом по описанию хорошая обработка, но вот только смущает фраза «используется модифицирование файла конфигурации несколькими программными вставками. Они безопасны, и после переноса можно вернуть файл md на место» и что это за кнопка «вернуть сохраненную конфигурацию»?
на тестовой базе попробуйте, узнаете 😉 если честно, все просто. в модуль процедуры проведения каждого документа вставляется вызов глобальной процедуры. которая сработает только в случае переноса данных. в остальных случаях просто будет штатное проведение. в глобальном модуле вставляется один небольшой кусок кода, который приводит в действие этот механизм. без проведения документов обрабатывать конфигурацию не обязательно. так выглядит обработка при запуске на уже обработанной конфигурации. на необработанной кнопка будет иметь вид «Обработать конфигурацию». ах, да, в релиз кандидате возврат измененной конфигурации на место я пока убрал, глючит, ща над этим работаю. вернуть ее можно вручную, она бэкапится рядом с основной. конфигурация изменяется путем разбора на тексты с помощью gcomp и последующего сбора обратно после выхода из программы. конфигурация, если она не повреждена, собирается в полностью идентичную. проверял на трех базах разного типа — все работает хорошо. но зато не используется перехватчик, который идет в составе 1cpp, так как эта компонента может выбить 1Ску, если идет работа по ОЛЕ.
я на этот же интерфейс прикручу ПОИСК ДУБЛЕЙ И ЗАМЕНУ ОБЪЕКТОВ (в регистрах и периодике тоже, ессно). те же самые сущности ведь используются — реквизиты уникальности, перехват проведения, интерфейс уже готов…. поиск дублей и замена объектов у меня уже есть, тоже фактически моя разработка, осталось их срастить вместе.
через неделю эта обработка будет иметь широкое применение, следите за ней.
сейчас убираю мелкие баги, так как в последний день переписал один из базовых механизмов… через неделю она будет вылизана.
а без модификаций md никак нельзя обойтись? например, просто перенести справочники и документы, а потом уже штатно провести все перенесенные документы
конечно, можно. просто, когда программа предложит обработать конфигу — ответьте Нет. либо снимите галку проводить документы (чтобы транзакция не рвалась) — и проведите их сами. а то при проведении начнутся остановки из-за минусовых остатков и прочих ограничений, конфига ведь может быть нетиповая!
просто перенести справочники и документы — умеют многие обработки по переносу, даже стандартные ИТСовские (правда, они тоже кривые ))), но мне нравится именно таким способом — без файлов выгрузки и загрузки, а то не знаешь, где ошибка — в экспорте или импорте…
По мне — так это сизифов труд.
Переносов как грязи, и по оле и так.
Вот если б на прямых запросах — еще туда сюда, а оле — зло.
Да и, мод — гораздо универссальней + обмен между любыми мд-никами.
Да и, непонятно, чего ты там собрался за деньги продавать ?
Не взлетит.
конечно, можно. просто, когда программа предложит обработать конфигу — ответьте Нет. либо снимите галку проводить документы (чтобы транзакция не рвалась) — и проведите их сами. а то при проведении начнутся остановки из-за минусовых остатков и прочих ограничений, конфига ведь может быть нетиповая!
просто перенести справочники и документы — умеют многие обработки по переносу, даже стандартные ИТСовские (правда, они тоже кривые ))), но мне нравится именно таким способом — без файлов выгрузки и загрузки, а то не знаешь, где ошибка — в экспорте или импорте…
спасибо за консультацию
(5) (6) ты в своем репертуаре 😉
отправил на модерацию багфикс.
неправильно переносилось периодическое пустое значение константы и немного оптимизировал
Ладно, плюсану за работу, качать всё равно не буду — ибо не к чему мне это..
(2)А если конфигурация БАЗОВАЯ? Как быть с переносом движений по регистрам?
(10) а нахрена в базовой вообще сдались какие-то переносы ?
🙂
(11) А почему нет? Откуда такие ограничения?
согласен, в базовой вполне может понадобиться перенос
(10) в базаовой движения по регистрам??? покажите мне взлетевшую базовую торговлю!
(14)Базовый 1С:Предприниматель 7.7, базовый ПУБ — они на регистрах.
Базовый ЗИК — Журнал расчетов.
Ну и периодика порожденная проведением документами — она есть во всех конфах.
владельцы базовых конфиг вряд ли раскошелятся на программиста, который им сделает перенос, обычно это люди, тратящие пицот-тыщу рублей за обновление раз в год. всех своих базовиков перегнал на проф версии (апгрейдом), так как хотелки у клиентов начинаются сразу, как только у них все начинает более-менее стабильно работать. теоретически не проверял вариант, можно ли проф версию обновить на базовую, ведь изменения — временные, можно и выгрузкой-загрузкой поиграться.
но это мое сугубо личное мнение. надо будет проверить на досуге как-нибудь. не спорю, минус, конечно, но изменение конфиги того стоит, я считаю. когда слетит пол-базы из-за неудачного обмена или свертки, будешь рад любому методу восстановления данных, вплоть до пиратизации базы.
(10) кстати, а gcompу не пофигу, базовая конфига или нет? старый мдшник просто обратно возвращается и все. в конфигуратор никто и не лезет…
(17)Потести.
gcomp не жует базовые конфиги, а жаль,.. инсертер не понимает глобального модуля, так же как и гендальфовская утилита. однако можно самому сделать конфигу не базовой (просто сохранив ее в конфигураторе), провести перенос, а потом вернуть конфигу на место. база не портится. добавляется пара записей в файл CJPROP.dbf, если таковые есть, они безвредны.
(19)»а потом вернуть конфигу на место»
Как?!
копированием. она бэкапится на всякий пожарный… надо еще тесты провести — если я не прав, переделаю на перехватчик.
«можно самому сделать конфигу не базовой»
Это значит нарушить права ЗАО 1С, если установлен базовый движок.
Т.е. твой перенос предполагает пиратские способы использования?
хотелось бы еще увидеть создание новой ссылки с тем же внутренним внутренним преставлением что и в родительской базе
(найти младщий по внтреннему представлению который надо перенести => проверить какой создается в приемнике и временно создавать временные ссылки пока не получится нужный внутреннийИД)
(23) А если с этим номером уже есть?
(22) люди, сидящие на базовой конфигурации вряд ли могут себе позволить такие выкрутасы с базой. передав базу для переноса программисту, у которого есть лицензия на не базовые компоненты, лицензия не нарушается. так как программист вернет обратно базовую конфигурацию. а что он с ней делал — это его дело. да и базовые конфигурации — редкость. разве перехватчик не нарушит лицензию? ведь он работает в адресном пространстве 1С, внедряясь в ее алгоритмы.
(23) а зачем?
(24) и мне тоже интересно. а реализовать такое можно, наверное, только через прямые запросы?
Пользовался ранее чем то похожим, возможно даже этой обработкой. Довольно неплохо
все перенесла ))
Подскажите. При подгрузке уже существующих документов(исправление ИБ) восстанавливать последовательность нужно или в переносе эта проблема решена?
(26) ранее в сеть не выкладывал (но ей уже два года). интерфейс свой, так что вряд ли…
(27) если переносите с обработкой конфигурации, то не надо — просто устанавливаете границу на то же самое место, где она была раньше. если же без обработки, то смысл в восстановлении есть, но только, если перенос в далекое прошлое не ушел. а если в учете вообще ошибок нет, тогда можно и восстановить, на всякий случай (этим могут похвастаться немногие..)
Спасибо, скачаю потестирую. Надеюсь мне как бухгалтеру будет понятно и просто.
(30) возврат конфигурации на место пока не работает, это можно сделать вручную, доделаю на выходных. и для мелкого переноса обработка конфигурации не требуется. это для профи-программистов 1С.
Спасибо скачаю посмотрю
Очень нужн, очень важно — главное, чтобы работала, а мелочи можно и самому доделать
(25) Создавать ссылки по тому же представлению что и в родительской базе нужно если стоит галочка сравнивать по внутреннему представлению — ?-что будет если вы два раза с такой галочкой загрузите одни и те же новые ссылки?
(34) ну вы попробуйте и отпишитесь 😉 я только не понял, что значит, новые ссылки? объекты, вы хотели сказать? так они при загрузке просто будут искаться не по коду или какому-либо еще реквизиту уникальности, а по внутреннему представлению, новые(отсутствующие) элементы получают новое представление, какое им 1С дала. эта галочка необходима для восстановления битой базы (ну или когда часть инфы забита в копии). но эту фичу я года два не тестировал, даже не знаю, как она себя поведет, если честно. надо проверить, а времени нет. наверное, надо сделать еще фишку Записать с тем же внутренним представлением, правда, не знаю, будет ли нужна когда-нибудь. еще нашел маленький баг, надо бы перевыгрузить, но доделываю еще одну фичу. думаю, в субботу проверю, как работает эта галочка, не отвалилась ли, и обновлю.
Может пригодиться
обновил. перенос вроде работает. теперь пишу замену дублей на этой же обработке
Доброго времени суток интересная обработка сразу скачал оценил на практике еще пока вот вот жду когда применю хотелось бы узнать заливает базу с целевой в чистую или неважно все равно получится дубль или возможно задвоение базы есть опыт работы с урибом а вот ольку использовать пока не приходилось.
Ничего не понял что за чистая и что за целевая база обработка называется импорт это значит что в какой базе открываем обработку в ту базу и попадают объекты из других баз дубли получаются если в одной базе элемент с одним кодом а в другой базе он же с другим тогда в этом случае у этого справочника надо поставить при переносе реквизит уникальности наименование или какой нибудь другой например Полное наименование или ИНН но имейте в виду что если объекты с разными кодами принадлежат разным группам то после переноса они перенесутся в те группы в которых они находятся в подключаемой базе что такое задвоение базы мне не понятно вы имеете в виду итоги или объекты и все зависит от того какие настройки переноса вы выставите ну и как вам так удобно читать?
Я правильно понимаю — если у меня ведется 2 базы (моя и партнеров) то не не нужно в ручную приходовать номенклатуру в две базы? Я просто смогу перенести этой обработкой с одной во вторую?
Вполне. вот-вот выложу релиз с обещанным выше, исправил там пару ошибок, лучше подождать его.
обновил, скоро будет готов поиск дубликатов, замена уже работает вовсю (с подчиненными элементами!). надеюсь, разберетесь.
(44) Anthon
Пытался перенести с помощью вашей обработки Журнал расчетов. Обработка вылетела
Объект = База.CreateObject(Тип + «.» + Вид);
{OLEOLEOLEOLE.ERT(1973)}: 1С:Предприятие: Неудачная попытка создания объекта (Запись.Зарплата): 0
Что бы это значило?
(45)Недостаточно прав пользователя, подо которым открывается ОЛЕ-база.
(46) victuan
У этого пользователя на тестовой базе вообще отключен контроль прав
(45) вы можете мне выслать базы? ошибка интересная… djanthonсобакамайлточкару
(48) Anthon
Базы выслать не могу — информации много и она конфиденциальная. Я уже примерно понял почему возникла эта ошибка — в разных базах разные коды в справочнике Сотрудники, на котором базируется ЖурналРасчетов.
(49) тогда в настройках переноса переносите не по кодам, а по наименованиям сотрудников. подбирать реквизиты иногда муторно, но автоматом программа это определить не может, итак там много сделано на автомате за пользователя. а насчет конфиденциальности — это легко обойти — любой универсальной обработкой, например, UChoice (ftp://anthon.dyndns-office.com/!Work.rar) , стираете все фамилии в базе и названия организаций и все.
(50) Anthon
Извини, я зря тебя побеспокоил. Конфигурации очень сильно отличаются и стандартными средствами их объединить вряд ли удастся. Просто я задавал вопрос по выгрузке в текстовый файл ЖурналаРасчетов и по его загрузке из текстового файла. Мне Orey порекомендовал эту обработку — я попробовал и не получилось. Когда я начал разбираться, то понял, что структуры справочника Сотрудника разнятся и кодом и наименованием и в принимающей базе все привыкли к этой системе. Буду писать специальные выгрузку и загрузку ЖурналаРасчетов под свои реалии.
Спасибо за желание помочь 🙂
(51) действительно, задумка написать перенос между различными конфигурациями у меня есть, я так и планировал сделать, но не до уровня Конвертации данных, а хотя бы чтоб немного различные конфигурации можно было объединять. но нет возможности работать пока в этом направлении, некогда, все необходимые лично мне функции она исполняет на 5. наверное, когда-нибудь доделаю, может, весной.
меня интересует, а этой обработкой можно перенести данные (не только справочники?) из типовой конфигурации 1С бухгалтерия в конфигурацию УСН?
нет, конечно. разве могут быть точными данные в совсем разных конфигурациях? по идее могут перенестись только общие для обоих конфигураций справочники и документы, но я этого не гарантирую, для этого есть другие обработки, например, конвертация данных. и это нетривиальная задача.
Обработка интерестная, но к сожалению своим клиентам вынужден делать импорты по OLE в виде «Обработка с одной большой кнопкой»… Уровень пользователей желает лучшего и чем обработка сложнее, даже внешне, тем меньше шансов что ее смогут правильно использовать. Но за труд плюс однозначно…
Вы что, пользователям это доверять опасно 😉 Да и это 2 в одном (движок один и тот же). А сложность — это издержки гибкости и универсальности, хотя и задача довольно-таки узкая. Сам не ожидал, что так сложно получится, но сделал именно то, что хотел.
Интересная штука, попробую, отпишусь
upd. Забавно, переношу месяц, пишет осталось 6 дней 🙂
upd2.
Есть вопрос: что означает сообщение «Восстановление кода для элемента НАЗВАНИЕНОМЕНКЛАТУРЫ» ?
upd3.
Чота при переносе одного месяца обработка начала перепроводить объекты 4х летней давности…
Будем дальше добиваться результата…
При переносе определенного типа документов возникает трабл
ИначеЕсли ТипЗначения(Перечисление.ПолучитьАтрибут(АтрибутТам.Вид())) = 10 Тогда
{C:TEHNOSYSTEMS1C_TCАРХИВЫНАРАБОТОКOLEOLEOLEOLEOLE.ERT(3752)}: Неверное имя атрибута
По поводу затрагивания давних периодов разобрался, дело не в обработке.
По поводу сообщения про восстановление кода тоже разобрался.
В общем обработка лютейшая, это то, что я давно искал, но вот возникает ошибка при переносе…
Что за ошибка — нет у автора мыслей по этому поводу?
(60) простите, долго не отвечал, работа. если сможете, вышлите мне базы, я гляну, уже пять переносов на самых разных базах делал, ничего не вылетает. djanthonсобакамайлточкару
Отличная обработка, очень помогло при потере данных, чтоб восстановить из бэкапа утерянные документы.
Журнал расчетов не переносится. Ошибка «1С:Предприятие: Неудачная попытка создания объекта (Запись.Зарплата)». Такого объекта, действительно нет, есть «ЖурналРасчетов».
Люто плюсую автору обработки. Понадобился функционал замены номенклатуры в табличной части некоторых документов реализаций с изменением движения документов, но без перепроведения. Фактически данная обработка спасла жизни одного программиста и нескольких фирм. Огромное спасибо за труд.
Не работает 🙁
Понадобилось перенести записи ЖР за определенный период из архивной копии. Выходит ошибка. Пытался допилить самостоятельно, но, видимо, этот функционал вообще не реализовывался 🙁
Если кто знает обработку, которая мне может помочь, направьте, пожалуйста.
все реализовано, но ошибки не исключены. может быть, слишком старая копия и базы значительно разные. все равно и в этом случае перенос должен работать. если есть возможность, отправьте текст ошибки и базу (без названий и фамилий), тогда я смогу починить обработку
а из сильно нетиповой 77 КА, перенесется? или только через конвертацию?
куда перенесется? совпадающие реквизиты, по идее, перенесутся
(68) в КА 8.2, или лучше допилить правила типовой обработки?
ненене, это только 7.7 касается, для аккуратного вмешательства в базу данных, восстановить или заменить объекты, убить двойников и так далее, а для переноса в 8.2 конвертация или типовым переносом.
(70) аа ясно спс =)
Не работает:
17:22:34. Синхронизация объекта Операция №кор12 от 31.12.10…
17:22:34. Синхронизация атрибута СчетДебета операции Операция кор12 (31.12.10): 00 Вспомогательный…
17:22:34. Синхронизация атрибута СчетКредита операции Операция кор12 (31.12.10): 01.1 ОС в организации…
Атрибут = СоздатьОбъект(ТипЗначенияСтр(ОбъектЗдесь.ПолучитьАтрибут(Реквизит)) + «.» + ОбъектЗдесь.ПолучитьАтрибут(Реквизит).Вид());
{D:INSTALLOLEOLEOLEOLEOLE.ERT(4025)}: Поле агрегатного объекта не обнаружено (Вид)
Или вот:
17:25:20. Начнем-с…
Представление = Представление + Реквизит + » [» + Итератор(Объект.ПолучитьАтрибут(Реквизит), Метаданные.Справочник(Объект.Вид()).Реквизит(Реквизит).Тип, Объект.ПолучитьАтрибут(Реквизит).Вид(), 5) + «] «;
{D:INSTALLOLEOLEOLEOLEOLE.ERT(1162)}: Поле агрегатного объекта не обнаружено (Вид)
Не стыдно такие сырые поделки на сайт выкладывать?
ОбъектЗдесь.ПолучитьАтрибут(Реквизит)) возвращает НеизвестныйОбъект
При этом Вид = «ОсновныеСредства», а Реквизит = «МОЛ».
Я знаю, что этот реквизит периодическй, а твоя обработка знает?
Вещь хорошая скажите а для восьмерки ничего подобного нет?
Попробую разобраться, обработка классная, апну пост 75, а для восьмерки есть?