Консультация № 66948
14.12.2006, 13:25
0.00 руб.
0 3 3
Здравствуйте! Я только учусь программированию в 1с ,пробую сделать примеры практического задания с сайта 1с. Возник вопрос с составлением отчета, нужно сделать отчет о догзайма, завершенных до истечения срока(контрагент, агент, Договор, ДатаначДог, СрокДог, фактичДата завершеня дог, фактич срок дог, Сумма, процент ). Делаю с помощью запроса, но не знаю, как определить дату проведения документа, т.к. она будет являться фактической датой проведения док., Подскажите как будет правильно.



Приложение:
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Без итогов; | Датао=операция.датаОперации; | ДогЗайм=Документ.ДоговрЗайма.НомерДок; |агент = Документ.ДоговрЗайма.агент; |контрагент = Документ.ДоговрЗайма.контрагент; |датаНачДействДог = Документ.ДоговрЗайма.датаНачДействДог; |СуммаДог = Документ.ДоговрЗайма.СуммаДог; |СрокДог = Документ.ДоговрЗайма.СрокДог; |ДатаОкончания = Документ.ДоговрЗайма.ДатаОкончания; |ПроцентГоддоср= Документ.ДоговрЗайма.Процентгоддоср; |Условие (датаО<ДатаОкончания); |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка() = 1 Цикл агент=запрос.Агент; Контрагент=запрос.Контрагент; ДогЗайм=запрос.догзайм; датаначДействДог=Запрос.датаначДействДог; Срокдог=Запрос.СрокДог; датаокончания=запрос.датаОкончания; ДатаФ=запрос.датаО; СрокдогФ=датаокончания-ДатаФ; Суммадог=Запрос.СуммаДог; Пр=Запрос.Процентгоддоср; Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", "");КонецПроцедуры

Обсуждение

Неизвестный
14.12.2006, 13:39
общий
это ответ
Здравствуйте, Fifina!
Дата проведения равна дате самого документа.
ДатаДок = Документ.ДоговрЗайма.ДатаДок;
Неизвестный
14.12.2006, 14:22
общий
это ответ
Здравствуйте, Fifina!
Дата операции равна датае документа, который может быть проведен в любое время.
Судя по Вашим рассуждениям Вы исходите из того что если документ проведен то он завершён, что в принципе неверно.
Если у самого документа нет реквизита типа "завершен" или "дата завершения" тогда
в зависимости от конфигурации проверте по регистрам взаиморасчетов или по бухгалтерским итогам долги и обороты свзанные с текущим договором, если обороты не равны 0 и долг отсутствует то он быстрее всего завершён (хотя могут быть варианты), дополнительно можно сравнить обороты с суммой договора. Это по отбору завершенных договоров.
Для определения даты завершения договора попробуйте привязаться к дате документа выполнившего последнее движение связанное с этим договором.
Удачи.
Неизвестный
14.12.2006, 14:59
общий
это ответ
Здравствуйте, Fifina!
Для выборки и сравнения документов, завершенных до истечения срока вам достаточно сравнить дату проведения документа, который указывает на то, что договор завершен и дату завершения, которая указана в договоре, т.е.
СрокДог, фактичДата завершеня дог если срокдог это дата
или ДатаначДог и фактичДата завершеня дог если срок дог в днях
Форма ответа