Имя: Пароль:
1C
1C 7.7
v7: Подмена IDDOC при проведени документа
,
0 Innuil
 
12.03.12
15:55
Используем ms sql 2000 и 1с 7.7 27 релиз.
С некоторых пор начала доставать следующая проблема: сотрудник как обычно вводит документ, проводит. Потом оказывается, что движения, которые должен был сделать этот документ, есть, но они принадлежат другому документу.
Подскажите как с этим можно бороться?
1 Ёпрст
 
12.03.12
15:59
как узнал/проверил ?
2 FN
 
12.03.12
16:05
(0) было похожее при использовании конструкции "вложенного проведения", т.е. в модуле проведения открывается форма другого документа с параметром "Провести"
3 ЧеловекДуши
 
12.03.12
16:13
Ну, давай рассказывай, куда ходил, где был, с кем?
Пиши боле подробно про нетрадиционное использование 1С, там ВК, проведение во время проведения, прямые запросы и т.д. :)
4 ЧеловекДуши
 
12.03.12
16:14
+ как вариант провести Переиндексацию и ТиИ, но оно вам не поможет, но вдруг... :)
5 Innuil
 
12.03.12
16:23
(1)Узнал от пользователей. Запросом в Enterprise manager к таблице движений с фильтром по коду товару и коду склада.
(2)Других проводок нету. Только реквизиты проводимого меняются и записывается справочник. Но ещё посмотрю.
(3)ВК и прямые запросы при проведении пока не использую, но буду 1спп (адресное хранение, партионный учёт, сроки годности). Хотя может если косвенно влияют, то используются rainbow, 1c++, openconf. Хотя трабла началась до использования 1c++ и openconf
(4) :)

Может то, что используется ВайФай роль играет?
6 FN
 
12.03.12
17:26
(5) я у себя решаю такую проблему очень просто:
1. Перепроводка документов ночью - при этом движения выравниваются у однотипных документов.
2. Периодическая проверка левых движений, которые не исправляются перепроведением:

Для х=1 по Метаданные.Регистр() Цикл
       
       ТЗ = RS.ВыполнитьИнструкцию( "
       |Select
       |    Жур.IDDoc as [Док $Документ],
       |    Жур.IDDocDef as Док_вид
       |FROM
       |    _1Sjourn as Жур (nolock)
       |Where (Жур.IDDoc in (Select IDDoc FROM $Регистр."+Метаданные.Регистр(х).Идентификатор+" (nolock))) AND
       | (Жур.$ФлагРегистра."+Метаданные.Регистр(х).Идентификатор+" & 1<>1);
       |");
       
       ТЗ.ВыбратьСТроки();
       Пока ТЗ.ПолучитьСтроку()=1 Цикл
           ТЗНАФОРМЕ.НоваяСтрока();
           ТЗНАФОРМЕ.Регистр = Метаданные.Регистр(х).Идентификатор;
           ТЗНАФОРМЕ.Документ = ТЗ.Док;
           ТЗНАФОРМЕ.ТипОшибки = "Левые движения документа";
       КонецЦикла;

Ну и чистка "левых движений":

RS = СоздатьОбъект("ODBCRecordset");
           RS.УстановитьТекстовыйПараметр("ВыбДок",ТЗНАФОРМЕ.Документ);
           ТЗ = RS.ВыполнитьИнструкцию( "
           |Delete FROM
           |    $Регистр."+ТЗНАФОРМЕ.Регистр+"
           |WHERE
           |    iddoc = :ВыбДок;");

ЗЫ Моя тема по этой же проблеме SQL: Появляются неправильные движения у документов
7 Innuil
 
13.03.12
09:33
(6)Благодарю за "напильник" :)
8 Mikeware
 
13.03.12
10:31
(7) хреноватый напильник.
9 Злой Бобр
 
13.03.12
10:41
(0) Сделайте реиндексацию и перепроведите. Если будет появлятся снова - смотрите модуль проведения, в частности если движения делаются в глобальнике - что туда в виде параметра (контекста) передается.
10 FN
 
13.03.12
13:29
(8) Покритикуй предметно плз
11 zavsom
 
13.03.12
13:35
я бы не рискнул так вот по одной двум табличкам лазить в базе - че то в душе подсказывает, что это бяка...так поступать.
12 zavsom
 
13.03.12
13:36
можешь тупо не учесть всех ньюансов и хана базе придет...когда нибудь.
13 Mikeware
 
13.03.12
13:42
(11) тебе никто и не предлагает - у тебя руки кривые.
14 Mikeware
 
13.03.12
13:45
(10) ну, как минимум нет пересчета регистра после удаления (не говоря о том, что удалять лучше через выполнитьСкалярный).
как максимум - не нравится мне такой запрос поиска. Для разовой задачи проканает, а регулярно запускать....
15 FN
 
13.03.12
13:59
(14) ну пересчет я делаю с помощью Установка_ТА.ert. Про Скалярный понял - учту.
Если будут уточнения к запросу по поиску - буду благодарен.
16 Z1
 
13.03.12
15:08
(5) 1.Вот твоя причина
>>>Только реквизиты проводимого меняются и записывается справочник.
код в студию как именно записываются ну и попутно вопрос зачем

Если отказаться нельзя от этого справочника надо переписывать и писать в справочник в методе
ПриЗакрытии()

2.Есть ли в модуле проведения Начать Транзакцию ОтменитьТранзакцию

3. Есть ли УРБД

4.Есть ли в модуле проведения проведение другого документа через открытьФорму.


Также можете проверить базу моей обработкой
"Поиск ошибок в регистрах 7.7 " ( она ифостарте или 1спп)