Имя: Пароль:
1C
1С v8
БП 2. Ручная операция записывается около минуты. Почему?
0 DirecTwiX
 
26.12.12
22:09
Процедура ДобавитьСкидку(Дата, Скидка)
   Док = Документы.ОперацияБух.Выбрать(Дата, Дата);
   Пока Док.Следующий() Цикл
       Если Док.Содержание="Скидка (Загружено)" Тогда
           Док.ПолучитьОбъект().Удалить();    
       КонецЕсли;    
   КонецЦикла;
   Док = Документы.ОперацияБух.СоздатьДокумент();
   Док.Дата = Дата;
   Док.Организация = Организация;
   Док.Содержание = "Скидка (Загружено)";
   Док.СпособЗаполнения = "Вручную";
   Док.СуммаОперации = Скидка;
   
   Д = Док.Движения.Хозрасчетный.Добавить();
   Д.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.11");
   Д.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("42.01");
   
   Д.СубконтоДт[0]=Номенклатура;
   Д.СубконтоДт[1]=РозничныйСклад;
   
   Д.СубконтоКт[0]=Номенклатура;
   Д.СубконтоКт[1]=РозничныйСклад;
   
   Д.Сумма = Скидка;
   Д.Период = Дата;
   
   Док.Записать(РежимЗаписиДокумента.Запись);


КонецПроцедуры
1 Aleksey
 
26.12.12
22:11
Пока Док.Следующий() Цикл
       Если Док.Содержание="Скидка (Загружено)" Тогда
           Док.ПолучитьОбъект().Удалить();    
       КонецЕсли;    
   КонецЦикла;
а запросом нельзя ?и точно запись тормозит?
2 DirecTwiX
 
26.12.12
22:14
Тот же запрос, только через менеджер. Времени может чуть больше потратится, но это совсем не критично.
Да, точно - после ПередЗаписьюДвижений в модуле менеджера Хозрасчётного регистра.
3 DrShad
 
26.12.12
22:16
(0) когда уже закончатся эти вбросы копрокода и мега идей на форум?
ты женатый человек - иди к жене в постель
4 DrShad
 
26.12.12
22:16
нафейхоа весь этот фееричный бред?
5 DirecTwiX
 
26.12.12
22:21
Вот она:
ПриЗаписиРегистраБухгалтерииИзменениеГраницыПоследовательности

В ней следующий запрос, которые обрабатывается ту тучу времени:

   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |   РегистрДоИПосле.Период КАК Период,
   |   РегистрДоИПосле.Организация КАК Организация,
   |    ВЫБОР
   |    КОГДА РегистрДоИПосле.Период < ПоследовательностьГраницы.Период
   |            ИЛИ РегистрДоИПосле.Период = ПоследовательностьГраницы.Период
   |            И &Регистратор < ПоследовательностьГраницы.Регистратор
   |    ТОГДА (-1)
   |    КОГДА ПоследовательностьГраницы.Период ЕСТЬ NULL
   |       ИЛИ ((РегистрДоИПосле.Период > ПоследовательностьГраницы.Период
   |            ИЛИ РегистрДоИПосле.Период = ПоследовательностьГраницы.Период
   |            И &Регистратор > ПоследовательностьГраницы.Регистратор)
   |      И РегистрДоИПосле.ЕстьЗаписьПосле
   |      И НЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1
   |                    1
   |                ИЗ
   |                    Последовательность.%1 Последовательность
   |                ГДЕ
   |                    Последовательность.Регистратор <> &Регистратор
   |                 И Последовательность.Организация = РегистрДоИПосле.Организация
   |                 И Последовательность.МоментВремени > ПоследовательностьГраницы.МоментВремени
   |                 И (Последовательность.Период < РегистрДоИПосле.Период
   |                    ИЛИ Последовательность.Период = РегистрДоИПосле.Период
   |                        И Последовательность.Регистратор < &Регистратор)))
   |    ТОГДА (1)
   |     ИНАЧЕ (0)
   |    КОНЕЦ КАК НаправлениеСдвигаГраницы
   |ИЗ
   |    РегистрДоИПосле КАК РегистрДоИПосле
   |        ЛЕВОЕ СОЕДИНЕНИЕ Последовательность.%1.Границы КАК ПоследовательностьГраницы
   |            ПО (РегистрДоИПосле.Организация = ПоследовательностьГраницы.Организация)
   |";
6 DirecTwiX
 
26.12.12
22:32
Видимо придётся отказать от операции и использовать переоценку товаров в рознице. Но вопрос всё равно открыт
7 DirecTwiX
 
26.12.12
22:33
Решил выставить у всех доков пометку на удаление через групповую обработку... И опять по минуту на каждый док..
8 DrShad
 
26.12.12
22:44
продолжай наблюдения
9 Stim213
 
26.12.12
22:47
во всех типовых есть процедуры общего модуля, через которые записываются проводки в РБ. рекомендую использовать их,это и красивее и правильнее