|
При программном проведении документа из обработки документ очищается | ☑ | ||
---|---|---|---|---|
0
Prisian
01.07.15
✎
15:09
|
Доброго времени суток!
|
|||
1
Andrey2C
01.07.15
✎
15:10
|
Из какой обработки? Из стандартной?
|
|||
2
Mikeware
01.07.15
✎
15:10
|
"продолжайте наблюдения"©
|
|||
3
Serg_1960
01.07.15
✎
15:10
|
(0) Это вопрос или утверждение?
|
|||
4
Prisian
01.07.15
✎
15:11
|
Извиняюсь, нажал Энтер, не дописав суть проблемы.
|
|||
5
Mikeware
01.07.15
✎
15:11
|
(3) это задание...
|
|||
6
Andrey2C
01.07.15
✎
15:12
|
"Групповая обработка справочников и документов" вам в помощь. Она врядли будет очищать чего то там)))
|
|||
7
Prisian
01.07.15
✎
15:14
|
Есть конфигурация самописная. При заполнении и расчете документа из формы документа, он и заполняет и расчитывает документ и проводит. Но если я эти же процедуры (заполнения, расчета и проведения) вызываю из обработки - документ создается, в отладчике проводится и есть как заполненные табличные части так и движения по нему. Но после проведения в базе данных только пустой документ.
|
|||
8
Serg_1960
01.07.15
✎
15:15
|
(6) Лучше универсальную подбор и обработку объектов посоветуй - любые хотелки, всё что пожелаешь. И даже очистит.
|
|||
9
Mikeware
01.07.15
✎
15:16
|
(7) вангую: в обработке что-то неправильно.
|
|||
10
Serg_1960
01.07.15
✎
15:16
|
(7) "ЭтотОбъект" - он разный.
|
|||
11
Prisian
01.07.15
✎
15:16
|
Вот код, из обработки: Месяц = КонецМесяца(ДобавитьМесяц(Период, Итератор));
ФлагРасчета = ЛОЖЬ; ДатаДокумента = ?(КонецМесяца(ДатаРасчета) = Месяц, ДатаРасчета, Месяц); // Проверяем не было ли в этом периоде расчета ДокументРасчета = РаботаСРасчетами.ПолучитьДокументРасчета(ЛицевойСчет, ДатаДокумента); Если ДокументРасчета = Документы.Расчет.ПустаяСсылка() Тогда ДокументРасчета = Документы.Расчет.СоздатьДокумент(); ДокументРасчета.Дата = ДатаДокумента; ДокументРасчета.УстановитьНовыйНомер(); ДокументРасчета.Организация = Организация; ДокументРасчета.ЛицевойСчет = ЛицевойСчет; ДокументРасчета.Автор = Пользователь; ДокументРасчета.Записать(); Иначе ДокументРасчета = ДокументРасчета.ПолучитьОбъект(); ДокументРасчета.Дата = ДатаДокумента; ДокументРасчета.Расчеты.Очистить(); ДокументРасчета.Льготы.Очистить(); ДокументРасчета.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЕсли;ДокументОбъект = ДокументРасчета.Ссылка.ПолучитьОбъект(); Документы.Расчет.ЗаполнитьТабличнуюЧастьИнформациейНеобходимойДляРасчетов(ДокументОбъект); ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); Документы.Расчет.РасчитатьНачисления(ДокументОбъект); ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); Документы.Расчет.ОтразитьДанныеТабличнойЧастиРасчетыВРегистрахРасчетов(ДокументОбъект); Документы.Расчет.РасчитатьЛьготы(ДокументОбъект); Документы.Расчет.ОчиститьДвиженияПоРегиструРасчетаНеобходимыхДляРасчетаЛьгот(ДокументОбъект); Попытка ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); ТекстСообщения = ОписаниеОшибки(); УправлениеВодоканаломСервер.СообщитьОбОшибке(, ТекстСообщения, , , , Ложь); Исключение ДокументОбъект.Записать(); ТекстСообщения = ОписаниеОшибки(); УправлениеВодоканаломСервер.СообщитьОбОшибке(, ТекстСообщения, , , , Ложь); КонецПопытки; |
|||
12
Mikeware
01.07.15
✎
15:18
|
УправлениеВодоканаломСервер....
мне уже страшно... Страшнее только УправлениеЧернобыльсккойАЭССервер хотя... УправлениеВодокАналом - уже смешнее |
|||
13
Andrey2C
01.07.15
✎
15:18
|
(11) ты новые документы создаешь или перепроводишь уже существующие? я чет не пойму
|
|||
14
Andrey2C
01.07.15
✎
15:20
|
И заполняет и расчитывает и сразу проводит. Капец просто! А на балалайке играет при этом еще?)))
|
|||
15
Prisian
01.07.15
✎
15:22
|
Обработка Ищет документ в указаном периоде, если находит - получает объект документа и очищает табличные части, если нет - создает новы и заполняет определенными данными реквизиты документа а потом уже пытается заполнить табличные части.
|
|||
16
Prisian
01.07.15
✎
15:24
|
И заполняет и расчитывает и сразу проводит. Капец просто! А на балалайке играет при этом еще?)))
А документ по зарплате в типовой конфигурации не то же делает? |
|||
17
Одинесю
01.07.15
✎
15:24
|
(7) Посмотри стандартную обработку проведения документа.
|
|||
18
gornovrom
01.07.15
✎
15:24
|
(11) ИМХО - это неправильно, что в одной обработке документ 4 раза перезаписывается
|
|||
19
Andrey2C
01.07.15
✎
15:29
|
(15)Обработка если находит документ, то очищает ТЧ? А как надо? Отладчиком пробовал ходить по обработке своей? Скажи более понятнее что тебе нужно то в итоге? Перепровести документы или создать новые? Я не совсем понимаю какая у тебя проблема и какая задача?
|
|||
20
Mirnin
01.07.15
✎
15:32
|
Ну, если проводки все делаются, копай в эту процедуру.
Документы.Расчет.ОчиститьДвиженияПоРегиструРасчетаНеобходимыхДляРасчетаЛьгот(ДокументОбъект); |
|||
21
Prisian
01.07.15
✎
15:33
|
(19) Отладчиком пробовал - так в нем и ТЧ заполняются и движения формируются, а после прохождения кода - только пустой документ. Так возникает вопрос почему сделанные изменения в базу не записываются.
|
|||
22
Prisian
01.07.15
✎
15:34
|
(20) Эта процедура очищает движения по регистру расчета. После вызова данной процедуры идет запись документа в базу данных с последующим проведением документа.
|
|||
23
Andrey2C
01.07.15
✎
15:39
|
Тут что у тебя покажи:
ЗаполнитьТабличнуюЧастьИнформациейНеобходимойДляРасчетов(ДокументОбъект); |
|||
24
Prisian
01.07.15
✎
15:40
|
Попытка
ТабличнаяЧастьРасчеты = ДокументОбъект.Расчеты; Если ТабличнаяЧастьРасчеты.Количество() > 0 Тогда ТабличнаяЧастьРасчеты.Очистить(); КонецЕсли; //ТаблицаРасчеты = ПолучитьСтруктуруТабличнойЧасти(ДокументОбъект.Ссылка, "Расчеты"); СтруктураШапкиДокумента = ПолучитьСтруктуруШапкиДокумента(ДокументОбъект.Ссылка); ТаблицаФактическогоПериодаДействия = РаботаСРасчетами.ЗаполнитьТаблицуДанныхДляРасчета(СтруктураШапкиДокумента); // Дополнить табличную часть. ДополнитьТабличнуюЧасть( ДокументОбъект, "Расчеты", ТаблицаФактическогоПериодаДействия, Новый Структура("Счетчик, ВидРасчета, ДатаНачала, ДатаОкончания") ); Исключение ТекстСообщения = ОписаниеОшибки(); УправлениеВодоканаломСервер.СообщитьОбОшибке(, ТекстСообщения, , , , Ложь); КонецПопытки; |
|||
25
Mirnin
01.07.15
✎
15:42
|
(22)
А, нет, дело не в процедурах. ДокументОбъект = ДокументРасчета.Ссылка.ПолучитьОбъект(); Тут ты получаешь объект документа по ссылке. Чистый. Затем ты заполняешь текущий объект и вновь записываешь тот, который чистый. Потом опять и опять.. Попробуй ДокументОбъект = ДокументРасчета.ПолучитьОбъект(); |
|||
26
yavasya
01.07.15
✎
15:43
|
(25) у меня ДокументОбъект = ДокументРасчета.Ссылка.ПолучитьОбъект(); работало
|
|||
27
Andrey2C
01.07.15
✎
15:48
|
(24) Ты их и там и тут очищаешь. Или тут контрольная очистка?
Покажи дальше что там в ДополнитьТабличнуюЧасть? |
|||
28
Prisian
01.07.15
✎
15:49
|
(27) тут контрольная очистка
|
|||
29
Andrey2C
01.07.15
✎
15:52
|
(28) Ты тут все только очищаешь а где ты заполняешь ТЧ? Давай доступ чтоли уже тим вьювером или что там у тебя есть?
|
|||
30
Andrey2C
01.07.15
✎
15:55
|
(29) А лучший вариант пригласи того, кто это все писал и пусть он сам все настроит и покажет как надо. Так можно долго гадать тут что откуда и куда. Из того что ты показал ничего не понятно.
|
|||
31
Prisian
01.07.15
✎
16:01
|
(29) тут очищаю, а заполняю при вызове процедур общего модуля(11).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |