Имя: Пароль:
1C
1С v8
разный результат при програмном и интерактивном проведении
0 vde69
 
25.06.12
10:10
есть код:

Док = Выборка.Документ.ПолучитьОбъект();
Док.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);


в модуле документа:

// По результату запроса по шапке документа формируем движения по регистрам.
//
// Параметры:
//  РежимПроведения           - режим проведения документа (оперативный или неоперативный),
//  СтруктураШапкиДокумента   - выборка из результата запроса по шапке документа,
//  ТаблицаПоТоварам          - таблица значений, содержащая данные для проведения и проверки ТЧ Товары
//  ТаблицаПоТаре             - таблица значений, содержащая данные для проведения и проверки ТЧ "Возвратная тара",
//  Отказ                     - флаг отказа в проведении,
//  Заголовок                 - строка, заголовок сообщения об ошибке проведения.
//
Процедура ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоСуммам, Отказ, Заголовок);
   //--------------------------------------------------------------------------------
   // на всякий случай удалим движения,
   // хотя текущий алгоритм расчитан на правильную работу и без
   // очистки, но при изменении состава движений возможны проблеммы
   //
   ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Ложь, Ложь);
   РегистрыСведений.ПринятиеДокументовСделок.УдалитьДвиженияДокумента(ЭтотОбъект);

   //--------------------------------------------------------------------------------
   // фиксируем суммы
   //
   РегистрыНакопления.ДвижениеСделок.ЗаписатьСуммы(Ссылка, СтруктураШапкиДокумента, ТаблицаПоСуммам);
   
   //--------------------------------------------------------------------------------
   // запишем статус принятия документов бухгалтерией
   //
   РегистрыСведений.ПринятиеДокументовСделок.ЗаписатьСтатус(Ссылка, СтруктураШапкиДокумента);

КонецПроцедуры // ДвиженияПоРегистрам()




РегистрыСведений.ПринятиеДокументовСделок - НЕЗАВИСИМЫЙ, отладчикк проходит эту процедуру и при программном и при интерактивном проведении, но при программном - движения в указаном регистре остаются (а должны очищатся).

ни чего не понимаю
1 PiVa123
 
25.06.12
10:12
Посмотри вкладку "Движения" документа - потому что щас модно стало "Не удалять автоматически" а удаление делают программно, поэтому, видимо, движения не удаляются. Или удаляй сам вручную.
2 vde69
 
25.06.12
10:14
(1) >>>    РегистрыСведений.ПринятиеДокументовСделок.УдалитьДвиженияДокумента(ЭтотОбъект);

движения удалятся прогрммно, вот текст этой процедуры


Процедура УдалитьДвиженияДокумента(Документ) Экспорт
   
   //*******************************************************************
   // Регистр "ПринятиеДокументовСделкок"      
   Рег = РегистрыСведений.ПринятиеДокументовСделок.СоздатьМенеджерЗаписи();
   Рег.Документ = Документ.Ссылка;
   Рег.Период = Документ.Дата;
   Рег.ЭтоДвиженияДокумента = Истина;
   Рег.Прочитать();
   Рег.Удалить();
   
КонецПроцедуры
3 aleks-id
 
25.06.12
10:18
(2)
ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Ложь, Ложь);
Процедура УдалитьДвиженияДокумента(Документ) Экспорт

ни на что не намекает?
4 MRAK
 
25.06.12
10:18
кэш на сервере почистить?
5 MRAK
 
25.06.12
10:19
(3)
РегистрыСведений.ПринятиеДокументовСделок.УдалитьДвиженияДокумента(ЭтотОбъект);
6 PiVa123
 
25.06.12
10:20
В обработке проведения, не посмотреть после удаления записей, регистра что там что-то осталось или как ?
Сорри про НЕЗАВИСИМЫЙ пропустил.
7 aleks-id
 
25.06.12
10:20
(5) да, но перед этим какой то расколбас идет в процедуре общего модуля
8 MRAK
 
25.06.12
10:21
(7) согласен, отладчик автору в помощь
9 F_cker
 
25.06.12
10:27
Оперативное и не оперативное проведение. Скорее дело в этом...
10 vde69
 
25.06.12
10:30
(9) у документа оперативное проведение вообще запрещено
11 Stepa86
 
25.06.12
10:31
Есть подозрение, что дело в

Рег.Период = Документ.Дата;

при интерактивном проведении дата меняется, т.к. оперативное, при программном нет

Если через набор записей с отбором чистить, повторяется?
12 vde69
 
25.06.12
11:01
вот так работает (видимо действительно дело в дате)

Процедура УдалитьДвиженияДокумента(Документ) Экспорт
   
   //*******************************************************************
   // Регистр "ПринятиеДокументовСделкок"      
   
   Запрос = Новый Запрос(
   "ВЫБРАТЬ *
   |ИЗ
   |    РегистрСведений.ПринятиеДокументовСделок КАК ПринятиеДокументовСделок
   |ГДЕ
   |    ПринятиеДокументовСделок.ЭтоДвиженияДокумента
   |    И ПринятиеДокументовСделок.Документ = &Документ");
   
   Запрос.УстановитьПараметр("Документ", Документ.Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();
   
   Пока Выборка.Следующий() Цикл
       Рег = РегистрыСведений.ПринятиеДокументовСделок.СоздатьМенеджерЗаписи();
       ЗаполнитьЗначенияСвойств(Рег, Выборка);
       Рег.Удалить();
   КонецЦикла;
   
КонецПроцедуры
13 Stepa86
 
25.06.12
11:16
(12) а почему не

нз = РегистрыСведений.ПринятиеДокументовСделок.СоздатьНаборЗаписей();
нз.Отбор.Документ.Установить(Документ.Ссылка);
нз.Отбор.ЭтоДвиженияДокумента.Установить(Истина);
нз.Записать();

?

Документ и/или ЭтоДвижениеДокумента не измерение, штоле?
14 vde69
 
25.06.12
11:17
(13) не измерение.

измерения выходит 2, документ и период
15 vde69
 
25.06.12
11:20
(14) то есть для документа может быть несколько записей, часть из них ручные а часть "движения документа", удалить нужно только те которые делаются проведением