предложение по внесению доработок в метод виртуального значения
было:
$ПоследнееЗначение.<ВидОбъекта>.<Идентификатор>(Элемент,Дата)теперь:
$ПоследнееЗначение.<ВидОбъекта>.<Идентификатор>(Элемент,Дата[,ВозвращаемоеЗначение])пример:
select ....
, иция,ЗначениеПоПозиции),:ПустойИД) как СледующиеНормы
....
Что реализовано (во вложении) + причины:
1. для случая когда в качестве параметра "Дата" передается
выражение SQL есть ограничения:
- только тип "Дата" (это не удобно)
- значение всегда возвращается на начало дня (считаю это ошибкой!)
Стандартное поведение 1С77
всегда возвращает
ПОСЛЕДНЕЕ значение
на
КОНЕЦ дня (или на позицию документа):
Рез = СпрЭлемент.Реквизит.Получить(ПеременнаяТипаДатаИлиДок);
По этому поводу уже задавался (много раз) вопрос
"Как получить значение на конец дня ?"
Как пример, здесь
http://www.1cpp.ru/forum/YaBB.pl?num=1285352210/635#6352. Метод не позволяет получить ничего, кроме "Значение" на позицию или дату
Хочу иметь аналогию
Пер = СоздатьОбъект(Периодический);
...
Пер.ДатаЗнач
Пер.Значение
Пер.ТекущийДокумент()
Пер.ТекущийРеквизит()
....и т.д
уже было предложено решение этой задачи
здесь
http://www.1cpp.ru/forum/YaBB.pl?num=1285352210/519#519 но оно не попало в стандартный класс
3. Хочу в качестве параметра "Дата" передавать
не только параметр ":ВыбДатаХХХ" или "ВыражениеSQL"
но также и литерал типа 'Дата' или 'ПозицияДокументаБД23'
РЕАЛИЗОВАЛ ЭТИ ХОТЕЛКИ. ТЕПЕРЬ МЕТОД ВЫГЛЯДИТ ТАК: $ПоследнееЗначение.<ВидОбъекта>.<Идентификатор>(Элемент,Дата[,ВозвращаемоеЗначение])
где:
'Дата' = (стандартно) параметр вида ':ВыбДата[Модиф]'
= (стандартно) выражение SQL типа 'Дата'
= (дополнение) выражение SQL типа 'ПозицияДокументаБД23'
= (дополнение) литерал вида 'ГГГГММДД' или 'ПозицияДокументаБД23'
'ВозвращаемоеЗначение' = одно из
'<пусто>|Значение' = стандартное поведение
+ для случая литерал вида 'ГГГГММДД' или 'ПозицияДокументаБД23'
'ЗначениеПоПозиции' = когда передается выражение SQL типа 'ПозицияДокументаБД23'
дополнительно (по аналогии с объектом "Периодический")
начения'
По-умолчанию = <пусто>, что соотвествует значению 'Значение'
Чтобы это работало, нужно заменить в классе соответствующую функцию
Функция ПарсингВТПоследнееЗначение(ТекстДляОбработки)
...
текст функции - во вложении