Давайте поборемся со временем док-та

Дайнеко

Well-known member
19.11.2009
951
0
#1
Вот сколько работаю, а жля меня время документа - какой-то зверь неукротимый.
Реализую принцип: каждому виду документа принудительно свое время. Приходным в 9.00 Расходным к 17.00 и т.д.
Для чего пишу:

Код:
Процедура ВводНового(Копирование)
УстановитьВремя(17, 00, 00);

Процедура ПриОткрытии()
АвтоВремяОтключить();
Все работает. Почти работает. Непонятность поведения вот в чем:

1) первый док дня ложится как надо (17.00). А вот следующий этого вида прибавляет по 1 минутке. Ну, это не плохо, Но почему ОНА так игнорирует команду?

2) и вот юзер вносит док, приписываемый к 9.00. Если дата у него вчерашняя и ранее - ложится нормально. А сегодняшний выдает жуткое 1С-кое окно: "Время док-та меньше ТА". Варианты: 1-провести задним числом, 2-изменить время. Меня бы устроил первый, но активным установлен второй (точечка на нем). Пользователь пошевелил губами, ничего не понял и нажал Enter. Док-т изменил время и лег в конец дня. Опять Ignore.

3) третий зверь самый страшный. Это когда 1С пишет: "Существуют более ранние проведенные документы" (по памяти). Тут - все. Экспериментально лечится только одним - док закрыть, войти монопольно, сдвинуть ТА на 1-2 дня вперед.

4) ну, напоследок, умиляет меня сообщение у пользователей по утрам: "ТА будет перенесена на новую дату". Я за долгие годы наконец придумал для них объяснение: "Это самый первый документ на сегодня. Она всегда так говорит."

Я, вроде, все закоулки программы знаю. Но вдруг у кого есть рецепт, как эти дурацкие вопросы обойти, как железно добиться нужного времени на документе?

Замечу напоследок:
- что за многие годы не установил никакого влияния галочек в "Сервис/Параметры/Оперативный учет" равно как и не могу признаться в их ясном понимании.
- до написания темы осмотрел форум и видел рекомендации устанавливать время ПриЗаписи(). Не помню почему, молодым экспериментировал, но не фурычит.
- это я писал про док-ты, создаваемые руками. А нашел в своей программе вот такую ерунду при создании док-та программно:
Код:
	ДокС.Новый();
ДокС.ДатаДок = МояДата;
ДокС.Записать(); // 1
ДокС.УстановитьВремя(11,00,00);
ДокС.Записать(); // 2
Помню, долго терзал эти строки, но раз так оставил, значит это единственный вариант, дающий результат.
 
H

Hryv

#2
1) первый док дня ложится как надо (17.00). А вот следующий этого вида прибавляет по 1 минутке. Ну, это не плохо, Но почему ОНА так игнорирует команду?
А у меня все на 17-00 ложатся

2) и вот юзер вносит док, приписываемый к 9.00. Если дата у него вчерашняя и ранее - ложится нормально. А сегодняшний выдает жуткое 1С-кое окно: "Время док-та меньше ТА". Варианты: 1-провести задним числом, 2-изменить время. Меня бы устроил первый, но активным установлен второй (точечка на нем). Пользователь пошевелил губами, ничего не понял и нажал Enter. Док-т изменил время и лег в конец дня. Опять Ignore.
А вот тут не в совсем в конец дня, а на 1 секунду после последнего дока
 

puh14

Well-known member
11.07.2008
1 412
0
#3
1)Ну раз первый док ложится как надо, для остальных можно попробовать СформироватьПозициюДокумента(). Насчет минуты - не знаю, по хорошему должны быть секунды.
2)Периодичность итогов день? Их реально так много? может месяца хватит?
3) Каждый час ночи пакетно и монопольно запускается 1с и сдвигает ТА на денек (или на дату последнего документа +1).Или УстановитьТАПо(). У меня таких проблем нет - так как периодичность итогов месяц. Только по первым числам.
4)См пункт 3

up.Что то не видно в помошнике как документу позицию присвоить, получить можно - присвоить неа.
 

Дайнеко

Well-known member
19.11.2009
951
0
#5
А вот тут не в совсем в конец дня, а на 1 секунду после последнего дока
Спасибо за точность. Да Вы, батенька, педант. Категорически согласен, что именно так 1С и трактует понятие "конец дня". И я это имел ввиду.

1).. можно попробовать СформироватьПозициюДокумента().
Метод из числа дополнений в 7.7 и как-то не пробовал.

2)Периодичность итогов день? Их реально так много? может месяца хватит?
Не, я такого не писал. Периодичность - месяц. Просто в рамках 1 дня расставляю доки.

3) ...запускается 1с и сдвигает ТА на денек
Мысль неплоха - сделать в автомате. Иногда люди вручную задвигают ТА до конца месяца.
Но вы же понимаете - время проведения чуть уменьшится.


Ну, спасибо за соображения.