Имя: Пароль:
1C
1C 7.7
v7: Регистр ОстаткиТМЦ получить остатки на дату, ТИС
0 Zhuravlik
 
22.11.11
16:26
Здравствуйте. Конфигурация - ТИС, заходтелось несколько видоизменить справочник, показывать там остатки по складу на дату. Для этого в форме списка ввел три диалога - выбор фирмы, выбор даты, выбор склада.


Код Формы списка:




Перем ОстаткиТМЦ;
Перем прРозничныйТипЦен;

Процедура ПересчетРегистров() далее


Функция ВернутьОстаток()
   ОстатокНаСкладе = ОстаткиТМЦ.СводныйОстаток(Фирма,ТекущийЭлемент(),Склад,,"Количество");        
   Возврат ?(ПустоеЗначение(ОстатокНаСкладе) = 1, "", СокрЛП(Формат(ОстатокНаСкладе,"Ч014.3")));
КонецФункции

//======================================================================
Функция ВернутьЦену()
   Возврат глПолучитьЦенуП(ТекущийЭлемент(), прРозничныйТипЦен, Склад, выбДата);
КонецФункции // ВернутьЦену


Процедура ПересчетРегистров()
                                 
   ОбщРег           = СоздатьОбъект("Регистры");
   // Расчитываются "временные" регистры, чтобы колонка остатков лишний раз не перерисовывалась
   ВремОстаткиТМЦ = ОбщРег.ОстаткиТМЦ;  

   Если ПустоеЗначение(Фирма) = 0 Тогда
       ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Фирма",Фирма,1);            
   Иначе    
       ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Фирма",,0);            
   КонецЕсли;
   Если ПустоеЗначение(Склад) = 0 Тогда
       ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Склад",Склад,1);            
   Иначе    
       ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Склад",,0);            
   КонецЕсли;  
   
   Если выбДата < ПолучитьДатуТА() Тогда
       ВремОстаткиТМЦ.ВременныйРасчет();
       ОбщРег.РассчитатьРегистрыНа(выбДата);
   КонецЕсли;    

   ОстаткиТМЦ = ВремОстаткиТМЦ;    
КонецПроцедуры // ПересчетРегистров()


Процедура ПриОткрытии()

Фирма = глПользователь.ОсновнаяФирма;
Склад = глПользователь.ОсновнойСклад;

выбДата = РабочаяДата();
ПересчетРегистров();


спрТипыЦен = СоздатьОбъект("Справочник.ТипыЦен");
Если спрТипыЦен.НайтиПоКоду("00004", 0) = 1 Тогда
   прРозничныйТипЦен = спрТипыЦен.ТекущийЭлемент();
КонецЕсли;



КонецПроцедуры // ПриОткрытии
1 Zhuravlik
 
22.11.11
16:28
При выборе даты с формы, вызывается процедура ПересчетРегистров().
2 Zhuravlik
 
22.11.11
16:28
Но остатки почему-то все-время актуальные показывает...
3 1Сергей
 
22.11.11
16:29
ОбщРег тоже сделай общей переменной
4 Zhuravlik
 
22.11.11
16:35
Спаасибо!!
5 1Сергей
 
22.11.11
16:39
(4) а вообще, переменная ВремОстаткиТМЦ тут нафиг не упала