(22)
Торговля+Склад, ред. 9.39. Документ - Реализация.
Текстовые реквизиты на форме смотреть на скриншоте.
Код модуля формы документа:
Перем мОстаткиТоваров, мОбщийРег; // для получения остатков
//******************************************************************************
Процедура ПересчетРегистров()
мОбщийРег = СоздатьОбъект("Регистры");
мОстаткиТоваров = мОбщийРег.ОстаткиТМЦ;
Если Выбран() = 0 Тогда
// Новый документ
Если ДатаДок < ПолучитьДатуТА() Тогда
// выписываемый задним числом
мОстаткиТоваров.ВременныйРасчет();
мОбщийРег.РассчитатьРегистрыПо(ДатаДок);
КонецЕсли;
ИначеЕсли ДатаДок < ТекущийДокумент().ДатаДок Тогда
// Поменяли дату документа.
Если ДатаДок < ПолучитьДатуТА() Тогда
// выписываемый задним числом
мОстаткиТоваров.ВременныйРасчет();
мОбщийРег.РассчитатьРегистрыПо(ДатаДок);
КонецЕсли;
ИначеЕсли СравнитьТА() < 1 Тогда
//Позиция не больше ТА.
мОстаткиТоваров.ВременныйРасчет();
мОбщийРег.РассчитатьРегистрыНа(ТекущийДокумент());
КонецЕсли;
КонецПроцедуры // ПересчетРегистров()
//******************************************************************************
Функция ОстатокПоСкладу(пОстТоваров)
_Результат = "";
Если ПустоеЗначение(Номенклатура) = 1 Тогда
Возврат _Результат;
КонецЕсли;
_ОстатокТовараСкл = пОстТоваров.СводныйОстаток(Фирма, Номенклатура, Склад, , "Количество");
Если Коэффициент <> 1 Тогда // пересчитаем остаток в единицы документа
_ОстатокТовараСкл = ?(Коэффициент = 0, 0, _ОстатокТовараСкл / Коэффициент);
КонецЕсли;
Если _ОстатокТовараСкл < 0 Тогда
Форма.ТекстОстНаСкладе.Цвет(255);
Иначе
Форма.ТекстОстНаСкладе.Цвет(0,0,128);
КонецЕсли;
_Результат = СокрЛП(Формат(_ОстатокТовараСкл,"Ч-17.3")) + " " + Единица;
Возврат _Результат;
КонецФункции // ОстатокПоСкладу()
//******************************************************************************
Функция ОстатокПоФирме(пОстТоваров)
_Результат="";
Если ПустоеЗначение(Номенклатура) = 1 Тогда
Возврат _Результат;
КонецЕсли;
_ОстатокТовараФир = пОстТоваров.СводныйОстаток(Фирма, Номенклатура, , , "Количество");
Если Коэффициент <> 1 Тогда // пересчитаем остаток в единицы документа
_ОстатокТовараФир = ?(Коэффициент = 0, 0, _ОстатокТовараФир / Коэффициент);
КонецЕсли;
Если _ОстатокТовараФир < 0 Тогда
Форма.ТекстОстНаФирме.Цвет(255);
Иначе
Форма.ТекстОстНаФирме.Цвет(0,0,128);
КонецЕсли;
_Результат = СокрЛП(Формат(_ОстатокТовараФир,"Ч-17.3")) + " " + Единица;
Возврат _Результат;
КонецФункции // ОстатокПоФирме()
//******************************************************************************
Процедура ПриОткрытии()
........
ПересчетРегистров();
КонецПроцедуры // ПриОткрытии()
Прикрепленные файлы:
scrin.gif