Консультация № 68653
26.12.2006, 15:07
0.00 руб.
0 5 5
Уважаемые эксперты!
Интересует такой вопрос!
1с 7.7 (Типовая конфигурация) в документе счета добавил реквизит диалога статус счета(заказ, оплачен и т.п.) хотелось бы узнать следующее возможно ли изменение статуса (статус сделал путем: перечисление статус счета) счета при изменении даты (то есть добавил реквизит диалога СрокСчета) чтобы например после превышении срока счета статус счета менялся скажем на просроченнный?
Заранее спасибо!

Обсуждение

Неизвестный
26.12.2006, 15:19
общий
это ответ
Здравствуйте, Батаков Сергей Александрович / Niacris!
Можно, но для этого периодически необходимо проверять все счета на предмет соответствия статуса и если необходимо, то менять, затем записывать и перепроводить(если проведен). НО ЭТО НЕКОРРЕКТНО, самое правильное создать отчет по этим счетам в котором и будет выводиться статус счета в зависимости от ваших условий.
Неизвестный
26.12.2006, 15:24
общий
это ответ
Здравствуйте, Батаков Сергей Александрович / Niacris!
Можно, допустим так:
В Форме документа "счета"
Процедура ПриОткрытии()

Если РабочаяДата()>СрокСчета Тогда
СтатусСчета=Перечисление.СтатусСчета.Просроченный;
КонецЕсли;

КонецПроцедуры;
Неизвестный
26.12.2006, 15:27
общий
это ответ
Здравствуйте, Батаков Сергей Александрович / Niacris!
Это можно сделать например так:
Проверяйте приначале работы системы все документы за нужные даты и если документ просрочен, ему автоматически присваевается статус "просрочен"
См.приложение
Удачи..


Приложение:
процедура приначалеработыстстемы()Док=создатьобъект("Документ.счет");Док.выбратьдокументы(Дата1,Дата2);Пока док.получитьдокумент()=1 циклЕсли (Док.сроксчета>текущаядата()) и (Док.статуссчета=перечисление.статуссчета.заказ) тогдадок.статуссчета=перечисление.статуссчета.просрочен;Док.записать()Конецесли;Конеццикла;
Неизвестный
26.12.2006, 16:24
общий
это ответ
Здравствуйте, Батаков Сергей Александрович / Niacris!

На форме расположите элемент диалога Текст (меню Вставить - Текст), сделайте его невидимым, в графе Формула пропишите вызов функции ИзмДата() [текст функции см. в Приложении], саму функцию -- в модуле форме.

При этом я предполагаю что СтатусСчета именно реквизит Диалога (как Вы и написали) и не является реквизитом документа. Иначе такое решение будет нерациональным.

Приложение:
Функция ИзмДата() Если РабочаяДата()>СрокСчета Тогда СтатусСчета=Перечисление.СтатусСчета.Просроченный; КонецЕсли; Возврат "";КонецФункции
Неизвестный
27.12.2006, 16:27
общий
это ответ
Здравствуйте, Батаков Сергей Александрович / Niacris!
Можно, но ненужно.
Вы статус счета смотрите в журнале?
Тогда сделайте в журнале вычисляемое поле (на основании реквизита СрокСчета и РабочаяДата()), в котором и выводите статус. Хранить статус в самом документе глупо, т.к. для его изменения нужно будет перезаписывать документ.
Форма ответа