Подскажи честной народ, как вытащить последние значения периодических реквизитов из "истории" ОС. Перерыл Инет, да и на форуме - найти нет мочи где они хранятся. Подскажите, как программно вытащить последний документ из "истории"?
---
freebsdd, Если уверены, что СостояниеОС менялось документами, то примерно такой код.
ОС = СоздатьОбъект("Спавочник.ОсновныеСредства");
Тек = СоздатьОбект("Периодический");
ТЗ=СоздатьОбект("ТаблицаЗначний");
ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства");
ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС");
ТЗ.НоваяКолонка("Док","Документ");
ОС.ВыбратьЭлементы();
Пока ОС.ПолучитьЭлемент()=1 Цикл
Если ОС.ЭтоГруппа()=0 Тогда
Тек.ИспользоватьОбъект(ОС.ТекущийЭлемент().СостояниеОС);
Тек.ВыбратьЗначения()
Пока Тек.ПолучитьЗначение()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.ОС = ОС.ТекущийЭлемент();
ТЗ.Сост = Тек.ТекущееЗначение();
ТЗ.Док = Тек.ТекущийДокумент();
КонецЦикла;
КонецЕсли;
КонецЦикла;
---
Уточню - есть реквизит "Состояние", тип зн-ия: "Перечисления.СостояниеОС", Сам идентификатор я могу вытащить, а вот документ-основание (или регистратор?) Как его программно вытащить?
---
Разыскивается Ответ - Объявляется вознаграждение!.. (уж сколько есть)
---
freebsdd, какая конфа? ПУБ, ТиС? Или просто Бух-ия?
---
freebsdd, Если уверены, что СостояниеОС менялось документами, то примерно такой код.
ОС = СоздатьОбъект("Спавочник.ОсновныеСредства");
Тек = СоздатьОбект("Периодический");
ТЗ=СоздатьОбект("ТаблицаЗначний");
ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства");
ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС");
ТЗ.НоваяКолонка("Док","Документ");
ОС.ВыбратьЭлементы();
Пока ОС.ПолучитьЭлемент()=1 Цикл
Если ОС.ЭтоГруппа()=0 Тогда
Тек.ИспользоватьОбъект(ОС.ТекущийЭлемент().СостояниеОС);
Тек.ВыбратьЗначения()
Пока Тек.ПолучитьЗначение()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.ОС = ОС.ТекущийЭлемент();
ТЗ.Сост = Тек.ТекущееЗначение();
ТЗ.Док = Тек.ТекущийДокумент();
КонецЦикла;
КонецЕсли;
КонецЦикла;
---
Nick_Tick, Отлично!.. Спасибо Громадное!.. Скоро код переделаю для 8-ки и попробую!..
(7) deniseek77, Спасибо Большое, Ваш код вытаскивает только идентификатор перечисления, а мне документ нужен (вот мой код, правда из 8-ки):

```1c
    Период1с77налог = БД77ОСН2.CreateObject("Периодический");
    .......
    Период1с77налог.ИспользоватьОбъект("Состояние", ОСНалог);
    Период1с77налог.ВыбратьЗначения();

    Сообщить(Период1с77налог.ЗначениеНаДату(ТекущаяДата()));
    Сообщить(Период1с77налог.ЗначениеНаДату(ТекущаяДата()).Идентификатор());
```
---
freebsdd,

```1c
    Периодический=СоздатьОбъект("Периодический");
    Периодический.ИспользоватьОбъект("Состояние",ОС);
    Периодический.ОбратныйПорядок(1);
    Периодический.ВыбратьЗначения();
    Пока Периодический.ПолучитьЗначение()=1 Цикл
    ДатаОС=Периодический.ДатаЗнач;
    ЗначениеОС=Периодический.Значение;
    КонецЦикла;
```
---
Ёлы палы, да чтож я постоянно забываю то писать - 1С:Предприятие 7.7 для SQL (7.70.025) - Бухгалтерский учёт 4.5
---
Объект Периодический + ОбратныйПорядок(1)
---
Ёпрст, мне нужен документ :) Но вроде ответ дал Nick_Tick, попробуем!..

Спасибо Вам Ребята!..
---
freebsdd, в 8-ке нет периодических реквизитов. Есть регистры сведений.
---
Nick_Tick, так я из 7-ки тяну в 8-ку.
---
Nick_Tick, Здорово!.. Ещё раз благодарю за помощь, может кому пригодится, вот код для 7-ки:

```1c
    //*******************************************
    Процедура Сформировать()

    ОС = СоздатьОбъект("Справочник.ОсновныеСредства");
    Тек = СоздатьОбъект("Периодический");
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства");
    ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС");
    ТЗ.НоваяКолонка("Док","Документ");
    ОС.ВыбратьЭлементы();

    Если ОС.НайтиПоКоду("00000014") = 1 Тогда;

    //Пока ОС.ПолучитьЭлемент()=1 Цикл
    // Если ОС.ЭтоГруппа()=0 Тогда

    Сообщить(ОС.ТекущийЭлемент().Состояние);

    Тек.ИспользоватьОбъект("Состояние", ОС.ТекущийЭлемент());
    Тек.ВыбратьЗначения();

    Пока Тек.ПолучитьЗначение()=1 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.ОС = ОС.ТекущийЭлемент();
    Попытка
    //ТЗ.Сост = Тек.ТекущееЗначение();
    ТЗ.Сост = Тек.ЗначениеНаДату(ТекущаяДата());
    Сообщить("ЗначениеНаДату: " + Тек.ЗначениеНаДату(ТекущаяДата()));
    Исключение

    КонецПопытки;

    ТЗ.Док = Тек.ТекущийДокумент();

    Сообщить(Тек.ТекущийДокумент().НомерДок);
    Сообщить(Тек.ТекущийДокумент().ДатаДок);
    КонецЦикла;

    // КонецЕсли;
    //КонецЦикла;

    КонецЕсли;

    Тест = ТЗ.ВыбратьСтроку(" ");

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

а вот код для 8-ки:

```1c
    ////Подключение БД77ОСН2 к ИБ 7.7........
    .........
    Период1с77налог = БД77ОСН2.CreateObject("Периодический");

    Период1с77налог.ИспользоватьОбъект("Состояние", ОСНалог);
    Период1с77налог.ВыбратьЗначения();

    НомерДок = ";
    ДатаДок = ";
    мСостояние = ";
    Пока Период1с77налог.ПолучитьЗначение()=1 Цикл

    мСостояние = Период1с77налог.ЗначениеНаДату(ТекущаяДата()).Идентификатор();
    НомерДок = Период1с77налог.ТекущийДокумент().НомерДок;
    ДатаДок = Период1с77налог.ТекущийДокумент().ДатаДок;

    КонецЦикла;
```

Мне нужен номер и дата последнего документа, потому в ТЗ не собираю...
---
freebsdd, попробуй вот так, как говорил (8)

```1c
    Тек.ИспользоватьОбъект("Состояние", ОС.ТекущийЭлемент());
    Тек.ОбратныйПорядок(1);
    Тек.ВыбратьЗначения();
    Если Тек.ПолучитьЗначение()=1 Тогда
    ТЗ.НоваяСтрока();
    ТЗ.ОС = ОС.ТекущийЭлемент();
    Попытка
    //ТЗ.Сост = Тек.ТекущееЗначение();
    ТЗ.Сост = Тек.ЗначениеНаДату(ТекущаяДата());
    Сообщить("ЗначениеНаДату: " + Тек.ЗначениеНаДату(ТекущаяДата()));
    Исключение

    КонецПопытки;

    ТЗ.Док = Тек.ТекущийДокумент();

    Сообщить(Тек.ТекущийДокумент().НомерДок);
    Сообщить(Тек.ТекущийДокумент().ДатаДок);

    КонецЕсли;
```
не будеш в цикле до конца бежать, а сразу на конечное значение попадешь.
---
TaTaPuH-Magic, А я уже завершил ту задачу, вытаскивалось хорошо, спасибо Большое за совет!
---
Спасибо за код, пригодилось!
---
G.P., Здорово! Рад!
---
Вообще зачетный код, спасибо. Достала эта семерка, все по-другому ужс