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



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

 

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

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

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

 

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

Как известно, в 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).

 

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

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

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

  

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

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

42 Comments

  1. TrinitronOTV

    хорошая разработка, спасибо

    Reply
  2. Kochevnic

    Спасибо! Обязательно попользуемся

    Reply
  3. AKV77

    Несомненно данная разработка пригодится в работе многим 7-кам. Как альтернативный вариант похожая разработка: http://infostart.ru/public/20462/

    Reply
  4. vkr

    Скачал, попробовал… Мощная штука! Беречь от юзеров!!! 🙂

    Reply
  5. warenic

    Ну что сказать. Штука грамотная. Может легко встраиваться в конфигурацию, а может использоваться самостоятельно.

    При неудаче ничего не нарушает.

    Reply
  6. erthia

    Плюс за решение, особенно октуально, так как альтернативный вариант удален с сайта. Ссылка http://infostart.ru/public/20462/ не работает.

    Reply
  7. yuraos

    (6) erthia,

    странно … вчера еще открывалась

    Reply
  8. yuraos

    Уважаемые коллеги!

    Спасибо за высокую оценку моих стараний!

    В первой версии обработки были определенные проблемы при установке «времени-авто»

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

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

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

    Но надеюсь такого безобразия ни у кого нет!

    😉

    Особенно если период уникальности — вся база!

    Reply
  9. MYRZILKA123

    как раз сейчас пригодилась =)

    Reply
  10. Altair777

    (0) «http://dorex.ru/?projects&formex&download

    Но, похоже, этот сайт продали какой-то туристической конторе. Поэтому файл библиотеке можно взять из архива файла поставки в папке ‘FormEx1CPP’.»

    Временный переезд на домен http://www.dorex.pro/

    Reply
  11. yuraos

    и надолго? ;)))

    Reply
  12. Altair777
  13. PochekutovOleg

    Спасибо

    Reply
  14. sviat02

    может и пригодится!

    Reply
  15. Reticent

    Спасибо! уже вставил в свою программу

    Reply
  16. Лена_Лена

    Спасибо, иногда бывает очень нужна такая вещь.

    Reply
  17. LanaSN

    Очень удобная обработка, большое спасибо!

    Reply
  18. kurvik

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

    Reply
  19. yuraos
    kurvik пишет:

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

    Ага видел. ;))) Неплохая обработка.

    Больше предназначена для группового изменения времени документов.

    Моя же — для «точечного» оперативного вмешательства.

    Reply
  20. yuraos

    Доброго времени суток! Обновлен файл поставки.

    Внесены несущественные изменения:

    1. Если в поле ввода новой даты документа находится пустое значение, то при нажатии на кнопку календаря новая дата устанавливается текущему значению даты документа (а не текущей дате). Что более удобно.

    2. Более коррекно отрабатывается ситуация когда при переповедении в модуле документа отменяется его проведение. В предыдущей версии обработки возникала ошибка времени исполнения при попытке зафиксировать транзакцию. Теперь результат тот же (изменения откатываются), но без ошибки времени исполнения.

    Reply
  21. victuan

    (0) «другие пользователи могут зарезервировать своими фактурами этот товар«.

    А нельзя ли в описании обработки использовать названия объектов из типовых российских конфигураций?

    Я не знаю ни одной конфигурации, в которой товар резервируется фактурами. Фактуры (счет-фактуры) используются для отражения НДС в книге продаж. А вот для резервирования товара больше подходит «Заявка покупателя» (ТИС) или «Счет (на оплату)» (Бухгалтерия).

    Reply
  22. yuraos

    (22) victuan,

    1) вообще-то пример несколько искуственен, хотя и

    опирается на реальную организацию документооборота (не типового).

    он иллюстрирует общую проблему,

    которая может проявляться в разных ситуациях.

    2) описанный в примере документооборот больше соответствует

    ордерной системе отгрузки со склада, реализованной в ТК УТ-8.1.10.3.

    Документ «Фактура» в примере больше соответстыует фактуре в первоначальном

    смысле этого слова (смотри историческую справку), а не ндс-ному счету-фактуре.

    Хотя и не совсем: он не фиксирует факт отгрузки, а резервирует товар для нее.

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

    3) Историческая справка:

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

    а) документ «Фактура» (фактически тоже самое, что «Накладная») —

    — является складским документом, фиксирующий факт отгрузки.

    б) документ «Счет» — является основанием для оплаты ТМЦ и услуг.

    в) также был комбинированный докмент «Счет-фактура» (женского рода, «она») —

    — является основанием и отгрузки и оплаты.

    Потом жулики из министерства финансов придумали жульническую зачетную схему

    исчисления НДС

    (чтобы иметь формальную возможность брать его не с «добавочной стоимости», а с оборота).

    Типа для учета этих зачетов НДС (на деле — для расширения возможностей творить произвол при его исчислении)

    они внедрили в общественное сознание документ «Счет-фактура» (мужского рода, «он»)

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

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

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

    И даже печать не нада ставить на счете-фактуре!!! ;)))))) Жду с нетерпением когда его отменят!

    Reply
  23. victuan

    (23а) документ «Фактура» (фактически тоже самое, что «Накладная») —

    — является складским документом, фиксирующий факт отгрузки.
    »

    Вот именно, факт отгрузки, а у тебя в описании он резервирует товар, т.е. является по сути «документом «Счет» — является основанием для оплаты ТМЦ и услуг«.

    А факт отгрузки у тебя в описании фиксирует «Отгрузка«.

    Исправишь?

    Reply
  24. victuan

    «После длительного пиара этот «счет-фактура» стал самым главным

    буховским документом, заменяющим всё остальное.
    »

    С чего это ради главным? Всего лишь для «обслуживания» НДС.

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

    Reply
  25. yuraos
    victuan пишет:

    (23)» а) документ » Фактура » (фактически тоже самое, что «Накладная») —

    — является складским документом, фиксирующий факт отгрузки. »

    Вот именно, факт отгрузки, а у тебя в описании он резервирует товар, т.е. является по сути » документом » Счет » — является основанием для оплаты ТМЦ и услуг «.

    А факт отгрузки у тебя в описании фиксирует » Отгрузка «.

    Исправишь?

    Угу, исправил… так лутше ???

    Reply
  26. yuraos
    victuan пишет:

    «После длительного пиара этот «счет-фактура» стал самым главным

    буховским документом, заменяющим всё остальное. »

    С чего это ради главным? Всего лишь для «обслуживания» НДС.

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

    —-

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

    … а что, например, в ТОРГ-12 или в ТТН могут вообще не посмотреть. ;)))))))))))))))))))))

    Reply
  27. victuan

    (26)Не вижу изменений. Из описания разработки: «Например, пусть есть документ «Фактура», резервирующая товар, и документ «Отгрузка», непосредственно его списывающая. Эти документы связаны в структуре подчиненности (рис.1 и рис.3). »

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

    Reply
  28. yuraos

    Всем доброго времени суток!

    Обновлен архив файлов поставки.

    В файл ПримерКода.txt добавлены фрагменты,

    реализующие выполнение команды открытия документа

    для редактировани в обработке

    ‘Редактор Реквизитов'(автор Цылёв Владислав vet7777@mail.ru)

    Reply
  29. studentka

    Удобная обработка

    Reply
  30. Гость

    Да, иногда надо изменить время, спасибо, посмотрим

    Reply
  31. Artemuch2

    Доброго времени суток! не думал что пригодится но вот понадобилась такая обработка. посмотрим

    Reply
  32. yuraos

    (32) Artemuch2,

    ————————————-

    Если б знали, что там в прикупе,

    Жили б в СОЧИ, а не в МОСКВЕ!

    —————————-А.Пушной.

    🙂 )))))

    Reply
  33. Ката174

    Спасибо. Удобно. Полезно.

    Reply
  34. Ленкина

    Спасибо, возможно воспользуюсь.

    Reply
  35. CheBurator

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

    .

    а зачем так сложно?

    я у себя делаю — открываю прямую или обратную выборку документов. считываю первый док. — время ранее которого или позже которого надо записать/сдвинуть — определено.

    .

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

    .

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

    Reply
  36. yuraos

    (36) CheBurator,

    Я как то ореинтировался на то,

    что делает системная команда изменения времени документа.

    по поводу


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

    то системная процедура подчиненные никак не трогает,

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

    У меня так сказать реализован базовый функционал,

    а у AKV77 (3) есть более функциональная обработка

    Reply
  37. Kontora_pishet

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

    перебрасываю приходные документы из фармпрограммы, и банк разношу позже. поэтому и поступление товара, и списание с расчетного счета проводятся временем 23:59:59. Неправильно закрывается 60 счет, нужно весь приход перебить ранним временем.

    1с — семерка.

    Reply
  38. yuraos

    (38) Kontora_pishet,

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

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

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

    Reply
  39. Kontora_pishet

    Спасибо большое! Скачаю эту. А все же, как правильно ее подгрузить??

    Reply
  40. yuraos

    (40) Kontora_pishet,

    А все же, как правильно ее подгрузить??

    Вы наверное имеете ввиду — как ее включить в состав конфигурации…

    …Этого делать необязательно.

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

    Как пользоваться той обработкой достаточно понятно написано в публикации

    http://infostart.ru/public/20462/

    Если что непонятно или валятся ошибки при работе обработки —

    — обращайтесь ее к автору:

    AKV77

    Reply
  41. AndKovalchuk

    У меня пользователи как-то умудрились записать в зарплатную SQL-базу документ с пустой датой, причем это больничный лист, по которому проведен расчет и период уже закрыт. И еще один больничный лист с датой 2500 года. Потому SQL жутко тормозит. Попробую исправить с помощью данной обработки.

    Reply
  42. laf

    В ЗИК часто бывают смены статуса работника одной датой. Время документа в истории не указывается, но желательно поменять их местами. Напр., возврат с одной временной должности и в этот же день перевод на другую. Пробую эту обработку, чтобы изменить время документа — не срабатывет. Т.е. время документа в «истории» по сотруднику так и не показывается.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *