Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 05:12

Помогите. Корректировка начальных сальдо при переносе ис 7.7 в 8.2 через OLE

Автор EnigMan, 17 янв 2012, 19:51

0 Пользователей и 1 гость просматривают эту тему.

EnigMan

Данные из 7.7 переносились в спешке, теперь необходимо откорректировать сведения по стоимости ОС в 8.2
написал внешнюю обработку:

Процедура КнопкаЗапольнитьОС(кнопка)
//Подключаем семерку
БДБух = Новый COMОбъект("V1CEnterprise.Application");
рез=БДБух.initialize(БДБух.RMAccount,"/D"+СокрЛП(АдресБазы),"NO_SPLASH_SHOW");
Если Рез=0 тогда
Сообщить("Соединение не удалось");
Возврат;
КонецЕсли;
//подключаем справочник ОС и бух итоги
ит=БДБух.CreateObject("БухгалтерскиеИтоги");
ит.ПериодМ('2011.12.01');
спр=БДБух.CreateObject("Справочник.ОсновныеСредства");
//получаем документ для обработки
редДок=Документы.ВводНачальныхОстатков.ПолучитьСсылку(док.УникальныйИдентификатор()); //НайтиПоНомеру(док.Номер)


Для Каждого стр из редДок.ОС Цикл
инв=стр.ИнвентарныйНомерРегл;
имя=стр.ОсновноеСредство.ПолноеНаименование();
Если спр.НайтиПоКоду(инв,0)=1  Тогда
Если спр.ПолноеНаименование()=имя Тогда
стр.НакопленнаяАмортизацияБУ=ит.СКК(БДБух.EvalExpr("СчетПоКоду(""02.1"")"),"С","",спр.ТекущийЭЛЕМЕНТ());
стр.НакопленнаяАмортизацияНУ=ит.СКК("Н05.02","С","",спр.ТекущийЭЛЕМЕНТ());
стр.ПервоначальнаяСтоимостьБУ=ит.СКД("01.1","С","",спр.ТекущийЭЛЕМЕНТ());
            стр.ПервоначальнаяСтоимостьБУ=ит.СКД("Н05.01","С","",спр.ТекущийЭЛЕМЕНТ());
иначе
Сообщить("Строка "+редДок.ОС.номерСтроки+" инвентарные номера совпали, но не совпали наименования ОС в базах");
КонецЕсли;
иначе
Сообщить("Строка "+редДок.ОС.номерСтроки+" инвентарный номер "+инв+" в базе 7й версии не найден");
КонецЕсли;


КонецЦикла;
РедДок.записать();

КонецПроцедуры


Все заканчивается сообщением об ошибке
{Форма.Форма.Форма(31)}: Поле объекта недоступно для записи (НакопленнаяАмортизацияБУ)
            стр.НакопленнаяАмортизацияБУ=ит.СКК(БДБух.EvalExpr("СчетПоКоду(""02.1"")"),"С","",спр.ТекущийЭЛЕМЕНТ());

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

has

Если редДок имеет тип ДокументСсылка, то необходимо для изменения получить объект документа

редДокСсылка=Документы.ВводНачальныхОстатков.ПолучитьСсылку(док.УникальныйИдентификатор()); //НайтиПоНомеру(док.Номер)
редДок = редДокСсылка.ПолучитьОбъект();
//ну и далее по тексту

EnigMan

Спасибо!!!
С Вашей помощью это
редДок=Документы.ВводНачальныхОстатков.ПолучитьСсылку(док.УникальныйИдентификатор());
упростилось до редДок=док.ПолучитьОбъект();

и заработало как ожидалось.
док - реквизит формы, в котором пользователь выбирает обрабатываемый документ.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск