Имя: Пароль:
1C
1C 7.7
v7.7 Типа ТиС, самоделка. Разбираюсь с ТА
0 aka AMIGO
 
09.01.17
13:12
В Модуле формы
        Если ДатаДок >= ПолучитьДатуТА() Тогда
            РассчитатьРегистрыПО(ПолучитьДокументТА());
        Иначе
            РассчитатьРегистрыНа(ДатаДок);
        КонецЕсли;
ДатаДок = 9.01.17

В Общем журнале два дока:
9.01.17 12:32:00 проведен
9.01.17 12:54:00 не проведен

Внизу на рамке окна ТА: 9.01.17 12:50:01

Откуда взялись эти 50 минут? должно быть 32, т.к. последний проведен именно в 32 минуты!

Естественно, получитьДокументТА срабатывает с ошибкой..
Что двинуло ТА на 50 минут?
в SysLog всё правильно.. И на эти "50" минут не попадает ни одной записи..
1 Злопчинский
 
09.01.17
13:14
Та не обязана совпадать с документом

Используйте получитьта()
2 aka AMIGO
 
09.01.17
13:15
(1) Резонно.. Спасибо, больше, пожалуй, ничего не нужно :)
3 Джинн
 
09.01.17
13:15
ПолучитьПозициюТА()
4 Umga2002
 
09.01.17
13:16
В последовательности не один вид документа.....
а несколько...
5 aka AMIGO
 
09.01.17
13:17
(3) Да, или так..
Ладушки, сейчас попытаюсь проверить на локальной базе

(4) - я-ж в Общий журнал-то смотрел.. и в ЖР.. чисто..
6 aka AMIGO
 
09.01.17
13:28
Применил ПолучитьТА() - ошибка ушла.

(1) Отдельное спасибо еще раз :)

И спасибо всем, вопрос закрыт :)
7 Злопчинский
 
09.01.17
13:30
(6) там синтакспомощник есть, его можно просто листать по веткам, много интересного узнаещь
8 aka AMIGO
 
09.01.17
13:52
(7) В нём и пасусь :)

Вот еще что увидел в отладчике:

ПолучитьТА() = "09.01.2017 12:34:49"
ПолучитьВремя(ПолучитьДокументТА()) = "12:42:11"
ПолучитьДокументТА() = Счет СчИ-00003 (09.01.2017)

У дока Счет время-таки 12:34:49
9 aka AMIGO
 
09.01.17
13:53
10 Злопчинский
 
09.01.17
15:33
(8) не суетись
Аккуратно работал и все ок
11 aka AMIGO
 
09.01.17
15:47
(10) Как не суетиться-то.. Ведь совершенно непонятно: ТА установил на док.Счет, время его 12:34
а функция ПолучитьВремя(ПолучитьДокТА()) возвращает 12:42 - время последнего  документа, а не Счета...

Т.е. прежде, чем применять функцию, надо в отладчике внимательно посмотреть, что-ж она возвратит-то..
Может, так и надо, чтобы в лаврах не утонуть :)
12 Злопчинский
 
09.01.17
15:51
(11) получитьдокта что возвращает?
13 Злопчинский
 
09.01.17
15:57
Ну и для начала снести. Индексы и переиндексироваться
14 гтщ
 
09.01.17
15:57
Это все работает в модуле проведения перемещения и уже сделаны им какие то движения. где то была галочка типа построчное проведение или типа того.
15 гтщ
 
09.01.17
16:02
Думаю что это влияет.
Актуальность(<?>)
Синтаксис:
Актуальность(<Флаг>)
Назначение:
Устанавливает или сбрасывает признак актуальности временных итогов.
Возвращает: значение признака актуальности на момент до вызова функции.
Параметры:
<Флаг> - признак актуальности временного расчета итогов. Параметр может принимать значения: 1 - поддерживать временный расчет в актуальном состоянии; 0 - не поддерживать временный расчет в актуальном состоянии. Если не задан - значение не меняется.
16 aka AMIGO
 
09.01.17
16:44
(12) Так в (8) я выложил ил окна отладчика:
ПолучитьДокументТА() = Счет СчИ-00003 (09.01.2017)
17 aka AMIGO
 
09.01.17
16:46
(14) нет, это всё в модуле формы, на форме есть кнопка "Проверка проведения", операторы (0) оттуда.
18 Злопчинский
 
09.01.17
16:52
(17) очень сомнительно, рискну сказать не верю
19 aka AMIGO
 
09.01.17
16:56
(18) Процедура ПроверкаНаПроведение()
    Если Проведен()=1 Тогда
        Сообщить("Документ уже проведен!");
        Возврат;
    КонецЕсли;
    ДокНеПроводится=0;
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ);
    ТЗ.НоваяКолонка("Поз");
    ТЗ.Заполнить(1,,,"Поз");
    ТЗ.Свернуть("Товар","Поз");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
        Если ТЗ.Поз>1 Тогда
            Сообщить("В табличной части дублируется Товар "+ТЗ.Товар);
            ДокНеПроводится=1;
        КонецЕсли;
    КонецЦикла;
    Если ДокНеПроводится=1 Тогда
        Сообщить("Документ НЕ может быть проведен!");
    КонецЕсли;
    Если Склад.Выбран()=0 Тогда
        Сообщить("Не указан склад откуда производится перемещение!");
        Возврат;
    КонецЕсли;
    Если СкладПолучатель.Выбран()=0 Тогда
        Сообщить("Не указан склад куда производится перемещение!");
        Возврат;
    КонецЕсли;    
    
    
     Рег2 = СоздатьОбъект("Регистр.ЧугунныйРезерв");
    
    // по Регистру ОстаткиТоваров (здесь проходят учет все типы накладных )
    Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
    Рег1=СоздатьОбъект("Регистр.МонтажныеРаботы");
    //Если ИтогиАктуальны()=0 Тогда
    Рег.ВременныйРасчет();
    Рег1.ВременныйРасчет();
    Рег2.ВременныйРасчет();            
    
    Если (ПустоеЗначение(ТекущийДокумент())=0)
    И (ДатаДок < ПолучитьДатуТА()) Тогда //док записан
        РассчитатьРегистрыНа(ТекущийДокумент());
    Иначе
        Если ДатаДок >= ПолучитьДатуТА() Тогда
            РассчитатьРегистрыПО(ПолучитьДокументТА());
            //РассчитатьРегистрыПо(ПолучитьТА());
        Иначе
            РассчитатьРегистрыНа(ДатаДок);
        КонецЕсли;
    КонецЕсли;
20 aka AMIGO
 
09.01.17
16:58
21 aka AMIGO
 
09.01.17
17:00
22 Злопчинский
 
09.01.17
17:01
Поехал домой. Заворачивай базу целиком в архив и на [email protected]
23 Tatitutu
 
09.01.17
17:21
в журнале документов - правой кнопкой на крайнем документе - Установить ТА на документ (нужен монопольный режим)
24 trdm
 
09.01.17
17:31
(0) > 9.01.17 12:54:00 не проведен
> Внизу на рамке окна ТА: 9.01.17 12:50:01

Отменили проведение дока и записали. Время сдвинулось, ТА так и осталась в предней точке - не было смысла сдвигать.
25 Злопчинский
 
09.01.17
19:02
(21) нафиг, базу давай.