Имя: Пароль:
1C
1С v8
Проведение документа, у которого в основании есть документы в закрытом периоде
,
0 Валидатор
 
14.11.13
13:05
Есть самописный документ, который вводился на основании других документов, и в этой цепочке документов начальный документ, допустим датой 01.12.2011, а последний документ вообще 13 года, так вот, при перепроведении последнего летит ошибка, что редактирование запрещено, мол закрытый период, потому что если мы проводим последний документ, он цепляет и предыдущие, как сделать, чтобы проводился только тот документ, который мы проводим, не цепляя остальные? Границы редактирования сдвигать нельзя, права менять тоже(
1 Maxus43
 
14.11.13
13:06
Если при проведении документа перепроводится-перезаписывается докмент основание - это кривая реализация
2 Euguln
 
14.11.13
13:06
(0) вырвать руки тому, кто писал документ
3 Maxus43
 
14.11.13
13:06
провести конечно можно, но это будет нарушением логики. в сторону обменданными посмотреть например
4 Валидатор
 
14.11.13
13:07
(1) это давно очень кто то реализовывал, х3, но так есть, причем если админские права, то ошибка не летит, какое условие на проверку воткнуть в обработке проведения, чтобы ошибка не вылетала, а документ проводился?(
5 Валидатор
 
14.11.13
13:07
(3) ну это уже их проблемы) они хотят чтобы новый документ проводился, не смотря на то, что у него основанием могут быть доки в закрытом периоде
6 Maxus43
 
14.11.13
13:07
>>если админские права, то ошибка не летит
на полные права дата запрета может не распространятся
7 Maxus43
 
14.11.13
13:08
(5) тебе же ноги потом отрвут что поехали данные в закрытом периоде
8 Валидатор
 
14.11.13
13:08
(6) это да, так как сделать чтобы документ проводился все таки?
9 Валидатор
 
14.11.13
13:08
(7) не, нужно чтобы данные в закрытом периоде не менялись, а просто проводился документ который проводим
10 Maxus43
 
14.11.13
13:09
(9) дак смотри в код, почему при проведении документа 2013 года трогаются данные 2012
11 Валидатор
 
14.11.13
13:16
блин и так криворукий, так еще и за другими криворукими дебилами теперь переделывать, ох уж этот бит
12 Maxus43
 
14.11.13
13:28
>>ох уж этот бит
бугага. они такие, да
13 Валидатор
 
14.11.13
13:29
(12) мучайся после них потом(
14 Maxus43
 
14.11.13
13:31
(13) я мучаюсь, ничо, жить можно и лучше переписать заново всё
15 Валидатор
 
14.11.13
13:33
(14) это же займет явно больше чем пара часов)
16 Maxus43
 
14.11.13
13:37
а кто сказал что жить легко?
БИТ - благодетели мира 1с, после них столько работы - что я уже 2 года не испытываю недостатка в оной
17 МойКодУныл
 
14.11.13
13:42
Лучше отключить перепроведение задним числом...

Последовательностей у вас нет? Не слетают они?
Есть подозрение, что в прошлом документе что-нить заполняется(какой-нить реквизит не значимый для проведения). Любят так былокодить.
Если проведение не меняется, то как минимум заменить на РежимЗаписиДокумента.Запись.
А так - смотри подписку на событие, где идет проверка даты запрета и пиши под себя, чтобы для записи из модуля проведения твоих самописок она не контролировалась. Но это в любом случае криво.


(16) БиТ - да, лучшие=). Часто создают дополнительные рабочие места для программистов 1С.
18 Sammo
 
14.11.13
13:51
(17) Кстати, пожалуй довольно частая ситуация (это я про запись некритичного реквизита в документе основании).
Еще 1 вариант запись в режиме ОбменгДанными.Загрузка = Истина
В этом случае _могут_ отключаться некоторые проверки.
Правда не уверен - слетит ли последовательность.
19 Валидатор
 
14.11.13
13:55
(18) в начале обработки проведения документа при проведении которого ошибка летит?
20 Serg_1960
 
14.11.13
13:55
(All) Народ, прежде чем советовать, вспомните что при обмене данными документы не проводятся :(
21 Serg_1960
 
14.11.13
14:11
Как вариант: в параметрах сеанса изменить дату запрета редактирования данных; начать транзакцию; провести документ; выгрузить движения документа; отменить транзакцию; загрузить движения документа; восстановить дату в параметрах сеанса... как-то типа так.

Но прежде чем сесть писать обработку - прочти ещё раз первые посты ветки и крепко подумай ещё раз.
22 Maxus43
 
14.11.13
14:16
логику надо переделывать, не надо играться с датами, надо бдить границы последовательностей коли есть и другие штуки-дрюки
23 Starhan
 
14.11.13
14:18
(0)Найти где изменяется документ в закрытом периоде (и в случае елси там тупая перезапись без изменения данных) убрать этот кусок не предлагать?

ну а если данные меняются то разобраться что к чему.
24 Валидатор
 
14.11.13
15:26
в общем нашел запрос, который всю малину портит:

|ВЫБРАТЬ
|    Ссылка
|ИЗ
    Документ.ЗаказПокупателя
    |ГДЕ
|    Проведен И ДоговорКонтрагента = &ДоговорКонтрагента И
|    НачалоПериода(Дата, День) = ДатаОплаты
                    |
теперь думаю сделать, чтобы брались только те документы, у которых Дата Документа больше даты запрета документов, так же будет это:ВЫБРАТЬ
                                   |    ЗаказПокупателя.Ссылка
                                   |ИЗ
                                   |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                                   |ГДЕ
                                   |    ЗаказПокупателя.Проведен
                                   |    И ЗаказПокупателя.ДоговорКонтрагента = &ДоговорКонтрагента
                                   |    И НАЧАЛОПЕРИОДА(ЗаказПокупателя.Дата, ДЕНЬ) = ЗаказПокупателя.ДатаОплаты
                                   |    И ЗаказПокупателя.Дата > &ДатаЗапретаРедактирования"
25 Валидатор
 
14.11.13
15:28
только почему в 8.1 нету константы дата запрета редактирования? мне же нужно будет в параметр потом передавать
Запрос.УстановитьПараметр("ДатаЗапретаРедактирования", Константы..??)
26 Serg_1960
 
14.11.13
16:08
Я уж не помню как дата запрета в 8.1, но кажется она всю жизнь была в параметрах сеанса и в регистрах, а не в константах...

PS: ну вот почему так - 8.1 всплыла в конце обсуждения. Все уже давно только с позиции 8.2 общаются (а продвинутые - 8.3)
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.