Завел забалансовый счет "ГЗ", активно-пассивный, с тремя аналитиками, как у 361 и 681-го.
Завел контсанту "ИспользоватьГЗ" - ее нуждно выставить в "Да" на 31.12.2002
в глобальнике завел функицию:
Функция ЗавестиОстаткиПоГЗ(Год, Месяц, День)
То есть нужно через Сервис/Табло ее вызвать вот так:
ЗавестиОстаткиПоГЗ(2002, 12, 31)
она заведет остатки по "ГЗ" учитывая, что СКД361 - это дебитовый оборот по "ГЗ", а СКК681 - минус дебитовый оборот по "ГЗ" (чтобы было кретиовое сальдо)
В модуле проведения документа "счет" вставлено создание прводок по этому счету - таким образом создаются дебитовые обороты (то есть гипотетические начисления)
А в процедуре глобальника
Процедура глобальнаяОбработкаПроведенияДокумента(Конт,__ПараметрПроведения__) Экспорт
Если Конт.ДатаДок<?(ПустоеЗначение(Пользователь.ДатаСтоп)=1,ДатаЗапретаРедактирования(),Пользователь.ДатаСтоп) тогда //Лайк є Днепр, ша-ла-лу-ла
//HOV============
Если (Конт.Вид() = "Договор" или (Конт.Вид() = "Корректировка" или (Конт.Вид() = "Дислокация" Тогда
//нихрена не делаем. Сколько можно исправлять. Дата запрета относительно тек. времени,
//а договора и дислокации от какого числа. Что за народ??? Если еще кто-нибудь такое
//"смастерит" - дам в голову (и очень больно, чтобы в след. раз думала).
Иначе
СтатусВозврата(0);
КонецЕсли;
Иначе
//Октябрьский Молот, январь 2003, [email]borges@ua.fm[/email]
//Нормально, можем проводить
ГЗ=СоздатьОбъект("Счет"
Если (ГЗ.НайтиПоКоду("ГЗ"" >=1) и (Константа.ИспользоватьГЗ.Получить(Конт.ДатаДок)=Да) Тогда
тзГЗ=СоздатьОбъект("ТаблицаЗначений"
тзГЗ.НоваяКолонка("Клиент", "Справочник.Клиенты"" >;
тзГЗ.НоваяКолонка("Заказ", "Документ"" >;
тзГЗ.НоваяКолонка("ОбъектОхраны", "Справочник.ОбъектОхраны"" >;
тзГЗ.НоваяКолонка("Сумма", "Число",12,2);
//ТЗПартии.НоваяКолонка("Цена", "Число",12,2);
//ТЗПартии.НоваяКолонка("ЦенаПолная", "Число",12,5);
Конт.Операция.ВыбратьПроводки();
Пока Конт.Операции.ПолучитьПроводку()=1 Цикл
Если Лев(Конт.Операция.Кредит.Счет.Код,3)="681" Тогда
тзГЗ.НоваяСтрока();
тзГЗ.Клиент=Конт.Операция.Кредит.Субконто(1);
тзГЗ.Заказ=Конт.Операция.Кредит.Субконто(2);
тзГЗ.ОбъектОхраны=Конт.Операция.Кредит.Субконто(3);
тзГЗ.Сумма=Конт.Операция.Сумма;
КонецЕсли;
КонецЦикла;
Если тзГЗ.КоличествоСтрок()>0 Тогда
тзГЗ.ВыбратьСтроки();
Пока тзГЗ.ПолучитьСтроку()=1 Цикл
Проводка(Контекст,,"ГЗ",тзГЗ.Сумма,"Погашение гипотетической задолженности ",, ,,,
тзГЗ.Клиент,тзГЗ.Заказ,тзГЗ.ОбъектОхраны, ,,"ГЗ"" >;
КонецЦикла;
Конт.Операция.Записать();
КонецЕсли;
КонецЕсли;
//
КонецЕсли;
// глобальная переопределенная процедура ОбработкаПроведения
КонецПроцедуры
Дописал код, который будет "закрывать" гипотетическую задолженность - в том случае, если документ сделает проводки по кредиту 681-му счету