gifts2017

Обработка «Изменение времени документа» для 1С:Предприятие 7.7

Опубликовал Юрий Осипов (yuraos) в раздел Обработки - Обработка документов

Обработка позволяет из одного диалога сразу изменить дату-время документа, как не проведенного, ТАК И ПРОВЕДЕННОГО. В остальном она полностью имитирует действия системной обработки. Обработка может использоваться как самостоятельно, так и открываться для изменения документа при исполнении кода, например, в обработчике расшифровки значения ячейки табличного документа.

 

Удивительная вещь - время, могущественное,

а когда в него вмешиваются – опасное … 

Альбус Дамблдор.

 

Описание практической проблемы: 

Как известно, в 1С:Предприятии-77 изменить время (и дату) проведенного документа просто так нельзя. Для этого сначала надо отменить его проведение. Это может создавать определенные сложности для администратора, особенно в больших, многопользовательских базах.

Например, пусть есть документ «Фактура», резервирующая товар, и документ «Отгрузка», непосредственно его списывающая. Эти документы связаны в структуре подчиненности (рис.1 и рис.3). Пусть по каким-то причинам документ «Отгрузка» оказался по времени раньше своей фактуры. Из-за этого отгрузка не проводится и администратору требуется исправить ситуацию. Допустим, служба безопасности строго следит за временем отгрузки в 1С и его изменять не желательно. Тогда, чтобы исправить ситуацию, надо «подвинуть» по времени фактуру.

Если это делать штатными средствами, то  будет довольно долго и муторно:

- Надо отменить поведение документа (из контекстного меню с подтверждением в модальном окне);

- Изменить время документа ( из контекстного меню в другом модальном окне);

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

(выбрать «провести задним числом»).

Существенным недостатком этой цепочки действий является то, что документ, резервирующий товар, продолжительное время будет не проведен, а также то, что документ может вообще не провестись после изменения даты и времени по какой-то причине. Кроме этого в течение времени, пока проведение фактуры отменено, есть вероятность того, что другие пользователи могут зарезервировать своими фактурами этот товар, создав дополнительные проблемы администратору.

 

Особенности работы: 

Предлагаемая обработка решает эти проблемы. Она полностью имитирует действия системной обработки (их диалоги очень похожи - рис.1). Кроме того она позволяет сразу сменить и дату документа. За счет программного выполнения существенно сокращается время выполнения всей процедуры по сравнению с интерактивными действиями, описанными выше. Обработка перед изменением времени или даты проведенного документа отменяет его проведение. Все эти действия осуществляются в одной транзакции. При неудаче на любом из этапов все изменения откатываются.

 

Замечания относительно нового времени документа "Авто-время начало дня", "Авто-время конец дня" и "Авто-время после ТА":

В этих случаях время документа вычисляется следующим образом:

Открывается транзакция.Создается объект документа того же вида и с той же датой, что редактируемый документ (или новой датой, если она была выбрана). Объекту документа устанавливается нужный режим автоматической установки времени при записи нового документа. После чего документ записывается. Считанное после записи время нового документа и используется как искомое. Затем транзакция откатывается для отмены записи в базу.

Возможны проблемы при вычислении "авто-времени" для документов с отключенной автонумерацией и включенным контролем уникальности:

В этом случае обработка записывает "виртуальный" документ следующим образом:  в цикле делается определенное число попыток записи (100  для строкового номера, 1000 для числового). Номер документа устанавливается равным номеру попытки (строковые номера - с префиксом "00-"). Если за устовленное число раз записать документ не удается - выводится сообщение и возвращается "пустое время" "  .  .  ".

Для строковых номеров последнее возможно, если в базе используется префикс номеров "00" и первые 100 номеров с этим префиксом заняты. Ситуация достаточно экзотическая, но возможная.

Для документом с числовым типом номера ... ну надеюсь никто не додумается отключать автонумерацию и оставлять контроль уникальности! Cool

 

Требования:

Особенно ни каких. Желательно наличие загруженной ВК FormEx.dll.

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

ВК FormEx.dll можно скачать с сайта разработчиков http://www.dorex.pro/ или взять из архива файла поставки в папке  ..\FormEx1CPP\.

 

Использование:

Основное назначение - решение проблем при проведении документов из-за нарушения логики их хронологического следования.

Обработка может быть использована самостоятельно - как внешняя или как встроенная. При этом придется выбирать изменяемый документ в поле ввода из списка журнала документов (рис.2).

Но лучше ее использовать через механизм обработки расшифровки ячейки табличного документа. В обработчике этого события можно сформировать меню действий со значением расшифровки ячейки табличного документа.  И если пользователь выбрал из меню соответствующий пункт, открывать обработку, передавая ей ссылку на документ через параметр формы.

Кроме изменения времени туда можно включить и другие действия со значением объекта (рис.3):

  1. открыть на просмотр-редактирование, открыть в списке (журнале);
  2. пометить на удаление, снять пометку на удаление, удалить непосредственно;
  3. провести, отменить проведение документа, сформировать отчет о движениях документа (регистры,проводки, история справочников);
  4. открыть объект для редактирования в обработке 'Редактор Реквизитов' (автор Цылёв Владислав vet7777@mail.ru)

Тогда все просто и удобно будет делаться из любого отчета (например,  «ДеревоДокумента») при двойном клике по ячейке с документом.

Пример кода, реализующий выбор из меню, как показано на рис.3, можно взять из архива файла поставки в файле ПримерКода.txt(пример предполагает наличие загруженной ВК FormEx.dll).

 

Предлагаемая обработка удобна для "точечного", оперативного вмешательства.  

Если же требуется сразу изменить дату-время сразу у многих документов,

то будет больше удобна похожая разработка: http://infostart.ru/public/20462/ (автор Андрей aka AKV77) .

  

Благодарности:

Выражаю большую и искренюю благодарность всем разработчикам ВК 1с++ и FormEx. Желаю им творческих успехов на новом поле деятельности под платформой 8.х !

Скачать файлы

Наименование Файл Версия Размер
ИзменениеВремениДокумента.rar 153
.rar 1,28Mb
11.12.11
153
.rar 1,28Mb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Александр Лыткин (TrinitronOTV) 09.11.11 19:56
хорошая разработка, спасибо
2. A (Kochevnic) 09.11.11 21:02
Спасибо! Обязательно попользуемся
3. Андрей (AKV77) 10.11.11 09:32
Несомненно данная разработка пригодится в работе многим 7-кам. Как альтернативный вариант похожая разработка: http://infostart.ru/public/20462/
4. vkr (vkr) 10.11.11 09:46
Скачал, попробовал... Мощная штука! Беречь от юзеров!!! :)
5. Валерий (warenic) 10.11.11 11:11
Ну что сказать. Штука грамотная. Может легко встраиваться в конфигурацию, а может использоваться самостоятельно.
При неудаче ничего не нарушает.
6. Э. Лукманов (erthia) 11.11.11 08:25
Плюс за решение, особенно октуально, так как альтернативный вариант удален с сайта. Ссылка http://infostart.ru/public/20462/ не работает.
7. Юрий Осипов (yuraos) 11.11.11 09:17
(6) erthia,
странно ... вчера еще открывалась
8. Юрий Осипов (yuraos) 12.11.11 11:48
Уважаемые коллеги!
Спасибо за высокую оценку моих стараний!


В первой версии обработки были определенные проблемы при установке "времени-авто"
для документов с отключенной автонумерацией, но с включенным контролем уникальности номера(смотрите подробности в статье)


Выложена новая версия обработки, в которой я попытался эти проблемы обойти.

Реально проблема осталась только в случае таких документов с числовым типом номера, если в базе их больше 1000 в периоде уникальности номеров.

Но надеюсь такого безобразия ни у кого нет!
;)
Особенно если период уникальности - вся база!
9. Евгений Левченко (MYRZILKA123) 14.11.11 11:36
как раз сейчас пригодилась =)
11. Альтаир (Altair777) 15.11.11 14:37
(0) "http://dorex.ru/?projects&formex&download
Но, похоже, этот сайт продали какой-то туристической конторе. Поэтому файл библиотеке можно взять из архива файла поставки в папке ‘FormEx1CPP’."

Временный переезд на домен http://www.dorex.pro/
12. Юрий Осипов (yuraos) 15.11.11 15:40
14. Олег Почекутов (PochekutovOleg) 15.11.11 16:55
15. Святослав Пузов (sviat02) 16.11.11 03:25
16. Reticent (Reticent) 16.11.11 05:39
Спасибо! уже вставил в свою программу
17. cleose (Лена_Лена) 17.11.11 12:03
Спасибо, иногда бывает очень нужна такая вещь.
18. Светлана Даниленко (LanaSN) 18.11.11 10:34
Очень удобная обработка, большое спасибо!
19. Viktor (kurvik) 21.11.11 16:50
Очень удобная обработка, большое спасибо!Как раз сейчас пригодится.Требуется воостановить порядок записи документов.Есть похожая разработка: http://infostart.ru/public/20462/
20. Юрий Осипов (yuraos) 21.11.11 19:33
kurvik пишет:

Очень удобная обработка, большое спасибо!Как раз сейчас пригодится.Требуется воостановить порядок записи документов.Есть похожая разработка: http://infostart.ru/public/20462/

Ага видел. ;))) Неплохая обработка.
Больше предназначена для группового изменения времени документов.
Моя же - для "точечного" оперативного вмешательства.
21. Юрий Осипов (yuraos) 22.11.11 21:58
Доброго времени суток! Обновлен файл поставки.
Внесены несущественные изменения:
1. Если в поле ввода новой даты документа находится пустое значение, то при нажатии на кнопку календаря новая дата устанавливается текущему значению даты документа (а не текущей дате). Что более удобно.
2. Более коррекно отрабатывается ситуация когда при переповедении в модуле документа отменяется его проведение. В предыдущей версии обработки возникала ошибка времени исполнения при попытке зафиксировать транзакцию. Теперь результат тот же (изменения откатываются), но без ошибки времени исполнения.
22. Victor Nespyatin (victuan) 30.11.11 07:00
(0) "другие пользователи могут зарезервировать своими фактурами этот товар".
А нельзя ли в описании обработки использовать названия объектов из типовых российских конфигураций?
Я не знаю ни одной конфигурации, в которой товар резервируется фактурами. Фактуры (счет-фактуры) используются для отражения НДС в книге продаж. А вот для резервирования товара больше подходит "Заявка покупателя" (ТИС) или "Счет (на оплату)" (Бухгалтерия).
23. Юрий Осипов (yuraos) 30.11.11 17:44
(22) victuan,
1) вообще-то пример несколько искуственен, хотя и
опирается на реальную организацию документооборота (не типового).
он иллюстрирует общую проблему,
которая может проявляться в разных ситуациях.
2) описанный в примере документооборот больше соответствует
ордерной системе отгрузки со склада, реализованной в ТК УТ-8.1.10.3.

Документ "Фактура" в примере больше соответстыует фактуре в первоначальном
смысле этого слова (смотри историческую справку), а не ндс-ному счету-фактуре.
Хотя и не совсем: он не фиксирует факт отгрузки, а резервирует товар для нее.

Документ "Отгрузка" - фактически является полным аналогом ТоварномуРасходномуОрдеру в УТ.

3) Историческая справка:
В начале (с незапамятных времен) были следующие первичные документы:
а) документ "Фактура" (фактически тоже самое, что "Накладная") -
- является складским документом, фиксирующий факт отгрузки.
б) документ "Счет" - является основанием для оплаты ТМЦ и услуг.
в) также был комбинированный докмент "Счет-фактура" (женского рода, "она") -
- является основанием и отгрузки и оплаты.

Потом жулики из министерства финансов придумали жульническую зачетную схему
исчисления НДС
(чтобы иметь формальную возможность брать его не с "добавочной стоимости", а с оборота).

Типа для учета этих зачетов НДС (на деле - для расширения возможностей творить произвол при его исчислении)
они внедрили в общественное сознание документ "Счет-фактура" (мужского рода, "он")

После длительного пиара этот "счет-фактура" стал самым главным буховским документом, заменяющим всё остальное.

Хотя он и не является по сути дела первичным документом. Он ничего не фиксирует в дополнение к другим документам.

Тот же НДС, например, указывается в накладной (т.е. фактуре) ТОРГ-12. И нет никаких разумных оснований не принимать НДС к зачету на основании этого первичного документа.

И даже печать не нада ставить на счете-фактуре!!! ;)))))) Жду с нетерпением когда его отменят!
24. Victor Nespyatin (victuan) 30.11.11 17:54
(23)"а) документ "Фактура" (фактически тоже самое, что "Накладная") -
- является складским документом, фиксирующий факт отгрузки.
"
Вот именно, факт отгрузки, а у тебя в описании он резервирует товар, т.е. является по сути "документом "Счет" - является основанием для оплаты ТМЦ и услуг".
А факт отгрузки у тебя в описании фиксирует "Отгрузка".
Исправишь?
25. Victor Nespyatin (victuan) 30.11.11 17:57
"После длительного пиара этот "счет-фактура" стал самым главным
буховским документом, заменяющим всё остальное.
"
С чего это ради главным? Всего лишь для "обслуживания" НДС.
Ни в коем случае не фиксирует ни отгрузку товара со склада, ни передачу прав на товар покупателю. Для этих целей - расходная накладная (напр. оформленная по форме ТОРГ-12).
26. Юрий Осипов (yuraos) 01.12.11 19:00
victuan пишет:

(23)" а) документ " Фактура " (фактически тоже самое, что "Накладная") -
- является складским документом, фиксирующий факт отгрузки. "
Вот именно, факт отгрузки, а у тебя в описании он резервирует товар, т.е. является по сути " документом " Счет " - является основанием для оплаты ТМЦ и услуг ".
А факт отгрузки у тебя в описании фиксирует " Отгрузка ".
Исправишь?

Угу, исправил... так лутше ???
27. Юрий Осипов (yuraos) 01.12.11 19:03
victuan пишет:

"После длительного пиара этот "счет-фактура" стал самым главным
буховским документом, заменяющим всё остальное. "
С чего это ради главным? Всего лишь для "обслуживания" НДС.
Ни в коем случае не фиксирует ни отгрузку товара со склада, ни передачу прав на товар покупателю. Для этих целей - расходная накладная (напр. оформленная по форме ТОРГ-12).

----
главным в том смысле, что из-за счетов-факту бухи всем мозг в первую очередь выносят....
... а что, например, в ТОРГ-12 или в ТТН могут вообще не посмотреть. ;)))))))))))))))))))))
28. Victor Nespyatin (victuan) 02.12.11 04:34
(26)Не вижу изменений. Из описания разработки: "Например, пусть есть документ «Фактура», резервирующая товар, и документ «Отгрузка», непосредственно его списывающая. Эти документы связаны в структуре подчиненности (рис.1 и рис.3). "

(27) Тут ты не прав. Просто налоговики часто проверяют правомерность применения вычета по НДС (и обычно с этого начинают проверку) - для этого нужен правильно оформленный счет-фактура от поставщика. А вот для признания расходов по налоговому учету критерии проверки различны и зависят от режима налогооблажения, поэтому тут под проверку попадут или расходные накладные, товарно-транспортные накладные или документы оплаты (банк, касса, зачеты).
29. Юрий Осипов (yuraos) 11.12.11 20:47
Всем доброго времени суток!
Обновлен архив файлов поставки.
В файл ПримерКода.txt добавлены фрагменты,
реализующие выполнение команды открытия документа
для редактировани в обработке
'Редактор Реквизитов'(автор Цылёв Владислав vet7777@mail.ru)
30. Света Соколова (studentka) 16.01.12 11:15
31. Гость 22.01.12 13:57
Да, иногда надо изменить время, спасибо, посмотрим
32. IR IR (Artemuch2) 21.03.12 15:08
Доброго времени суток! не думал что пригодится но вот понадобилась такая обработка. посмотрим
33. Юрий Осипов (yuraos) 22.03.12 16:53
(32) Artemuch2,
-------------------------------------
Если б знали, что там в прикупе,
Жили б в СОЧИ, а не в МОСКВЕ!
----------------------------А.Пушной.
:) )))))
34. Вера Запевалова (Ката174) 16.06.12 13:19
Спасибо. Удобно. Полезно.
35. Лена (Ленкина) 04.04.13 11:25
Спасибо, возможно воспользуюсь.
36. Сергей (Che) Коцюра (CheBurator) 04.04.13 20:20
Открывается транзакция.Создается объект документа того же вида и с той же датой, что редактируемый документ (или новой датой, если она была выбрана). Объекту документа устанавливается нужный режим автоматической установки времени при записи нового документа. После чего документ записывается. Считанное после записи время нового документа и используется как искомое. Затем транзакция откатывается для отмены записи в базу.
.
а зачем так сложно?
я у себя делаю - открываю прямую или обратную выборку документов. считываю первый док. - время ранее которого или позже которого надо записать/сдвинуть - определено.
.
при сдвижке документов может возникнуть ситуация, когда в новой точке времени проведенный документ не проведется - вот как раз такую проблему я отрабатывываю в транзакции.
.
ну и хорошо бы при сдвижке документа "отрабатывать" как-то подлчиненные документы - а то окажется что родитель позже дочек...
37. Юрий Осипов (yuraos) 05.04.13 17:47
(36) CheBurator,
Я как то ореинтировался на то,
что делает системная команда изменения времени документа.

по поводу

ну и хорошо бы при сдвижке документа "отрабатывать" как-то подлчиненные документы - а то окажется что родитель позже дочек...

то системная процедура подчиненные никак не трогает,
если надо - ходи по структуре подчиненности и двигай их индивидульно куда хочешь из контестной менюшки:


У меня так сказать реализован базовый функционал,
а у AKV77 (3) есть более функциональная обработка
38. Марина Колесник (Kontora_pishet) 15.01.15 15:57
Помогите пожалуйста! как подгрузить данную обработку к 1с? Я не программист, а обработка очень нужна. Над изменить время проведения документов за три года.
перебрасываю приходные документы из фармпрограммы, и банк разношу позже. поэтому и поступление товара, и списание с расчетного счета проводятся временем 23:59:59. Неправильно закрывается 60 счет, нужно весь приход перебить ранним временем.
1с - семерка.
39. Юрий Осипов (yuraos) 15.01.15 19:31
(38) Kontora_pishet,
Предлагаемая обработка удобна для "точечного", оперативного вмешательства.
Если же требуется сразу изменить дату-время сразу у многих документов,
то будет больше удобна похожая разработка: http://infostart.ru/public/20462/ (автор Андрей aka AKV77) .
40. Марина Колесник (Kontora_pishet) 17.01.15 00:03
Спасибо большое! Скачаю эту. А все же, как правильно ее подгрузить??
41. Юрий Осипов (yuraos) 17.01.15 08:18
(40) Kontora_pishet,
А все же, как правильно ее подгрузить??

Вы наверное имеете ввиду - как ее включить в состав конфигурации...
...Этого делать необязательно.

Просто открываете обработку из внешнего файла в режиме 1С:предприятие.

Как пользоваться той обработкой достаточно понятно написано в публикации
http://infostart.ru/public/20462/

Если что непонятно или валятся ошибки при работе обработки -
- обращайтесь ее к автору:
AKV77
42. Андрей Ковальчук (AndKovalchuk) 04.04.15 14:24
У меня пользователи как-то умудрились записать в зарплатную SQL-базу документ с пустой датой, причем это больничный лист, по которому проведен расчет и период уже закрыт. И еще один больничный лист с датой 2500 года. Потому SQL жутко тормозит. Попробую исправить с помощью данной обработки.
43. Lubov Filippova (laf) 08.09.16 05:53
В ЗИК часто бывают смены статуса работника одной датой. Время документа в истории не указывается, но желательно поменять их местами. Напр., возврат с одной временной должности и в этот же день перевод на другую. Пробую эту обработку, чтобы изменить время документа - не срабатывет. Т.е. время документа в "истории" по сотруднику так и не показывается.