Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Изменение времени документа при проведении (число прочтений - 8670 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Изменение времени документа при проведении
Ответ #15 - 02. Сентября 2011 :: 00:50
Печать  
ssv02 писал(а) 01. Сентября 2011 :: 13:43:
Там только правильно флаг в journ выставить напрямую в базе.
И потеряешь данных на сто гигов ... я к тому, что этот флаг не единственное ... и метаданные без шерстения ты никак не сохранишь, а если ты не поставишь в метаданных флаг, то ничего не изменится, что бы ты не правил в журнале ...
... и вообще - идея править дату и/или время проведенного документа убьет весь твой учет ... через пару недель или месяцев ... убьет так, что уже не восстановишь ...
  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #16 - 02. Сентября 2011 :: 04:59
Печать  
Z1 писал(а) 01. Сентября 2011 :: 14:09:
База за 100 Гигов ? За какой период база?
сколько продаж в день?
Да у тебя процентов на 98-99
регистры не закрываются и/или счета не закрываются.
может тебе с этим сначала разобраться?


База сейчас с 2005 года. Опер+Бух вместе. Конфа Астор, но своими силами дописана переписана на 70%. Функционал расширен по сравнению с типовым решением очень сильно. Сверху Гибкие Блокировки от СофтПоинта, в базе работает в среднем около 80 человек. И как не странно это работает. По поводу подозрений на ошибки - глубоко ошибаетесь. Все работает и как не удивительно никогда не применялось восстановление последовательности. Просто надо правильно организовывать не только систему, но и правила работы пользователей.
  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #17 - 02. Сентября 2011 :: 05:02
Печать  
Dmitry The Wing писал(а) 02. Сентября 2011 :: 00:50:
И потеряешь данных на сто гигов ... я к тому, что этот флаг не единственное ... и метаданные без шерстения ты никак не сохранишь, а если ты не поставишь в метаданных флаг, то ничего не изменится, что бы ты не правил в журнале ...
... и вообще - идея править дату и/или время проведенного документа убьет весь твой учет ... через пару недель или месяцев ... убьет так, что уже не восстановишь ...


Делал уже и не раз самые разные изменения таким способом, а изменения в данных отдельно ручками скриптом, что на порядок быстрее, чем движок 1с. Причем такие же действия делал и на dbf базах.
Надо знать структуру БД.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Изменение времени документа при проведении
Ответ #18 - 02. Сентября 2011 :: 05:18
Печать  
Dmitry The Wing писал(а) 02. Сентября 2011 :: 00:50:
ssv02 писал(а) 01. Сентября 2011 :: 13:43:
Там только правильно флаг в journ выставить напрямую в базе.
И потеряешь данных на сто гигов ... я к тому, что этот флаг не единственное ... и метаданные без шерстения ты никак не сохранишь, а если ты не поставишь в метаданных флаг, то ничего не изменится, что бы ты не правил в журнале ...


Пройденный этап, на самом деле.
На пустой базе готовится МД+ДДС.
На живой прямыми запросами изменяется все необходимое.
1Ске подсовывается новые МД+ДДС.
Есть еще куча-куча нюансов, но все выполнимо.

Знаю людей, которые были вынуждены делать такие танцы с бубном при добавлении регистра в конфигурацию.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Изменение времени документа при проведении
Ответ #19 - 02. Сентября 2011 :: 05:30
Печать  
ssv02 писал(а) 01. Сентября 2011 :: 13:43:
Там только правильно флаг в journ выставить напрямую в базе.


А какой именно?
Ибо я не уверен только в AppCode и ActCnt, остальные трогать не нужно, на сколько я знаю...
Причем, второе, скорее всего - это количество движений, которое измениться никак не должно (без разницы - это число включает только опер учет, только бух учет, или и то и другое).
Что есть АппКод - ХЗ.
  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #20 - 02. Сентября 2011 :: 06:11
Печать  
Satans Claws писал(а) 02. Сентября 2011 :: 05:30:
ssv02 писал(а) 01. Сентября 2011 :: 13:43:
Там только правильно флаг в journ выставить напрямую в базе.


А какой именно?
Ибо я не уверен только в AppCode и ActCnt, остальные трогать не нужно, на сколько я знаю...
Причем, второе, скорее всего - это количество движений, которое измениться никак не должно (без разницы - это число включает только опер учет, только бух учет, или и то и другое).
Что есть АппКод - ХЗ.


Вообще самое простое в данном случае подсунуть новый MD, запустить 1с, сделать новый док, а затем зная структуру данных, т.е. что и где лежит касаемо данного документа сравнить со старым доком в БД.
В моем случае меняется только AppCode с 52 на 53.

Такие фокусы проводил сам неоднократно. Причем не только с такого рода флагами. Бывало и реквизиты подсовывал и менял простой реквизит на периодический и обратно.

Проблема в том, что движок 1с тормозной, рассчитан на DBF и делает все путем переноса данных маленькими порциями в новую таблицу. Всо очень просто отслеживается если посмотреть трассировку действий при изменении данных, а затем вынуть от туда только то, что необходимо и сделать это правильно, а не так криво как делает 1с.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Изменение времени документа при проведении
Ответ #21 - 03. Сентября 2011 :: 08:01
Печать  
Относительно первого пункта - я бы сделал (если очень надо) так:
1. В Обработке проведения писал бы ИД-шник этого документа в базу (или отдельную таблицу, или в Справочник, так, например, в Асторе сделан Справочник.ЛогТранзакций, примерно по тому же принципу)
2. По окончании проведения последней строкой вызываешь или Внешнее событие (через Сервис, Formex-а) или обработку ожидания, или через таймер. Не важно как, главное - чтобы по окончании была вызвана какая-то процедура, а уже в ней - для документа в базе выполняется смена времени.
Если 2-е развернуть еще более красиво, то, для исключения двойного проведения, можно делать подмену Модуля проведения (Перехватчиком), так, чтобы документ при проведении лишь фиксировался во временной таблице, а уже обработка, выставляющая документ нормальным образом - выполняла "истинное" проведение с движениями по счетам, регистрам и т.д.
  
Наверх
ICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Изменение времени документа при проведении
Ответ #22 - 05. Сентября 2011 :: 00:52
Печать  
Satans Claws писал(а) 02. Сентября 2011 :: 05:30:
ssv02 писал(а) 01. Сентября 2011 :: 13:43:
Там только правильно флаг в journ выставить напрямую в базе.

А какой именно?
Ибо я не уверен только в AppCode и ActCnt, остальные трогать не нужно, на сколько я знаю...
Еще closed туда же, а вот ActCnt трогать смысла нет - это просто счетчик изменений. Closed напрямую связан с AppCode, он показывает фактические проведения дока, а AppCode, - возможные.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Изменение времени документа при проведении
Ответ #23 - 05. Сентября 2011 :: 07:41
Печать  
Dmitry The Wing писал(а) 05. Сентября 2011 :: 00:52:
Еще closed туда же, а вот ActCnt трогать смысла нет - это просто счетчик изменений. Closed напрямую связан с AppCode, он показывает фактические проведения дока, а AppCode, - возможные.


Closed от изменения принадлежности документа к оперативному учету никак не меняется. Проверено.
Если документ был проведен до изменения метаданных, то он и останется проведенным (и наоборот). А Closed&1 = 1 для всех проведенных, вне зависимости от принадлежности к учетам.

PS VERSTAMP жеж отражает количество изменений, разве нет?
  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #24 - 05. Сентября 2011 :: 10:22
Печать  
В конечном итоге решение изначальной проблемы найдено в ветке  http://www.1cpp.ru/forum/YaBB.pl?num=1314795133

Eprst писал(а) 01. Сентября 2011 :: 04:45:
Svetlana2007 писал(а) 31. Августа 2011 :: 13:46:
ПриЗакрытии точно работать не будет. Я действительно хочу изменить периодические величины. До тех пор, пока форма элемента справочника открыта - из документа я периодические реквизиты изменить не могу.


Всё это можно сделать и без формекса, если что.
На вот, баянчик и еще  один баянчик



  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Изменение времени документа при проведении
Ответ #25 - 06. Сентября 2011 :: 01:12
Печать  
Satans Claws писал(а) 05. Сентября 2011 :: 07:41:
Dmitry The Wing писал(а) 05. Сентября 2011 :: 00:52:
Еще closed туда же, а вот ActCnt трогать смысла нет - это просто счетчик изменений. Closed напрямую связан с AppCode, он показывает фактические проведения дока, а AppCode, - возможные.
Closed от изменения принадлежности документа к оперативному учету никак не меняется. Проверено.
Если документ был проведен до изменения метаданных, то он и останется проведенным (и наоборот). А Closed&1 = 1 для всех проведенных, вне зависимости от принадлежности к учетам.

PS VERSTAMP жеж отражает количество изменений, разве нет?

Про VERSTAMP и ActCnt каюсь - перепутал, но ActCnt - тоже счетчик, но не изменений, а движений, - т.е. тоже не стоит трогать.

А вот про связь между Closed и AppCode поясню:
Оба имеют набор битов, характеризующие разные виды проведение, но, повторюсь: Closed показывает фактические проведения дока, а AppCode, - возможные.

В частности Closed&1 = 1 означает, что документ проведен по оперативному учету, Closed&2 = 2 - расчет, Closed&4 = 4 - бухучет, Closed&8 = 8 - периодика, Closed&16 = 16 - есть операция, Closed&32 = 32 - Записана операция.

Вывод: если ты изменишь AppCode, добавив в него какой-то бит, то документ будет непроведен по добавленному учету.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Изменение времени документа при проведении
Ответ #26 - 06. Сентября 2011 :: 03:49
Печать  
Исследовал в конфе, в которой активно используется периодика через документы + опер учет + бух учет (в разных комбинация):

Цитата:
Closed&4 = 4 - бухучет

Неверно. Это покажет существование Операции. Документ может быть даже не проведен (настройка вида документа "создавать операцию = всегда", например).

Цитата:
Closed&8 = 8 - периодика, Closed&16 = 16 - есть операция, Closed&32 = 32 - Записана операция.

Таких значений нет вообще.

PS хотя, конечно, "проведен по бух учету" можно отождествить с существованием операции.


Вот если в
Цитата:
В частности Closed&1 = 1 означает, что документ проведен по оперативному учету, Closed&2 = 2 - расчет, Closed&4 = 4 - бухучет, Closed&8 = 8 - периодика, Closed&16 = 16 - есть операция, Closed&32 = 32 - Записана операция.
не Closed, a AppCode - то больше похоже на правду.
Хотя у меня в базе существуют документы "Операция" с Аппкод = 20 и АппКод = 4. Что меня ставит в ступор...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать