|
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
|
Еще вопросик! Сделал как вы сказали вывожу значение из Партии. Но почему то выходит пустое значение. Какую операцию мне нужно сделать? Я так думаю сортировку по наименованию и из этого номер должен выводиться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |