Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Перенос плана счетов из 1с7.7 в 1с8.1          
Lefer Подменю пользователя
сообщение 17.06.10, 12:01
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Доброго времени суток. Столкнулся с проблемой при переносе счетов из семёрки в восьмерку. Написано две обработки. Первая для выгрузки счетов из семёрки, вторая для загрузки их в восьмерку. При загрузке успешно записываются все счета, значения субконто. Только выдается ошибка "Повторение субконто. Вызвана она тем, что при загрузке счета не указывается его родитель. В dbf файле указывается, что такой-то счет является группой, а такой элементом группы. Вот кусок кода, посвященный определению родителя счета.

    Файл1 = Новый XBase;
    Файл1.Кодировка = КодировкаXBase.OEM;
    Файл1.ОткрытьФайл(СокрЛП(ЭлементыФормы.ПутьШапкаСчета.Значение), , Истина); //только для чтения
    Файл1.Первая();
    
    Пока НЕ Файл1.ВКонце() Цикл
        //Поиск счета в ПланеСчетов по коду из dbf файла    
        КодСчета                  = СокрЛП(Файл1.ID);
        КодСчета                  = СтрЗаменить(КодСчета,".","");
        ПоискКодаСчета            = ПланыСчетов.Основной.НайтиПоКоду(СокрЛП(КодСчета));
        //Если счет найден, тогда определяем его родителя
        Если НЕ ПоискКодаСчета.Пустая() Тогда
            //    Файл1.NAME9 - идентификатор группы. Файл1.NAME8 - код родителя.
            Если Файл1.NAME9 = 0 Тогда    
                ПоискРодителя        = ПланыСчетов.Основной.НайтиПоКоду(СокрЛП(Файл1.NAME8));    
                СамРодитель          = ПоискРодителя.ПолучитьОбъект();
                ОбъектСчета          = ПоискКодаСчета.ПолучитьОбъект();
                ОбъектСчета.Родитель = СамРодитель;
                ОбъектСчета.Записать();
            КонецЕсли;
        КонецЕсли;
        Файл1.Следующая();    
    КонецЦикла;
    Файл1.ЗакрытьФайл();


Выдает ошибку, что Объект не выбран для строки ОбъектСчета.Родитель = СамРодитель; В отладчике проверял - до этой строчки все значения выбираются абсолютно правильно. Если кто сталкивался с подобным, подскажите пожалуйста, как программно перенести счета. Заранее спасибо.


Signature
It's the end of the world as we know it and I feel fine

Creaturka Подменю пользователя
сообщение 17.06.10, 12:41
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 19
Спасибо сказали: 7 раз
Рейтинг: 0

как минимум из неточностей: реквизит Родитель имеет ссылочный тип, а не объектный, т.е. в Вашем случае ОбъектСчета.Родитель = ПоискРодителя

Lefer Подменю пользователя
сообщение 17.06.10, 12:50
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Цитата(Creaturka @ 17.06.10, 14:41) *
как минимум из неточностей: реквизит Родитель имеет ссылочный тип, а не объектный, т.е. в Вашем случае ОбъектСчета.Родитель = ПоискРодителя


Нет, не в этом дело. Да, ошибка исчезла, но дальше, когда обрабатываются СубКонто счета выдается ошибка повторения субконто, так как родитель не записался. Если смотреть отладчиком, то родитель находится, но не устанавливается и не записывается.


Signature
It's the end of the world as we know it and I feel fine

Creaturka Подменю пользователя
сообщение 17.06.10, 14:16
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 19
Спасибо сказали: 7 раз
Рейтинг: 0

а точно ли проблема в родителе? дублирование субконто имеет другие причины, и похоже, ошибку нужно искать в обработке субконто

Lefer Подменю пользователя
сообщение 17.06.10, 14:26
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Цитата(Creaturka @ 17.06.10, 16:16) *
а точно ли проблема в родителе? дублирование субконто имеет другие причины, и похоже, ошибку нужно искать в обработке субконто


Задумывался над этим. Дело в том, что если в Конфигураторе начать создавать предопределенный счет, то при попытке добавления одинакового субконто счета результат при записи счета будет тот же..дублирование субконто. Даже если дело не в родителе, почему он не записывается?


Signature
It's the end of the world as we know it and I feel fine

Creaturka Подменю пользователя
сообщение 17.06.10, 14:54
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 19
Спасибо сказали: 7 раз
Рейтинг: 0

для проверки советую оставить в процедуре только код по определению родителя (из примера и с корректировкой), и еще раз промониторить значения:
а. ОбъектСчета.Родитель до выполнения ОбъектСчета.Родитель = ПоискРодителя;
б. ОбъектСчета.Родитель, только после;
в. Тип значения переменной ПоискРодителя

Lefer Подменю пользователя
сообщение 17.06.10, 15:12
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Вот за идею с тем, чтобы проследить тип значения ПоискРодителя спс. Может там и кроются грабли. Результат уже завтра скажу.


Signature
It's the end of the world as we know it and I feel fine

Zaval Подменю пользователя
сообщение 17.06.10, 15:36
Сообщение #8

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

biggrin.gif А не дает ли Родитель своему дитю свои субконто в наследство? А тут еще прогаммер что-то вписать пытается... вот и задвоение.

Lefer Подменю пользователя
сообщение 18.06.10, 8:24
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Цитата(Zaval @ 17.06.10, 17:36) *
biggrin.gif А не дает ли Родитель своему дитю свои субконто в наследство? А тут еще прогаммер что-то вписать пытается... вот и задвоение.


Нет, не дает. Работа обработки разбита на 3 этапа. Первый - запись самого счета. Второй поиск по плану счетов на основании dbf файла - этот кусок кода я выложил. Третий этап запись субконто. Исключая 3 этап получаем - у нас должны быть счета с родителями. Их нет....


Signature
It's the end of the world as we know it and I feel fine

Lefer Подменю пользователя
сообщение 21.06.10, 10:47
Сообщение #10

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

С родителями вопрос решен. Дело было в том, что сначала необходимо указывать так сказать прадедушку всех счетов - это Счет. То есть, допустим у нас есть забалансовый счет Д. У него есть подчиненные счета ДД, ДД.1, ДД.2. Для Д родителем будет Счет, для ДД схема родительства будет соответственно Родитель Д -> Счет. И так далее.


Signature
It's the end of the world as we know it and I feel fine

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 04.07.25, 6:59
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!