Заполнение строк
| Код | Таб.ВывестиСекцию("Шапка"); // Печать строк документа. ТабДок.ВыбратьСтроки(); Ном=0; Пока ТабДок.ПолучитьСтроку()=1 Цикл Ном=Ном+1; Если ТипЗначения(ТабДок.Товар) = 2 Тогда Наименование = ТабДок.Товар; ЕдиницаИзмерения = ""; ИначеЕсли ТабДок.Товар.Вид() = "Номенклатура" Тогда Наименование = ?(ПустаяСтрока(ТабДок.Товар.ПолнНаименование)=1, ТабДок.Товар.Наименование, ТабДок.Товар.ПолнНаименование); ЕдиницаИзмерения = ТабДок.Товар.ЕдиницаИзмерения; ИначеЕсли ТабДок.Товар.Вид() = "ОсновныеСредства" Тогда Наименование = ТабДок.Товар.Наименование; ЕдиницаИзмерения = ""; ИначеЕсли ТабДок.Товар.Вид() = "НематериальныеАктивы" Тогда Наименование = ТабДок.Товар.Наименование; ЕдиницаИзмерения = ""; ИначеЕсли ТабДок.Товар.Вид() = "Материалы" Тогда Наименование = ТабДок.Товар.Наименование; ЕдиницаИзмерения = ТабДок.Товар.ЕдиницаИзмерения; КонецЕсли; Если ПустоеЗначение(ЕдиницаИзмерения) = 1 Тогда ЕдиницаИзмерения = "-----"; КонецЕсли; Если ПустоеЗначение(ТабДок.ГТД) = 1 Тогда НомерГТД_Н = "-----"; СтранаН = "-----"; Иначе НомерГТД_Н = ТабДок.ГТД; Если ПустаяСтрока(ТабДок.ГТД.СтранаПроисхождения) = 1 Тогда СтранаН = "-----"; Иначе СтранаН = ТабДок.ГТД.СтранаПроисхождения; КонецЕсли; КонецЕсли; Если НДСпоСтавкеНольПроцентов = 1 Тогда ПредставлениеСтавкиНДС = "0%"; Иначе Если (ТабДок.СтавкаНДС.Выбран() = 1) и (ТабДок.СтавкаНДС.Ставка > 0) Тогда ПредставлениеСтавкиНДС = "" + ТабДок.СтавкаНДС.Ставка + "%"; Если СуммаНДСопределяетсяРасчетнымМетодом = 1 Тогда ПредставлениеСтавкиНДС = ПредставлениеСтавкиНДС + " / 1" + ТабДок.СтавкаНДС.Ставка + "%"; КонецЕсли; Иначе ПредставлениеСтавкиНДС = "Без НДС"; КонецЕсли; КонецЕсли; Если ТабДок.Количество = 0 Тогда ПечКоличество = "-----"; ПечЦена = "-----"; ИначеЕсли (ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс) ИЛИ (ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.СуммоваяРазница) ИЛИ (Аванс = 1) Тогда ПечКоличество = "-----"; ПечЦена = "-----"; Иначе ПечКоличество = Формат(ТабДок.Количество, "Ч015.3"); Если ТабДок.Цена = 0 Тогда ПечЦена = "-----"; Иначе ПечЦена = Формат(ТабДок.Цена, "Ч15.2-"); КонецЕсли; КонецЕсли; Если (ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс) ИЛИ (ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.СуммоваяРазница) ИЛИ (Аванс = 1) Тогда ПечСумма = "-----"; ИначеЕсли ТабДок.Сумма = 0 Тогда ПечСумма = "-----"; Иначе ПечСумма = Формат(ТабДок.Сумма, "Ч15.2-"); КонецЕсли;
ПечАкциз = ?(ТабДок.АкцизСумма=0, "-----", Формат(ТабДок.АкцизСумма,"Ч15.2-")); ПечНДС = ?(ТабДок.НДС=0,"-----", Формат(ТабДок.НДС,"Ч15.2-")); ПечВсего = ?(ТабДок.Всего=0,"-----", Формат(ТабДок.Всего,"Ч15.2-")); ПечИтогНДС = ?(ТабДок.Итог("НДС")=0,"-----", Формат(ТабДок.Итог("НДС"),"Ч15.2-")); печИтогВсего = ?(ТабДок.Итог("Всего")=0,"-----", Формат(ТабДок.Итог("Всего"),"Ч15.2-"));
Таб.ВывестиСекцию("Строка"); КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.Опции(0, 0, 0, 0, "ОпцииПечатиСчетаФактуры", "ОкноСчетаФактуры"); Если ПустоеЗначение(ТекстПредупреждения) = 1 Тогда Таб.ОбластьПечати(1,,,); Иначе Таб.ОбластьПечати(2,,,); КонецЕсли; Таб.ПовторятьПриПечатиСтроки( 15, 15 ); Таб.ТолькоПросмотр(1); Таб.ПараметрыСтраницы(2,,,,,,,,,1,,); Таб.Показать("Печать счета-фактуры",""); КонецПроцедуры
|
Выгрузка в таблицу
| Код | // Выгрузим табличную часть документа в таблицу значений. Таб = СоздатьОбъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(Таб); Таб.НоваяКолонка("ВидТовара", "Строка"); Таб.НоваяКолонка("НДСВал", "Число"); Таб.НоваяКолонка("АкцизВал", "Число"); Таб.НоваяКолонка("НПВал", "Число");
НомСтроки = 1; Пока НомСтроки <= Таб.КоличествоСтрок() Цикл Таб.ПолучитьСтрокуПоНомеру(НомСтроки); Если ТипЗначенияСтр(Таб.Товар) = "Справочник" Тогда Таб.ВидТовара = Таб.Товар.Вид(); Если Таб.Товар.Вид() = "Номенклатура" Тогда Если (Таб.Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар) и (Таб.Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии) Тогда Таб.УдалитьСтроку(); // для товаров на комиссии проводок не формируем Продолжить; КонецЕсли; КонецЕсли; КонецЕсли; Если ПустоеЗначение(Таб.Счет) = 1 Тогда Если ((Таб.НДС <> 0) и (ОтключитьНДС = 0) и (Аванс = 0)) или ((Таб.АкцизСумма <> 0) и (ОтключитьАкциз = 0)) или ((Таб.НП <> 0) и (ОтключитьНП = 0) и (Аванс = 0)) Тогда ТекстСообщения = "На закладке ""Корр.счет и номер ГТД"" в строке №" + НомСтроки + " не указан корр. счет."; глНеПроводить(Контекст, ТекстСообщения); Возврат; КонецЕсли; КонецЕсли; НомСтроки = НомСтроки + 1; КонецЦикла; ДоляОплаченнойОтгрузки = ?(ЗадолженностьВал = 0, 0, СуммаЗачетаВал / ЗадолженностьВал); КурсОплаты = ?(СуммаЗачетаВал = 0, 0, Окр(СуммаЗачетаРуб / СуммаЗачетаВал, 4, 1)); КурсСФ = ?(((ЦеныВДоговоре = 2) и (Аванс = 0)) или (ОплатаДоговора = 2), Курс / Кратность, 1); Если ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.СуммоваяРазница Тогда КурсСФ = 1; КонецЕсли; Таб.ВыбратьСтроки(); Пока Таб.ПолучитьСтроку()= 1 Цикл Если ЦеныВДоговоре = 2 Тогда Таб.НДСВал = Таб.НДС; Таб.АкцизВал = Таб.АкцизСумма; Таб.НПВал = Таб.НП; КонецЕсли;
ОплСумма = Таб.Сумма * ДоляОплаченнойОтгрузки; Таб.Сумма = Окр(ОплСумма * КурсОплаты + (Таб.Сумма - ОплСумма) * КурсСФ, 2, 1); ОплНДС = Таб.НДС * ДоляОплаченнойОтгрузки; Таб.НДС = Окр(ОплНДС * КурсОплаты + (Таб.НДС - ОплНДС) * КурсСФ, 2, 1); ОплНП = Таб.НП * ДоляОплаченнойОтгрузки; Таб.НП = Окр(ОплНП * КурсОплаты + (Таб.НП - ОплНП) * КурсСФ, 2, 1); ОплАкцизСумма = Окр(Таб.АкцизСумма * ДоляОплаченнойОтгрузки, 2, 1); Таб.АкцизСумма = Окр(ОплАкцизСумма * КурсОплаты + (Таб.АкцизСумма - ОплАкцизСумма) * КурсСФ, 2, 1); КонецЦикла;
|
Добавлено через 6 минут и 56 секунд Прогонял в отладчике на значения, по формирование строк в печатной форме, значения верные, но вот как только закончил, прогнал последнюю строку, так её значением и заполнил предыдущие, хотя сумма посчиталась правильно прихожу к выводу что баг именно в этом месте, где формирует на печать. |