• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Проведение документа

  • Автор темы VoodyGoo
  • Дата начала
V

VoodyGoo

Документ имеет принадлежность к бухгалтерскому учету. Документ создаётся сегодня, а проводится, например завтра.
Добавил в реквизиты шапку "ДатаПроведения", и при проведении документа по дате, указанной в реквизите (она превышает дату документа), система выдает сообщение, что у проведённого документа дату менять нельзя. Если провожу на ту же дату. что и дата создания документа, то все нормально.
Как сделать, что бы можно было провести документ на дату позднее его создания, или в чем ошибка?
 
A

AlexeyP

Чтобы провести док с новой датой, нужно отменить его проведение, иначе будет вылазить эта ошибка.
Либо при создании дока не проводите его, либо попробовать воспользоваться методом СделатьНеПроведенным().
Хотя могу ошибаться. Я еще сам ламер :)
СделатьНеПроведенным();
Синтаксис:
СделатьНеПроведенным()
Назначение:
Отменить проведение документа.
Замечание:
Метод нельзя использовать в теле предопределенной процедуры ОбработкаПроведения.
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
 
V

VoodyGoo

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

AlexeyP

Не знаю, как ты делаешь (на "ты" не против?), но я вот у себя по быстрому набросал док.
В модуле документа после объясления процедур добавляем еще одну процедуру:

Прцедура УстановкаДатыПроведения()
Если ПустоеЗначение(ДатаПроведения)=0 Тогда
ДатаДок = ДатаПроведения;
КонецЕсли;
КонецПроцедуры;


На форму добавляю реквизит (поле ввода) "ДатаПроведения". В его свойствах на вкладке Дополнительно в поле формула пишу:
УстановкаДатыПроведения();

Если открываем непроведенный док и пишем в поле ДатаПроведения; какую-нибудь дату, жмем Enter, дата дока меняется на введенную нами.
Проводим док и радуемся :)

Хотя я вот не понимаю смысла всего этого :) Может не то написал?
Не легче уже в ДатаДок указывать дату проведения, а дату документа оформлять отдельным реквизитом (как в типовой конфе - ДатаДокВходящий)?
 
P

puh14

А толку? при проведении используется ТОЛЬКО ДатаДок - всё остальное от лукавого. Так что дополнительный реквизит на проведение задать не получится. может проще датой создания считать ДатаПРоведения, а проводить на ДатаДок? Тогда можно при мерно так

Процедура ОбработкаПроведения()
Если ПустоеЗначение(ДатаПроведения) = 0 Тогда
Если ТекущаяДата()<ДатаДок Тогда
Сообщить("Проведение невозможно на текущий день!");
НеПроводитьДокумент();
КонецЕсли;
КонецЕсли;
 
A

AlexeyP

Так что дополнительный реквизит на проведение задать не получится. может проще датой создания считать ДатаПРоведения, а проводить на ДатаДок?
я к этому и пришел в предыдущем посте.
 
H

Hryv

VoodyGoo, а тебе собственно что надо сделать?
Знать дату, когда док фактически провели или чтобы проводки легли на нужную дату
В принципе, есть несколько обходных путей
Поясни, что конкретно ты хочешь получить

... и при проведении документа по дате, указанной в реквизите (она превышает дату документа), система выдает сообщение, что у проведённого документа дату менять нельзя. Если провожу на ту же дату. что и дата создания документа, то все нормально.
Как сделать, что бы можно было провести документ на дату позднее его создания, или в чем ошибка?

Видимо ты пытаешься дату менять из ОбработкаПроведения()?
Не уверен на 100%, но по-моему так делать нельзя
 
V

VoodyGoo

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




AlexeyP, так получается всё, но смысла только нет. Получается, что при проведении меняется и сама дата документа (то есть дата его создания), а это не правильно как-то

P.S на "ты" не против
 
K

kaa

Ну так обзови датадок - Датой проведения, а реквизит используй как дату создания ;)
 
V

VoodyGoo

Ну так обзови датадок - Датой проведения, а реквизит используй как дату создания ;)
ДатуДок переименовать то не удастся, это ведь предопределённый реквизит документа. Можно конецно при создании продублировать эту дату в другом реквизите, и потом при проведении на дату лок поставить текущую дату, но тогда могут быть последствия потом, в отчетах каких нибудь.
Может проводку нельзя пустить по не дате документа, из-за того, что документ имеет принадлежность к бухучёту(стоит галочка)?
 
K

kaa

Нет операция документа ВСЕГДА делается по дате документа, переименовывать датудок, не надо просто поменяй на форме реквизиты местами, при создании документа в Реквизит ДатаПроведения вставляй текущую дату ,а датудок будут менять на какую надо.

Поскольку документ не проведен, изменений по бух счетам не будет, но после проведения конечно изменятся данные в отчетах, но это будет в любом случае.
 
H

Hryv

VoodyGoo, тебе в принципе правильно все советуют
операция всегда привязана к ДатаДок
Если надо отдельно хранить дату создания, то храни ее в специально созданном реквизите

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

Но можно немного поизвращаться
Допустим есть Документ1 - создай второй документ, например, ОперацияДокумент1, с одним единственным реквизитом типа Документ1.

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

Может быть решение не очень красивое, но для твоей хитрой ситуации дает именно то, что ты хочешь
 
V

VoodyGoo

Hryv
Я конечно думал о создании отдельного документа для операции, но исходный привязан ещё и к компоненте "Расчет", а я с этим не знаком как-то, и поэтому не знаю о последствиях.
А если я у док-та для операции установлю привязку к тем же компонентам (т.е. бух и расчет), то кажется нормально все будет. Ведь привязка к компоненте расчет обеспечивает создание записи в Журнале расчетов?

Мне второй вариант кажется более правильным...

Вопрос решен. С бухгалтерами поговорил ещё раз, и выяснилось. что им дата создания не нужна и вовсе (не могли блин сразу так сказать). Так что просто поменяю дату проведения с датой документа..
Всем спасибо ;)
 
H

Hryv

Честно говоря не понятно зачем вообще такое понадобилось
Ведь только путаться будете (особенно если есть еще печатные формы)
 
V

VoodyGoo

Честно говоря не понятно зачем вообще такое понадобилось
Ведь только путаться будете (особенно если есть еще печатные формы)
Речь идет о док-те "СписокВБанк". Сначала один из бухгалтеров составляет список сотрудников и получает сумму для перечисления в Банк, а потом другой бухгалтер, после того как деньги в Банк отправленны, проводит документ
 
H

Hryv

А почему так принципиально знать дату создания?
Нормальная ситуация - документ сформировали заранее, а провели нужной датой
 
V

VoodyGoo

ну это уже не мои заморочки, как просят - так и делаю!
 
Мы в соцсетях:

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