Значения периодических реквизитов в "истории" ОС
По теме из базы знаний
Найденные решения
(3) freebsdd, Если уверены, что СостояниеОС менялось документами, то примерно такой код.
ОС = СоздатьОбъект("Спавочник.ОсновныеСредства");
Тек = СоздатьОбект("Периодический");
ТЗ=СоздатьОбект("ТаблицаЗначний");
ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства");
ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС");
ТЗ.НоваяКолонка("Док","Документ");
ОС.ВыбратьЭлементы();
Пока ОС.ПолучитьЭлемент()=1 Цикл
Если ОС.ЭтоГруппа()=0 Тогда
Тек.ИспользоватьОбъект(ОС.ТекущийЭлемент().СостояниеОС);
Тек.ВыбратьЗначения()
Пока Тек.ПолучитьЗначение()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.ОС = ОС.ТекущийЭлемент();
ТЗ.Сост = Тек.ТекущееЗначение();
ТЗ.Док = Тек.ТекущийДокумент();
КонецЦикла;
КонецЕсли;
КонецЦикла;
ОС = СоздатьОбъект("Спавочник.ОсновныеСредства");
Тек = СоздатьОбект("Периодический");
ТЗ=СоздатьОбект("ТаблицаЗначний");
ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства");
ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС");
ТЗ.НоваяКолонка("Док","Документ");
ОС.ВыбратьЭлементы();
Пока ОС.ПолучитьЭлемент()=1 Цикл
Если ОС.ЭтоГруппа()=0 Тогда
Тек.ИспользоватьОбъект(ОС.ТекущийЭлемент().СостояниеОС);
Тек.ВыбратьЗначения()
Пока Тек.ПолучитьЗначение()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.ОС = ОС.ТекущийЭлемент();
ТЗ.Сост = Тек.ТекущееЗначение();
ТЗ.Док = Тек.ТекущийДокумент();
КонецЦикла;
КонецЕсли;
КонецЦикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) freebsdd, Если уверены, что СостояниеОС менялось документами, то примерно такой код.
ОС = СоздатьОбъект("Спавочник.ОсновныеСредства");
Тек = СоздатьОбект("Периодический");
ТЗ=СоздатьОбект("ТаблицаЗначний");
ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства");
ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС");
ТЗ.НоваяКолонка("Док","Документ");
ОС.ВыбратьЭлементы();
Пока ОС.ПолучитьЭлемент()=1 Цикл
Если ОС.ЭтоГруппа()=0 Тогда
Тек.ИспользоватьОбъект(ОС.ТекущийЭлемент().СостояниеОС);
Тек.ВыбратьЗначения()
Пока Тек.ПолучитьЗначение()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.ОС = ОС.ТекущийЭлемент();
ТЗ.Сост = Тек.ТекущееЗначение();
ТЗ.Док = Тек.ТекущийДокумент();
КонецЦикла;
КонецЕсли;
КонецЦикла;
ОС = СоздатьОбъект("Спавочник.ОсновныеСредства");
Тек = СоздатьОбект("Периодический");
ТЗ=СоздатьОбект("ТаблицаЗначний");
ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства");
ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС");
ТЗ.НоваяКолонка("Док","Документ");
ОС.ВыбратьЭлементы();
Пока ОС.ПолучитьЭлемент()=1 Цикл
Если ОС.ЭтоГруппа()=0 Тогда
Тек.ИспользоватьОбъект(ОС.ТекущийЭлемент().СостояниеОС);
Тек.ВыбратьЗначения()
Пока Тек.ПолучитьЗначение()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.ОС = ОС.ТекущийЭлемент();
ТЗ.Сост = Тек.ТекущееЗначение();
ТЗ.Док = Тек.ТекущийДокумент();
КонецЦикла;
КонецЕсли;
КонецЦикла;
(6) Nick_Tick, Отлично!.. Спасибо Громадное!.. Скоро код переделаю для 8-ки и попробую!..
(7) deniseek77, Спасибо Большое, Ваш код вытаскивает только идентификатор перечисления, а мне документ нужен (вот мой код, правда из 8-ки):
(7) deniseek77, Спасибо Большое, Ваш код вытаскивает только идентификатор перечисления, а мне документ нужен (вот мой код, правда из 8-ки):
Период1с77налог = БД77ОСН2.CreateObject("Периодический");
.......
Период1с77налог.ИспользоватьОбъект("Состояние", ОСНалог);
Период1с77налог.ВыбратьЗначения();
Сообщить(Период1с77налог.ЗначениеНаДату(ТекущаяДата()));
Сообщить(Период1с77налог.ЗначениеНаДату(ТекущаяДата()).Идентификатор());
(3) freebsdd,
Периодический=СоздатьОбъект("Периодический");
Периодический.ИспользоватьОбъект("Состояние",ОС);
Периодический.ОбратныйПорядок(1);
Периодический.ВыбратьЗначения();
Пока Периодический.ПолучитьЗначение()=1 Цикл
ДатаОС=Периодический.ДатаЗнач;
ЗначениеОС=Периодический.Значение;
КонецЦикла;
(11) Nick_Tick, Здорово!.. Ещё раз благодарю за помощь, может кому пригодится, вот код для 7-ки:
а вот код для 8-ки:
Мне нужен номер и дата последнего документа, потому в ТЗ не собираю...
//*******************************************
Процедура Сформировать()
ОС = СоздатьОбъект("Справочник.ОсновныеСредства");
Тек = СоздатьОбъект("Периодический");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства");
ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС");
ТЗ.НоваяКолонка("Док","Документ");
ОС.ВыбратьЭлементы();
Если ОС.НайтиПоКоду("00000014") = 1 Тогда;
//Пока ОС.ПолучитьЭлемент()=1 Цикл
// Если ОС.ЭтоГруппа()=0 Тогда
Сообщить(ОС.ТекущийЭлемент().Состояние);
Тек.ИспользоватьОбъект("Состояние", ОС.ТекущийЭлемент());
Тек.ВыбратьЗначения();
Пока Тек.ПолучитьЗначение()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.ОС = ОС.ТекущийЭлемент();
Попытка
//ТЗ.Сост = Тек.ТекущееЗначение();
ТЗ.Сост = Тек.ЗначениеНаДату(ТекущаяДата());
Сообщить("ЗначениеНаДату: " + Тек.ЗначениеНаДату(ТекущаяДата()));
Исключение
КонецПопытки;
ТЗ.Док = Тек.ТекущийДокумент();
Сообщить(Тек.ТекущийДокумент().НомерДок);
Сообщить(Тек.ТекущийДокумент().ДатаДок);
КонецЦикла;
// КонецЕсли;
//КонецЦикла;
КонецЕсли;
Тест = ТЗ.ВыбратьСтроку(" ");
КонецПроцедуры
Показатьа вот код для 8-ки:
////Подключение БД77ОСН2 к ИБ 7.7........
.........
Период1с77налог = БД77ОСН2.CreateObject("Периодический");
Период1с77налог.ИспользоватьОбъект("Состояние", ОСНалог);
Период1с77налог.ВыбратьЗначения();
НомерДок = "";
ДатаДок = "";
мСостояние = "";
Пока Период1с77налог.ПолучитьЗначение()=1 Цикл
мСостояние = Период1с77налог.ЗначениеНаДату(ТекущаяДата()).Идентификатор();
НомерДок = Период1с77налог.ТекущийДокумент().НомерДок;
ДатаДок = Период1с77налог.ТекущийДокумент().ДатаДок;
КонецЦикла;
ПоказатьМне нужен номер и дата последнего документа, потому в ТЗ не собираю...
(13) freebsdd, попробуй вот так, как говорил (8)
не будеш в цикле до конца бежать, а сразу на конечное значение попадешь.
Тек.ИспользоватьОбъект("Состояние", ОС.ТекущийЭлемент());
Тек.ОбратныйПорядок(1);
Тек.ВыбратьЗначения();
Если Тек.ПолучитьЗначение()=1 Тогда
ТЗ.НоваяСтрока();
ТЗ.ОС = ОС.ТекущийЭлемент();
Попытка
//ТЗ.Сост = Тек.ТекущееЗначение();
ТЗ.Сост = Тек.ЗначениеНаДату(ТекущаяДата());
Сообщить("ЗначениеНаДату: " + Тек.ЗначениеНаДату(ТекущаяДата()));
Исключение
КонецПопытки;
ТЗ.Док = Тек.ТекущийДокумент();
Сообщить(Тек.ТекущийДокумент().НомерДок);
Сообщить(Тек.ТекущийДокумент().ДатаДок);
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот