7.7 1с 7 разница дней от последнего движение клиента

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем sanekdark, 17 июл 2019.

  1. TopicStarter Overlay
    sanekdark
    Offline

    sanekdark

    Регистрация:
    13 дек 2016
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    пытаюсь сделать отчет взаиморасчеты хочу добавить сколько дней должен клиент , не могу сделать чтоб отнимал рабочую дату от даты последнего поступление денег в кассу от клиента
    может ктонить подказать
    Код:
    // Процедура генерации запроса Сформировать.
    //
    Процедура Сформировать()
        Перем Запрос, ТекстЗапроса, Таб;
        //Создание объекта типа Запрос
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |Клиент = Регистр.Взаиморасчеты.Клиент;
        |ДатаДок = Регистр.Взаиморасчеты.ТекущийДокумент.ПриходныйКассовый.ДатаДок,Регистр.Взаиморасчеты.ТекущийДокумент.ПриходнаяКредит.ДатаДок,Регистр.Касса.ТекущийДокумент.БанковскаяВыписка.ДатаДок;
        |СуммаБазовая = Регистр.Взаиморасчеты.СуммаБазовая;
        |Функция СуммаБазоваяКонОст = КонОст(СуммаБазовая);
        |Группировка Клиент без групп;
        |"//}}ЗАПРОС
        ;
        // Если ошибка в запросе, то выход из процедуры
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда               
         
            Возврат;
        КонецЕсли;
        ИтогоДолгКлиента=0;
        ИтогоДолгНаш=0;
     
     
        Спр=СоздатьОбъект("Справочник.Клиенты");
        Спр.НайтиПоНаименованию("Кредитные агенства",0,1);
        Грп=Спр.ТекущийЭлемент();
     
     
        // Подготовка к заполнению выходных форм данными запроса
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Сформировать");
        // Заполнение полей "Заголовок"
        Таб.ВывестиСекцию("Заголовок");
        Состояние("Заполнение выходной таблицы...");
        Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
        Пока Запрос.Группировка(1) = 1 Цикл
            // Заполнение полей Клиент
         
       
            /
     
            Если Запрос.СуммаБазоваяКонОст<0 тогда
                Просрочено="0";
                ДолгКлиента=-Запрос.СуммаБазоваяКонОст;
                ДолгНаш="";
                ИтогоДолгКлиента=ИтогоДолгКлиента+ДолгКлиента;
                Просрочено=ДатаОтчета-ДатаОплаты;
            Иначе
                ДолгКлиента="";
                ДолгНаш=Запрос.СуммаБазоваяКонОст;
                ИтогоДолгНаш=ИтогоДолгНаш+ДолгНаш;
         
            КонецЕсли;
             
          
         
            Клиент1=Запрос.Клиент;
            Если Клиент1.Родитель=Грп тогда
                Таб.ВывестиСекцию("Клиент2");
            Иначе 
                Таб.ВывестиСекцию("Клиент");
            КонецЕсли;
        КонецЦикла;
        // Заполнение полей "Итого"
        Таб.ВывестиСекцию("Итого");
        // Вывод заполненной формы
        Таб.ТолькоПросмотр(1);
        Таб.Показать("Сформировать", "");
    КонецПроцедуры
    
    ДатаОтчета = РабочаяДата();
    Если ДатаОтчета >= ПолучитьДатуТА() Тогда
        ДатаОтчета = ПолучитьДатуТА();
    КонецЕсли;
    
    попытался вот так сделать
    Код:
                Просрочено=ДатаОтчета-ДатаОплаты;
    добавил это но без результата может кто может подсказать как реализовать правильно ?
    не получается вывести количество дней
    Последнее редактирование: 17 июл 2019
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.556
    Симпатии:
    59
    Баллы:
    54
    не вижу где определяется ДатаОплаты
  3. TopicStarter Overlay
    sanekdark
    Offline

    sanekdark

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

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.556
    Симпатии:
    59
    Баллы:
    54
    по формуле всё верно
    ну посмотри в отладчике что в переменных или добавь строку
    Сообщить(""+ДатаОплаты+" "+Просрочено);
  5. TopicStarter Overlay
    sanekdark
    Offline

    sanekdark

    Регистрация:
    13 дек 2016
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    вот везде выдает
    Код:
      .  .   2458682
    просто цифры
    везде к стате одинаковое число . . 2458682 может как-то дату не правильно берет.
  6. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.556
    Симпатии:
    59
    Баллы:
    54
    это регистр остатков, в нем нет и не будет ТекущийДокумент....ДатаДок
  7. TopicStarter Overlay
    sanekdark
    Offline

    sanekdark

    Регистрация:
    13 дек 2016
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    а не подскажешь откуда брать тогда? я просто изучаю ток 1с

    щас так попробывал тоже самое
    Код:
    |ДатаДок = Документ.ПриходныйКассовый.ДатаДок,Документ.ПриходнаяКредит.ДатаДок,Документ.БанковскаяВыписка.ДатаДок;
  8. TopicStarter Overlay
    sanekdark
    Offline

    sanekdark

    Регистрация:
    13 дек 2016
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    кто-нибудь может подсказать? хоть где копать в каком месте ))
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.595
    Симпатии:
    540
    Баллы:
    204
    ДатаДок = Документ.ТекущийДокумент.ПриходныйКассовый.ДатаДок
    sanekdark нравится это.
  10. TopicStarter Overlay
    sanekdark
    Offline

    sanekdark

    Регистрация:
    13 дек 2016
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    так ругается пишет
    Код:
     ДатаДок = Документ. <<?>> ТекущийДокумент.ПриходныйКассовый.ДатаДок;
    Запрос[3] : 
    может нужно поставить
    Код:
    |ДатаДок = Документ.ПриходныйКассовый.ТекущийДокумент.ДатаДок;
    так ставлю тогда ошибки нет не какой, но не берет дату все равно показывает тока цифры
    Код:
      .  .   2458709
    вот выходит даты нет вроде точки и в конце числа какие то ,((((
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.595
    Симпатии:
    540
    Баллы:
    204
    Выводить нужно преобразованием.
    ""+Значение
    или
    Дата(Значение)