Имя: Пароль:
1C
1C 7.7
v7: Разные остатки при оперативном и неоперативном проведении
0 Масянька
 
29.02.16
11:36
День добрый!
В обработку проведения док-та добавлена обработка перемещения с одного склада на другой, потом (именно следующим шагом) происходит списание со второго склада (на который было перемещено).
Если делать оперативно (т.е. сейчас) - все прекрасно.
Если же неоперативно (т. е. вчерашний документ перепровести сегодня) - ругается на остатки, партии.
У меня есть подозрение, что при неоперативном проведении не видит перемещения. Но - если оставить (в обработке проведения) только перемещение - все прекрасно. Ругается именно при списании.
Как решить такую проблему?
Спасибо.
1 Mikeware
 
29.02.16
11:41
Есть подозрение, что ты считаешь на ТА, а не на документ.
2 HawkEye
 
29.02.16
11:42
(0) понеслось.... )))

решить данную проблему можно только одним способом, написать код так, чтобы он работал правильно )
3 Масянька
 
29.02.16
11:44
(1)
    Если ИтогиАктуальны()=0 Тогда
        ВремРегистры.Актуальность(1);
        ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
    КонецЕсли;
4 Масянька
 
29.02.16
11:45
(2) Как правильно?

PS Если тебе скучно - сходи подальше.
5 HawkEye
 
29.02.16
11:46
(4) я не могу пропустить )))

и у меня не пропадает вера в то, что когда-нибудь научишься задавать вопросы правильно...
6 HawkEye
 
29.02.16
11:46
(3) ты так и будешь код показывать кусками? ))
7 Масянька
 
29.02.16
11:47
Обработка проведения в модуле док-та:

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


//******************************************************************************
Процедура ПроведениеСписания(ТаблицаДокумента, ВремСписание)

    // проверим регистр списание
    ТаблицаДокумента.ВыбратьСтроки();
    Пока ТаблицаДокумента.ПолучитьСтроку() = 1 Цикл
        // остаток на складе "Списание"
        ОстатокНаСкладеСписания = ВремСписание.СводныйОстаток(, ТаблицаДокумента.Номенклатура, ТаблицаДокумента.Партия, ТаблицаДокумента.ЦенаИсходная, , , ТаблицаДокумента.ДопПартия, "Количество");
        
        // сравниваем остаток с количеством
        Если (ТаблицаДокумента.Количество > ОстатокНаСкладеСписания) Тогда
            Сообщить("На складе ""Списание"" нет нужного свободного количества ТМЦ " + СокрЛП(Номенклатура) + ".");
            Сообщить("  По указанной партии осталось " + СокрЛП(Формат(ОстатокНаСкладеСписания, "Ч15.2. ")) + ".");
            Сообщить("Требуемое количество " + СокрЛП(Формат(Количество, "Ч15.2. ")) + ".");
            Сообщить("Документ не проводится!");
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
        
        // двигаем регистр - списываем
        // измерения
        Регистр.Списание.Фирма                 = Фирма;
        Регистр.Списание.Номенклатура         = ТаблицаДокумента.Номенклатура;
        Регистр.Списание.Партия             = ТаблицаДокумента.Партия;
        Регистр.Списание.Цена                 = ТаблицаДокумента.ЦенаИсходная;
        Регистр.Списание.Себестоимость         = ТаблицаДокумента.Себестоимость;
        Регистр.Списание.ДопПартия            = ТаблицаДокумента.ДопПартия;
        Регистр.Списание.Комментарий        = ТаблицаДокумента.КомментарийСписания;
        
        // ресурсы
        Регистр.Списание.Количество            = ТаблицаДокумента.Количество;
        Регистр.Списание.Сумма                 = ТаблицаДокумента.ЦенаИсходная * ТаблицаДокумента.Количество;
        Регистр.Списание.СуммаНДС             = глРасчетНДС(Контекст, ТаблицаДокумента.ЦенаИсходная * ТаблицаДокумента.Количество, ТаблицаДокумента.СтавкаНДС);
        Регистр.Списание.СуммаСебестоимость = ТаблицаДокумента.Себестоимость * ТаблицаДокумента.Количество;
        
        // запись
        Регистр.Списание.ДвижениеРасходВыполнить();
        
    КонецЦикла;
    
КонецПроцедуры // ПроведениеСписания

//******************************************************************************
Процедура ПереместитьНаСклад(СкладСписания, ТаблицаДокумента, ВремОстаткиТМЦ, ВремРезервыТМЦ, ВремПартииНаличие)

    Перем ТаблСписПартий, ТаблСписПартийКом;

    СписокПараметров    = СоздатьОбъект("СписокЗначений");
    
    СписокПараметров.ДобавитьЗначение(ТекущийДокумент(),   "ТекДок");
    СписокПараметров.ДобавитьЗначение(СкладСписания,       "Склад");
    СписокПараметров.ДобавитьЗначение(Фирма,               "Фирма");
    СписокПараметров.ДобавитьЗначение(ФирмаДляОстатковТМЦ, "ФирмаДляОстатковТМЦ");
    СписокПараметров.ДобавитьЗначение(глКО.Перемещение,       "КодОперации");        
    
    СпишемПартии = 1;
    
    // остатки - перемещаем со склада списания на склад документа
    // остатки ТМЦ - сворачиваем ТЧ документа по номенклатуре
    мТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
    мТаблицаДокумента.Загрузить(ТаблицаДокумента);
    мТаблицаДокумента.Свернуть("Номенклатура, Склад, ЦенаПрод", "Количество");
    
    Если глСписаниеОстатковТМЦ    (Контекст,мТаблицаДокумента,СписокПараметров, ВремОстаткиТМЦ, ВремРезервыТМЦ)=0 Тогда
        Возврат;
    КонецЕсли;
    
    // оприходование
    СписокПараметров.Установить("Склад", Склад);
    СписокПараметров.Установить("Фирма", Фирма);

    // остатки ТМЦ - сворачиваем ТЧ документа по номенклатуре
    мТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
    мТаблицаДокумента.Загрузить(ТаблицаДокумента);
    мТаблицаДокумента.Свернуть("Номенклатура, Склад, ЦенаПродПриход", "Количество");
    Если глПриходОстатковТМЦ(Контекст, мТаблицаДокумента, СписокПараметров) = 0 Тогда
        Возврат;
    КонецЕсли;

    // поскольку тут у нас перемещение - ПродСтоимость обнуляем
    ТаблицаДокумента.ВыбратьСтроки();
    Пока ТаблицаДокумента.ПолучитьСтроку() = 1 Цикл
        ТаблицаДокумента.ПродСтоимость = 0;
    КонецЦикла;
    
    // партии ТМЦ - также перемещаем на склад (МОЛ) документа
    Если СпишемПартии = 1 Тогда
        глСписаниеПартийТМЦ(Контекст, ТаблицаДокумента, СписокПараметров, ВремПартииНаличие, ТаблСписПартий, ТаблСписПартийКом);
    КонецЕсли;

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

//******************************************************************************
Процедура ОбработкаСписания()
    
    Перем ВремРегистры;
    Перем ВремОстаткиТМЦ, ВремПартииНаличие;
    Перем СкладСписания;
    
    ВремРегистры        = СоздатьОбъект("Регистры");
    ВремОстаткиТМЦ        = ВремРегистры.ОстаткиТМЦ;
    ВремПартииНаличие     = ВремРегистры.ПартииНаличие;
    ВремРезервыТМЦ         = ВремРегистры.РезервыТМЦ;
    ВремСписание        = ВремРегистры.Списание;
    
    СпрСклады = СоздатьОбъект("Справочник.Склады");
    СпрСклады.НайтиПоКоду("00006");
    СкладСписания = СпрСклады.ТекущийЭлемент();
    
    ТаблицаУслуг         = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаДокумента       = глПодготовитьТаблицуДокумента(Контекст, 1, ТаблицаУслуг, 1);
    
    // регистр Списание - сразу списываем
    ПроведениеСписания(ТаблицаДокумента, ВремСписание);
    
    // регистры Партии и Остатки - перемещаем на склад документа, списание - стандартно в ПроведенииПоРегистрам
    ПереместитьНаСклад(СкладСписания, ТаблицаДокумента, ВремОстаткиТМЦ, ВремРезервыТМЦ, ВремПартииНаличие);
    
КонецПроцедуры // ОбработкаСписания
8 Масянька
 
29.02.16
11:48
(5) Что тебе не понятно?
9 HawkEye
 
29.02.16
11:50
(7) где процедура ОбработкаПроведения() ?
10 HawkEye
 
29.02.16
11:51
(8) ну например, почему бы не открыть отладчик не посмотреть в чем причина?

или где же в приведенном коде ОБработкаПроведения?
11 Масянька
 
29.02.16
11:52
(9) Процедура ОбработкаПроведения(ВидыДвижений)
    
    // Проверка заполненности обязательных реквизитов.
       Если глВсеРеквизитыДокументаЗаполнены(Контекст,
        "Фирма,Склад,Валюта,Контрагент,Договор")=0 Тогда
        Возврат;
    КонецЕсли;
                  
    Если (Склад.РозничныйСклад = 1) Тогда
        глНеПроводить(Контекст,"Документ """+ глНазваниеДокументаВЖурнале(Контекст)+""" можно
        |оформлять только с оптового склада!");
        Возврат;
    КонецЕсли;

    // Проведение по регистрам оперативного учета.    
    Если (ПустоеЗначение(ВидыДвижений) = 1) ИЛИ (Найти(ВидыДвижений, "Регистр") <> 0) Тогда
        ПроведениеПоРегистрам();
        
        Если СтатусВозврата() = 0 Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;
    
    глПриПроведении(Контекст, ВидыДвижений);
    
КонецПроцедуры //ОбработкаПроведения()
12 Garykom
 
гуру
29.02.16
11:53
Как меня удивляет когда чистые восьмерочники (7.7 только видели) начинают лезти в семерку и потом офигевают от того что увидели :)
13 Garykom
 
гуру
29.02.16
11:54
(11) ПроведениеПоРегистрам(); и глПриПроведении(Контекст, ВидыДвижений); то раскрой?
14 Mikeware
 
29.02.16
11:54
Ну, оно кагбэ логично...
ПроведениеСписания() делается _до_ временного расчета. следовательно, берет остатки на ТА.
15 Garykom
 
гуру
29.02.16
11:54
(13)+ а вижу ПроведениеПоРегистрам в (7)
16 HawkEye
 
29.02.16
11:55
(11) ну и где в приведенном коде обращение к ТА или ТекущемуДокументы для поиска остатков?
17 Масянька
 
29.02.16
11:55
(13) проведение по регистрам - в (7).
ГлПриПроведении - в глобальнике
Процедура глПриПроведении(Конт, ВидыДвижений) Экспорт
    
    Конт.ЮрЛицо = Конт.Фирма.ЮрЛицо;
    
    // Если сумма взаиморасчетов равна нулю, предупредим об этом пользователя
    Если глЕстьРеквизитШапки("СуммаВзаиморасчетов", Конт.Вид()) = 1 Тогда
        Если (Конт.СуммаВзаиморасчетов = 0) и (Конт.Контрагент.Выбран() = 1) и (Конт.Вид() <> "ОтчетКомитенту") Тогда
            глСообщениеПроведения("Обнаружена нулевая сумма взаиморасчетов!", Конт.ТекущийДокумент());
        КонецЕсли;
    КонецЕсли;
    
    // Покажем трассировку, если она есть
    НазваниеТрассировки = "Проведение документа "+Конт.Вид()+" № "+Конт.НомерДок +" от "+Конт.ДатаДок;
    Если ТипЗначенияСтр(глСообщенияТрассировки) = "СписокЗначений" Тогда
        Если НазваниеТрассировки = СокрЛП(глСообщенияТрассировки.ПолучитьЗначение(3)) Тогда
            глПоказатьТрассировку(глСообщенияТрассировки);
            глСообщенияТрассировки = 0;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры // глПриПроведении()
18 Mikeware
 
29.02.16
11:55
(13) нахрена тебе глПриПроведении?
19 Mikeware
 
29.02.16
11:56
Подарите Масяньке на 8 марта отладчик, штоль...
20 Масянька
 
29.02.16
11:56
(16) Ниже, там стандартное проведение.
Процедура ПроведениеПоРегистрам()
    
    Перем ТаблСписПартий, ТаблСписПартийКом;    
    Перем ВремРегистры;
    Перем ВремЗаявки, ВремЗаказыЗаявки, ВремОстаткиТМЦ, ВремРезервыТМЦ, ВремПартииНаличие, ВремПокупатели;  
    
    // Удаление движений по регистрам.
    Для Номер = 1 По Метаданные.Регистр() Цикл
        ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор);
    КонецЦикла;
       
// сначала обрабатываем списание
    ОбработкаСписания();
    
    ТаблицаУслуг = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаТМЦ   = глПодготовитьТаблицуДокумента(Контекст,1,ТаблицаУслуг);

    ФирмаДляОстатковТМЦ = глФирмаДляОстатковТМЦ(Фирма);

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

    Если ИтогиАктуальны()=0 Тогда
        ВремРегистры.Актуальность(1);
        ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
    КонецЕсли;
    
    // контроль величины кредита клиенту (с учетом права пользователя превышать его)
    Если КодОперации = глКО.Продажа Тогда
        Если КонтрольКредитаПройден(ВремПокупатели) = 0 Тогда
            Возврат;
        КонецЕсли;  
    КонецЕсли;
    
    ДвижениеЗаявокПокупателя(ТаблицаТМЦ,   ВремЗаявки, ВремЗаказыЗаявки, ВремРезервыТМЦ); // по ТМЦ
    ДвижениеЗаявокПокупателя(ТаблицаУслуг, ВремЗаявки, ВремЗаказыЗаявки, ВремРезервыТМЦ); // по услугам и работам
    
    // остатки ТМЦ
    // остатки ТМЦ - сворачиваем ТЧ документа по номенклатуре
    мТаблицаТМЦ = СоздатьОбъект("ТаблицаЗначений");
    мТаблицаТМЦ.Загрузить(ТаблицаТМЦ);
    мТаблицаТМЦ.Свернуть("Номенклатура, Склад, ЦенаПрод", "Количество");
    
    Если глСписаниеОстатковТМЦ    (Контекст,мТаблицаТМЦ,СписокПараметров, ВремОстаткиТМЦ, ВремРезервыТМЦ)=0 Тогда
        Возврат;
    КонецЕсли;
                  
    // партии ТМЦ
    глСписаниеПартийТМЦ(Контекст,ТаблицаТМЦ,СписокПараметров,ВремПартииНаличие,ТаблСписПартий,ТаблСписПартийКом);
                      
    Если КодОперации=Перечисление.КодыОпераций.ПередачаНаРеализацию Тогда
        
        // надо списанные партии оприходовать на регистр "Партии отданные"
        ТаблСписПартий.ВыбратьСтроки();
        Пока  ТаблСписПартий.ПолучитьСтроку()=1 Цикл
            //измерения
            Регистр.ПартииОтданные. Фирма            = ТаблСписПартий.Фирма;
            Регистр.ПартииОтданные. Номенклатура    = ТаблСписПартий.Номенклатура;
            Регистр.ПартииОтданные. СтатусПартии    = ТаблСписПартий.СтатусПартии;
            Регистр.ПартииОтданные. Партия            = ТаблСписПартий.Партия;
            
            Регистр.ПартииОтданные. Договор            = Договор;
            Регистр.ПартииОтданные. ДокументПередачи= ТекущийДокумент();
            // ресурсы
            Регистр.ПартииОтданные. Количество        = ТаблСписПартий.Количество;
            Регистр.ПартииОтданные. СуммаУпр        = ТаблСписПартий.СуммаУпр;
            Регистр.ПартииОтданные. СуммаРуб        = ТаблСписПартий.СуммаРуб;
            Регистр.ПартииОтданные. СуммаБезНДС        = ТаблСписПартий.СуммаБезНДС;
            Регистр.ПартииОтданные. ПродСтоимость      = ТаблСписПартий.СуммаПрод;
            // реквизиты
            Регистр.ПартииОтданные. КодОперации        = глКО.ПередачаНаРеализацию;
            
            Регистр.ПартииОтданные. ДвижениеПриходВыполнить();
        КонецЦикла;    
        
        // проверим, а не указал ли пользователь услуги или работы - их отдавать на релизацию нельзя
        ТаблицаУслуг.ВыбратьСтроки();
        Если ТаблицаУслуг.ПолучитьСтроку()= 1 Тогда
            глНеПроводить(Контекст,"Услуги и работы отдавать на реализацию невозможно! ("+ТаблицаУслуг.Номенклатура+")");
            Возврат;
        КонецЕсли;
        
    ИначеЕсли КодОперации=Перечисление.КодыОпераций.Продажа Тогда  
        
        // движение оборотного регистра "продажи"
        ТаблСписПартий.ВыбратьСтроки();
        Пока ТаблСписПартий.ПолучитьСтроку()=1 Цикл
            глДвижениеОборотовПродаж(Контекст,
                                    Фирма,
                                    Контрагент,
                                    ТаблСписПартий.Партия.Поставщик,
                                    ТаблСписПартий.Номенклатура,
                                    ТаблСписПартий.Количество,
                                    ТаблСписПартий.СуммаУпр,
                                    ТаблСписПартий.СуммаПродУпр);
        КонецЦикла;
        
        ТаблСписПартий.Свернуть("СтатусПартии,СтавкаНП,СтавкаНДС,ДоговорКомитента","СуммаПрод,СуммаПродУпр,СуммаПродРуб,НДСПрод,НППрод,СуммаБезНДС");
        ТаблСписПартий.НоваяКолонка("КредДокумент");
        ТаблСписПартий.НоваяКолонка("ВидДолга");
        ТаблСписПартий.НоваяКолонка("Сумма");
        ТаблСписПартий.НоваяКолонка("СуммаУпр");
        ТаблСписПартий.НоваяКолонка("СуммаРуб");
        ТаблСписПартий.НоваяКолонка("СуммаНДС");
        ТаблСписПартий.НоваяКолонка("СуммаНП");
        ТаблСписПартий.НоваяКолонка("Себестоимость");
        ТаблСписПартий.НоваяКолонка("ОблагаетсяНП");
        
        ТаблСписПартий.ВыбратьСтроки();
        Пока ТаблСписПартий.ПолучитьСтроку()=1 Цикл
            ТаблСписПартий.КредДокумент = ТекущийДокумент();
            ТаблСписПартий.ВидДолга        = ВидДолгаПоСтатусу(ТаблСписПартий.СтатусПартии);
            ТаблСписПартий.Себестоимость= ТаблСписПартий.СуммаБезНДС;
            ТаблСписПартий.СуммаНДС        = ТаблСписПартий.НДСПрод;
             ТаблСписПартий.СуммаНП        = ТаблСписПартий.НППрод;
            ТаблСписПартий.Сумма        = ТаблСписПартий.СуммаПрод;
            ТаблСписПартий.СуммаУпр        = ТаблСписПартий.СуммаПродУпр;
            ТаблСписПартий.СуммаРуб        = ТаблСписПартий.СуммаПродРуб;
            ТаблСписПартий.ОблагаетсяНП = УчитыватьНП;
        КонецЦикла;                                                                      
                                                                    
        СписокПараметров.Установить("ЗнакДвижения", 1); // идет увеличение долга
        глДвижениеДолгов(Контекст,Договор,ТаблСписПартий,СписокПараметров,ВремПокупатели);
        
        // запомним, что мы продали принятые на комиссию товары...
        ТаблСписПартийКом.ВыбратьСтроки();
        Пока ТаблСписПартийКом.ПолучитьСтроку()=1 Цикл                    
            Регистр.РеализованныйТовар.Фирма            = ТаблСписПартийКом.Фирма;
            Регистр.РеализованныйТовар.Договор             = ТаблСписПартийКом.Партия.ДоговорПоставщика;
            Регистр.РеализованныйТовар.Номенклатура     = ТаблСписПартийКом.Номенклатура;
            Регистр.РеализованныйТовар.Партия             = ТаблСписПартийКом.Партия;
            Регистр.РеализованныйТовар.ДокПродажи        = ТекущийДокумент();
            Регистр.РеализованныйТовар.Количество         = ТаблСписПартийКом.Количество;
            Регистр.РеализованныйТовар.ПродСтоимость     = ТаблСписПартийКом.СуммаПродРуб - ТаблСписПартийКом.НППрод;
            Регистр.РеализованныйТовар.ДвижениеПриходВыполнить();
        КонецЦикла;                                                                      
                                                                    
        // реализация услуг  
        глДвижениеПартийУслуг(Контекст, ТаблицаУслуг, СписокПараметров);
        
        // сначала увеличим обороты продаж по услугам и работам
        ТаблицаУслуг.ВыбратьСтроки();
        Пока ТаблицаУслуг.ПолучитьСтроку()=1 Цикл
            глДвижениеОборотовПродаж(Контекст,
                                    Фирма,
                                    Контрагент,
                                    "",
                                    ТаблицаУслуг.Номенклатура,
                                    ТаблицаУслуг.Количество,
                                    0,
                                    ТаблицаУслуг.СуммаУпр);
        КонецЦикла;
        
        // теперь задолженность покупателя за отпущенные услуги или работы
        СписокПараметров.Установить("ЗнакДвижения",1); // увеличился долг клиента
        
        ТаблицаУслуг.Свернуть("Вид,СтавкаНДС,СтавкаНП","Сумма,СуммаУпр,СуммаРуб,СуммаНДС,СуммаНП");
        
        ТаблицаУслуг.НоваяКолонка("КредДокумент");
        ТаблицаУслуг.НоваяКолонка("ВидДолга");
        ТаблицаУслуг.НоваяКолонка("Себестоимость");
        ТаблицаУслуг.НоваяКолонка("ДоговорКомитента");
        ТаблицаУслуг.НоваяКолонка("ОблагаетсяНП");
    
        ТаблицаУслуг.ВыбратьСтроки();
        Пока ТаблицаУслуг.ПолучитьСтроку()=1 Цикл
        
            ТаблицаУслуг.КредДокумент     = ТекущийДокумент();
            Если ТаблицаУслуг.Вид = Перечисление.ВидыНоменклатуры.Услуга Тогда
                ТаблицаУслуг.ВидДолга        = глВД.ДолгЗаУслуги;
            Иначе
                ТаблицаУслуг.ВидДолга        = глВД.ДолгЗаРаботы;
            КонецЕсли;

            ТаблицаУслуг.Себестоимость    = 0;
            ТаблицаУслуг.ОблагаетсяНП     = УчитыватьНП;
        
        КонецЦикла;                                                                      
    
        глДвижениеДолгов(Контекст,Договор,ТаблицаУслуг,СписокПараметров,ВремПокупатели);
        
    КонецЕсли;

КонецПроцедуры // ПроведениеПоРегистрам()
21 Garykom
 
гуру
29.02.16
11:57
хы я был прав, галочка походу снята "Автоматическое удаление движений"

(18) а вдруг там все назад переигрывается по некому условию?
22 Масянька
 
29.02.16
11:58
(21) Нет. Галочка на месте.
Добавлена только обработка списания.
Все остальное - стандарт.
23 aka AMIGO
 
29.02.16
11:59
(18) Это сделано для уменьшения объема модулей документов.
Иначе пришлось-бы писать в каждом доке эту процу..
И так ТиС конфа огромная..
24 Масянька
 
29.02.16
12:01
Ну, что, какие мысли есть?
25 Mikeware
 
29.02.16
12:01
(23) да не такая уж и огромная. зато логичная.
26 Mikeware
 
29.02.16
12:01
(24) см.(14)
27 Масянька
 
29.02.16
12:04
(26) Спасибо огромное! Целовать не буду, знаю - ты не любишь...
СПАСИБО!!!!!
28 Mikeware
 
29.02.16
12:06
ОбработкаПроведения(ВидыДвижений)- ПроведениеПоРегистрам();- ОбработкаСписания();-ПроведениеСписания(ТаблицаДокумента, ВремСписание);
И нигде нет временного расчета
29 HawkEye
 
29.02.16
12:07
(20) угу... ниже....
очуметь....
30 Mikeware
 
29.02.16
12:28
(29) я ж говорю, подарите ей отладчик на 8 марта. у меня она его из принципа не возьмет...
31 HawkEye
 
29.02.16
13:31
(30) см.(4) я тоже в опале )))
32 Злопчинский
 
29.02.16
17:03
эх, опоздал... ;-)
33 Mikeware
 
29.02.16
17:06
(32) не расстраивайся...
"под лежачий камень ты всегда успеешь..."©
34 Mikeware
 
29.02.16
17:06
вот, кстати, мы и увидели "цепочку"®...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.