8.х Можно ли конвертировать отдельные элементы конфигурации?

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Natalika25, 20 окт 2011.

  1. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Ребят, помогите пожалуйста! Ситуация такая: была конвертация конфигурации бухгалтерии с 8.1 на 8.2 и уже после конвертации выяснилось что в 8.1 были недочеты в проведении одного из документов, но в 8.2 уже нет документов из 8.1, есть только записи о них в регистре сведений, теперь я исправила недочеты в 8.1, Теперь нужно как то перенести данные из регистра сведений 8.1 в 8.2, либо перенести документы.... Подскажите можно ли это сделать и как???
  2. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Была конвертация конфигурации или перенос данных из 1.6 в 2.0 ?
  3. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Точно сказать не могу это деала не я а программист который был до меня, вполне возможно что был перенос! Как это узнать?
  4. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Если была на 8.1 конфигурация БП 1.6 а стало БП 2.0 тогда был перенос данных. Если на 8.1 была 2.0 тогда была конвертация.

    Я не могу конечно не видя базы сказать, но вообще если вы что то изменяли в 1.6 то при повторном переносе должны перенестись только изменения. Вроде раньше было так... Давно бухню не переносил :)
  5. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Ну перенести регистр (данные его) то можно.
    В 8.1 пишем запрос детализирующий данные до "элементарных" (не ссылки на справочники/документы, а их коды, номера, даты. Т.е. данные "отвязанные" от БД)
    Результат запроса в ТЗ, тз в файл.

    В 8.2 собственно обратный процесс.
    Читаем файл в ТЗ, идем по тз и формируем записи в регистре (находя уже в новой БД аналоги объектов старой БД по кодам, номерам, датам)
    Задача, в исходной постановке решаемая, не столько сложная сколько рутинная (описать алгоритмы поиска аналогов, написать запросы...)
  6. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Если можно дайте пожалуйста хотябы примерный код, я если честно не совсем представляю как это можно сделать...
  7. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Код:
    Процедура ВыгрзуитьНажатие(Элемент)
    Запрос1С = Новый Запрос;
    Запрос1С.Текст = 
    "ВЫБРАТЬ
    |    ЛимитыОтветственностиАгентовПоДоверености.СтраховойПродукт,
    |    ЛимитыОтветственностиАгентовПоДоверености.ОтветственныйПоДоговору,
    |    ЛимитыОтветственностиАгентовПоДоверености.Валюта,
    |    ЛимитыОтветственностиАгентовПоДоверености.ЛимитОтветственности,
    |    ЛимитыОтветственностиАгентовПоДоверености.Категория
    |ИЗ
    |    РегистрСведений.ЛимитыОтветственностиАгентовПоДоверености КАК ЛимитыОтветственностиАгентовПоДоверености";
    
    тзДанные = Запрос1С.Выполнить().Выгрузить();
    
    ЗначениеВФайл("D:�TEMP�limits.tbl", тзДанные);
    
    КонецПроцедуры // ВыгрзуитьНажатие()
    
    Процедура ЗагрузитьНажатие(Элемент)
    тзДанные = ЗначениеИзФайла("D:�TEMP�limits.tbl");
    
    НачатьТранзакцию();
    
    НаборЗаписей = РегистрыСведений.ЛимитыОтветственностиАгентовПоДоверености.СоздатьНаборЗаписей();
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    
    Для каждого СтрокаТЗ Из тзДанные Цикл
    Запись = НаборЗаписей.Добавить();
    Запись.СтраховойПродукт            = СтрокаТЗ.СтраховойПродукт;
    Запись.ОтветственныйПоДоговору    = СтрокаТЗ.ОтветственныйПоДоговору;
    Запись.Валюта                    = СтрокаТЗ.Валюта;
    Запись.ЛимитОтветственности        = СтрокаТЗ.ЛимитОтветственности;
    Запись.Категория                = СтрокаТЗ.Категория;
    
    #Если Клиент Тогда
    ОбработкаПрерыванияПользователя();
    #КонецЕсли
    КонецЦикла; 
    
    НаборЗаписей.Записать();
    
    ЗафиксироватьТранзакцию();
    КонецПроцедуры
    
    
    
    Только смотрите, я перекидываю в файл, и читаю из него данные прямо ссылками (СтраховыеПродукты, Агенты) а не по их элементарным представлениям типа Код.
    Так я делаю потому что БД по ссылкам идентичные (отладка алгоритмов на свежей копии и копирование скорректированных таблиц в живую БД).
    В вашем случае нужно будет брать
    Код:
     |    ЛимитыОтветственностиАгентовПоДоверености.СтраховойПродукт.Код КАК КодСтрахПродукта
    
    И соответственно при чтении заменять участок
    Код:
    Запись.СтраховойПродукт            = Справочники.СтраховыеПродукты.НайтиПоКоду(СтрокаТЗ.КодСтрахПрод);
    
  8. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    По моему всётаки перенос....
  9. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Спасибо огромное! А в регистре при этом останутся записи документов из новой программы? и не будут ли двоиться записи от старых документов с только что загруженными???
  10. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    При такой постановке вопроса мне кажется вам не стоит следовать совету uza.
    Попробуйте сделать на тестовой базе повторный перенос.
    Можете подробней рассказать какую операцию пытаетесь перенести, то есть какой документ, какая операция, что изменили... и тд. Возможно есть другое решение....
  11. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    В старой базе при проведении документов Принятие к учету Ос, Принятие к учету концессионное и Перемещение ОС при проведении документов в регистр не записывалось расположение ОС и при формировании отчетв Срез ОС в разрезе МОЛ получалось так что эти основные средства висели в пустоте не относясь ни к какому подразделению, теперь я исправила обработки проведения в старой конфе и вроде бы все документы сели в регистр правильно и соответственно в отчет тоже, а вот теперь как перенести данные из регистра в старой конфе в новую?????????
  12. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    TODD22
    Прав. При такой постановке вопроса не вздумайте пытаться выполнить мой код (он вообще не относиться ни к одной типовой конфигруации).

    Только если вдумчиво его перепишете, проанализировав КАЖДУЮ! строку.
    Только если предварительно выполните его на копиях БД, с последующим анализом результатов!

    Там синим по белому написано что регистр "принимаеющей" БД при этом очищается совсем. Не заметить это в несчастных 10и строках кода - либо сильно торопились, либо вам еще слишком рано "руками" трогать записи регистров.
  13. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Есть в БП обработка для перехода с 1.6 на 2.0(у вас ведь переход выполнен? Или нет?) Вы попробуйте повторно перенести данные. Я вот точно не помню, но вроде как все изменения внесённые в базу 1.6 при переносе должны перенестись. При этом ничего не должно задвоится и нарушиться.

    Только делайте это на копии!!!!!
  14. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Строчку я эту сразу заметила, поэтому и спросила)

    Переход выполнен. Я конечно извиняюсь за глупый вопрос, а как это обработку найти???

    Переход выполнен, я извиняюсь за глупый вопрос, а где найти эту обработку???
  15. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Сервис - Перенос данных из информационных баз бухгалтерии 8
    Есть так же второй вариант это перенос через файл. Есть справочник в котором хранятся правила переноса. Вот их из справочника выгружаете. Затем заходите в Сервис - Прочие обмены-Универсальный обмен в формате XML. Вот в неё вставляете правила. Сначало из 1.6 с помощью правил делаете выгрузку. А затем в 2.0 с помощью этих же правил делаете загрузку.
  16. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    В первом случае доступно : Только справочники, Остатки на начало года, Остатки на начало года и документы за период Я сделала последний пункт, но как то толка от этого нет, а вот насчет второго варианта - где этот справочник в котором хранятся правила переноса???? явно справочника с таким названием я не нашла..... Подскажите пожалуйста!
  17. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Называется "Конвертации из информационных баз предыдущих версий".
    Но вам это вряд ли поможет.... Вы же исправления делали корректировкой записей регистров, а не правкой документов.
    Хотя попробуйте.
  18. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    А что же тогда делать????
  19. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    А что так же как в 1.6 базе сделать не можете? Вы же как то сделали.... Как вы сделали в "старой" базе?

    При переносе создаются документы "Ввод начальных остатков" с нужным видом учёта. Откройте их и посмотрите может там что то можно изменить.
  20. TopicStarter Overlay
    Natalika25
    Offline

    Natalika25 Опытный в 1С

    Регистрация:
    21 сен 2011
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Вот смотрите как я сделала:
    в старой версии написала обработку со следующим кодом:

    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Запрос1С = Новый Запрос;
    Запрос1С.Текст = 
    "ВЫБРАТЬ
    |МестонахождениеОС.Период,
    |МестонахождениеОС.Регистратор,
    |МестонахождениеОС.ОсновноеСредство,
    |МестонахождениеОС.Организация,
    |МестонахождениеОС.МОЛ,
    |МестонахождениеОС.Местонахождение,
    |МестонахождениеОС.Расположение
    
    |ИЗ
    
    |РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК МестонахождениеОС";
    
    тзДанные = Запрос1С.Выполнить().Выгрузить();
    
    ЗначениеВФайл("С:�Temp�Raspolozenie.tbl", тзДанные);
    Сообщить("Выгрузка произошла успешно");
    
    КонецПроцедуры
    
    
    а в новой базе вот такую обработку:
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    
    тзДанные = ЗначениеИзФайла("С:�Temp�Raspolozenie.tbl");
    
    НачатьТранзакцию();
    
    НаборЗаписей = РегистрыСведений.МестонахождениеОСБухгалтерскийУчет.СоздатьНаборЗаписей();
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    
    Для каждого СтрокаТЗ Из тзДанные Цикл
    Запись = НаборЗаписей.Добавить();
    Запись.Период                     = СтрокаТЗ.Период;
    Запись.Регистратор              = СтрокаТЗ.Регистратор;
    Запись.ОсновноеСредство     = СтрокаТЗ.ОсновноеСредство;
    Запись.Организация              = СтрокаТЗ.Организация;
    Запись.МОЛ                         = СтрокаТЗ.МОЛ;
    Запись.Местонахождение       = СтрокаТЗ.Местонахождение;
    Запись.Расположение            = СтрокаТЗ.Расрположение;  
    КонецЦикла; 
    
    НаборЗаписей.Записать();
    
    ЗафиксироватьТранзакцию();
    
    
    
    КонецПроцедуры
    
    
    и при попытке выполнить вторую обработку выходит ошибка : {Обработка.ЗагрузкаДанныхИзРегистраСведений.Форма.Форма.Форма(5)}: Ошибка при вызове метода контекста (ЗначениеИзФайла)
    тзДанные = ЗначениеИзФайла("С:\Temp\Raspolozenie.tbl");
    по причине:
    Ошибка преобразования
    и почему то в папке Temp нету файлика который должен был создаться... ПОМОГИТЕ ПОЖАЛУЙСТА :angry:

Поделиться этой страницей