С восьмеркой работаем недавно, пока до конца в язык "не въехали". Есть справочник "Основные средства" перекинутый из 7.7. В восьмерке понятия код и инвентарный номер разделены, инвентарный номер - реквизит ФормыЭлемента. Необходимо написать обработку, которая обходит все ОС и делает Код равным Инвентарному номеру. А как добраться до инвентарного номера? Просим помощи.
По теме из базы знаний
- Бюджетирование и план-фактный анализ средствами 1С Бухгалтерия 8 и Excel
- Подсистема учета малоценных основных средств
- Использование сканера штрихкодов для инвентаризации основных средств
- Сводный отчет по амортизации основных средств по объектам затрат (для 1С: Бухгалтерии 3.0)
- Аккумулирование затрат на модернизацию основного средства в ERP 2.5
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Инвентарный номер нужно взять из регистра ПервоначальныеСведенияОСБухгалтерскийУчет по бухгалтерскому учету или из ПервоначальныеСведенияОСНалоговыйУчет по налоговому учету. Там есть инвентарный номер. Делаем запрос к виртуальной таблице СрезПоследних на нужную дату и делаем отбор по нужному нам ОС.
Спасибо, но то что инв. номер хранится в регистре сведений ПервоначальныеСведенияОСБухгалтерскийУчет я знаю. Весь вопрос в том как организовать отбор, т. к. повторюсь ещё не совсем въехал в язык. Хотелось бы увидеть пример конкретного кода.
Например можно выбрать запросом:
Запрос = Новый Запрос("ВЫБРАТЬ
| ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство,
| ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ИнвентарныйНомер
|ИЗ
| РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&Период, ОсновноеСредство = &ОсновноеСредство) КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних");
Запрос.УстановитьПараметр("ОсновноеСредство" , НужноеНамОсновноеСредство);
Запрос.УстановитьПараметр("Период" , НужнаяНамДата);
Выборка = Запрос.Выполнить().Выгрузить();
Если Не Выборка.Количество() = 0 Тогда
НужныйНамИнвентарныйНомер = Выборка[0].ИнвентарныйНомер;
КонецЕсли;
Вот примерно так.
Запрос = Новый Запрос("ВЫБРАТЬ
| ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство,
| ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ИнвентарныйНомер
|ИЗ
| РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&Период, ОсновноеСредство = &ОсновноеСредство) КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних");
Запрос.УстановитьПараметр("ОсновноеСредство" , НужноеНамОсновноеСредство);
Запрос.УстановитьПараметр("Период" , НужнаяНамДата);
Выборка = Запрос.Выполнить().Выгрузить();
Если Не Выборка.Количество() = 0 Тогда
НужныйНамИнвентарныйНомер = Выборка[0].ИнвентарныйНомер;
КонецЕсли;
Вот примерно так.
Спасибо, всё заработало.
Конструкция получилась следующая:
Запрос = Новый Запрос("ВЫБРАТЬ
| ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство,
| ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ИнвентарныйНомер
|ИЗ
| РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ИнвНом = Выборка.ИнвентарныйНомер;
ОС = Выборка.ОсновноеСредство;
ОснСр = ОС.ПолучитьОбъект();
ОснСр.Код = ИнвНом;
ОснСр.Записать();
КонецЦикла;
Сообщить("ВСЁ!");
Конструкция получилась следующая:
Запрос = Новый Запрос("ВЫБРАТЬ
| ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство,
| ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ИнвентарныйНомер
|ИЗ
| РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ИнвНом = Выборка.ИнвентарныйНомер;
ОС = Выборка.ОсновноеСредство;
ОснСр = ОС.ПолучитьОбъект();
ОснСр.Код = ИнвНом;
ОснСр.Записать();
КонецЦикла;
Сообщить("ВСЁ!");
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот