Имя: Пароль:
1C
1С v8
Помагите поставить запрет на перепроведение проведеных документов
0 Geenij
 
04.07.14
12:31
// Вставить содержимое обработчика.
    
        
    лНомерЗаявки="";
    лЗаказКлиента=Неопределено;    
    ФормаПоступления =Неопределено;
    
    Для каждого лСтрока из СписокЗаявок Цикл
                                                 СледующийДень = ДатаДок + 60 * 60 * 24;
                        
Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("НачПериода", ?(СледующийДень = Дата(1, 1, 1),'19800101'  , НачалоДня(СледующийДень)));
        Запрос.УстановитьПараметр("КонПериода",?(ДобавитьМесяц(ТекущаяДата(), 24) = Дата(1, 1, 1),'20200101'  , КонецДня(ДобавитьМесяц(ТекущаяДата(), 24))));
            
                               
                    Запрос.Текст = "ВЫБРАТЬ  
                |    ЗаказПокупателя.Ссылка КАК Док,
                |    ЗаказПокупателя.ORDERID КАК ORDERID
                |ИЗ
                |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                |ГДЕ
                |    ЗаказПокупателя.Проведен = ЛОЖЬ
                |    И ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода
                |УПОРЯДОЧИТЬ ПО
                |    ЗаказПокупателя.Дата";
                            
                Результат = Запрос.Выполнить();
                Выборка = Результат.Выбрать();
                                  Пока Выборка.Следующий() Цикл  // выборка по списку
                

                                      Если выборка.ORDERID= лСтрока.ORDERID Тогда
                                          Сообщить("Найдены пов документы за буд период");

                                          Сообщить(выборка.Док);
                                              Сообщить("пропуск создания");

                                                                                        

                                      иначе
                                        Сообщить("Создание и добавление товара");

                                                                                             
                                                                                            
                               Если лНомерЗаявки=лСтрока.ORDERID Тогда
                                            иначе
                      Сообщить("Новый заказ клиента");
            Сообщить(лСтрока.ORDERID);
                      
                    
        
                                               // Документ уже сгенерирован, записываем его
            Если ФормаПоступления<>Неопределено Тогда
                                                  
                СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС",
                лЗаказКлиента.Контрагент, лЗаказКлиента.ТипЦен, лЗаказКлиента.ДоговорКонтрагента, лЗаказКлиента.Дата,лЗаказКлиента.ВалютаДокумента, лЗаказКлиента.УчитыватьНДС,лЗаказКлиента.СуммаВключаетНДС);
                                      
                                            
                
                Для Каждого лСтрокаПересчет из  ФормаПоступления.Товары Цикл
                                ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(лСтрокаПересчет,ФормаПоступления.ЭтаФорма, СтруктураШапкиДокумента, лЗаказКлиента.ВалютаДокумента);
                    ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
                    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
                    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
                    
                    Если лСтрокаПересчет.Цена = 0 Тогда
                        Сообщить("Не удалось найти цену поставщика для номенклатуры="+лСтрокаПересчет.Номенклатура);
                    КонецЕсли;    
                    
                КонецЦикла;    
                
                            КонецЕсли;
                // Теперь пробуем записать документ                
                                          Попытка                                     
                                            
                                            
            
                        
Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("НачПериода", ?(ДатаДок = Дата(1, 1, 1),'19800101'  , НачалоДня(ДатаДок)));
        Запрос.УстановитьПараметр("КонПериода",?(ДатаДок = Дата(1, 1, 1),'20200101'  , КонецДня(ДатаДок+7)));
            
        
        
                    Запрос.Текст = "ВЫБРАТЬ  
                |    ЗаказПокупателя.Ссылка КАК Док,
                |    ЗаказПокупателя.ORDERID КАК ORDERID
                |ИЗ
                |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                |ГДЕ
                |    ЗаказПокупателя.Проведен = ИСТИНА
                |    И ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода
                |УПОРЯДОЧИТЬ ПО
                |    ЗаказПокупателя.Дата";
                            
                Результат = Запрос.Выполнить();
                Выборка = Результат.Выбрать();
                                
                        Пока Выборка.Следующий() Цикл  // выборка по списку
                           Если выборка.ORDERID= лСтрока.ORDERID Тогда
                                           A=1;
                                                   КонецЕсли;

                     КонецЦикла;    

    
                                              СледующийДень = ТекущаяДата() + 60 * 60 * 24;
                        
Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("НачПериода", ?(СледующийДень = Дата(1, 1, 1),'19800101'  , НачалоДня(СледующийДень)));
        Запрос.УстановитьПараметр("КонПериода",?(ДобавитьМесяц(ТекущаяДата(), 12) = Дата(1, 1, 1),'20200101'  , КонецДня(ДобавитьМесяц(ТекущаяДата(), 12))));
            
                               
                    Запрос.Текст = "ВЫБРАТЬ  
                |    ЗаказПокупателя.Ссылка КАК Док,
                |    ЗаказПокупателя.ORDERID КАК ORDERID
                |ИЗ
                |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                |ГДЕ
                |    ЗаказПокупателя.Проведен = ЛОЖЬ
                |    И ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода
                |УПОРЯДОЧИТЬ ПО
                |    ЗаказПокупателя.Дата";
                            
                Результат = Запрос.Выполнить();
                Выборка = Результат.Выбрать();
                                  Пока Выборка.Следующий() Цикл  // выборка по списку
                

                           Если выборка.ORDERID= лСтрока.ORDERID Тогда
                                           АБ=1;
                                                   КонецЕсли;
                                           КонецЦикла;


                        
                                    Если A=1    Тогда
                    
                              
                            иначе      
                               ФормаПоступления.ЗаписатьВФорме(РежимЗаписиДокумента.Запись);

                        ФормаПоступления=Неопределено;
            лЗаказКлиента=Неопределено;

                              КонецЕсли;



Исключение

                    ФормаПоступления=Неопределено;
                                        
                                КонецПопытки;    
                

                
                                           КонецЕсли;    
            
                

          
                    
                
            Если лЗаказКлиента=Неопределено  Тогда
                        
    
                лДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("CLIENTID",лСтрока.CLIENTID);
            
                Если лДоговорКонтрагента=Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда
                    Сообщить("Не найден магазин с кодом="+лСтрока.CLIENTID);
                    Прервать;
                КонецЕсли;    
                
                 //  и  ДокОбъект<>лДоговорКонтрагента
                лЗаказКлиента=НайтиЗаявкуПоID(ДатаДок,лСтрока.ORDERID);
                Если лЗаказКлиента=Неопределено    Тогда
                    
    лЗаказКлиента = Документы.ЗаказПокупателя.СоздатьДокумент();
                    лЗаказКлиента.Дата = ДатаДок;
                    лЗаказКлиента.ДатаОтгрузки = ПолучитьДатуИзСтроки(лСтрока.DELIVERY_DATE);
                    лЗаказКлиента.Организация = Организация;
                    лЗаказКлиента.Контрагент = лДоговорКонтрагента.Владелец;
                    лЗаказКлиента.Грузополучатель= лДоговорКонтрагента.Владелец;                                               
                    лЗаказКлиента.ДоговорКонтрагента = лДоговорКонтрагента;
                    лЗаказКлиента.ВалютаДокумента = лДоговорКонтрагента.ВалютаВзаиморасчетов;
                    лЗаказКлиента.ТипЦен = лДоговорКонтрагента.ТипЦен;
                    лЗаказКлиента.УчитыватьНДС = Истина;
                    лЗаказКлиента.СуммаВключаетНДС = Истина;
                    Курс   = МодульВалютногоУчета.ПолучитьКурсВалюты(лЗаказКлиента.ВалютаДокумента, ДатаДок);
                    лЗаказКлиента.КурсВзаиморасчетов      = Курс.Курс;
                    лЗаказКлиента.КратностьВзаиморасчетов = Курс.Кратность;
            
                
                                    //лЗаказ.ОтражатьВУправленческомУчете = Истина;
                    //лЗаказ.ОтражатьВБухгалтерскомУчете = Истина;
                    //лЗаказ.ОтражатьВНалоговомУчете = Истина;
                    
                    лЗаказКлиента.СкладГруппа         = Склад;
                    
                    лЗаказКлиента.ORDERID =лСтрока.ORDERID;
                    
                                           
                    
                    лЗаказКлиента.Записать();
                    
                    ФормаПоступления = лЗаказКлиента.ПолучитьФорму();
            Иначе
        
ФормаПоступления = лЗаказКлиента.ПолучитьФорму();
                    ФормаПоступления.Контрагент = лДоговорКонтрагента.Владелец;
                    ФормаПоступления.ДоговорКонтрагента = лДоговорКонтрагента;
                    ФормаПоступления.ВалютаДокумента = лДоговорКонтрагента.ВалютаВзаиморасчетов;
                    ФормаПоступления.ТипЦен = лДоговорКонтрагента.ТипЦен;
                    ФормаПоступления.СкладГруппа         = Склад;
                    
                    
                    ///////////////////////////////организацция
                    ФормаПоступления.Организация = Организация;
                    ////////////////////ммгрузополучатель
                     ФормаПоступления.Грузополучатель = лДоговорКонтрагента.Владелец;
                    
                                 //////////////////////
                     ////////////////////подразделение
                    Выбока = Справочники.Подразделения.НайтиПоКоду("000000007");
                      ФормаПоступления.Подразделение = Выбока;
                      
                        ////////////////маршрут
                      
                      ПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Маршрут");
                    
    
    Объект = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(лДоговорКонтрагента);

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ

        |    ЗначенияСвойствОбъектов.Значение

        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &Объект
        |    И ЗначенияСвойствОбъектов.Свойство = &Свойство";

    Запрос.УстановитьПараметр("Объект", Объект);
    Запрос.УстановитьПараметр("Свойство", ПВХ);
      




Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл


  // Сообщить("SV: "+Выборка.Значение);
                                  Выбока = Справочники.Маршруты.НайтиПоНаименованию( Выборка.Значение);
                      ФормаПоступления.Маршрут = Выбока;
                

                  КонецЦикла;   //маршрут            
                  /////////////////////////////////Коментарии
                            ТекДата = ТекущаяДата();

                       ФормаПоступления.Комментарий = "№ " +лЗаказКлиента.ORDERID+" "+"Дата Заяв: "+Формат(ТекДата,"ДЛФ=DD")+" Отв:"+лСтрока.SALES_REPID;
                         //////////////////////////Коментарии

                    
                        ФормаПоступления.Товары.Очистить();
                    
                КонецЕсли;
                ~М2:

                            
                лСтрока.ЗаказКлиента =лЗаказКлиента.Ссылка;
                
                
                
            КонецЕсли;
            
            
            лНомерЗаявки=лСтрока.ORDERID;
            
        
                                  
            лСтрокаТовары = ФормаПоступления.Товары.Добавить();
                          
        Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    Номенклатура.Ссылка
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.Ссылка В ИЕРАРХИИ(&КокаКола)";
ГруппаСправочника = Справочники.Номенклатура.НайтиПоРеквизиту("ЮнимилкКод",лСтрока.PRODUCT_CODE);

Запрос.УстановитьПараметр("КокаКола",ГруппаСправочника );
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

    



             Пока Выборка.Следующий() Цикл

        

            лСпрНом=Справочники.Номенклатура.НайтиПоРеквизиту("ЮнимилкКод",лСтрока.PRODUCT_CODE);
             КонецЦикла;
            Если лСпрНом=Справочники.Номенклатура.ПустаяСсылка() Тогда
                Сообщить("Не найдена номенклатура с кодом="+лСтрока.PRODUCT_CODE);                    
                Прервать;
            КонецЕсли;
            лСтрокаТовары.Номенклатура=лСпрНом;
            лСтрокаТовары.ЕдиницаИзмерения = лСпрНом.ЕдиницаХраненияОстатков;
            лСтрокаТовары.Коэффициент=лСпрНом.ЕдиницаХраненияОстатков.Коэффициент;
            //лСтрокаТовары.Количество = лКолВоМест*Фасовка+лКолВоШт;
            Если  лСтрока.QTY_BOTTLES ="0" Тогда
                лСтрокаТовары.ПроцентСкидкиНаценки=100;
                лСтрокаТовары.Количество=лСтрока.FREE_CASE*лСпрНом.ЕдиницаДляОтчетов.Коэффициент;
            Иначе
                лСтрокаТовары.Количество=лСтрока.QTY_BOTTLES;
            конецесли;
            
            ФлагУчитыватьНДС=  Истина;                                
            Если ФлагУчитыватьНДС Тогда
                лСтрокаТовары.СтавкаНДС = лСпрНом.СтавкаНДС;
            КонецЕсли;
            
            Если  лСтрока.FREE_CASE <>"0" и лСтрока.QTY_CASES <>"0" Тогда
                
                лСтрокаТовары = ФормаПоступления.Товары.Добавить();
                лСтрокаТовары.Номенклатура=лСпрНом;
                лСтрокаТовары.ЕдиницаИзмерения = лСпрНом.ЕдиницаХраненияОстатков;
                лСтрокаТовары.Коэффициент=лСпрНом.ЕдиницаХраненияОстатков.Коэффициент;
                лСтрокаТовары.ПроцентСкидкиНаценки=100;
                лСтрокаТовары.Количество=лСтрока.FREE_CASE*лСпрНом.ЕдиницаДляОтчетов.Коэффициент;
                Если ФлагУчитыватьНДС Тогда
                    лСтрокаТовары.СтавкаНДС = лСпрНом.СтавкаНДС;    
                КонецЕсли;
КонецЕсли;


            
                  КонецЕсли;
                                           КонецЦикла;

                
              
                     КонецЦикла;


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

        // Теперь пробуем записать документ
        Попытка
                                                                  
                                                   
                  A=0;
                        
Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("НачПериода", ?(ДатаДок = Дата(1, 1, 1),'19800101'  , НачалоДня(ДатаДок)));
        Запрос.УстановитьПараметр("КонПериода",?(ДатаДок = Дата(1, 1, 1),'20200101'  , КонецДня(ДатаДок+7)));
            
        
        
                    Запрос.Текст = "ВЫБРАТЬ  
                |    ЗаказПокупателя.Ссылка КАК Док,
                |    ЗаказПокупателя.ORDERID КАК ORDERID
                |ИЗ
                |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                |ГДЕ
                |    ЗаказПокупателя.Проведен = ИСТИНА
                |    И ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода
                |УПОРЯДОЧИТЬ ПО
                |    ЗаказПокупателя.Дата";
                            
                Результат = Запрос.Выполнить();
                Выборка = Результат.Выбрать();
                                
                        Пока Выборка.Следующий() Цикл  // выборка по списку
                           Если выборка.ORDERID= лСтрока.ORDERID Тогда
                                           A=1;
                                                   КонецЕсли;

                     КонецЦикла;    

    
                            

                        
                                    Если A=1    Тогда
    &nb
1 Господин ПЖ
 
04.07.14
12:35
Сообщить("Найдены пов документы за буд период");

шедевр
2 Heckfy
 
04.07.14
12:39
Молодчина. Прочитал.
3 Geenij
 
04.07.14
12:39
Оснавная мысль сделать :
Если перемешение на завтро и далее чтобы не формировались больше 1 раза
И проведенные документы не перепроводились
4 Geenij
 
04.07.14
12:41
Ребят помагите на вас одна надежда!
5 13_Mult
 
04.07.14
12:42
Подписка на событие тебе в помощь
6 Maxus43
 
04.07.14
12:43
такую портянку никто читать не будет.
А запрет перепроведения примерно так:
Если Объект.Проведен И Ссылка.Проведен Тогда
//это перепроведение
7 Kalambur
 
04.07.14
12:47
еще один гений растет
8 Geenij
 
04.07.14
12:49
От старого програмисста бред остался ваше не пойму! Меток повставлял в модуле! Короче разбираюсь 2 часа ваше не пойму как это работает!
9 Maxus43
 
04.07.14
12:53
(8) предлагаю всё удалить и переписать.
А старому программисту выслать по почте небольшую порцию фекалий, с открыткой - это ваш код
10 Geenij
 
04.07.14
12:54
улыбнуло!
11 Geenij
 
04.07.14
12:54
чуток поправил лишнее
Процедура КнопкаСгенерироватьЗаявкиНажатие(Элемент)
    // Вставить содержимое обработчика.
    
    лНомерЗаявки="";
    лЗаказКлиента=Неопределено;
    лЗаказКлиента1=Неопределено;
    
    ФормаПоступления =Неопределено;
    
    Для каждого лСтрока из СписокЗаявок Цикл
        Если лНомерЗаявки<>лСтрока.ORDERID Тогда
            Сообщить("Новый заказ клиента");
            Сообщить(лСтрока.ORDERID);
            
            // Документ уже сгенерирован, записываем его
            Если ФормаПоступления<>Неопределено Тогда
                
                СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС",
                лЗаказКлиента.Контрагент, лЗаказКлиента.ТипЦен, лЗаказКлиента.ДоговорКонтрагента, лЗаказКлиента.Дата,лЗаказКлиента.ВалютаДокумента, лЗаказКлиента.УчитыватьНДС,лЗаказКлиента.СуммаВключаетНДС);
                
                
                
                Для Каждого лСтрокаПересчет из  ФормаПоступления.Товары Цикл
                    
                    ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(лСтрокаПересчет,ФормаПоступления.ЭтаФорма, СтруктураШапкиДокумента, лЗаказКлиента.ВалютаДокумента);
                    ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
                    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
                    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
                    
                    
                    Если лСтрокаПересчет.Цена = 0 Тогда
                        Сообщить("Не удалось найти цену поставщика для номенклатуры="+лСтрокаПересчет.Номенклатура);
                    КонецЕсли;    
                    
                КонецЦикла;    
                
                
                // Теперь пробуем записать документ                
                Попытка
                    ФормаПоступления.ЗаписатьВФорме(РежимЗаписиДокумента.Запись);
                    ФормаПоступления=Неопределено;
                    лЗаказКлиента=Неопределено;
                Исключение
                    Сообщить(ОписаниеОшибки());
                    ФормаПоступления=Неопределено;
                КонецПопытки;    
                
                
                
            КонецЕсли;    
            
            
            
            Если лЗаказКлиента=Неопределено  Тогда
                
                лДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("CLIENTID",лСтрока.CLIENTID);
                
                Если лДоговорКонтрагента=Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда
                    Сообщить("Не найден магазин с кодом="+лСтрока.CLIENTID);
                    Прервать;
                КонецЕсли;    
                
                
                лЗаказКлиента=НайтиЗаявкуПоID(ДатаДок,лСтрока.ORDERID);
                
                Если лЗаказКлиента=Неопределено Тогда
                    лЗаказКлиента = Документы.ЗаказПокупателя.СоздатьДокумент();
                    
                    лЗаказКлиента.Дата = ДатаДок;
                    лЗаказКлиента.ДатаОтгрузки = ПолучитьДатуИзСтроки(лСтрока.DELIVERY_DATE);
                    лЗаказКлиента.Организация = Организация;
                    
                    
                    лЗаказКлиента.Контрагент = лДоговорКонтрагента.Владелец;
                    лЗаказКлиента.ДоговорКонтрагента = лДоговорКонтрагента;
                    лЗаказКлиента.ВалютаДокумента = лДоговорКонтрагента.ВалютаВзаиморасчетов;
                    лЗаказКлиента.ТипЦен = лДоговорКонтрагента.ТипЦен;
                    лЗаказКлиента.УчитыватьНДС = Истина;
                    лЗаказКлиента.СуммаВключаетНДС = Истина;
                    Курс   = МодульВалютногоУчета.ПолучитьКурсВалюты(лЗаказКлиента.ВалютаДокумента, ДатаДок);
                    лЗаказКлиента.КурсВзаиморасчетов      = Курс.Курс;
                    лЗаказКлиента.КратностьВзаиморасчетов = Курс.Кратность;
                    
                    //лЗаказ.ОтражатьВУправленческомУчете = Истина;
                    //лЗаказ.ОтражатьВБухгалтерскомУчете = Истина;
                    //лЗаказ.ОтражатьВНалоговомУчете = Истина;
                    
                    лЗаказКлиента.СкладГруппа         = Склад;
                    
                    лЗаказКлиента.ORDERID =лСтрока.ORDERID;
                    лЗаказКлиента.Записать();
                    ФормаПоступления = лЗаказКлиента.ПолучитьФорму();
                Иначе
                    //лЗаказКлиента1 = Документы.ЗаказПокупателя.ПолучитьОбъект();
                    //Если лЗаказКлиента.Проведен = 1 Тогда  
                    //    Перейти ~М2;
                    //КонецЕсли;
                    
                    ФормаПоступления = лЗаказКлиента.ПолучитьФорму();
                    ФормаПоступления.Контрагент = лДоговорКонтрагента.Владелец;
                    ФормаПоступления.ДоговорКонтрагента = лДоговорКонтрагента;
                    ФормаПоступления.ВалютаДокумента = лДоговорКонтрагента.ВалютаВзаиморасчетов;
                    ФормаПоступления.ТипЦен = лДоговорКонтрагента.ТипЦен;
                    ФормаПоступления.СкладГруппа         = Склад;
                    ФормаПоступления.Организация = Организация;

                    
                    ФормаПоступления.Товары.Очистить();
                    
                КонецЕсли;
                ~М2:
                
                лСтрока.ЗаказКлиента =лЗаказКлиента.Ссылка;
                
                
                
            КонецЕсли;
            
            
            лНомерЗаявки=лСтрока.ORDERID;
            
        КонецЕсли;    
        
        // Добавляем строки в заказ клиента
        //Если лЗаказКлиента.Проведен <> 1 Тогда
            лСтрокаТовары = ФормаПоступления.Товары.Добавить();
            
            лСпрНом=Справочники.Номенклатура.НайтиПоРеквизиту("ЮнимилкКод",лСтрока.PRODUCT_CODE);
            
            Если лСпрНом=Справочники.Номенклатура.ПустаяСсылка() Тогда
                Сообщить("Не найдена номенклатура с кодом="+лСтрока.PRODUCT_CODE);                    
                Прервать;
            КонецЕсли;
            лСтрокаТовары.Номенклатура=лСпрНом;
            лСтрокаТовары.ЕдиницаИзмерения = лСпрНом.ЕдиницаХраненияОстатков;
            лСтрокаТовары.Коэффициент=лСпрНом.ЕдиницаХраненияОстатков.Коэффициент;
            //лСтрокаТовары.Количество = лКолВоМест*Фасовка+лКолВоШт;
            Если  лСтрока.QTY_BOTTLES ="0" Тогда
                лСтрокаТовары.ПроцентСкидкиНаценки=100;
                лСтрокаТовары.Количество=лСтрока.FREE_CASE*лСпрНом.ЕдиницаДляОтчетов.Коэффициент;
            Иначе
                лСтрокаТовары.Количество=лСтрока.QTY_BOTTLES;
            конецесли;
            
            ФлагУчитыватьНДС=  Истина;                                
            Если ФлагУчитыватьНДС Тогда
                лСтрокаТовары.СтавкаНДС = лСпрНом.СтавкаНДС;
            КонецЕсли;
            
            Если  лСтрока.FREE_CASE <>"0" и лСтрока.QTY_CASES <>"0" Тогда
                лСтрокаТовары = ФормаПоступления.Товары.Добавить();
                лСтрокаТовары.Номенклатура=лСпрНом;
                лСтрокаТовары.ЕдиницаИзмерения = лСпрНом.ЕдиницаХраненияОстатков;
                лСтрокаТовары.Коэффициент=лСпрНом.ЕдиницаХраненияОстатков.Коэффициент;
                лСтрокаТовары.ПроцентСкидкиНаценки=100;
                лСтрокаТовары.Количество=лСтрока.FREE_CASE*лСпрНом.ЕдиницаДляОтчетов.Коэффициент;
                Если ФлагУчитыватьНДС Тогда
                    лСтрокаТовары.СтавкаНДС = лСпрНом.СтавкаНДС;
                КонецЕсли;


                
            КонецЕсли;

        //КонецЕсли;
        
        
        
    КонецЦикла;    
    
    // Записываем последнюю заявку
    // Теперь пробуем записать документ                
    // Документ уже сгенерирован, записываем его
    Если ФормаПоступления<>Неопределено Тогда
        
        СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС",
        лЗаказКлиента.Контрагент, лЗаказКлиента.ТипЦен, лЗаказКлиента.ДоговорКонтрагента, лЗаказКлиента.Дата,лЗаказКлиента.ВалютаДокумента, лЗаказКлиента.УчитыватьНДС,лЗаказКлиента.СуммаВключаетНДС);
        
        
        
        Для Каждого лСтрокаПересчет из  ФормаПоступления.Товары Цикл
            
            ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(лСтрокаПересчет,ФормаПоступления.ЭтаФорма, СтруктураШапкиДокумента, лЗаказКлиента.ВалютаДокумента);
            ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
            ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
            ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(лСтрокаПересчет, ФормаПоступления.ЭтаФорма);
            
            
            Если лСтрокаПересчет.Цена = 0 Тогда
                Сообщить("Не удалось найти цену поставщика для номенклатуры="+лСтрокаПересчет.Номенклатура);
            КонецЕсли;    
            
        КонецЦикла;    
        
        
        // Теперь пробуем записать документ                
        Попытка
            ФормаПоступления.ЗаписатьВФорме(РежимЗаписиДокумента.Запись);
            ФормаПоступления=Неопределено;
            лЗаказКлиента=Неопределено;
        Исключение
            Сообщить(ОписаниеОшибки());
            ФормаПоступления=Неопределено;
        КонецПопытки;    
        
        
        
    КонецЕсли;    
    
КонецПроцедуры
12 Geenij
 
04.07.14
12:57
Maxus43, пе охото велосипед изабретать так как он работает!
13 anatoly
 
04.07.14
13:00
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если Проведен Тогда
        Отказ = Истина;
        Возврат;
    КонецеЕсли;
...
это самый тупо элементарный вариант.
ну можно сообщить еще что то...
14 Maxus43
 
04.07.14
13:02
(13) Если Проведен И РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
15 Maxus43
 
04.07.14
13:03
(12) тут уж сам сомтрить, ещё раз: в такую портянку прекрасного кода вглядываться будут только заключенные тюрьмы для 1сников, ибо занятий у них не много...
Про варианты запрета перепроведения уже сказали, подойдёт или нет - сам пробуй
16 Geenij
 
04.07.14
13:22
Спасиб сделал вроде работает!
17 Geenij
 
04.07.14
13:25
Подписка на событие раскажите интересно стала как работает! ИЛИ ссылку скиньте на пример! Заранее благодарен!
18 anatoly
 
04.07.14
13:33
(17) кури ЖКК