Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проведение документа
Форум программистов > Базы данных и администрирование > 1C и всё что с ней связано
VoodyGoo
Документ имеет принадлежность к бухгалтерскому учету. Документ создаётся сегодня, а проводится, например завтра.
Добавил в реквизиты шапку "ДатаПроведения", и при проведении документа по дате, указанной в реквизите (она превышает дату документа), система выдает сообщение, что у проведённого документа дату менять нельзя. Если провожу на ту же дату. что и дата создания документа, то все нормально.
Как сделать, что бы можно было провести документ на дату позднее его создания, или в чем ошибка?
AlexeyP
Чтобы провести док с новой датой, нужно отменить его проведение, иначе будет вылазить эта ошибка.
Либо при создании дока не проводите его, либо попробовать воспользоваться методом СделатьНеПроведенным().
Хотя могу ошибаться. Я еще сам ламер smile.gif
СделатьНеПроведенным();
Синтаксис:
СделатьНеПроведенным()
Назначение:
Отменить проведение документа.
Замечание:
Метод нельзя использовать в теле предопределенной процедуры ОбработкаПроведения.
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
VoodyGoo
в том то и дело, что документ то не проведен до этого. Но ошибка все равно выходить. Даже если делать отмену проведения перед вызовом обработки проведения
AlexeyP
Не знаю, как ты делаешь (на "ты" не против?), но я вот у себя по быстрому набросал док.
В модуле документа после объясления процедур добавляем еще одну процедуру:

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


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

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

Хотя я вот не понимаю смысла всего этого smile.gif Может не то написал?
Не легче уже в ДатаДок указывать дату проведения, а дату документа оформлять отдельным реквизитом (как в типовой конфе - ДатаДокВходящий)?
puh14
А толку? при проведении используется ТОЛЬКО ДатаДок - всё остальное от лукавого. Так что дополнительный реквизит на проведение задать не получится. может проще датой создания считать ДатаПРоведения, а проводить на ДатаДок? Тогда можно при мерно так

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

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

Цитата(VoodyGoo @ 19:08:2008, 14:20 ) *
... и при проведении документа по дате, указанной в реквизите (она превышает дату документа), система выдает сообщение, что у проведённого документа дату менять нельзя. Если провожу на ту же дату. что и дата создания документа, то все нормально.
Как сделать, что бы можно было провести документ на дату позднее его создания, или в чем ошибка?


Видимо ты пытаешься дату менять из ОбработкаПроведения()?
Не уверен на 100%, но по-моему так делать нельзя
VoodyGoo
Hryv, мне надо сделать что бы проводки легли на определённую дату. Документ может проводится через несколько дней после его создания.




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

P.S на "ты" не против
kaa
Ну так обзови датадок - Датой проведения, а реквизит используй как дату создания wink.gif
VoodyGoo
Цитата(kaa @ 20:08:2008, 02:32 ) *
Ну так обзови датадок - Датой проведения, а реквизит используй как дату создания wink.gif

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

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

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

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

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

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

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

Вопрос решен. С бухгалтерами поговорил ещё раз, и выяснилось. что им дата создания не нужна и вовсе (не могли блин сразу так сказать). Так что просто поменяю дату проведения с датой документа..
Всем спасибо rolleyes.gif
Hryv
Честно говоря не понятно зачем вообще такое понадобилось
Ведь только путаться будете (особенно если есть еще печатные формы)
VoodyGoo
Цитата(Hryv @ 20:08:2008, 06:09 ) *
Честно говоря не понятно зачем вообще такое понадобилось
Ведь только путаться будете (особенно если есть еще печатные формы)

Речь идет о док-те "СписокВБанк". Сначала один из бухгалтеров составляет список сотрудников и получает сумму для перечисления в Банк, а потом другой бухгалтер, после того как деньги в Банк отправленны, проводит документ
Hryv
А почему так принципиально знать дату создания?
Нормальная ситуация - документ сформировали заранее, а провели нужной датой
VoodyGoo
ну это уже не мои заморочки, как просят - так и делаю!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.