Имя: Пароль:
1C
1С v8
Перенос данных 7.7 -> 8.3
0 breakthrough
 
30.09.14
08:31
Здравствуйте.
Стоит задача перенести все данные за несколько лет работы из типовой БП 7.70.025 для Казахстана в типовую БП 2. Подскажите есть ли такие правила и где их взять.
Заранее спасибо!!!
1 cons74
 
30.09.14
08:39
В (0) как понимаю опечатка, хотели перенос на БП 3,0.
Спрашивать лучше напрямую в 1С.
Опять же 7.70.025 -версия платформы, а не конфигурации. Кто знает сколько лет не обновлялась ваша база...
2 cons74
 
30.09.14
08:40
В БП 3,0 есть типовые переносы 7->8 для БП России, не уверен пойдет ли для вашей базы.
3 breakthrough
 
30.09.14
08:51
(1) А как узнать версию конфигурации??
4 breakthrough
 
30.09.14
08:51
(1) Да, хотел в БП 3, но посмотрел, что для Казахстана такой версии нет
5 Обработка
 
30.09.14
09:00
(0) Плохая затея. Если нет веских оснований то не стоит переносить все данные за большой период.
Обычно переходят с 1с 77 на 1с8.х В конце и в начале года. При этом Переходят с вводом только остатков. И как исключение движение за небольшой срок от недели до 1-2 месяцев.

Поскольку функционал 1с77 бухиии от функционала 1с 8.х сильно отличаются то после переносе предстоит долгая выверка данных и если надо переделка.

Переходо на 1с8 с переносом большого объема данных может  стать очень дорогим занятием. Иногда провальным проектом.
6 Мимохожий Однако
 
30.09.14
09:01
(5)+ это точно
7 Обработка
 
30.09.14
09:03
(0) В типовй бухии каз 2. должна быть обработка по переносу с 1с 77. Ведь она еще не УФ а обычная.
8 MaxS
 
30.09.14
09:11
(5) встречался с таким - переносили остатки на начало прошлого года и движения. Пока сверяли результаты, прошел квартал. Решили заново перенести остатки и движения за прошлый квартал. Пока сверяли, прошел месяц, решили... далее история умалчивает.
9 Рэйв
 
30.09.14
09:13
(8)Ну и что что прошел квартал?Хоть два!:-)  Если закрыть доступ к прошлому году чтоб не лезли ручками шаловливыми, то пусть хоть полгода пройдет:-)
10 Обработка
 
30.09.14
09:24
(8) У меня хуже было.
Внедрения УПП. Старая программа совсем далека от 1С.
Заключили договор так что данные за год должны быть перенесены и сверены нами. И на все это где-то 3-4 месяца.
На перенос данных посадили меня после отказа от этой работы 1-2х бригад. дали 2-3 месяца. Я переносил 5 месяцев.

Но в начале я их предупредил что это они зря делают.

В итоге кажется они отказались от идеи, но почти через год начала внедрения.
11 MaxS
 
30.09.14
09:25
(9) так они не хотели начинать работать в новой базе до тех пор, пока не проверят все предыдущие периоды. Какой-то бзик заказчика или саботаж пожилых бухгалтеров пользователей + местного программиста пенсионера.

У 7-ки и у 8-ки отличаются алгоритмы. Даже если взять 7-ку и перепровести все документы с самого начала учета, ситуация с остатками будет отличаться от текущей. А что говорить о результатах переноса всех движений из 7-ки в 8-ку?
12 Обработка
 
30.09.14
09:26
(0) Обычно когда такие хотелки появляются называется реальный ценник и сроки - заказчик быстро трезвеет и ставит задачу на более адекватный переход.
13 DGorgoN
 
30.09.14
09:30
(11) Первый раз может да, второй уже нет. Не должно быть по крайней мере. А итог при различных программах должен быть один и тот же.
14 breakthrough
 
30.09.14
10:38
(7) Подскажите где лежат)
15 Обработка
 
30.09.14
10:59
(14) При установке должны быть внешние обработки. и там же описания.
16 Serginio1
 
30.09.14
11:04
Я переношу через схемуXSD загружаемой конфигурации. И все очень просто.
Правда для упрощения обмена во все предаваемые объекты в 7ке добавил поле Ref строка 36 куда записываю строковое значение GUID которые соответствуют ссылкам в 8ке. Все очень быстро и просто.
17 Йохохо
 
30.09.14
11:09
(16) можно чуть подробностей? интересно
18 breakthrough
 
30.09.14
11:11
(16) Да, меня тоже заинтересовало!
19 Serginio1
 
30.09.14
11:27
Подключаюсь к 8 ке
Получаю Фабрику
Фабрика=Сервер.ФабрикаXDTO;

Создаю запись XML
Функция ПолучитьЗаписьXML(Файл) Экспорт
    ЗаписьXML=Сервер.NewObject("ЗаписьXML");
    ЗаписьXML.ОткрытьФайл(Файл);
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента(Сервер.XMLСтрока("Данные"));
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.1/data/enterprise/current-config";);
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance";);
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema";);
возврат ЗаписьXML
КонецФункции


ИмяФайла="C:\ОбменСАльпеной";
ЗаписьXML=ПолучитьЗаписьXML(ИмяФайла);



ЗаписатьЗаявкиПок(Фабрика,ЗаписьXML);
//ТзВыгружаемыхЭлементовСправочников.Показать();
ВыгрузитьСсылочныеСправочники(Фабрика,ЗаписьXML);

ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();

Фабрика="";
Сервер="";
СсылкаNull="";
20 Serginio1
 
30.09.14
11:27
Процедура ВыгрузитьСсылочныеСправочники(Фабрика,ЗаписьXML) Экспорт
    счСпр=0;
    ЕстьДанные=Ложь;
    Если ТзВыгружаемыхЭлементовСправочников.КоличествоСтрок()=0 Тогда
        //ТзВыгруженныхЭлементовСправочников.Показать();
        ТзВыгруженныхЭлементовСправочников="";
        
        возврат
    КонецЕсли;
    
    Тз=СоздатьОбъект("ТаблицаЗначений");
    ТзВыгружаемыхЭлементовСправочников.Выгрузить(Тз);
    Тз.ВыбратьСтроки();
    Пока Тз.ПолучитьСтроку()=1 Цикл

        СпрИнд=Тз.Значение;
        Вид=Тз.Ключ;
        
        Если Найти("ОКСМ,ОКЕИ,Валюты,Фирмы,СтатьиДвиженияДенежныхСредств,",Вид+",")<>0 Тогда
          Продолжить
        КонецЕсли;
    
        ТзВыгруженные=ПолучитьСписокВыгруженныхСпрПоТипу(Вид);
        МассивУдаляемыхДанных=СоздатьОбъект("СписокЗначений");
        Сообщить("Выгрузка "+Вид);
        Спр=СоздатьОбъект("ТаблицаЗначений");
        СпрИнд.Выгрузить(Спр);
        Спр.ВыбратьСтроки();
         Пока Спр.ПолучитьСтроку()=1 Цикл
            Ссылка=Спр.Ключ;
            Если СуществуетКлюч(ТзВыгруженные,Ссылка)=0 Тогда
                //Объект=Ссылка.ПолучитьОбъект();
                Попытка
                Шаблон("[CatalogObject_"+Вид+"(Фабрика,Ссылка,ЗаписьXML)]");
                ЕстьДанные=истина;

            Исключение
                Сообщить(Вид);
                Сообщить(ОписаниеОшибки());
                КонецПопытки;
                            КонецЕсли;
            МассивУдаляемыхДанных.ДобавитьЗначение(Ссылка);
        КонецЦикла;
        
        УдалитьЭлементыПоСпискуКлючей(СпрИнд,МассивУдаляемыхДанных);
        
        
    КонецЦикла;    
    
    Если ЕстьДанные=истина Тогда
    ВыгрузитьСсылочныеСправочники(Фабрика,ЗаписьXML)
      Иначе
     ТзВыгружаемыхЭлементовСправочников="";
     ТзВыгруженныхЭлементовСправочников="";
    КонецЕсли;    
КонецПроцедуры
21 Azverin
 
30.09.14
11:28
(10) а какой вариант был более разумный с твоей точки зрения?
22 Serginio1
 
30.09.14
11:29
Функция DocumentObject_ЗаявкаПокупателя(Фабрика,Ссылка,ЗаписьXML) Экспорт

ПространствоИмен="http://v8.1c.ru/8.1/data/enterprise/current-config";;
Имя="DocumentObject.ЗаказПокупателя";
Док=Сервер.Документы.ЗаказПокупателя.СоздатьДокумент();
ДокТч=Док.Товары;
ТекОбъект=ПолучитьДанныеПоСсылкеДокумент_ЗаявкаПокупателя(Ссылка);
Тч=ПолучитьТабличнуюЧастьДокЗаявкаПокупателя(Ссылка);
Тч.ВыбратьСтроки();
пока тч.ПолучитьСтроку()=1 Цикл
ДокТч.Добавить();
КонецЦикла;
Объект=Сервер.СериализаторXDTO.ЗаписатьXDTO(Док);
Объект.Ref=ТекОбъект.Ref;
Объект.Date= ПолучитьДатуВремя(ТекОбъект.DATE_TIME_IDDOC);
Объект.Number= ТекОбъект.Number;
Объект.ДатаОплаты=ПолучитьДатеТаймИзДаты(ТекОбъект.ДатаОплаты);
Объект.ДатаОтгрузки=ПолучитьДатеТаймИзДаты(ТекОбъект.ДатаОтгрузки);
Объект.Комментарий=Строка(ТекОбъект.Комментарий);
УстановитьКонтрагентаИДоговор(ТекОбъект,Объект,Ссылка);
Объект.СуммаВключаетНДС=ПолучитьБулевоИзЧисла(ТекОбъект.СуммаВключаетНДС);
Объект.СуммаДокумента=Строка(ТекОбъект.СуммаДокумента);
Объект.УчитыватьНДС=ПолучитьБулевоИзЧисла(ТекОбъект.УчитыватьНДС);


Объект.DeletionMark="false";
Объект.Posted="false";
Объект.АдресДоставки="";
Объект.ВалютаДокумента=ВалютаРуб;
Объект.ВидОперации="ПродажаКомиссия";// не совпадают типы
Объект.ВремяНапоминания="0001-01-01T00:00:00";
Объект.ДисконтнаяКарта="00000000-0000-0000-0000-000000000000";
//Объект.ДоговорКонтрагента=ОсновнойДоговорПокупателя;
Объект.ИспользоватьПлановуюСебестоимость="false";
Объект.ИтогПлановаяСебестоимость="0";
Объект.КратностьВзаиморасчетов="1";
Объект.КурсВзаиморасчетов="1";
Объект.НапомнитьОСобытии="false";
Объект.Организация=ОсновнаяОрганизация;
Объект.Ответственный="00000000-0000-0000-0000-000000000000";
Объект.ОтражатьВБухгалтерскомУчете="true";
Объект.ОтражатьВНалоговомУчете="true";
Объект.Подразделение="00000000-0000-0000-0000-000000000000";
Объект.СтруктурнаяЕдиница="";
Объект.СкладГруппа="";
//Объект.ТипЦен="00000000-0000-0000-0000-000000000000";// не совпадают типы
Объект.Грузополучатель="00000000-0000-0000-0000-000000000000";
Объект.КонтактноеЛицоКонтрагента="00000000-0000-0000-0000-000000000000";
Объект.УсловиеПродаж="00000000-0000-0000-0000-000000000000";
Объект.ДополнениеКАдресуДоставки="";
Объект.ДокументОснование="";
Объект.Грузоотправитель="00000000-0000-0000-0000-000000000000";
Объект.НомерВходящегоДокументаЭлектронногоОбмена="";
Объект.ДатаВходящегоДокументаЭлектронногоОбмена="0001-01-01T00:00:00";
Объект.НомерПоДаннымПокупателя="";
Объект.ДатаПоДаннымПокупателя="0001-01-01T00:00:00";
//// Заполнение Табличной Части
Тз=Тч;

Если Тз.количествоСтрок()>0 Тогда
Товары=Объект.Товары;
ПространствоИмен="http://v8.1c.ru/8.1/data/enterprise/current-config";;
Имя="DocumentTabularSectionRow.ЗаказПокупателя.Товары";
ТипСтр = Фабрика.Тип(ПространствоИмен, Имя);
сч=0;
Тз.ВыбратьСтроки();
Пока тз.получитьСтроку()=1 Цикл
//    Стр=Фабрика.Создать(ТипСтр);
Стр=Товары.Получить(сч);
Стр.ЕдиницаИзмерения=Строка(Тз.ЕдиницаИзмеренияУИД);
Стр.Количество=Строка(Тз.Количество);
Стр.Коэффициент=Строка(Тз.Коэффициент);
Стр.Номенклатура=Строка(Тз.НоменклатураУИД);
Стр.СтавкаНДС=Тз.СтавкаНДС.Идентификатор();
Стр.Сумма=Строка(Тз.Сумма);
Стр.СуммаНДС=Строка(Тз.СуммаНДС);
Стр.Цена=Строка(Тз.Цена);
Стр.ЕдиницаИзмеренияМест="00000000-0000-0000-0000-000000000000";
Стр.КоличествоМест="0";
Стр.ПлановаяСебестоимость="0";
Стр.ПроцентСкидкиНаценки="0";
Стр.Спецификация="00000000-0000-0000-0000-000000000000";
Стр.Размещение="";
Стр.СчетУчетаБУ="00000000-0000-0000-0000-000000000000";
Стр.СчетУчетаНУ="00000000-0000-0000-0000-000000000000";
Стр.ХарактеристикаНоменклатуры="00000000-0000-0000-0000-000000000000";
Стр.ПроцентАвтоматическихСкидок="0";
Стр.УсловиеАвтоматическойСкидки="";
Стр.ЗначениеУсловияАвтоматическойСкидки="";
Стр.КлючСтроки="0";
Стр.КлючСвязи="0";
Стр.ПринятыеСчетУчетаБУ="00000000-0000-0000-0000-000000000000";
Стр.ПринятыеСчетУчетаНУ="00000000-0000-0000-0000-000000000000";
Стр.СерияНоменклатуры="00000000-0000-0000-0000-000000000000";
    //Товары.Добавить(Стр);
Сч=Сч+1;
КонецЦикла;    
КонецЕсли;
Фабрика.ЗаписатьXML(ЗаписьXML, Объект);
КонецФункции
23 Badjo
 
30.09.14
11:30
Если очень неймется, можно перенести только проводки. Но особого смысла в этом нет.
Достаточно остатков на начало года.
24 Serginio1
 
30.09.14
11:34
Функция ПолучитьДанныеПоСсылкеДокумент_ЗаявкаПокупателя(Ссылка)
ТекстЗапроса="SELECT Журнал.$ОбщийРеквизит.Ref Ref
|,Журнал.DATE_TIME_IDDOC  DATE_TIME_IDDOC
|,$Объект.НомерВнеш Number
|,$Объект.ДатаОплаты as ДатаОплаты
|,$Объект.ДатаОтгрузки as ДатаОтгрузки
|,$Объект.Контрагент [Контрагент $Справочник.Контрагенты]
|,ISNULL(Case
|when $Объект.Контрагент='     0' then
|'00000000-0000-0000-0000-000000000000'
|else
|(SELECT $Спр_Контрагенты.Ref
|FROM $Справочник.Контрагенты Спр_Контрагенты With (NOLOCK)
|Where Спр_Контрагенты.ID=$Объект.Контрагент
|)
|end,'00000000-0000-0000-0000-000000000000') КонтрагентУИД
|,$Объект.СуммаВклНДС as СуммаВключаетНДС
|,$Объект.СуммаВзаиморасчетов as СуммаДокумента
|,$Объект.УчитыватьНДС as УчитыватьНДС
|,Объект.$ОбщийРеквизит.Комментарий as Комментарий
|FROM $Документ.ЗаявкаПокупателя AS Объект With (NOLOCK)
|INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON Объект.IDDOC = Журнал.IDDOC
|WHERE (Журнал.IDDOC = ?)";

Тз=ВыполнитьИнструкцию("ПолучитьДанныеПоСсылкеДокумент_ЗаявкаПокупателя",ТекстЗапроса,ссылка);
Если Тз.количествоСтрок()=1 Тогда
Тз.получитьСтрокуПоНомеру(1);
Если ПустаяСтрока(тз.Ref)=1 Тогда
      Дк=СоздатьОбъект("Документ");
      Дк.НайтиДокумент(Ссылка);
      Дк.Ref=ПолучитьНовыйГуид();
      Тз.Ref=Дк.Ref;
      Дк.Записать();
КонецЕсли;
Если Тз.Контрагент.Выбран()=1 Тогда
  Если ПустаяСтрока(Тз.КонтрагентУИД)=1 Тогда
   спр=СоздатьОбъект("Справочник.Контрагенты");
   Спр.НайтиЭлемент(тз.Контрагент);
  Если ПустаяСтрока(Спр.Ref)=1 Тогда
   Спр.ref=ПолучитьНовыйГуид();
   Тз.КонтрагентУИД=Спр.Ref;
   Спр.Записать();
  КонецЕсли;
Тз.КонтрагентУИД=Спр.Ref;
  КонецЕсли;
//ДобавитьСпрДляВыгрузки("Контрагенты",Тз.Контрагент);
КонецЕсли;
КонецЕсли;
Возврат Тз
КонецФункции
25 Serginio1
 
30.09.14
11:35
Правда у меня есть кодогенераторы аналогичные по сопоставлению аналогичные КД
26 breakthrough
 
30.09.14
11:39
(25) Да вы псих, сударь)))
27 Serginio1
 
30.09.14
11:47
(26) Почему? Ведь все быстро работает и без проблем?
Причем я кода пишу по минимуму, немного подправляя разного рода исключения. Ничем не сложнее КД.
28 Найч
 
30.09.14
12:02
(25)какой не ленивый прогер однако
29 Обработка
 
30.09.14
12:19
(21) Более разумный вариант всегда известный.
1 .В сентябрь-октябрь изучают новую Конфигурацию.
2. Параллельно кодер переносит справочники и остатки предварительно напрмер на начало сентября или октября.
3. Юзерые на реальных даных изучают кофнигурацию.
4. До 10 января переношу с нуля отстаки на начало года.
5. Юзеры работают уже в новой базе.
30 Serginio1
 
30.09.14
12:19
(28) Вот именно ленивый. Мне проще написать кодогенераторы и аналог КД по определенным алгоритмам, чем тратить время на другие подходы.
Закон Брукера: Даже маленькая практика стоит большой теории.