Значения периодических реквизитов в "истории" ОС

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

Период1с77налог = БД77ОСН2.CreateObject("Периодический");
.......
Период1с77налог.ИспользоватьОбъект("Состояние", ОСНалог);
Период1с77налог.ВыбратьЗначения();
		
Сообщить(Период1с77налог.ЗначениеНаДату(ТекущаяДата()));
Сообщить(Период1с77налог.ЗначениеНаДату(ТекущаяДата()).Идентификатор());
7. deniseek77 86 30.04.13 15:59 Сейчас в теме
(3) freebsdd,

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

Спасибо Вам Ребята!..
11. Nick_Tick 30.04.13 18:13 Сейчас в теме
(10) freebsdd, в 8-ке нет периодических реквизитов. Есть регистры сведений.
deniseek77; +1 Ответить
12. freebsdd 1 06.05.13 07:14 Сейчас в теме
(11) Nick_Tick, так я из 7-ки тяну в 8-ку.
13. freebsdd 1 06.05.13 07:28 Сейчас в теме
(11) Nick_Tick, Здорово!.. Ещё раз благодарю за помощь, может кому пригодится, вот код для 7-ки:

//*******************************************
Процедура Сформировать()
    
	ОС  = СоздатьОбъект("Справочник.ОсновныеСредства"); 
	Тек = СоздатьОбъект("Периодический"); 
	ТЗ  = СоздатьОбъект("ТаблицаЗначений"); 
	ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства"); 
	ТЗ.НоваяКолонка("Сост","Перечисление.СостояниеОС"); 
	ТЗ.НоваяКолонка("Док","Документ"); 
	ОС.ВыбратьЭлементы(); 
	       
	Если ОС.НайтиПоКоду("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налог.ТекущийДокумент().ДатаДок;

					
	КонецЦикла;

Показать


Мне нужен номер и дата последнего документа, потому в ТЗ не собираю...
16. TaTaPuH-Magic 12 05.02.14 16:26 Сейчас в теме
(13) freebsdd, попробуй вот так, как говорил (8)
  	           Тек.ИспользоватьОбъект("Состояние", ОС.ТекущийЭлемент());
  			Тек.ОбратныйПорядок(1);
                Тек.ВыбратьЗначения();
				Если Тек.ПолучитьЗначение()=1 Тогда
                    ТЗ.НоваяСтрока(); 
                    ТЗ.ОС = ОС.ТекущийЭлемент(); 
                    Попытка
                        //ТЗ.Сост = Тек.ТекущееЗначение();
                        ТЗ.Сост = Тек.ЗначениеНаДату(ТекущаяДата());
                        Сообщить("ЗначениеНаДату: " + Тек.ЗначениеНаДату(ТекущаяДата()));
                    Исключение
                        
                    КонецПопытки;
                    
                    ТЗ.Док = Тек.ТекущийДокумент();
					
                    
                    Сообщить(Тек.ТекущийДокумент().НомерДок);
                    Сообщить(Тек.ТекущийДокумент().ДатаДок);
					
				КонецЕсли;
Показать
не будеш в цикле до конца бежать, а сразу на конечное значение попадешь.
17. freebsdd 1 05.02.14 17:03 Сейчас в теме
(16) TaTaPuH-Magic, А я уже завершил ту задачу, вытаскивалось хорошо, спасибо Большое за совет!
14. G.P. 11 03.02.14 10:50 Сейчас в теме
Спасибо за код, пригодилось!
15. freebsdd 1 03.02.14 12:35 Сейчас в теме
18. chemezov 47 19.12.14 11:57 Сейчас в теме
Вообще зачетный код, спасибо. Достала эта семерка, все по-другому ужс
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот