Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрос к остаткам финансов
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
kayfatuch
Доброго времени суток, у меня 1С 7,70,048 Торговля с клад для Украины. Встал такой вопрос что есть у нас счёт(который ведётся не совсем правильно но с этим я уже поделать не могу) в котором отображаются траты и поступления по треминалу банковском. Стоит задача в 1с ежедневно в конце дня проводить расходку на фиксированный процент что бы наш счёт совпадал с банковским. На данный момент я написал вот такую обработку(да местами кривую но она ещ1 в процессе доработки) и сложность возникла в том что я не могу получить остаток денег на конец дня на определённом счету. Помогите пожалуйста разобраться где я в запросе допустил ошибку или быть может можно это сделать по другому. Всем спасибо за дельные советы
//*******************************************
Процедура Выполнить()
    Накладная = СоздатьОбъект("Документ.РасходныйКассовый");
    Накладная.Новый();
    ДатаДок = РабочаяДата(Контекст, "Запись");  
    // Получаем текущую дату заранее
    ТекДата = ТекущаяДата();
    
    // Устанавливаем фирму
    спрФирма = СоздатьОбъект("Справочник.Фирмы");
    спрФирма.НайтиПоКоду(2, 0);
    Если спрФирма.Код <> 0 Тогда
        Накладная.Фирма = спрФирма.ТекущийЭлемент();
    Иначе
        Сообщить("Фирма с кодом 2 не найдена.");
    КонецЕсли;
    
    // Устанавливаем кассу    
    спрКасса = СоздатьОбъект("Справочник.НашиДенежныеСчета");
    спрКасса.НайтиПоКоду(24, 0);
    Если спрКасса.Код <> 0 Тогда
        Накладная.РСчет = спрКасса.ТекущийЭлемент();
    Иначе
        Сообщить("Касса с кодом 24 не найдена.");
    КонецЕсли;
    
    // Поиск контрагента по наименованию из файла
    спрКонтрагент = СоздатьОбъект("Справочник.Контрагенты");
    спрКонтрагент.НайтиПоНаименованию("тут должна быть ваша реклама", 0, 1);  
    Если спрКонтрагент.Код <> 0 Тогда
        
        Накладная.Контрагент = спрКонтрагент.ТекущийЭлемент();  
        Накладная.СуммаСНДС = 5000;       //вот здесь вместо фиксированной суммы должно итогово быть результат вычета процента из остатка
        Накладная.СтавкаНДС = "безНДС";
        Накладная.Дата_курса = ТекущаяДата();
        Накладная.Курс = "1";    
        
        // Устанавливаем валюту
        Курс = СоздатьОбъект("Справочник.Валюты");
        Курс.НайтиПоНаименованию("Гривня");
        Накладная.Валюта = Курс.ТекущийЭлемент();
        
        // Выполняем запрос на поступления
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "
        |ВЫБРАТЬ СУММА(Сумма) КАК Поступления
        |ИЗ Регистр.Деньги
        |ГДЕ Счет = 24
        |И Дата >= " + Формат(ТекДата, "ДФ='yyyy-MM-dd'") + "
        |И Дата <= " + Формат(ТекДата, "ДФ='yyyy-MM-dd'") + "
        |";
        
        Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда
            Запрос.Выбрать();
            Пока Запрос.Получить() = 1 Цикл
                СуммаПоступлений = Запрос.Поступления;
            КонецЦикла;
            
            Сообщить("Поступления на счёт 24 за сегодня: " + Формат(СуммаПоступлений, "ЧДЦ=2"));
        Иначе
            Сообщить("Нет данных за сегодня.");
        КонецЕсли;
    КонецЕсли;
    
    // Записываем документ
    Накладная.Записать();
КонецПроцедуры
Vofka
Цитата(kayfatuch @ 20.02.25, 0:22) необходимо зарегистрироваться для просмотра ссылки
остаток денег на конец дня


Цитата(kayfatuch @ 20.02.25, 0:22) необходимо зарегистрироваться для просмотра ссылки
|И Дата >= " + Формат(ТекДата, "ДФ='yyyy-MM-dd'") + "
|И Дата <= " + Формат(ТекДата, "ДФ='yyyy-MM-dd'") + "


Формат yyyy-MM-dd - это дата вида год-месяц-день, начало дня. Вы выбираете данные из регистра на момент времени условно 20.02.2025 00:00:00. Но другой момент еще в том, что если вам нужен остаток, то выбирайте данные из виртуальной таблицы Остатков регистра. Ну и на конец дня, а не на начало.
tibank
kayfatuch @ Сегодня, 0:22 необходимо зарегистрироваться для просмотра ссылки ,
Текст запроса похож на восьмерочный

По идее, должно быть что-то типа
ТекстЗапроса =     "
|ПЕРИОД С Дата2 По Дата2;
|Фирма      =Регистр.Деньги.Фирма;
|Счет      =Регистр.Деньги.Счет;
|Сумма      =Регистр.Деньги.Сумма;
|Функция КонОст = КонОст(Сумма);
|Группировка Счет;
|";
denis84
kayfatuch @ Сегодня, 0:22 необходимо зарегистрироваться для просмотра ссылки ,
запрос у Вас не для 1с 7.7! В предыдущем сообщении добрый человек Вам уже написал приблезительный запрос, как это должно быть.
kayfatuch
denis84 @ Сегодня, 11:44 необходимо зарегистрироваться для просмотра ссылки ,
Я увидел что ошибся. Как я уже писал(может не совсем корректно) это все ещё тестовый код и я пытался к нему подступить по разному иза разные варианты так как выборку сделать по всем счетам не так сложно оказалось как по одному конкретному(
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.