Имя: Пароль:
1C
1C 7.7
v7: Надо вывести номер ГТД
,
0 dimonv156
 
30.11.12
09:36
Помогите разобраться с кодом
Перем СведенияОПродавце, СведенияОПокупателе;
Перем КонтДок,Таб,Конт,ПарамДок;

Перем КолСправокНаСтранице;
Перем Продавец, Покупатель;
Перем НомерНакладной, НомерГТД, ДатаОтгрузки,МнЧ;
Перем текСтрокаДок, ТекСпр, Партия, Справочник,Док,ДокОснование;
Перем спрПартии,СписокПосредников,Товар,Поср,НомСпр,Документ;
//---КТ-2000-(095)789-3070-----------------------
Процедура СоздатьСтруктуру(МнЧ,НомерГТД)
   
   МнЧ = СоздатьОбъект("ТаблицаЗначений");
   МнЧ.НоваяКолонка("Цена",);
   МнЧ.НоваяКолонка("Сумма",);
   МнЧ.НоваяКолонка("СтавкаНДС");
   МнЧ.НоваяКолонка("СуммаНДС",);
   МнЧ.НоваяКолонка("СуммаНП",);
   МнЧ.НоваяКолонка("ВсегоСНДС",);
   МнЧ.НоваяКолонка("Номенклатура");
   МнЧ.НоваяКолонка("СтранаН");
   МнЧ.НоваяКолонка("НомерГТД");
   МнЧ.НоваяКолонка("Единица");
   МнЧ.НоваяКолонка("Количество");
   МнЧ.НоваяКолонка("АкцизЦена");
   
КонецПроцедуры // СоздатьСтруктуру()
Функция СведенияОРоссийскойОрганизации(Клиент,Конт)
   
   Если ТипЗначенияСтр(Клиент)<>"Справочник" Тогда
       
       Спис=СоздатьОбъект("СписокЗначений");
       
       Спис.ДобавитьЗначение("","Печать");
       Спис.ДобавитьЗначение("","Должность");
       Спис.ДобавитьЗначение("","ФИО");
       Спис.ДобавитьЗначение("","ОКПО");
       Спис.ДобавитьЗначение("","СерияЛицензии");
       Спис.ДобавитьЗначение("","НомерЛицензии");
       Спис.ДобавитьЗначение("","ОрганЛицензии");
       Спис.ДобавитьЗначение("","АдресПоставки");
       Спис.ДобавитьЗначение("","Склад");
       Спис.ДобавитьЗначение("","ИНН");
       Спис.ДобавитьЗначение("","ПолнНаименование");
       Спис.ДобавитьЗначение("","ЮридическийАдрес");
       Спис.ДобавитьЗначение("","Лицензия");
       
       Возврат Спис;
       
   КонецЕсли;
   
   Если Клиент.Вид()="Фирмы" Тогда
       
       алкКлиент=алкЕстьАлкоголь(Клиент.ЮрЛицо);
       
       Если ПустоеЗначение(алкКлиент)=0 Тогда
           
           спрСобствЛицензии = СоздатьОбъект("Справочник.алкСобственныеЛицензии");
           спрСобствЛицензии.ИспользоватьВладельца(Клиент.ЮрЛицо);
           
           Если ПустоеЗначение(алкКлиент.ОсновнаяЛицензия) = 0 Тогда
               
               Если Метаданные.Справочник("алкСобственныеЛицензии").Реквизит("ЛицензияСерия").Выбран() = 1 Тогда
                   СерияЛицензииКлиента=СокрЛП(алкКлиент.ОсновнаяЛицензия.ЛицензияСерия);    
               Иначе
                   СерияЛицензииКлиента= "";
               КонецЕсли;                          
               
               НомерЛицензииКлиента=алкКлиент.ОсновнаяЛицензия.ЛицензияНомер;
               ОрганЛицензииКлиента=алкКлиент.ОсновнаяЛицензия.ЛицензияОрган;
               
               Лицензия = алкКлиент.ОсновнаяЛицензия;
               
           Иначе
               
               ЛицензияНайдена = 0;
               
               спрСобствЛицензии.ВыбратьЭлементы();
               Пока спрСобствЛицензии.ПолучитьЭлемент()=1 Цикл
                   
                   Если Метаданные.Справочник("алкСобственныеЛицензии").Реквизит("ЛицензияСерия").Выбран() = 1 Тогда
                       СерияЛицензииКлиента=СокрЛП(спрСобствЛицензии.ЛицензияСерия);    
                   Иначе
                       СерияЛицензииКлиента= "";
                   КонецЕсли;                          
                   
                   НомерЛицензииКлиента=спрСобствЛицензии.ЛицензияНомер;
                   ОрганЛицензииКлиента=спрСобствЛицензии.ЛицензияОрган;
                   Лицензия = спрСобствЛицензии;
                   
                   ЛицензияНайдена = 1;
                   Прервать;
                   
               КонецЦикла;  
               
               Если ЛицензияНайдена = 0 Тогда
                   Сообщить("Отсутствует действующая лицензия","!");    
               КонецЕсли;
               
           КонецЕсли;
           
           ФИОКлиента= СокрЛП(алкКлиент.Отправитель);
           
           Если (ФС.СуществуетФайл(""+КаталогФотографий+СокрЛП(алкКлиент.Печать))=1) И (ПустаяСтрока(алкКлиент.Печать)=0) Тогда
               ПечатьКлиента=""+КаталогФотографий+СокрЛП(алкКлиент.Печать);
           КонецЕсли;
           
       Иначе
           
           ФИОКлиента="";            
           НомерЛицензииКлиента="";
           ОрганЛицензииКлиента="";
           Лицензия = "";
           
       КонецЕсли;
       
       Если ПустоеЗначение(ФИОКлиента)=0 Тогда
           
           Если (ФС.СуществуетФайл(""+КаталогФотографий+СокрЛП(алкКлиент.Печать))=1) И (ПустаяСтрока(алкКлиент.Печать)=0) Тогда
               ПечатьКлиента=""+КаталогФотографий+СокрЛП(алкКлиент.Печать);
           КонецЕсли;
           
           ДолжнКлиента=алкКлиент.ДолжностьОтправителя;
           
       Иначе
           ДолжнКлиента="";
       КонецЕсли;
       
       КлиентОКПО=СокрЛП(Клиент.ЮрЛицо.ОКПО);
       АдресПоставки="";
       
       Если Клиент=Конт.Фирма Тогда
           
           Если глЕстьРеквизитШапки("ПунктПогрузки",Конт.Вид())=1 Тогда
               
               // --------------- КТ-2000-(095)737-3499 ----- Игорь 22-02-06 --------()-------------------
               Если Конт.ПунктПогрузки.Выбран()=1 Тогда
                   АдресПоставки=глПредставлениеАдреса(Конт.ПунктПогрузки.Адрес);
               Иначе
                   АдресПоставки=глПредставлениеАдреса(Конт.Склад.Адрес);
               КонецЕсли;
               // --------------------- Игорь 22-02-06 ------------------------------()-------------------
               
           ИначеЕсли Конт.Склад.Выбран()=1 Тогда
               АдресПоставки=глПредставлениеАдреса(Конт.Склад.Адрес);
           Иначе
               
               АдресПоставки=глПредставлениеАдреса(Клиент.ЮрЛицо.ФактАдрес);
               
               Если ПустаяСтрока(АдресПоставки)=1 Тогда
                   АдресПоставки=глПредставлениеАдреса(Клиент.ЮрЛицо.ЮрАдрес);
               КонецЕсли;
               
           КонецЕсли;
           
       Иначе
           
           АдресПоставки=глПредставлениеАдреса(Клиент.ЮрЛицо.ФактАдрес);
           
           Если ПустаяСтрока(АдресПоставки)=1 Тогда
               АдресПоставки=глПредставлениеАдреса(Клиент.ЮрЛицо.ЮрАдрес);
           КонецЕсли;
           
       КонецЕсли;
       
       ПолноеНаименование = Клиент.ЮрЛицо.ПолнНаименование;
       ЮрАдрес = Клиент.ЮрЛицо.ЮрАдрес;
       
   Иначе
       
       алкКлиент=алкЕстьАлкоголь(Клиент);
       
       Если ПустоеЗначение(алкКлиент)=0 Тогда
           
           Если алкКлиент.Отправитель.Выбран()=1 Тогда
               
               ФИОКлиента=СокрЛП(алкКлиент.Отправитель);
               ДолжнКлиента=СокрЛП(алкКлиент.ДолжностьОтправителя);
               
           КонецЕсли;
           
           Если Клиент.Вид()="Контрагенты" Тогда
               
               Если ПарамДок.Контрагент = Клиент Тогда
                   
                   Если глЕстьРеквизитШапки("Лицензия", ПарамДок.Вид()) = 1 Тогда
                       
                       Если ПустоеЗначение(ПарамДок.Лицензия) = 0 Тогда
                           
                           Если Метаданные.Справочник("Лицензии").Реквизит("ЛицензияСерия").Выбран() = 1 Тогда
                               СерияЛицензииКлиента=СокрЛП(ПарамДок.Лицензия.ЛицензияСерия);    
                           Иначе
                               СерияЛицензииКлиента= "";
                           КонецЕсли;                          
                           
                           НомерЛицензииКлиента=ПарамДок.Лицензия.ЛицензияНомер;
                           ОрганЛицензииКлиента=ПарамДок.Лицензия.ЛицензияОрган;
                           
                           Лицензия = ПарамДок.Лицензия;
                           
                       Иначе
                           
                           // --------------- КТ-2000-(095)737-3499 ----- Игорь 27-02-06 --------()-------------------
                           Если Метаданные.Справочник("Договоры").Реквизит("Лицензия").Периодический = 1 Тогда
                               Лицензия = Клиент.ОсновнойДоговор.Лицензия.Получить(Конт.ДатаДок);
                           Иначе
                               Лицензия = Клиент.ОсновнойДоговор.Лицензия;
                           КонецЕсли;
                           
                           Если ПустоеЗначение(Лицензия) = 0 Тогда
                               
                               Если Метаданные.Справочник("Лицензии").Реквизит("ЛицензияСерия").Выбран() = 1 Тогда
                                   СерияЛицензииКлиента=СокрЛП(Лицензия.ЛицензияСерия);    
                               Иначе
                                   СерияЛицензииКлиента= "";
                               КонецЕсли;                          
                               
                               НомерЛицензииКлиента = Лицензия.ЛицензияНомер;
                               ОрганЛицензииКлиента = Лицензия.ЛицензияОрган;
                               
                           КонецЕсли;
                           // --------------------- Игорь 27-02-06 ------------------------------()-------------------
                           
                       КонецЕсли;
                       
                   Иначе
                       
                       // --------------- КТ-2000-(095)737-3499 ----- Игорь 27-02-06 --------()-------------------
                       Если Метаданные.Справочник("Договоры").Реквизит("Лицензия").Периодический = 1 Тогда
                           Лицензия = Клиент.ОсновнойДоговор.Лицензия.Получить(Конт.ДатаДок);
                       Иначе
                           Лицензия = Клиент.ОсновнойДоговор.Лицензия;
                       КонецЕсли;
                       
                       Если ПустоеЗначение(Лицензия) = 0 Тогда
                           
                           Если Метаданные.Справочник("Лицензии").Реквизит("ЛицензияСерия").Выбран() = 1 Тогда
                               СерияЛицензииКлиента=СокрЛП(Лицензия.ЛицензияСерия);    
                           Иначе
                               СерияЛицензииКлиента= "";
                           КонецЕсли;                          
                           
                           НомерЛицензииКлиента = Лицензия.ЛицензияНомер;
                           ОрганЛицензииКлиента = Лицензия.ЛицензияОрган;
                           
                       КонецЕсли;
                       // --------------------- Игорь 27-02-06 ------------------------------()-------------------
                       
                   КонецЕсли;
                   
               Иначе
                   
                   Если ПустоеЗначение(алкКлиент.ОсновнаяЛицензия) = 0 Тогда
                       
                       Если Метаданные.Справочник("Лицензии").Реквизит("ЛицензияСерия").Выбран() = 1 Тогда
                           СерияЛицензииКлиента=СокрЛП(алкКлиент.ОсновнаяЛицензия.ЛицензияСерия);    
                       Иначе
                           СерияЛицензииКлиента= "";
                       КонецЕсли;                          
                       
                       НомерЛицензииКлиента=алкКлиент.ОсновнаяЛицензия.ЛицензияНомер;
                       ОрганЛицензииКлиента=алкКлиент.ОсновнаяЛицензия.ЛицензияОрган;
                       
                       Лицензия = алкКлиент.ОсновнаяЛицензия;
                       
                   ИначеЕсли ПустоеЗначение(Клиент.ОсновнойДоговор) = 0 Тогда
                       
                       // --------------- КТ-2000-(095)737-3499 ----- Игорь 27-02-06 --------()-------------------
                       Если Метаданные.Справочник("Договоры").Реквизит("Лицензия").Периодический = 1 Тогда
                           Лицензия = Клиент.ОсновнойДоговор.Лицензия.Получить(Конт.ДатаДок);
                       Иначе
                           Лицензия = Клиент.ОсновнойДоговор.Лицензия;
                       КонецЕсли;
                       
                       Если ПустоеЗначение(Лицензия) = 0 Тогда
                           
                           Если Метаданные.Справочник("Лицензии").Реквизит("ЛицензияСерия").Выбран() = 1 Тогда
                               СерияЛицензииКлиента=СокрЛП(Лицензия.ЛицензияСерия);    
                           Иначе
                               СерияЛицензииКлиента= "";
                           КонецЕсли;                          
                           
                           НомерЛицензииКлиента = Лицензия.ЛицензияНомер;
                           ОрганЛицензииКлиента = Лицензия.ЛицензияОрган;
                           
                       КонецЕсли;
                       // --------------------- Игорь 27-02-06 ------------------------------()-------------------
                       
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
           
           Если ПустаяСтрока(ПечатьКлиента)=1 Тогда
               ПечатьКлиента=""+КаталогФотографий+СокрЛП(алкКлиент.Печать);
           КонецЕсли;
           
       Иначе
           
           ФИОКлиента="";
           ДолжнКлиента="";
           НомерЛицензииКлиента="";
           ОрганЛицензииКлиента="";
           ПечатьКлиента="";
           
           Лицензия = "";
           
       КонецЕсли;
       
       Если Клиент.ЮрФизЛицо.Вид()<>"ФизЛица" Тогда
           КлиентОКПО = СокрЛП(Клиент.ЮрФизЛицо.ОКПО);
       Иначе
           КлиентОКПО = "";
       КонецЕсли;
       
       АдресПоставки="";
       Если Клиент=Конт.Контрагент Тогда    //Поставка из документа
           
           Если глЕстьРеквизитШапки("ПунктРазгрузки",Конт.Вид())=1 Тогда
               
               Если Конт.ПунктРазгрузки.Выбран()=1 Тогда
                   АдресПоставки=глПредставлениеАдреса(Конт.ПунктРазгрузки.Адрес);
                   
               Иначе
                   
                   Если глЕстьРеквизитШапки("Лицензия", ПарамДок.Вид()) = 1 Тогда
                       
                       Если ПустоеЗначение(ПарамДок.Лицензия) = 0 Тогда
                           АдресПоставки=глПредставлениеАдреса(ПарамДок.Лицензия.Область.Адрес);
                       Иначе
                           
                           // --------------- КТ-2000-(095)737-3499 ----- Игорь 26-02-06 --------(187 260206)-------------------
                           Если Метаданные.Справочник("Договоры").Реквизит("Лицензия").Периодический = 1 Тогда
                               АдресПоставки=глПредставлениеАдреса(ПарамДок.Договор.Лицензия.Получить(ПарамДок.ДатаДок).Область.Адрес);
                           Иначе
                               АдресПоставки=глПредставлениеАдреса(ПарамДок.Договор.Лицензия.Область.Адрес);
                           КонецЕсли;
                           
                       КонецЕсли;
                       
                   Иначе
                       
                       Если Метаданные.Справочник("Договоры").Реквизит("Лицензия").Периодический = 1 Тогда
                           АдресПоставки=глПредставлениеАдреса(ПарамДок.Договор.Лицензия.Получить(ПарамДок.ДатаДок).Область.Адрес);
                       Иначе
                           АдресПоставки=глПредставлениеАдреса(ПарамДок.Договор.Лицензия.Область.Адрес);
                       КонецЕсли;
                       
                   КонецЕсли;
                   // --------------------- Игорь 26-02-06 ------------------------------(187 260206)-------------------
                   
               КонецЕсли;
               
           Иначе
               
               Если Конт.Склад.Выбран()=1 Тогда
                   АдресПоставки=глПредставлениеАдреса(Конт.Склад.Адрес);
               Иначе
                   АдресПоставки=глПредставлениеАдреса(Клиент.ЮрФизЛицо.ФактАдрес);
                   Если ПустаяСтрока(АдресПоставки)=1 Тогда
                       АдресПоставки=глПредставлениеАдреса(Клиент.ЮрФизЛицо.ЮрАдрес);
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
           
       Иначе
           АдресПоставки=глПредставлениеАдреса(Клиент.ЮрФизЛицо.ФактАдрес);
           Если ПустаяСтрока(АдресПоставки)=1 Тогда
               АдресПоставки=глПредставлениеАдреса(Клиент.ЮрФизЛицо.ЮрАдрес);
           КонецЕсли;
       КонецЕсли;
       
       ПолноеНаименование = Клиент.ЮрФизЛицо.ПолнНаименование;
       ЮрАдрес = глПредставлениеАдреса(Клиент.ЮрФизЛицо.ЮрАдрес);
       
   КонецЕсли;
   
   
   Склад="";
   Разгр=СоздатьОбъект("Справочник.Разгрузка");
   
   Если Клиент=Конт.Фирма Тогда
       Склад=АдресПоставки;
   ИначеЕсли Клиент=Конт.Контрагент Тогда
       Склад=АдресПоставки;
   Иначе
       
       Разгр.ИспользоватьВладельца(Клиент);
       Разгр.ВыбратьЭлементы();
       
       Если Разгр.Выбран()=1 Тогда
           Склад=глПредставлениеАдреса(Разгр.Адрес);
       Иначе
           
           Если Клиент.Вид()="Фирмы" Тогда
               Склад=глПредставлениеАдреса(Клиент.ЮрЛицо.ФактАдрес);
           Иначе
               Склад=глПредставлениеАдреса(Клиент.ЮрФизЛицо.ФактАдрес);
           КонецЕсли;
           
       КонецЕсли;
       
       Если ПустаяСтрока(Склад)=1 Тогда
           
           Если Клиент.Вид()="Фирмы" Тогда
               Склад=глПредставлениеАдреса(Клиент.ЮрЛицо.ЮрАдрес);
           Иначе
               Склад=глПредставлениеАдреса(Клиент.ЮрФизЛицо.ЮрАдрес);
           КонецЕсли;
           
       КонецЕсли;
       
   КонецЕсли;
   
   Спис=СоздатьОбъект("СписокЗначений");
   
   Спис.ДобавитьЗначение(ПечатьКлиента,"Печать");
   Спис.ДобавитьЗначение(ДолжнКлиента,"Должность");
   Спис.ДобавитьЗначение(ФИОКлиента,"ФИО");
   Спис.ДобавитьЗначение(КлиентОКПО,"ОКПО");
   Спис.ДобавитьЗначение(СерияЛицензииКлиента,"СерияЛицензии");
   Спис.ДобавитьЗначение(НомерЛицензииКлиента,"НомерЛицензии");
   Спис.ДобавитьЗначение(ОрганЛицензииКлиента,"ОрганЛицензии");
   Спис.ДобавитьЗначение(АдресПоставки,"АдресПоставки");
   Спис.ДобавитьЗначение(Склад,"Склад");
   
   Если Клиент.Вид()="Фирмы" Тогда
       Спис.ДобавитьЗначение(СокрЛП(Клиент.ЮрЛицо.ИНН),"ИНН");
   Иначе
       Спис.ДобавитьЗначение(СокрЛП(Клиент.ЮрФизЛицо.ИНН),"ИНН");
   КонецЕсли;
   
   Спис.ДобавитьЗначение(СокрЛП(ПолноеНаименование),"ПолнНаименование");
   Спис.ДобавитьЗначение(глПредставлениеАдреса(ЮрАдрес),"ЮридическийАдрес");
   
   Спис.ДобавитьЗначение(Лицензия,"Лицензия");
   
   Возврат Спис;
   
КонецФункции // СведенияОРоссийскойОрганизации()
Функция алкЮрЛицо(Контрагент)    Экспорт
   
   Если ПустоеЗначение(Контрагент)=1 Тогда
       Возврат "";
   КонецЕсли;
   
   Если ТипЗначенияСтр(Контрагент)<>"Справочник" Тогда
       Возврат "";        
   КонецЕсли;
   
   ВидСправочника=Контрагент.Вид();
   
   Если ВидСправочника="Фирмы" Тогда
       Возврат Контрагент.ЮрЛицо;
   ИначеЕсли ВидСправочника="Контрагенты" Тогда
       Возврат Контрагент.ЮрФизЛицо;
   Иначе
       Возврат "";
   КонецЕсли;    

КонецФункции // алкЮрЛицо()
//---КТ-2000-(095)789-3070-----------------------

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

   Возврат "";
   
КонецФункции // ПодготовитьПоКнигеПродаж()
// -----------------------------------------------------------------------

Функция алкПересчетВДалы(Кол, алкТовар)    Экспорт
   
   Если ТипЗначенияСтр(алкТовар)<>"Справочник" Тогда
       Возврат 0;
   КонецЕсли;
   Если алкТовар.Вид()<>"АлкНоменклатура" Тогда
       Возврат 0;
   КонецЕсли;
   Дал=(Кол*алкТовар.Емкость)/10;
   Возврат Дал;
   
КонецФункции // алкПересчетВДалы()
Функция ПолучитьПоследовательностьПосредников(Товар, ДокПост=0)
   
   СписПоср=СоздатьОбъект("ТаблицаЗначений");
   СписПоср.НоваяКолонка("Клиент");
   СписПоср.НоваяКолонка("ДатаТТН");
   СписПоср.НоваяКолонка("НомерТТН");
   СписПоср.НоваяКолонка("Количество");
   
   алкТовар=алкЕстьАлкоголь(Товар);    
   
   Если ПустоеЗначение(алкТовар)=0 Тогда
       
       Если ПустоеЗначение(ДокПост)=0 Тогда
           
           //Сделаем с учетом посредников из партии
           Если алкТовар.Производитель.Выбран()=1 Тогда
               СписПоср.НоваяСтрока();
               СписПоср.Клиент=алкТовар.Производитель;
           Иначе
               Сообщить("Не указан производитель алкоголя "+СокрЛП(Товар.ПолнНаименование));
               СписПоср.НоваяСтрока();
               СписПоср.Клиент=ВыбДокумент.Фирма;
           КонецЕсли;
           
           ПосредникиПартии=СоздатьОбъект("Справочник.алкПосредникиПартии");
           ПосредникиПартии.ИспользоватьВладельца(ДокПост);
           
           БылиПосредники=0;
           
           ПосредникиПартии.ВыбратьЭлементы();
           Пока ПосредникиПартии.ПолучитьЭлемент()=1 Цикл
               
               Если ПосредникиПартии.ПометкаУдаления()=1 Тогда
                   Продолжить;
               КонецЕсли;
               
               СписПоср.НоваяСтрока();
               СписПоср.Клиент=ПосредникиПартии.Клиент;
               СписПоср.ДатаТТН=ПосредникиПартии.ДатаТТН;
               СписПоср.НомерТТН=ПосредникиПартии.НомерТТН;
               СписПоср.Количество=ПосредникиПартии.Количество;
               БылиПосредники=1;
           
           КонецЦикла;
           
           Если БылиПосредники=1 Тогда
               СписПоср.НоваяСтрока();
               СписПоср.Клиент=ВыбДокумент.Фирма;
               Возврат СписПоср;
           Иначе
               СписПоср.УдалитьСтроки();
           КонецЕсли;
           
       КонецЕсли;
       
       Если алкТовар.Производитель.Выбран()=1 Тогда
           
           СписПоср.НоваяСтрока();
           СписПоср.Клиент=алкТовар.Производитель;
       
       Иначе
           
           Сообщить("Не указан производитель алкоголя "+СокрЛП(Товар.ПолнНаименование));
           
           СписПоср.НоваяСтрока();
           СписПоср.Клиент=ВыбДокумент.Фирма;
       
       КонецЕсли;
       
       Если алкТовар.Импортер.Выбран()=1 Тогда
           
           СписПоср.НоваяСтрока();
           СписПоср.Клиент=алкТовар.Импортер;
       
       Иначе
       
           Если алкТовар.Импорт=1 Тогда
               
               Если алкТовар.Производитель.Выбран()=1 Тогда
                   СписПоср.НоваяСтрока();
                   СписПоср.Клиент=алкТовар.Производитель;
               КонецЕсли;
           
           КонецЕсли;
   
       КонецЕсли;
       
       Если алкТовар.Покупатель.Выбран()=1 Тогда
           СписПоср.НоваяСтрока();
           СписПоср.Клиент=алкТовар.Покупатель;
       КонецЕсли;
       
       Поср.ИспользоватьВладельца(алкТовар);
       
       Поср.ВыбратьЭлементы();
   
1 dimonv156
 
30.11.12
09:38
А то скоро я тут с ума сойду. Не понимаю что я делаю не так.
2 Ёпрст
 
30.11.12
09:38
Больше кода - запость глобальник, без него ничего не понять.
3 Касандер72
 
30.11.12
09:38
клево: пятницо уже началось)
4 dimonv156
 
30.11.12
09:40
Это точно! Я уже с этим кодом 2 неделю мучаюсь))))
5 Ёпрст
 
30.11.12
09:42
А чего, у кт-ников нет готового решения ?
Хотя их конфы - редкостная гадость
6 dimonv156
 
30.11.12
09:45
Скинь ссылку. От куда скачать там можно будет посидеть по разбираться. Ну или есть готовая справка Б с номером ГТД буду очень признателен. А то я качал их но они все без номера ГТД.
7 dimonv156
 
30.11.12
09:48
Там же код должен выводиться через 0000000/0000000/000000 Примерно. В счете фактур он указываеться верно. Но я не знаю как его от туда достать. В какую часть кода засунуть?
8 Amra
 
30.11.12
09:48
(0) Ндя... То есть хочешь сказать что все поняли что именно не получается?
9 dimonv156
 
30.11.12
09:49
Пытался по всякому.Выводит пустое значение. Т.е Есть справка Б как внешняя обработка. Если надо могу скинуть скрины.
10 Ёпрст
 
30.11.12
09:50
(6) у мну нет кт-ных конф.
А так, если она у вас куплена - то у кт-ников есть своя поддержка.. Ну и справку б они наверняка слепили..

ЗЫ: у нас другая структура, и справка Б печатается как надо, а не через ж.. как у кт-ников.
11 1Сергей
 
30.11.12
09:54
что такое кт?
12 Godofsin
 
30.11.12
09:55
(0) оущет! ну и кто это читал?
13 Ёпрст
 
30.11.12
09:56
(11) кт-2000 алкоголь, это конфа на основе тис/комплексной..
А кт - это франи
http://www.kt-alkogol.ru/
14 dimonv156
 
30.11.12
09:58
Может скинете часть кода который выведит номер ГТД а там я попробую поразбираться.
15 dimonv156
 
30.11.12
10:08
Написал КТ-кам Жду что они ответят.
16 Ёпрст
 
30.11.12
10:10
(14) если не ошибаюсь, это реквизит как самой номенклатуры (или подч. справочника с алкоголем), так и реквизит партии.

в начале глядят, если док проведен - то берут с движений, если там нет - с партий.

И то и то - не совсем верно.
17 dimonv156
 
30.11.12
10:18
Как тогда надо! Напиши я сейчас попробую и сразу отпишусь.
18 Ёпрст
 
30.11.12
10:23
че писать ? у меня нет кт-ных конф.
19 dimonv156
 
30.11.12
10:25
Ну если судоть по коду которому я скинул
20 Ёпрст
 
30.11.12
10:26
а нумера надо те писать, которые склад отдал, а не те.. что в партиях хранятся.
И от того, как вы справки подбираете, тоже зависит..
Либо у вас склад подбирает товар и отдает то, что подобрал  и потом только бумажки подбирают, либо склад ишет именно то, что ему в требовании прилетело.
21 Ёпрст
 
30.11.12
10:26
т.е то, что твоя 1с-ина распечатала.
22 dimonv156
 
30.11.12
10:29
Могу скинуть код Счета фактуры в котором выводиться номер ГТД. Если это поможет
23 BlackSeaCat
 
30.11.12
10:29
Торговцам алкоголем помогать забесплатно - аморально, ИМХО.
24 dimonv156
 
30.11.12
10:31
Да у меня не только эти алкоголики. С другими базами проблем вроде таких нет! Тем более много разных книг. А вот с этой фигней полная ж...
25 dimonv156
 
30.11.12
10:34
////////////////////////////////////////////////////////////////////////////////
// ОПИСАНИЕ МОДУЛЬНЫХ ПЕРЕМЕННЫХ

Перем СписокДействий; // для механизма кнопки "Действия"
Перем НачальнаяДатаДокумента; // для механизма контроля уникальности номеров
                   
Перем ТаблицаПечФорм;  // список печатных форм документа
Перем НомерТекущейФормы;
           
Перем СтараяФирма;

Перем КонтекстОснования; // контекст формы документа - основания
Перем ФормаСумма, ФормаСуммаНДС, ФормаСуммаНП, ИтогПосчитан;

Перем ПечВалюта;
// --------------- КТ-2000-(095)789-3070 ----- Игорь 26-10-05 --------(627 250705)---------------------
Перем НомерДокНумератора;

Процедура УстановитьНомер() Далее
// --------------------- Игорь 26-10-05 ------------------------------(627 250705)---------------------
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
//    
//******************************************************************************
// ПолучитьИНН(ИННКПП)
//
// Параметры:
//  ИННКПП  - строка, написанные вместе ИНН и КПП юр лица.
//
// Возвращаемое значение:
//  значение ИНН юр лица.
//  
// Описание:
//  Функция возращает ИНН из переданной строки
//
Функция ПолучитьИНН(ИННКПП)
   
   Если Найти(ИННКПП, "\") <> 0 Тогда
       // найден разделитель
       Возврат Лев(ИННКПП, Найти(ИННКПП, "\") - 1);

   Иначе
       Возврат СокрЛП(ИННКПП);

   КонецЕсли;

КонецФункции // ПолучитьИНН()

//******************************************************************************
// ПолучитьКПП(ИННКПП)
//
// Параметры:
//  ИННКПП  - строка, написанные вместе ИНН и КПП юр лица.
//
// Возвращаемое значение:
//  значение КПП юр лица.
//  
// Описание:
//  Функция возращает КПП из переданной строки
//
Функция ПолучитьКПП(ИННКПП)

   Если Найти(ИННКПП, "\") <> 0 Тогда
       // найден разделитель
       Возврат Сред(ИННКПП, Найти(ИННКПП, "\") + 1);

   Иначе
       Возврат "";

   КонецЕсли;

КонецФункции // ПолучитьКПП()

//******************************************************************************
// СуммаДокумента()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Сумма по документу (всего с налогами)
//
// Описание:
//  Возвращает сумму всего по документу, прописывает надписи итоговых сумм по НДС
//  и НП. Вычисление сумм производится по документу - основанию.
//
Функция СуммаДокумента()
   
   Если (КоличествоСтрок() = 0)
   и    (ДокОснование.Выбран() = 1)
   и    (ИтогПосчитан = 1)
   Тогда
       // если расчет производим по документу - основанию - лишний раз не мучаем базу.
       // пересчитаем 1 раз при открытии
       Возврат ФормаСумма;
   КонецЕсли;
                                                       
   ИтогПосчитан = 1;
   ФормаСумма    = глСуммаСчетаФактуры(Контекст, ФормаСуммаНДС, ФормаСуммаНП);
   Возврат ФормаСумма;
   
КонецФункции // СуммаДокумента()

//******************************************************************************
// ПодсказкаОРежимеСФ()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Текст подсказки.
//
// Вызывается из формул элементов диалога:
//  Текстовое поле в диалоге.
//
// Описание:
//  Возвращает текст подсказки о текущем состоянии СФ.
//
Функция ПодсказкаОРежимеСФ()
   
   Если АвтоКнигаПродаж = 1 Тогда
       ТекстПодсказки = "Записи книги продаж по счету - фактуре будут " +  
       "сформированы автоматически регламентным документом ""Формирование "+
       "книги продаж"".";
   Иначе                  
       ТекстПодсказки = "Записи книги продаж по этому счету - фактуре должны "+
       "быть введены вручную. ";
   КонецЕсли;
   
   Возврат ТекстПодсказки;
   
КонецФункции // ПодсказкаОРежимеСФ()    

//******************************************************************************
// УправлениеВидимостью()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//
// Описание:
//  Установка доступности элементов
//
Процедура УправлениеДоступностью()
   Если ПустоеЗначение(ДокОснование) = 1 Тогда
       Форма.СФНаАванс.Доступность(1);
   Иначе
       Если (ДокОснование.Вид() = "ПКО")
        ИЛИ (ДокОснование.Вид() = "РКО")
        ИЛИ (ДокОснование.Вид() = "СтрокаАвансОтчетаОплата")
        ИЛИ (ДокОснование.Вид() = "СтрокаВыпискиПриход")
        ИЛИ (ДокОснование.Вид() = "СтрокаВыпискиРасход") Тогда
           Форма.СФНаАванс.Доступность(1);
       
        Иначе
           Форма.СФНаАванс.Доступность(0);
       
       КонецЕсли;
   КонецЕсли;
               
   Если СФНаАванс = 0 Тогда
       Форма.кнСчетНаОплату.Доступность(0);
       Форма.кнХСчет.Доступность(0);
       
   Иначе
       Форма.кнСчетНаОплату.Доступность(1);
       Форма.кнХСчет.Доступность(1);
       
   КонецЕсли;
КонецПроцедуры

//******************************************************************************
// УправлениеВидимостью()
//
// Параметры:
//  НомерЗакладки - номер текущей закладки.
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//
// Описание:
//  Установка видимости элементов диалога в зависимости от текущей закладки.
//
Процедура УправлениеВидимостью(НомерЗакладки)
   
   Если НомерЗакладки=1 Тогда                
       Форма.ИспользоватьСлой("Шапка,Основной,Подвал");
   Иначе
       Форма.ИспользоватьСлой("Шапка,ТабличнаяЧасть,Подвал");
   КонецЕсли;      
   
КонецПроцедуры // УправлениеВидимостью()    

//******************************************************************************
// УстановкаФлагаАвтоКнигаПродаж()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//
// Описание:
//  Устанавливает доступность и значение реквизита "Автоматические записи
//  книги продаж" в зависимости от вида документа.
//
Процедура УстановкаФлагаАвтоКнигаПродаж()
   
   Если (ДокОснование.Выбран() = 0) ИЛИ (СФНаАванс = 1) Тогда
       Форма.АвтоКнигаПродаж.Доступность(0);
       
       Если СФНаАванс = 1 Тогда
           Если АвтоКнигаПродаж = 0 Тогда
                АвтоКнигаПродаж = 1;
           КонецЕсли;
       
       Иначе
           Если АвтоКнигаПродаж = 1 Тогда
                АвтоКнигаПродаж = 0;
           КонецЕсли;
   
       КонецЕсли;

   Иначе    
       Форма.АвтоКнигаПродаж.Доступность(1);      
   КонецЕсли;
       
КонецПроцедуры // УстановкаФлагаАвтоКнигаПродаж()
                                                     
//******************************************************************************
// УстановкаНаличияЗакладок()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//  Кнопки "Очистить док. основание", "Выбрать док. основание".
//
// Описание:
//  Если документ введен на основании, не показываем суммы. (Для
//    "свободного" документ - показываем на закладке).
//
Процедура УстановкаНаличияЗакладок()
   
   Если (ДокОснование.Выбран() = 1)
   и    (СФНаАванс = 0)
   Тогда
       Форма.ИспользоватьЗакладки(0);
       Форма.ИспользоватьСлой("Шапка,Основной,Подвал");
       Если КоличествоСтрок()>0 Тогда
           УдалитьСтроки();
       КонецЕсли;
   Иначе
       Форма.ИспользоватьЗакладки(1);
       Форма.Закладки.УдалитьВсе();
       Форма.Закладки.ДобавитьЗначение("Основной");
       Если СчетНаОплату.Выбран() = 0 Тогда
           Форма.Закладки.ДобавитьЗначение("Суммы");
       КонецЕсли;
       
       Форма.Закладки.ТекущаяСтрока(1);
       УправлениеВидимостью(1);
   КонецЕсли;

   Если СчетНаОплату.Выбран() = 0 Тогда
       Форма.СуммаАвансаПоУчету.Доступность(0);
       Если СуммаАвансаПоУчету <> 0 Тогда
           СуммаАвансаПоУчету = 0;
       КонецЕсли;
   Иначе
       Форма.СуммаАвансаПоУчету.Доступность(1);
       
   КонецЕсли;
   
КонецПроцедуры // УстановкаНаличияЗакладок()

//*****************************************************************************
// ТекстВалюты(Вал)
//
// Параметры:
//  Вал - элемент справочника "Валюты"
//
// Возвращаемое значение:
//  Строка валюты
//
// Описание:
//    Возвращает название валюты или строку "<нет валюты>"
//
Функция ТекстВалюты(Вал)
   
   Возврат ?(ПустоеЗначение(Вал) = 0, Вал.Наименование, "<нет валюты>");
   
КонецФункции                                                                    

//*****************************************************************************
// ТекстВалюты(Вал)
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Строка
//
// Описание:
//    Возвращает название реквизита "СФ на аванс"
//
Процедура ТекстСФНаАванс()
   
   Форма.СФНаАванс.Заголовок(?(ДатаДок >= глНачало2006года, "СФ на предварительный платеж", "СФ на аванс"));
   
КонецПроцедуры                                                                    

//******************************************************************************
// ОбновитьНадписи()
//
// Описание:
//    Обновляет текст информационных надписей в форме документа
Процедура ОбновитьНадписи()
   
   Форма.ТекстФирмы    .Заголовок(глСтрокаФирмы        (Контекст));
   Форма.ТекстДоговора    .Заголовок(глСтрокаДоговора        (Контекст));
   Форма.ТекстКлиента    .Заголовок(глСтрокаКонтрагента    (Контекст));
   
   Если (КоличествоСтрок() = 0) И (ПустоеЗначение(ДокОснование) = 0) Тогда
       ВидОсн = ДокОснование.Вид();
       
       Если ВидОсн = "ОтчетКомитенту" Тогда
           ДокВалюта = глРубли;
       ИначеЕсли ВидОсн = "ЗакрытиеМесяца" Тогда
           ДокВалюта = глРубли;
       ИначеЕсли ВидОсн = "ВводОстатковПокупателя" Тогда
           ДокВалюта = глРубли;
       Иначе
           ДокВалюта = ДокОснование.Валюта;
       КонецЕсли;
   Иначе
       ДокВалюта = Валюта;
   КонецЕсли;
   
   Форма.РамкаВсего    .Заголовок("Всего ("+ТекстВалюты(ДокВалюта)+")");
   Форма.РамкаНДС        .Заголовок("НДС ("+ТекстВалюты(ДокВалюта)+")");
   Форма.РамкаНП        .Заголовок("НП ("+ТекстВалюты(ДокВалюта)+")");
   
КонецПроцедуры //ОбновитьНадписи()

//*****************************************************************************
// ЗаголовокФормы()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Название операции
//
// Описание:
//    Формирует название операции и заголовок формы диалога
//
Функция ЗаголовокФормы()
   Перем Заголовок, Название;
           
   Заголовок = глНазваниеДокументаВЖурнале(Контекст);
   Название = Заголовок+" №";
   
   Если Выбран() = 1 Тогда  
       Если Проведен() = 1 Тогда
           Заголовок = Заголовок + ".Проведен";
       Иначе
           Заголовок = Заголовок + ".Не проведен";
       КонецЕсли;
   Иначе
       Заголовок = Заголовок + ".Новый";
   КонецЕсли;
   Форма.Заголовок(Заголовок);              
   Возврат Название;
   
КонецФункции //ЗаголовокФормы                                                  
       
//******************************************************************************
// ДополнительнаяПроверкаОснования(ДокОсн)
//
// Параметры:
//  ДокОсн - документ
//
// Возвращаемое значение:
//  1 - доумент может быть основанием. 0 - нет.
//
// Описание:
//  Выполняет дополнительную проверку документа на то, может он выступать в
//  качестве основания или нет
//
Функция ДополнительнаяПроверкаОснования(ДокОсн, ОписаниеОш)
   
   Рез        = 1;
   ВидДок    = ДокОсн.Вид();
   
   Если "Реализация" = ВидДок Тогда
       Если ДокОсн.КодОперации = глКО.ПередачаНаРеализацию Тогда
           ОписаниеОш    = "Документ "+ДокОснование+" является документом передачи на комиссию.
                         |Выписка счета - фактуры не требуется!";
           Рез = 0;
       КонецЕсли;
       
   ИначеЕсли "РеализацияРозница" = ВидДок Тогда
       Если ДокОсн.ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам Тогда
           ОписаниеОш    = "По документу """ + глНазваниеДокументаВЖурнале(ДокОсн) + """
                         |выписка счета - фактуры не требуется!";
           Рез = 0;
       КонецЕсли;
       
   ИначеЕсли  "КорректировкаДолга" = ВидДок Тогда
       Если Перечисление.ВидыОперацийКоррДолга.Поставщик = ДокОсн.ВидОперации Тогда
           ОписаниеОш    = "По документу """ + глНазваниеДокументаВЖурнале(ДокОсн) + """
                         |выписка счета - фактуры не требуется!";
           Рез = 0;
       КонецЕсли;
   КонецЕсли;
   
   Возврат Рез;
   
КонецФункции // ДополнительнаяПроверкаОснования()

//******************************************************************************
// ЗаполнениеПоДокументуОснованию()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//
// Описание:
//  Производит заполнение документа по документу  - основанию.
//
Функция ЗаполнениеПоДокументуОснованию()
               
   Если ДокОснование.Выбран()=0 Тогда
       Возврат "Не выбран документ - основание";
   КонецЕсли;
               
   СФНаАванс = 0;
   
   Если (ДокОснование.Вид() = "ПКО")
    или (ДокОснование.Вид() = "РКО")
    или (ДокОснование.Вид() = "СтрокаВыпискиРасход")
    или (ДокОснование.Вид() = "СтрокаВыпискиПриход")
    или (ДокОснование.Вид() = "КорректировкаДолга")
    Тогда
       СФНаАванс = 1;
   КонецЕсли;
   
   // ввод остатков, которым ввели долг покупателю за полученный аванс.
   Если (ДокОснование.Вид()= "ВводОстатковПокупателя") Тогда
       Если (ДокОснование.ВидОперации = Перечисление.ВидыОперацийПоВводуОстатков.ОстаткиДолгаПокупателю) Тогда
           СФНаАванс = 1;
       КонецЕсли;    
   КонецЕсли;
       
   Фирма = ДокОснование.Фирма;
   Если глЕстьРеквизитШапки("Договор", ДокОснование.Вид()) = 1 Тогда
       Контрагент    = ДокОснование.Контрагент;
       Договор    = ДокОснование.Договор;    
   КонецЕсли;
   
   Если ДокОснование.Вид() = "ЗакрытиеМесяца" Тогда
       Комментарий = "Корректировка НДС, предъявляемого к вычету.";
       Контрагент  = 0;
       Договор     = 0;
   КонецЕсли;
   
   Если СФНаАванс = 1 Тогда
       // надо заполнить т.ч.
       СуммаАванса  = 0;
       УдалитьСтроки();
       
       РегПокупатели = СоздатьОбъект("Регистр.Покупатели");
       РегПокупатели.ВыбратьДвиженияДокумента(ДокОснование);
       Пока РегПокупатели.ПолучитьДвижение() = 1 Цикл
           Если РегПокупатели.ВидДолга = глВД.Аванс Тогда
                 СуммаАванса = СуммаАванса + РегПокупатели.СуммаРуб - РегПокупатели.СуммаНП;
           КонецЕсли;
       КонецЦикла;
       
       НоваяСтрока();  
       Количество   = 1;
       Сумма        = СуммаАванса;    
       Наименование = ?(ДокОснование.ДатаДок >= глНачало2006года, "Предварительный", "Авансовый") + " платеж";
       
       Если ДокОснование.ДатаДок >= '01.01.2004' Тогда
           СтавкаНДС    = Перечисление.СтавкиНДС.НДС18_118;
       Иначе        
           СтавкаНДС    = Перечисление.СтавкиНДС.НДС20_120;
       КонецЕсли;
       глПересчетТаблЧасти(Контекст,"Сумма");
       
   КонецЕсли;                                
   
   Возврат "";
   
КонецФункции //ЗаполнениеПоДокументуОснованию()

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

       // по документу основанию не должен быть выписан другой счет-фактура
       СФ = глНайтиСчетФактуру(Основание, "СчетФактураВыданный");
       Если ПустоеЗначение(СФ) = 0 Тогда      
           Если (СФ <> ТекущийДокумент()) и (СФ.ПометкаУдаления() = 0) Тогда
               Предупреждение("На основании документа " +
                         СинонимОснования + " " + СокрП(Основание.НомерДок) + " от " + Основание.ДатаДок + " " +
                         "уже выписан документ " + СинонимДокумента + " " + СокрП(СФ.НомерДок) + " от " + СФ.ДатаДок + ". " +
                         "Нельзя выписывать другой!", 60);
               Возврат;
           КонецЕсли;
       КонецЕсли;
       
       Если ДополнительнаяПроверкаОснования(Основание, ОписаниеОш) = 0 Тогда
           Предупреждение(ОписаниеОш, 60);
           Возврат;
       КонецЕсли;

       // Выбрали основание
       глЗаполнитьШапкуНаОсн(Контекст,Основание);
       
       Результат = ЗаполнениеПоДокументуОснованию();
       Если ПустоеЗначение(Результат) = 0 Тогда
           Предупреждение(Результат, 60);
       КонецЕсли;
       
       УстановкаНаличияЗакладок();
       УстановкаФлагаАвтоКнигаПродаж();
       
       // после выбора основания нужно пересчитать итоги
       ИтогПосчитан    = 0;                                                          
       УправлениеДоступностью();
       УстановкаНаличияЗакладок();
       ОбновитьНадписи();
   КонецЕсли;
   
КонецПроцедуры //ПоКнопкеОснование()  

//******************************************************************************
// ПоКнопкеОчиститьОснование()
//
// Параметры:
//  
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//  Здесь можно перечислить элементы диалога.
//
// Описание:
//  Здесь описывается процедура.
//
Процедура ПоКнопкеОчиститьОснование()
             
   Если ДокОснование.Выбран()= 0 Тогда
       Возврат;
   КонецЕсли;
   
   Если Вопрос ("Очистить документ - основание
       |(Счет - фактуру необходимо будет заполнить вручную)?","Да+Нет") = "Нет" Тогда
       Возврат;
   КонецЕсли;
   
   ДокОснование="";    
   Валюта = глРубли;
   Курс   = 1;
   Кратность = 1;
   УправлениеДоступностью();
   УстановкаНаличияЗакладок();
   УстановкаФлагаАвтоКнигаПродаж();  
   ОбновитьНадписи();
   // --------------- КТ-2000-(095)789-3070 ----- Игорь 09-12-04 -------- () -----------
   НомерДок = НомерДокНумератора;
   УправлениеДоступностью();                                                  
   // --------------------- Игорь 09-12-04 --------- () --------------------------------
   
КонецПроцедуры // ПоКнопкеОчиститьОснование()  

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

   Если СчетНаОпл.Выбрать("Выбор документа основания")=1 Тогда
       Кандидат = СчетНаОпл.ТекущийДокумент();
   Иначе
       Кандидат = "";
   КонецЕсли;  

   Если ПустоеЗначение(Кандидат ) = 1 Тогда
       Возврат;
   КонецЕсли;
   
   Если (ПустоеЗначение(Кандидат ) = 0) и  (СчетНаОплату <> Кандидат ) Тогда
       СчетНаОплату = Кандидат;
   КонецЕсли;

   УстановкаНаличияЗакладок();

КонецПроцедуры // ПоКнопкеСчетНаОплату()  

//******************************************************************************
// ПоКнопкеОчиститьСчет()
//
// Параметры:
//  
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//  Здесь можно перечислить элементы диалога.
//
// Описание:
//  Здесь описывается процедура.
//
Процедура ПоКнопкеОчиститьСчет()
             
   Если СчетНаОплату.Выбран()= 0 Тогда
       Возврат;
   КонецЕсли;
   
   Если Вопрос ("Очистить счет на оплату?","Да+Нет") = "Нет" Тогда
       Возврат;
   КонецЕсли;
   
   СчетНаОплату="";    
   УстановкаНаличияЗакладок();

КонецПроцедуры // ПоКнопкеОчиститьСчет()  

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

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

//******************************************************************************
// ПодготовитьРеквизитыШапки(Рекв)
//
// Параметры:
//  Рекв - реквизиты шапки
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  формирует список значений для формирования шапки печатной формы
//
Процедура ПодготовитьРеквизитыШапки(Рекв)
   
   ЮрФизЛицо   = Контрагент.ЮрФизЛицо;
   ЮрЛицоФирма = Фирма.ЮрЛицо;
   ЮрФизЛицо   = ?(ПустоеЗначение(ЮрФизЛицо) = 1, ПолучитьПустоеЗначение("Справочник.ЮрЛица"), ЮрФизЛицо);
   
   Рекв    = СоздатьОбъект("СписокЗначений");  
   
   ДатаСтр = НРег(Формат(ДатаДок, "Д(0)ДДММММГГГГ"));
   Рекв.ДобавитьЗначение(Шаблон("Продавец: [Фирма.ЮрЛицо.ПолнНаименование]"), "Поставщик");
   Рекв.ДобавитьЗначение(Шаблон("СЧЕТ-ФАКТУРА № [глНомерНаПечать(Контекст)] от " + ДатаСтр), "Номер");
   Рекв.ДобавитьЗначение(Шаблон("Адрес: [глПредставлениеАдреса(Фирма.ЮрЛицо.ЮрАдрес)]"), "АдресПоставщика");
   Рекв.ДобавитьЗначение(Шаблон("Телефон: [Фирма.ЮрЛицо.Телефоны]"), "ТелефонПоставщика");
   ТекстКПП = ?(ПустаяСтрока(ПолучитьКПП(ЮрЛицоФирма.ИНН)) = 0,"/"+ПолучитьКПП(ЮрЛицоФирма.ИНН),"");
   Рекв.ДобавитьЗначение(Шаблон("ИНН/КПП продавца: [ПолучитьИНН(ЮрЛицоФирма.ИНН)][ТекстКПП]"), "ИННКПП_Поставщика");
   Если ЕстьТовары() = 1 Тогда
       Рекв.ДобавитьЗначение(Шаблон("Грузоотправитель и его адрес: [Фирма.ЮрЛицо.ПолнНаименование], Адрес: [глПредставлениеАдреса(Фирма.ЮрЛицо.ФактАдрес)]"), "Грузоотправитель");
       Рекв.ДобавитьЗначение(Шаблон("Грузополучатель и его адрес: [ЮрФизЛицо.ПолнНаименование], Адрес: [глПредставлениеАдреса(ЮрФизЛицо.ФактАдрес)]"), "Грузополучатель");
   Иначе
       Рекв.ДобавитьЗначение("Грузоотправитель и его адрес: -----", "Грузоотправитель");
       Рекв.ДобавитьЗначение("Грузополучатель и его адрес: -----", "Грузополучатель");
   КонецЕсли;
   Если (ПустоеЗначение(НомерПлатРасчДок)=1) И (ПустоеЗначение(ДатаПлатРасчДок)=1) Тогда
       Рекв.ДобавитьЗначение("К платежно-расчетному документу______________от____________", "ПоДокументу");
   Иначе
       Рекв.ДобавитьЗначение(Шаблон("К платежно-расчетному документу № [НомерПлатРасчДок] от [Формат(ДатаПлатРасчДок, ""Д ДДММГГГГ"")]"), "ПоДокументу");
   КонецЕсли;
   //Рекв.ДобавитьЗначение(Шаблон("К платежно-расчетному документу  [НомерПлатРасчДок] от [ДатаПлатРасчДок]"), "ПоДокументу");
   Рекв.ДобавитьЗначение(Шаблон("Покупатель:[СокрП(ЮрФизЛицо.ПолнНаименование)]"), "Покупатель");
   Рекв.ДобавитьЗначение(Шаблон("Адрес: [глПредставлениеАдреса(ЮрФизЛицо.ЮрАдрес)]"), "АдресПокупателя");
   Рекв.ДобавитьЗначение(Шаблон("Телефон: [ЮрФизЛицо.Телефоны]"), "ТелефонПокупателя");
   ТекстКПП = ?(ПустаяСтрока(ПолучитьКПП(ЮрФизЛицо.ИНН)) = 0,"/"+ПолучитьКПП(ЮрФизЛицо.ИНН),"");
   Рекв.ДобавитьЗначение(Шаблон("ИНН/КПП покупателя: [ПолучитьИНН(ЮрФизЛицо.ИНН)][ТекстКПП]"), "ИННКПП_Покупателя");
   
КонецПроцедуры // ПодготовитьРеквизитыШапки()

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

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

   Если (ВидОсн = "Реализация") ИЛИ (ВидОсн = "РеализацияПрочее") Тогда

       ПечВалюта = Константа.ВалютаБухУчета;

       // корретируем табличную часть по регистру "Книга продаж"
       СуммыПоУчету = СоздатьОбъект("ТаблицаЗначений");
       СуммыПоУчету.НоваяКолонка("СуммаПоУчету",    "Число", 15, 2);    
       СуммыПоУчету.НоваяКолонка("СуммаНДСПоУчету", "Число", 15, 2);    
       СуммыПоУчету.НоваяКолонка("СуммаНППоУчету",  "Число", 15, 2);    
       
       ВсегоСтрок = ТаблицаОснования.КоличествоСтрок();
       
       ОбщаяСуммаДокумента = ТаблицаОснования.Итог("Сумма");
       Сумма0Стр    = 0;
       СуммаНДС0Стр = 0;
       СуммаНП0Стр  = 0;
   
       Для Сч = 1 По ВсегоСтрок Цикл
           СуммыПоУчету.НоваяСтрока();
       КонецЦикла;
       
       РегистрКнигиПродаж = СоздатьОбъект("Регистр.КнигаПродаж");
       Если РегистрКнигиПродаж.ВыбратьДвиженияДокумента(ДокОснование) = 1 Тогда
           Пока РегистрКнигиПродаж.ПолучитьДвижение() = 1 Цикл
               Если РегистрКнигиПродаж.Приход = 1 Тогда
                   Если РегистрКнигиПродаж.НомерСтроки() = 0 Тогда
                       Сумма0Стр    = Сумма0Стр    + РегистрКнигиПродаж.СуммаРуб;
                       СуммаНДС0Стр = СуммаНДС0Стр + РегистрКнигиПродаж.СуммаНДС;
                       СуммаНП0Стр  = СуммаНП0Стр  + РегистрКнигиПродаж.СуммаНП;
                       
                   Иначе
                       СуммыПоУчету.УстановитьЗначение(РегистрКнигиПродаж.НомерСтроки(), "СуммаПоУчету", РегистрКнигиПродаж.СуммаРуб +
                                                       СуммыПоУчету.ПолучитьЗначение(РегистрКнигиПродаж.НомерСтроки(), "СуммаПоУчету"));            
                       СуммыПоУчету.УстановитьЗначение(РегистрКнигиПродаж.НомерСтроки(), "СуммаНДСПоУчету", РегистрКнигиПродаж.СуммаНДС +
                                                       СуммыПоУчету.ПолучитьЗначение(РегистрКнигиПродаж.НомерСтроки(), "СуммаНДСПоУчету"));            
                       СуммыПоУчету.УстановитьЗначение(РегистрКнигиПродаж.НомерСтроки(), "СуммаНППоУчету", РегистрКнигиПродаж.СуммаНП +
                                                       СуммыПоУчету.ПолучитьЗначение(РегистрКнигиПродаж.НомерСтроки(), "СуммаНППоУчету"));            
                   КонецЕсли;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
       
       ТаблицаОснования.ВыбратьСтроки();
       
       Пока ТаблицаОснования.ПолучитьСтроку() = 1 Цикл
   
           СуммаПеч    = СуммыПоУчету.ПолучитьЗначение(ТаблицаОснования.НомерСтроки, "СуммаПоУчету");
           СуммаНДСПеч = СуммыПоУчету.ПолучитьЗначение(ТаблицаОснования.НомерСтроки, "СуммаНДСПоУчету");
           СуммаНППеч  = СуммыПоУчету.ПолучитьЗначение(ТаблицаОснования.НомерСтроки, "СуммаНППоУчету");
           // распределяем общие суммы по строкам документа
           Если ОбщаяСуммаДокумента <> 0 Тогда
               СуммаПеч    = СуммаПеч    + Сумма0Стр * ТаблицаОснования.Сумма / ОбщаяСуммаДокумента;
               СуммаНДСПеч = СуммаНДСПеч + СуммаНДС0Стр * ТаблицаОснования.Сумма / ОбщаяСуммаДокумента;
               СуммаНППеч  = СуммаНППеч  + СуммаНП0Стр * ТаблицаОснования.Сумма / ОбщаяСуммаДокумента;
           КонецЕсли;
           
           Если глЕстьРеквизитШапки("СуммаВклНДС", ДокОснование.Вид()) = 1 Тогда
               Если ДокОснование.СуммаВклНДС = 0 Тогда
                   СуммаПеч = СуммаПеч - СуммаНДСПеч;
               КонецЕсли;
           КонецЕсли;
           
           Если глЕстьРеквизитШапки("СуммаВклНП", ДокОснование.Вид()) = 1 Тогда
               Если ДокОснование.СуммаВклНП = 0 Тогда
                   СуммаПеч = СуммаПеч - СуммаНППеч;
               КонецЕсли;
           КонецЕсли;
           
           ТаблицаОснования.Сумма = СуммаП
26 Deon
 
30.11.12
10:36
жесть )
27 BlackSeaCat
 
30.11.12
10:38
Кододиарея?
28 dimonv156
 
30.11.12
10:38
Да не говиро! Я сам тут от этого скоро опухну или мозг взорвется)))))
29 dimonv156
 
30.11.12
10:39
Ну этот код на счет фактуру. Где и выводиться номер ГТД. А как его затолкать в справку понять ни как не могу.
30 dimonv156
 
30.11.12
10:40
(((((
31 Deon
 
30.11.12
10:41
Димыч, ты правда ещё не понял, что твои полотенца кода никто тут читать не собирается?
32 dimonv156
 
30.11.12
10:43
Тогда как мне с этой х... можно разобраться?
33 Deon
 
30.11.12
10:45
(32) Ну, для начала можно попользоваться отладчиком, к примеру. Потом, если в каком-то месте жесткий затык, то спросить на мисте, что в этом месте не так.
34 dimonv156
 
30.11.12
10:51
Сейчас попробую. Отпишусь
35 Ёпрст
 
30.11.12
10:54
(32) посмотреть на это:
Функция ПодготовитьМнЧосн(М
....
и то что ниже - сделать по-аналогии
36 dimonv156
 
30.11.12
10:58
Вот ошибка Значение не предоставляет агрегатный объект (НомерГТД)
37 Deon
 
30.11.12
10:59
(36) Покажи кусочек текста строчек так на 10, в котором возникает эта ошибка
38 dimonv156
 
30.11.12
11:01
Он просто в режиме предприятия при открытии таблице пишет. А строчка именно не указана. А всю таблицу открывает и записывает некоторые данные.
39 Deon
 
30.11.12
11:02
(38) В отладчике всё укажет
40 dimonv156
 
30.11.12
11:03
Вот сейчас занимаюсь этим
41 dimonv156
 
30.11.12
11:36
Как я понел в глобальном модуле описанно ПартияСпрА.ГТД Печатаю так выходит
Если ПустоеЗначение(Партия.ПартияСпрА)=0 Тогда
{R:\ACE$\ТИС ВИНВАЙН\EXTFORMS\PRNFORMS\СПРАВКА Б.ERT(467)}: Значение не представляет агрегатный объект (ПартияСпрА)
Вот часть кода Функция СведенияОРоссийскомТоваре(Товар,ТекРасх,ТекСпр)
   
   СпецМаркиСерия=""; СпецМаркиКоды="";
   ДатаНачВыпуска=""; ДатаКонВыпуска="";
   НомерГТД="";
   Если ПустоеЗначение(Партия.ПартияСпрА)=0 Тогда
       НомерГТД = Партия.ПартияСпрА.ГТД;    
   КонецЕсли;
       
   
       //НомерГТД = текСтрокаДок.ГТД.НомерГТД;
   
   
   Если ПустоеЗначение(текСтрокаДок.Партия)=0 Тогда
       СпецМаркиКоды = текСтрокаДок.Партия.СпецМаркиКоды;    
   КонецЕсли;
Возможно мне надо в процедуре сформировать надо так же описать?
42 Deon
 
30.11.12
11:40
(41) А сама Партия в отладчике чему равна в этот момент?
43 xXeNoNx
 
30.11.12
11:42
Блин 100% без глобальника не обойтись тут
44 dimonv156
 
30.11.12
11:43
Вам скинуть глобальный модуль?
45 xXeNoNx
 
30.11.12
11:44
Да сюда пость)
дело наверное вот в чем
// --------------------- Игорь 22-02-06 ------------------------------()-------------------
46 dimonv156
 
30.11.12
11:49
// Инициализация характеристик партии данными из справочника "алкНоменклатура"
           
           Если алкНоменклатура <> 0 Тогда // Алкоголь
               
               Если ПустоеЗначение(СпрПартии.Прозрачность) = 1 Тогда
                   СпрПартии.Прозрачность=алкНоменклатура.Прозрачность;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.Цвет) = 1 Тогда
                   СпрПартии.Цвет=алкНоменклатура.Цвет;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.Букет) = 1 Тогда
                   СпрПартии.Букет=алкНоменклатура.Букет;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.Спирт) = 1 Тогда
                   СпрПартии.Спирт=""+алкНоменклатура.Спирт;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.Сахар) = 1 Тогда
                   СпрПартии.Сахар=алкНоменклатура.Сахар;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.Железо) = 1 Тогда
                   СпрПартии.Железо=алкНоменклатура.Железо;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.ЛетучиеКислоты) = 1 Тогда
                   СпрПартии.ЛетучиеКислоты=алкНоменклатура.ЛетучиеКислоты;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.ТитрКислота) = 1 Тогда
                   СпрПартии.ТитрКислота=алкНоменклатура.ТитрКислота;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.СернистаяКислота) = 1 Тогда
                   СпрПартии.СернистаяКислота=алкНоменклатура.СернистаяКислота;
               КонецЕсли;
               
               Если ПустоеЗначение(СпрПартии.Марка) = 1 Тогда
                   СпрПартии.Марка=алкНоменклатура.Марка;
               КонецЕсли;
               
               Если ПустоеЗначение(алкНоменклатура.Акциз)=0 Тогда // Ставка акциза
                   
                   ДатаПроцента = Конт.ДатаДок;
                   
                   // Для партий номенклатуры с кодами подакцизных товаров 260, 270, 280, поступивших до 01.01.05,
                   // начисление акцизов по старыми ставкам
                   
                   Если глЕстьРеквизитСправочника("ДатаПартииОклейки",СпрПартии.Вид()) = 1 Тогда
                       Если ПустоеЗначение(спрПартии.ДатаПартииОклейки) = 0 Тогда
                           ДатаПроцента = СпрПартии.ДатаПартииОклейки;
                       Иначе
                           Если ПустоеЗначение(Партия.ПриходныйДокумент)=0 Тогда
                               Если Партия.ПриходныйДокумент.ДатаДок < '01.01.05' Тогда
                                   Если (алкНоменклатура.Акциз.Код = "260") ИЛИ (алкНоменклатура.Акциз.Код = "270") ИЛИ (алкНоменклатура.Акциз.Код = "280") Тогда
                                       ДатаПроцента = Партия.ПриходныйДокумент.ДатаДок;
                                   КонецЕсли;
                               КонецЕсли;
                           КонецЕсли;
                       КонецЕсли;
                   Иначе
                       Если ПустоеЗначение(Партия.ПриходныйДокумент)=0 Тогда
                           Если Партия.ПриходныйДокумент.ДатаДок < '01.01.05' Тогда
                               Если (алкНоменклатура.Акциз.Код = "260") ИЛИ (алкНоменклатура.Акциз.Код = "270") ИЛИ (алкНоменклатура.Акциз.Код = "280") Тогда
                                   ДатаПроцента = Партия.ПриходныйДокумент.ДатаДок;
                               КонецЕсли;
                           КонецЕсли;
                       КонецЕсли;
                   КонецЕсли;
                   
                   Если ДатаПроцента >= '01.01.04' Тогда
                       КоэфПроизводителя = алкНоменклатура.Акциз.ПроцентПроизводителя.Получить(ДатаПроцента)/100;
                   Иначе
                       КоэфПроизводителя = 0.5;
                   КонецЕсли;
                   
                   КоэфСклада = 1 - КоэфПроизводителя;
                   
               КонецЕсли; // Ставка акциза
               
               Если ВидДок="ОклейкаАкцизом" Тогда
                   
                   Если ПустоеЗначение(Партия.ПартияСпрА) = 0 Тогда
                       
                       СпрПартии.СтранаПроисхождения =  Партия.ПартияСпрА.СтранаПроисхождения;
                       СпрПартии.ГТД =   Партия.ПартияСпрА.ГТД;
                       СпрПартии.Свойство =  Партия.ПартияСпрА.Свойство;
                       СпрПартии.ДатаНачРозлива =  Партия.ПартияСпрА.ДатаНачРозлива;
                       СпрПартии.ДатаКонРозлива =  Партия.ПартияСпрА.ДатаКонРозлива;
                       СпрПартии.СпецМаркиСерия =  Партия.ПартияСпрА.СпецМаркиСерия;
                       СпрПартии.СпецМаркиКоды =   Партия.ПартияСпрА.СпецМаркиКоды;
                       СпрПартии.Удостоверение =  Партия.ПартияСпрА.Удостоверение;
                       СпрПартии.Марка =  Партия.ПартияСпрА.Марка;
                       
                   КонецЕсли;
                   
                   СпрПартии.ВидАкциза    = Конт.ВидАкцизаОбклейки;
                   
                   //Запишем коэффициент акциза
                   Если Конт.КодОперации=глКО.Акциз100Оклейка Тогда
                       СпрПартии.КоэфАкциза=КоэфСклада;
                   ИначеЕсли Конт.КодОперации=глКО.Акциз50Оклейка Тогда
                       СпрПартии.КоэфАкциза=КоэфПроизводителя;
                   ИначеЕсли Конт.КодОперации=глКО.Акциз0Оклейка Тогда
                       СпрПартии.КоэфАкциза=КоэфПроизводителя+КоэфСклада;
                   КонецЕсли;
                   
                   Если КоэфАкцизаПарт>0 Тогда
                       
                       Если (СпрПартии.КоэфАкциза+КоэфАкцизаПарт) > 1 Тогда
                           КоэфАкцизаПарт = 0;
                       КонецЕсли;
                       
                       СпрПартии.КоэфАкциза=СпрПартии.КоэфАкциза+КоэфАкцизаПарт;
                       
                   КонецЕсли;
                   
               Иначе
                   
                   Если глЕстьРеквизитШапки("ВидАкциза", ВидДок) = 1 Тогда
                       
                       СпрПартии.КоэфАкциза=0.0;
                       
                       Если ПустоеЗначение(Конт.ВидАкциза)=0 Тогда
                           
                           СпрПартии.ВидАкциза    = Конт.ВидАкциза;
                           
                           Если ВидДок="ПоступлениеТМЦИмпорт" Тогда
                               
                               Если Конт.ВидАкциза=Перечисление.ВидыАкцизов._50 Тогда
                                   СпрПартии.КоэфАкциза=КоэфПроизводителя;
                               ИначеЕсли Конт.ВидАкциза=Перечисление.ВидыАкцизов._100 Тогда
                                   СпрПартии.КоэфАкциза=КоэфПроизводителя+КоэфСклада;
                               КонецЕсли;
                               
                           ИначеЕсли  (ВидДок="ВводОстатковТМЦ") Тогда
                               
                               СпрПартии.ВидАкциза    = Конт.ВидАкциза;
                               СпрПартии.АкцизНачислен = 0;
                               
                               Если(Конт.Склад.Акциз = 1) И (Конт.ВидАкциза = Перечисление.ВидыАкцизов._100) Тогда
                                   СпрПартии.КоэфАкциза=КоэфСклада;
                                   СпрПартии.АкцизНачислен = 1;
                               КонецЕсли;
                               
                           КонецЕсли;
                           
                       Иначе
                           СпрПартии.ВидАкциза    = Перечисление.ВидыАкцизов._0;
                       КонецЕсли;
                       
                   Иначе
                       СпрПартии.ВидАкциза    = Перечисление.ВидыАкцизов._0;
                   КонецЕсли;
               
               КонецЕсли;
           КонецЕсли;  // Алкоголь
       КонецЕсли;
       
       // --------------- КТ-2000-(095)789-3070 ----- Игорь 01-10-05 -------- Пересортица ---------------------
       // Заполнение реквизита "ВидТМЦ" в карточке партии

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

           Если тз.НайтиЗначение(Партия, НомСтроки, "Партия") = 1 Тогда
               тз.ПолучитьСтрокуПоНомеру(НомСтроки);
               СпрПартии.ВидТМЦ = тз.ВидСтатус;
           КонецЕсли;
           
       ИначеЕсли глЕстьРеквизитМнЧ("ВидТМЦ", ВидДок) = 1 Тогда

           Если тз.НайтиЗначение(Партия, НомСтроки, "Партия") = 1 Тогда
               тз.ПолучитьСтрокуПоНомеру(НомСтроки);
               СпрПартии.ВидТМЦ = тз.ВидТМЦ;
           КонецЕсли;
       
       КонецЕсли;
       // --------------------- Игорь 01-10-05 ------------------------------ Пересортица ---------------------
       
       Если спВладельцыСертификатов.НайтиЗначение(ПриходныйДокумент.Вид()) > 0 Тогда
           СпрПартии.ВладелецСертификатов = ПриходныйДокумент;
       КонецЕсли;
       
       СпрПартии.Записать();
       
   КонецЕсли;
   // --------------------- Игорь 26-09-05 ------------------------------(835 260905)----- Пересортица ----------------
   
   Возврат Партия;
   
КонецФункции //глЗаполнитьПартию()

// --------------- КТ-2000-(095)789-3070 ------------------------------
// глОприходованиеПартийТМЦ(Конт,ТаблНоменклатуры,СписокПараметров)
//
// Параметры:                                                    
//    Конт             - контекст проведения
//    ТаблицаДокумента - таблица документа. Должна содержать колонки:
//                         1) "Номенклатура"
//                         2) "Количество"
//                         3) "Сумма"       (в валюте взаиморасчетов)
//                         4) "СуммаУпр"    (в валюте управленческого учета)
//                         5) "СуммаРуб"    (в валюте бухгалтерского учета)
//                         6) "СуммаНДС"    (в валюте бухгалтерского учета)
//                         7) "Партия"      (в которую оприходовать)
//                         8) "ВидТМЦ"      (Вид ТМЦ, Перечисление.ВидыТМЦ)
//                        Только для оприходования на розничный склад:
//                           9) "СуммаРозничная"
//    СписокПараметров - список доп параметров проведения
//   (используются: "Фирма", "Склад", "Контрагент", "Договор", "ТекДок", "КодОперации")
//
// Описание:
//   Производит оприходование ТМЦ по регистру "ПартииНаличие".
//

// --------------- КТ-2000-(095)789-3070 ----- Игорь 01-10-05 -------- Пересортица ---------------------
Процедура глОприходованиеПартийТМЦ(Конт,ТаблНоменклатуры,СписокПараметров, НУ24 = 0, ЗаполнитьПартию = 1) Экспорт
// --------------------- Игорь 01-10-05 ------------------------------ Пересортица ---------------------
   
   СпрПартии            = СоздатьОбъект("Справочник.Партии");
   
   РегПартии            = Конт.Регистр.ПартииНаличие;
           
   Фирма                = СписокПараметров.Получить("Фирма");
   Склад                = СписокПараметров.Получить("Склад");
   Поставщик            = СписокПараметров.Получить("Контрагент");
   ДоговорПоставщика    = СписокПараметров.Получить("Договор");
   ТекДок                = СписокПараметров.Получить("ТекДок");
   КодОперации            = СписокПараметров.Получить("КодОперации");
   
   УчПолитика            = Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(Конт.ДатаДок);
   
   //---КТ-2000-(095)789-3070-----------------------
   Если УчПолитика = Перечисление.МетодыРасчетаСебестоимости.ПоСреднему Тогда
       глНеПроводить(Конт,"Конфигурация не поддерживает метод списания ""По среденей"", выбранный у """+Фирма.ЮрЛицо.Наименование+"""");
       Возврат;
   КонецЕсли;
   //---КТ-2000-(095)789-3070-----------------------
   
   МОЛ                    = Склад.МОЛ;                                              

   ТаблНоменклатуры.ВыбратьСтроки();
   Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл
                 
       Номенклатура = ТаблНоменклатуры.Номенклатура;
       Если (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
        или (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
           Продолжить;
       КонецЕсли;
       
       //измерения
       РегПартии.Фирма                = Фирма;
       РегПартии.МОЛ                = МОЛ;
       РегПартии.Номенклатура        = Номенклатура;
       РегПартии.СтатусПартии        = глПолучитьСтатусПартииПрихода(ТаблНоменклатуры.ВидТМЦ,Номенклатура,КодОперации, Склад);
       
       Если (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.FIFO)
           или (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.LIFO)
           или (РегПартии.СтатусПартии = глСП.Т_Принятый) Тогда
               
           ЗакупочнаяЦена            = ?(ТаблНоменклатуры.Количество=0, 0, Окр(ТаблНоменклатуры.Сумма / ТаблНоменклатуры.Количество,2,1));
                                       
           // --------------- КТ-2000-(095)789-3070 ----- Игорь 01-10-05 -------- Пересортица ---------------------
           Если ЗаполнитьПартию = 1 Тогда
               РегПартии.Партия    =    глЗаполнитьПартию(СпрПартии,  ТаблНоменклатуры.Партия,Поставщик,ДоговорПоставщика,ТекДок,ЗакупочнаяЦена,Конт);
           Иначе
               РегПартии.Партия    =   ТаблНоменклатуры.Партия;
           КонецЕсли;
           // --------------------- Игорь 01-10-05 ------------------------------ Пересортица ---------------------
           
           РегПартии.ДатаПартии    = ТекДок.ДатаДок;
           
       Иначе    
           РегПартии.Партия        = "";                
           РегПартии.ДатаПартии    = "";
       КонецЕсли;
           
       //ресурсы
       РегПартии.Количество        = ТаблНоменклатуры.Количество;
       РегПартии.СуммаУпр            = ТаблНоменклатуры.СуммаУпр;
       РегПартии.СуммаРуб            = ТаблНоменклатуры.СуммаРуб;
       Если НУ24 = 1 Тогда
           РегПартии.СуммаПлат = 0.76 * ТаблНоменклатуры.СуммаРуб;
       Иначе
           РегПартии.СуммаПлат = 0;
       КонецЕсли;
       
       РегПартии.СуммаБезНДС        = ТаблНоменклатуры.СуммаРуб-ТаблНоменклатуры.СуммаНДС;
       
       Если Склад.РозничныйСклад = 1  Тогда
           РегПартии.ПродСтоимость = ТаблНоменклатуры.ПродСтоимость;  
       КонецЕсли;
       РегПартии.ЦенаПрод = ТаблНоменклатуры.ЦенаПродПриход;
       
       //реквизиты      
       РегПартии.КодОперации        = КодОперации;
       
       РегПартии.ПривязыватьСтроку(ТаблНоменклатуры.НомерСтрокиДокумента);
       
       РегПартии.ДвижениеПриходВыполнить();
       
   КонецЦикла;

КонецПроцедуры // глОприходованиеПартийТМЦ()                                    

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

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

                                                                       
   Если (ТекДок.ДокОснование.Выбран()=1) и (Свернут=0) Тогда
       РегПартии = СоздатьОбъект("Регистр.ПартииНаличие");
       РегПартии.ВыбратьДвиженияДокумента(ТекДок.ДокОснование);
       Пока РегПартии.ПолучитьДвижение()=1 Цикл

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

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

           ТаблПартий.СтатусПартии        = СтатусПартии;
           ТаблПартий.Номенклатура        = ТаблНоменклатуры.Номенклатура;
           ТаблПартий.Количество        = ТаблНоменклатуры.Количество;
           ТаблПартий.СуммаБезНДС        = ТаблНоменклатуры.Себестоимость;
           ТаблПартий.СуммаРуб            = ТаблНоменклатуры.Себестоимость + ТаблНоменклатуры.СебестоимостьНДС;
           ТаблПартий.СуммаУпр            = глПересчет(ТаблПартий.СуммаРуб,глРубли,КурсРубля,глДоллары,КурсДоллара,КратРубля,КратДоллара);
           
           // Основания нет, если не выбрана конкретная партия, надо заполнить партию по возврату
           ПрихДокПартии = ТаблНоменклатуры.Партия.ПриходныйДокумент;
           Если (ПустоеЗначение(ПрихДокПартии) = 1)  
            или (ПрихДокПартии = ТекДок ) Тогда
               ЗакупочнаяЦена = ?(ТаблПартий.Количество=0,0,Окр(ТаблПартий.СуммаРуб    / ТаблПартий.Количество,2,1));
               ЗакупочнаяЦена = глПересчет(ЗакупочнаяЦена, глРубли, КурсРубля, ТекДок.Договор.ВалютаВзаиморасчетов, ТекДок.ДатаДок,КратРубля);                                      
               
               //---КТ-2000-(095)789-3070-----------------------
               ТаблНоменклатуры.Партия    = глЗаполнитьПартию(СпрПартии,  ТаблНоменклатуры.Партия,
                                       ТекДок.Контрагент,ТекДок.Договор,ТекДок,ЗакупочнаяЦена,ТекДок);
               //---КТ-2000-(095)789-3070-----------------------
               
               
           КонецЕсли;
           ТаблПартий.Партия            = ТаблНоменклатуры.Партия;
           ТаблПартий.ДатаПартии        = ТекДок.ДатаДок;

       КонецЦикла;
   КонецЕсли; // есть или нет ДокОснование
       
   Возврат ТаблПартий;
   
КонецФункции // глВыяснитьПартииВозврата()

//******************************************************************************
// глОприходованиеПартийТМЦВозврат(Конт, ТаблНоменклатуры, СписокПараметров, ТаблСписПартий, ТаблСписПартийКом)
//
// Параметры:                                                    
//    Конт             - контекст документа
//    ТаблНоменклатуры - таблица номенклатуры
//                     Должна содержать колонки:
//                     1) "Номенклатура"
//                     2) "Количество"
//                     3) "Сумма"     (в валюте взаимор. покупателя)
//                     4) "СуммаРуб"  (сумма возврата в валюте бух учета)
//                     5) "СуммаУпр"  (сумма возврата в валюте упр учета)
//                     6) "СуммаНДС"  (сумма НДС возврата в валюте бух учета)
//                     7) "СуммаНП"   (сумма НП возврата в валюте бух учета)
//                     8) "СтавкаНДС" (возврата)
//                     9) "СтавкаНП"  (возврата)
//                     10)"ВидСтатус" (глСП.Т_Принятый или ВидТМЦ)
//                     11)"Партия"    (в которую возвращаем)
//                     12)"Себестоимость" (в валюте бух. учета)
//    СписокПараметров - доп. параметры проведения
//           (использ. "Фирма", "Склад", "Контрагент", "Договор", "ТекДок", "КодОперации")
//  ТаблСписПартий   - таблица списанных партий (всех). Состав колонок можно посмотреть
//                     ниже при создании таблицы
//  ТаблСписПартийКом- таблица списанных партий принятого на комиссию товара. Состав колонок тот жет.
//
// Описание:                                  
//  Проведение по регистру "ПартииНаличие" документа возврата партий от покупателя.
//

Процедура глОприходованиеПартийТМЦВозврат(Конт,ТаблНоменклатуры,СписокПараметров,ТаблСписПартий="",ТаблСписПартийКом="") Экспорт
   
   ТаблСписПартий=СоздатьОбъект("ТаблицаЗначений");
   ТаблСписПартий.НоваяКолонка("Фирма");
   ТаблСписПартий.НоваяКолонка("МОЛ");
   ТаблСписПартий.НоваяКолонка("Номенклатура");
   ТаблСписПартий.НоваяКолонка("СтатусПартии");
   ТаблСписПартий.НоваяКолонка("Партия");
   ТаблСписПартий.НоваяКол
47 dimonv156
 
30.11.12
11:49
Я так думаю этого достаточно.
48 BlackSeaCat
 
30.11.12
11:50
(47) Думай-думай...

Ну что, господа, может хватит сиськи мять? И пора спросить автора о сумме?
49 xXeNoNx
 
30.11.12
11:51
Посмотри где инициализируется "текСтрокаДок"
50 sidalexsandr
 
30.11.12
11:51
(0) Номер ГТД - это Справочник.ГТД. Вывести ГТД - это просто цикл вывода всех элементов Справочник.ГТД.

Сформулируй более четко задачу, ГТД тебе надо вывести из какого-то документа?
51 xXeNoNx
 
30.11.12
11:52
+(49)И выложи сюда, а весь не исходник...
52 sidalexsandr
 
30.11.12
11:52
(0) Выложи проще конфигурацию и напиши что ты хочеш?
53 dimonv156
 
30.11.12
11:55
Мне надо вывести из счета фактуры. Там они указываються верно.
54 dimonv156
 
30.11.12
11:58
У меня прям в форме было написанно "Номенклатура.НомерГТД" Он выводил но выводил старые нормера. А бухи говорят что он должен выводиться из счета фактуры. Мол типо там все правильно выводит.
55 dimonv156
 
30.11.12
12:01
Можно даже пример какой нибудь. Попробую до истины добраться.
56 dimonv156
 
30.11.12
12:02
Или даже ссылку где описанно как это сделать можно.
57 xXeNoNx
 
30.11.12
12:08
(56) какую ссылку, у тебя в коде куча ссылок
я же тебе присылал..., конфа у тебя не типовая 100% и об этом тебе тож. писали. И код который ты постил тож. читать не будут. Что делать: 1. Ждать тех франчей, пока тебе ответят либо здесь договориться о компенсации с кем-нить кто захочет.
Мыж тут ленивые все, нужен стимул.
58 xXeNoNx
 
30.11.12
12:10
(57) И не факт что франи тебе помогут...(если тока не на поддержке еще). Сам же видел Игорь, Петя, Вася, мож они уже и не работают уже....
59 xXeNoNx
 
30.11.12
12:17
(59) Возьми отладчик и смотри свою
"Партия.ПартияСпрА" что за тип данных, что там хранится, затем смотри заполнение самой "Партия"
60 dimonv156
 
30.11.12
12:21
Спасибо я понел где копать надо! Всем спасибо за советы.
61 xXeNoNx
 
30.11.12
12:29
Ну раз понЕл - удачи
62 dimonv156
 
30.11.12
15:40
Еще вопросик! Сделал как вы сказали вывожу значение из Партии. Но почему то выходит пустое значение. Какую операцию мне нужно сделать? Я так думаю сортировку по наименованию и из этого номер должен выводиться.