Имя: Пароль:
1C
1С v8
БП 3 считает, что СуммаНУ должна быть пустой! Почему?
0 Зеленый Кот
 
26.02.15
11:58
Процедура ОбработкаНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
          "ВЫБРАТЬ
          |   Хозрасчетный.Период,
          |   Хозрасчетный.СчетДт,
          |   Хозрасчетный.СчетКт,
          |   Хозрасчетный.Регистратор как Регистратор
          |ИЗ
          |   РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
          |ГДЕ
          |   Хозрасчетный.СчетДт = &СчетДт
          |   И Хозрасчетный.СчетКт = &СчетКт
          |      И Хозрасчетный.Период МЕЖДУ &НачПериода И &КонПериода";

    Запрос.УстановитьПараметр("НачПериода",'20140101');              
    Запрос.УстановитьПараметр("КонПериода",'20150228');          
    Запрос.УстановитьПараметр("СчетДт", ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД);
    Запрос.УстановитьПараметр("СчетКт", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);

    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        флагВнесеныИзменения=Ложь;
        НаборЗаписейДвижения=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
           НаборЗаписейДвижения.Отбор.Регистратор.Установить(Выборка.Регистратор);
           НаборЗаписейДвижения.Прочитать();
        Для Каждого Запись из НаборЗаписейДвижения Цикл            
            
            Если Запись.Сумма<>Запись.СуммаНУДт Тогда
                флагВнесеныИзменения=Истина;
                Запись.СуммаНУДт=Запись.Сумма;
            КонецЕсли;
            Если Запись.Сумма<>Запись.СуммаНУКт Тогда
                флагВнесеныИзменения=Истина;
                Запись.СуммаНУКт=Запись.Сумма;
            КонецЕсли;
            
        КонецЦикла;      

        Если флагВнесеныИзменения Тогда            
            НаборЗаписейДвижения.Записать(Истина);            
        КонецЕсли;
        
    КонецЦикла;    

КонецПроцедуры
1 Барматолог
 
26.02.15
12:06
(0) потому, что признак счета НалоговыйУчет=Ложь?
2 Зеленый Кот
 
26.02.15
12:19
неа
3 Барматолог
 
26.02.15
12:20
(2) глянь еще подписку
4 Барматолог
 
26.02.15
12:25
а лучше, сначала в модуле набора записей ПередЗаписью() - ОбработатьПроводкиНалоговогоУчета() и т.д.
5 Зеленый Кот
 
26.02.15
12:38
спс ща гляну
6 Зеленый Кот
 
27.02.15
08:32
на самом деле вот так...
так работает...

&НаСервере
Процедура ОбработкаНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
          "ВЫБРАТЬ
          |   Хозрасчетный.Период,
          |   Хозрасчетный.СчетДт,
          |   Хозрасчетный.СчетКт,
          |   Хозрасчетный.Регистратор как Регистратор
          |ИЗ
          |   РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
          |ГДЕ
          |   Хозрасчетный.СчетДт = &СчетДт
          |      И Хозрасчетный.Период МЕЖДУ &НачПериода И &КонПериода";

    Запрос.УстановитьПараметр("НачПериода",'2013    0101');              
    Запрос.УстановитьПараметр("КонПериода",'20150228');          
    Запрос.УстановитьПараметр("СчетДт", ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД);
    // Запрос.УстановитьПараметр("СчетКт", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
    // |   И Хозрасчетный.СчетКт = &СчетКт


    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        флагВнесеныИзменения=Ложь;
        НаборЗаписейДвижения=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
           НаборЗаписейДвижения.Отбор.Регистратор.Установить(Выборка.Регистратор);
           НаборЗаписейДвижения.Прочитать();
        Для Каждого Запись из НаборЗаписейДвижения Цикл            
            
            Если (Запись.СчетДт = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД) И
                 (
                    (Запись.СчетКт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах) ИЛИ
                    (Запись.СчетКт = ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговле) ИЛИ
                    (Запись.СчетКт = ПланыСчетов.Хозрасчетный.ГотоваяПродукция)
                 ) Тогда
                
                Если Запись.Сумма<>Запись.СуммаНУДт Тогда
                    флагВнесеныИзменения=Истина;
                    Запись.СуммаНУДт=Запись.Сумма;
                    //Запись.СуммаПРДт=0;
                    //Запись.СуммаВРДт=0;                    
                КонецЕсли;
                Если Запись.Сумма<>Запись.СуммаНУКт Тогда
                    флагВнесеныИзменения=Истина;
                    Запись.СуммаНУКт=Запись.Сумма;
                    //Запись.СуммаПРКт=0;
                    //Запись.СуммаВРКт=0;                    
                КонецЕсли;
                
            КонецЕсли;
            
        КонецЦикла;      

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

КонецПроцедуры
7 alle68
 
27.02.15
08:56
(6) А почему это в запросе не проверить?
8 Зеленый Кот
 
27.02.15
09:07
мне не проверить - мне изменить надо ;)
9 Зеленый Кот
 
27.02.15
09:08
ну... можно и в запросе, но в следующий раз ;)