Имя: Пароль:
1C
 
Нужно установить время документа
0 Тессеракт
 
24.12.20
14:24
Всем доброго дня и с наступающими праздниками, дамы и господа!
В честь НГ- праздничный вопрос)

Появилась необходимость, чтобы в бп3.0 у всех банковских выписок(поступления на расч сч и списание с расч сч) было фикс время 9:00:00.
Выгрузка происходит через обработку, которая подгружает файлик от банка. В нее хочу вставить код смены времени, но чтоб его отладить сначала доп обработкой тестирую.
В обработке форма с одной кнопкой.
Вот код:

&НаКлиенте
Процедура Команда1(Команда)
    ккк();
КонецПроцедуры

&НаСервере
Процедура ккк()
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПоступлениеНаРасчетныйСчет.Ссылка КАК Ссылка,
        |    ПоступлениеНаРасчетныйСчет.Дата КАК Дата,
        |    ПоступлениеНаРасчетныйСчет.Номер КАК Номер
        |ИЗ
        |    Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
        |ГДЕ
        //|    ПоступлениеНаРасчетныйСчет.Дата >= ДОБАВИТЬКДАТЕ(&дата, ДЕНЬ, -2) //&дата //666
        //|    И                                                                         //666  
        |    НЕ ЧАС(ПоступлениеНаРасчетныйСчет.Дата) = 9
        |    И НЕ МИНУТА(ПоступлениеНаРасчетныйСчет.Дата) = 0
        |    И НЕ СЕКУНДА(ПоступлениеНаРасчетныйСчет.Дата) = 0";
    
    //Запрос.УстановитьПараметр("дата", ТекущаяДата()); //-2*24*60*60); //666
    
    РезультатЗапроса = Запрос.Выполнить();    
    Выборка = РезультатЗапроса.Выбрать();    
    Выгрузка = РезультатЗапроса.Выгрузить();
    ч=9; м=0; с=0;

    Пока Выборка.Следующий() Цикл
       кк= Выборка.ссылка.получитьобъект();
           кк.УстановитьВремя(9,0,0);
          //Час(кк.дата)= 9;
        //Минута(кк.дата)= 0;
        //Секунда(кк.дата)= 0;
        кк. Записать();   //режимзаписидокумента.Запись
    КонецЦикла;
КонецПроцедуры

1 проблема: если раскомментить //666  тогда в цикл отладка не проваливается, хотя в консоли запрос выдает ~30 строк результата.
2 проблема: УстановитьВремя почему то ругается на силшком много параметров.
Слишком много фактических параметров
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(32)}:           кк.УстановитьВремя(9,0,0);
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(3)}:    ккк();

Я был хорошим недопрогером весь год, прошу деда мороза и вас, друзья, помочь мне установить время этим докам))
1 Mihasya
 
24.12.20
14:27
кк= Выборка.ссылка.получитьобъект();
кк.Дата = Дата(2020, 12, 1, 9, 0, 0)
Не?
2 ДенисЧ
 
24.12.20
14:28
ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)
УстановитьВремя (SetTime)
Синтаксис:
УстановитьВремя(<РежимОпределенияВремени>, <ИспользоватьЖурналы>)
3 Тессеракт
 
24.12.20
14:34
(1) У меня глюк или сообщение не отправилось?? я писал: что дата дока должна остаться неизменной, а изменить надо, только время
(2) не могли бы Вы пример в данных реалиях привести? я так пробовал- пишет не может найти УстановитьВремя
4 Тессеракт
 
24.12.20
14:35
PR и Ненавижу 1С - господа ветераны, помогите пжлст молодому дарованию))
5 ДенисЧ
 
24.12.20
14:37
(3) Я говорю, что у метода УстановитьВремя() совершенно другие параметры. Правильно как в (1)
6 Тессеракт
 
24.12.20
14:39
(5) понял. Как в (1) моожно сделать не трогая гггммдд?
или получить из запроса день, месяц и год и их подставить?
7 Тессеракт
 
24.12.20
14:44
(1) и (5) спасибо, получилось! сделал так:
        "ВЫБРАТЬ
        |    ПоступлениеНаРасчетныйСчет.Ссылка КАК Ссылка,
        |    ПоступлениеНаРасчетныйСчет.Дата КАК Дата,
        |    ПоступлениеНаРасчетныйСчет.Номер КАК Номер,
        |   Год(ПоступлениеНаРасчетныйСчет.Дата) как год,
        |   Месяц(ПоступлениеНаРасчетныйСчет.Дата) как месяц,
        |   День(ПоступлениеНаРасчетныйСчет.Дата) как день
и потом
       кк= Выборка.ссылка.получитьобъект();  
       кк.дата = Дата(выборка.год,выборка.месяц,выборка.день, 9, 0, 0);

Это решило вопрос 2, а вопрос 1 все еще открыт
8 ДенисЧ
 
24.12.20
14:45
(6) А зачем из запроса, если они есть у тебя в документе?
.Дата = Дата(Год(.Дата), Месяц(.Дата), День(.Дата), твойчас, твойминут, твойсекунд)
перед . поставь нужную переменную
9 Тессеракт
 
24.12.20
14:47
(8) аа, точняк)
10 Малыш Джон
 
24.12.20
14:51
(0) кк.Дата = НачалоДня(кк.Дата)+9*3600;
11 Тессеракт
 
24.12.20
14:54
(10) вот это оптимум!!
Джон, а что касаемо вопроса 1 думаешь?
12 Тессеракт
 
24.12.20
14:59
Кажется до п1 я домер. 30 строк результата показывает в боевой базе, а в тестовой хоть поступления и есть, но кажет в консоли 0 строк. Буду разбираться! Всем спасибо!
13 Mihasya
 
24.12.20
15:13
|    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(АвансовыйОтчет.Дата, ДЕНЬ), ЧАС, 9) КАК Дата,

...

кк = Выборка.ссылка.получитьобъект();
кк.Дата = Выборка.Дата