Имя: Пароль:
1C
 
Объясните пож. как работает код
0 serp
 
15.10.04
10:37
Из модуля дока ВводВЭксплуатацию, ПУБ285:

РегРасходыПриУСН = СоздатьОбъект("Регистр.РасходыПриУСН");
РегРасходыПриУСН.ВыбратьДвиженияДокумента(ТекущийДокумент());
Пока РегРасходыПриУСН.ПолучитьДвижение() = 1 Цикл
.......
КонецЦикла;

у дока снята галка Автоматическое удаление движений

Если проводим непроведенный документ, то в операторы в цикле не должны выполняться, движений у дока то нет, а они выполняются. почему непонятно. Объясните пож. чего я не понимаю
1 Шапокляк
 
15.10.04
10:39
А его первый раз проводят, точно?
2 shura
 
15.10.04
10:40
(0)
А почему снята?
Документ новый непроведенный или старый после отмены проведения?
Посмотри в регистре, есть-ли движения по этому доку когда он не проведен...
3 serp
 
15.10.04
10:45
документ не новый, после отмены проведения, а пунк меню Движения документа неактивен
кажется сообразил, движения остались после первого проведения, так?
а нафига это надо, получается что алгоритмы проведения при самом первом проведении и потом после отмены проведения и перепроведении будут разными
4 Шапокляк
 
15.10.04
10:47
Ну да, конечно... Галка снята и автоматически движения не удаляются. Для чего-то это надо, наверно. Там, случаем, нет процедуры ПриОтменеПроведения (или как там предопределенная называется)?
5 Оборотень
 
15.10.04
10:51
Нужно посмотреть в ОтменеПроведения() - что там есть ... потому как при снятой галке там должен быть корректный процесс удаления движений дока.
А "Автоматическое удаление" снято скорее всего чтобы при ПЕРЕПРОВЕДЕНИИ не проводить строки табличной части которые не изменялись, т.е не делать лишних движений регистров.
Это способ оптимизации - называется по терминологии 1С, если память не изменяет, - допроведение.
6 Оборотень
 
15.10.04
10:52
(+5)
Ошибся ПриОтменеПроведения() :)
7 Оборотень
 
15.10.04
10:55
(+6)
Совсем зарапортавался .... в модуле документа есть предопределенная процедура
ОбработкаУдаленияПроведения() - вот её смотреть нужно ... Я её имел в виду
8 wolk
 
15.10.04
10:57
Процедура ПриОтменеПроведенияДокумента(<?>)
КонецПроцедуры
Синтаксис:
ПриОтменеПроведенияДокумента(<Докум>)
Назначение:
Предопределенная процедура при интерактивной отмене проведения документа.
Параметры:
<Докум> - обрабатываемый документ.
Замечание:
Данная процедура может располагаться только в глобальном программном модуле.
Подробнее см. в документации, глава 'Системные предопределенные процедуры'
9 wolk
 
15.10.04
10:58
(8+) - хотя, имхо, скорее надо смотреть не в глобальнике, а в модуле дока, в ОбработкаУдаленияПроведения()
10 Оборотень
 
15.10.04
11:01
(9) Полностью согласен.
11 serp
 
15.10.04
12:08
В модуле дока нет проц. ОбработкаУдаленияПроведения(), в глобальнике есть проц. ПриОтменеПроведенияДокумента, но там ничего существенного нет.
вот интересно ведь в цикле там: (см.0)
Регистр.РасходыПриУСН.НеПринимаемаяСумма = 0;
Регистр.РасходыПриУСН.ВключатьВОтчет = 0;
Регистр.РасходыПриУСН.ДвижениеПриходВыполнить();
т.е. при самом первом проведении движений по рег. РасходыПриУСН сделано не будет