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


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Изменение времени документа при проведении
26. Августа 2011 :: 12:28
Печать  
При проведении ранее сохраненных документов в текущем числе, если эти документы отмечены флагом "оперативный учет" и соответствующим образом настроены параметры 1с у пользователя, то документ при проведении переносится в новое время (после ТА)

Для документов с флагом "бухгалтерский учет" изменение времени документа по умолчанию не происходит. С использованием прямого доступа написали скрипт для изменения времени. Из внешнего отчета все работает, но при попытке вставить в процедуру ПриЗаписи или в МодульПроведения скрипт отрабатывает, но время не меняется.

Может кто-то сталкивался с проблемой изменения времени документа при проведении. Подскажите возможно ли так сделать?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Изменение времени документа при проведении
Ответ #1 - 26. Августа 2011 :: 13:41
Печать  
круто.. и во всех табличках поле date_time_iddoc меняли ?
Улыбка)
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Изменение времени документа при проведении
Ответ #2 - 26. Августа 2011 :: 13:53
Печать  
ssv02 писал(а) 26. Августа 2011 :: 12:28:
Может кто-то сталкивался с проблемой изменения времени документа при проведении. Подскажите возможно ли так сделать?

Нет. Только в отдельной транзакции.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Изменение времени документа при проведении
Ответ #3 - 29. Августа 2011 :: 19:21
Печать  
ssv02 писал(а) 26. Августа 2011 :: 12:28:
При проведении ранее сохраненных документов в текущем числе, если эти документы отмечены флагом "оперативный учет" и соответствующим образом настроены параметры 1с у пользователя, то документ при проведении переносится в новое время (после ТА)

Для документов с флагом "бухгалтерский учет" изменение времени документа по умолчанию не происходит. С использованием прямого доступа написали скрипт для изменения времени. Из внешнего отчета все работает, но при попытке вставить в процедуру ПриЗаписи или в МодульПроведения скрипт отрабатывает, но время не меняется.

Может кто-то сталкивался с проблемой изменения времени документа при проведении. Подскажите возможно ли так сделать?


Это потому, что время документа записывается после всех изменений и в момент фиксирования транзакции, т.е. после окончания процедуры "ОбработкаПроведения()". Если есть какое то событие, которое вызывается после обработки проведения - тогда можно менять, но надо быть осторожным, потому что придеться менять во всех регистрах где есть быстрая обработка движений + константах + бух. операциях с соответствующим пересчетом итогов.
  
Наверх
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #4 - 31. Августа 2011 :: 04:48
Печать  
pvase писал(а) 29. Августа 2011 :: 19:21:
Это потому, что время документа записывается после всех изменений и в момент фиксирования транзакции, т.е. после окончания процедуры "ОбработкаПроведения()". Если есть какое то событие, которое вызывается после обработки проведения - тогда можно менять, но надо быть осторожным, потому что придеться менять во всех регистрах где есть быстрая обработка движений + константах + бух. операциях с соответствующим пересчетом итогов.


Вот соответственно и вопрос по поводу того нет ли каких событий после ОбработкиПроведения() или как-то по другому, например, после закрытия формы документа. Вообще регистры тут не причем, т.к. нет движений на регистрах, нет оперативного контура. Есть идея при закрытии и проведении документ просто записывать и закрывать без проведения. Но вот затем можно даже стандартными средствами изменить время документа и провести программно. Только вот как закрыть документ, т.е. снять с него блокировку, а затем поймать это по событию и провести его. Вот в FormEx есть ПослеЗакрытия(Контекст) - интересно на этот момент документ будет уже разблокирован?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Изменение времени документа при проведении
Ответ #5 - 31. Августа 2011 :: 05:01
Печать  
Какой-то хней маешься, имхо.
Цель в целом, какая ?

ЗЫ: помимо оперативного учета, есть еще бух учет - там тоже позицию дока (date_time_iddoc) нужно будет менять во всех табличках.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Изменение времени документа при проведении
Ответ #6 - 31. Августа 2011 :: 05:11
Печать  
ssv02 писал(а) 31. Августа 2011 :: 04:48:
Вообще регистры тут не причем, т.к. нет движений на регистрах, нет оперативного контура.


Регистры - это цветочки.

Если у тебя документ затрагивает подсистему бухгалтерского учета (хотя бы даже просто "создавать операцию = При проведении", не говоря уж про наличие проводок) - то гемороя возникает выше крыши (_1SACCSEL, _1SENTRY, _1SOPER - и еще не факт, что я все вспомнил).
Ну и не забываем про таблички _1SCRDOC, которую будет нужно апдейтить вообще всегда, и _1SSTREAM.

PS пересчет итогов, скорее всего, не будет нужен - если меняться будет только время (дата не трогается).
  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #7 - 31. Августа 2011 :: 11:40
Печать  
Eprst писал(а) 31. Августа 2011 :: 05:01:
Какой-то хней маешься, имхо.
Цель в целом, какая ?

ЗЫ: помимо оперативного учета, есть еще бух учет - там тоже позицию дока (date_time_iddoc) нужно будет менять во всех табличках.



Цель - проводить документы сегодняшнего дня после точки актуальности. Весь партионный учет у меня работает без сбоев только по причине того, что "простым смертным" нельзя работать с документами во вчерашней дате, только те, кто понимает последствия, может выправить всю последовательность и т.д. работают в задней дате. Все остальные работают в текущей дате. При проведении док-ов оперативного контура при правильной настройке 1с все ранее записанные, но не проведенные док-ты в рамках дня кладутся после ТА и нарушений не возникает. Таким образом ушли от проблемы восстановления последовательности.


Но тут недавно столкнулись с такой проблемой, что если документ относится только к бух контуру, то при его проведении в текущем числе (если он уже был ранее записан), док. проводится в том времени, в котором лежит. Таким образом если проводить док в том времени, в котором он лежит могут возникать ошибки с бухучетом, т.к. при проведении контролируется состояние определенных данных на бухучете, а, следовательно, возможность проведения документа. Объяснять все долго и муторно. Но если по аналогии с регистрами, то абстрактно есть партия товара, создали док. на списание и сохранили без проведения, создаем новый док. на списание и проводим, при этом списываем эту партию под 0. Затем открываем предыдущий док. и проводим: если провести его не по ТА, то контроль остатков даст наличие остатка и партия уйдет в минус, если док. проводится после ТА, то и контроль сработает и запретит списывать в минус.   Повторяю - это примерно абстрактное описание проблемы.

Так вот если док. имеет флаг оперативный учет, то в текущем дне он при проведении кладется в конец последовательности самим движком 1с, а если док не имеет флага оперативного учета (только бухгалтерский учет), то при проведении в текущем дне его время не меняется и он остается в том времени, в котором есть.

Попробовал применить ПослеЗакрытия() но по факту на данный момент времени объект еще заблокирован.

Может кто еще какую идею может подкинуть?

Идея по поводу контроля данных на момент документа и на ТА должна сработать, но она не очень подходит в данном случае. Там возникает несколько дополнительных ограничений и слишком много документов придется переделывать ОбработкуПроведения(). А так было бы просто добавить глобальную процедурку по перемещению документа в конец дня, а потом уже проведению документа. Но как это сделать из формы открытого документа при его закрытии и проведении никак придумать не могу.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Изменение времени документа при проведении
Ответ #8 - 31. Августа 2011 :: 11:54
Печать  
А ну да, с догадкой про хню я угадал на 100%.
Для бух документов покаласть на ТА и время, по большому счету.
И править время не надо.
  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #9 - 31. Августа 2011 :: 13:52
Печать  
Eprst писал(а) 31. Августа 2011 :: 11:54:
А ну да, с догадкой про хню я угадал на 100%.
Для бух документов покаласть на ТА и время, по большому счету.
И править время не надо.

Если бы не было ошибок в БухУчете, то можно было бы и покласть.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Изменение времени документа при проведении
Ответ #10 - 01. Сентября 2011 :: 02:52
Печать  
Поставь им галку "Оперативный учет".
А то, что движений по регистру они делать не будут - дык, это и не проблема даже.

Только продумай, каким документам это потребуется, и ставь все галки в рамках одного сохранения конфы (ели мне не врет протез - 1Ска начинает перещелкивать всю _1СЖурн для каких-то целей, что есть процесс небыстрый)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Изменение времени документа при проведении
Ответ #11 - 01. Сентября 2011 :: 04:39
Печать  
ssv02 писал(а) 31. Августа 2011 :: 13:52:
Если бы не было ошибок в БухУчете, то можно было бы и покласть.

Ну так и не пиши так, чтоб ошибки были.
Для бух компоненты всё равно, где у тебя документ в пределах дня.
Там нет партионки, где это важно. Там все останки на конец дня, как правило и по-средней.

  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #12 - 01. Сентября 2011 :: 13:38
Печать  
Eprst писал(а) 01. Сентября 2011 :: 04:39:
Ну так и не пиши так, чтоб ошибки были.
Для бух компоненты всё равно, где у тебя документ в пределах дня.
Там нет партионки, где это важно. Там все останки на конец дня, как правило и по-средней.


В данном конкретном случае очень важно. Постановка такая, что на бухучете в аналитике пришлось фактически организовывать некий "партионный учет". И это не мои "тараканы", я бы как раз сделал на регистрах. Но в данном случае требуется именно в аналитике развернуть учет с привязкой к конкретной партии. Была бы средневзвешенная или можно было бы сделать на регистрах, так бы и реализовали, но тут именно "тараканы" и ни шагу назад.
  
Наверх
 
IP записан
 
ssv02
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 16. Апреля 2010
Re: Изменение времени документа при проведении
Ответ #13 - 01. Сентября 2011 :: 13:43
Печать  
Satans Claws писал(а) 01. Сентября 2011 :: 02:52:
Поставь им галку "Оперативный учет".
А то, что движений по регистру они делать не будут - дык, это и не проблема даже.

Только продумай, каким документам это потребуется, и ставь все галки в рамках одного сохранения конфы (ели мне не врет протез - 1Ска начинает перещелкивать всю _1СЖурн для каких-то целей, что есть процесс небыстрый)


Эта идея точно сработает и оставлена про запас как последний вариант. Скорее всего так и придется сделать. База за 100 гигов, но в принципе я придумал как все тормоза с обновлением обойти. Придется делать изменения на пустой БД, а в реальной данные ручками подправить. Там только правильно флаг в journ выставить напрямую в базе.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Изменение времени документа при проведении
Ответ #14 - 01. Сентября 2011 :: 14:09
Печать  
ssv02 писал(а) 01. Сентября 2011 :: 13:43:
Satans Claws писал(а) 01. Сентября 2011 :: 02:52:
Поставь им галку "Оперативный учет".
А то, что движений по регистру они делать не будут - дык, это и не проблема даже.

Только продумай, каким документам это потребуется, и ставь все галки в рамках одного сохранения конфы (ели мне не врет протез - 1Ска начинает перещелкивать всю _1СЖурн для каких-то целей, что есть процесс небыстрый)


Эта идея точно сработает и оставлена про запас как последний вариант. Скорее всего так и придется сделать. База за 100 гигов, но в принципе я придумал как все тормоза с обновлением обойти. Придется делать изменения на пустой БД, а в реальной данные ручками подправить. Там только правильно флаг в journ выставить напрямую в базе.

База за 100 Гигов ? За какой период база?
сколько продаж в день?
Да у тебя процентов на 98-99
регистры не закрываются и/или счета не закрываются.
может тебе с этим сначала разобраться?

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать