|
Добавление параметра к шаблону счет фактуре | ☑ | ||
---|---|---|---|---|
0
zzzLEXzzz
05.04.13
✎
15:00
|
Ещё раз приветствую всех, такой вопрос у меня 1С 8,2 УТ. в макет шаблона "счет фактура" в область "строка" добавил параметр, который должен заполняться из реквизита номенклатуры, не подскажете как правильно к нему обратиться, вот так не получается. (я начинающий, если туплю извините)
НомерАртикулаМетро = Справочники.Номенклатура.НомерАртикулаМЕТРО; ОбластьМакета.Параметры.НомерАртикулаМетро = НомерАртикулаМетро; |
|||
1
andreymongol82
05.04.13
✎
15:01
|
Почему не получается? Что за ошибка?
|
|||
2
zzzLEXzzz
05.04.13
✎
15:03
|
(1) синтаксической ошибки нет, но при попытки напечатать выдает это
{Документ.СчетФактураВыданный(1550)}: Поле объекта не обнаружено (НомерАртикулаМЕТРО) НомерАртикулаМетро = Справочники.Номенклатура.НомерАртикулаМЕТРО; |
|||
3
andreymongol82
05.04.13
✎
15:14
|
Это значит у справочника номенклатуры либо нет реквизита "НомерАртикулаМЕТРО", либо его не видно в силу каких-либо причин (ограничение данных)
|
|||
4
zzzLEXzzz
05.04.13
✎
15:21
|
(3) Реквизит 100% есть, может я полностью код процедуры пришлю?
|
|||
5
zzzLEXzzz
05.04.13
✎
15:25
|
Вот код функции, где я добавлял там комментарии LEX
Функция ПечатьСчетаФактуры(ДанныеДляПечати, Подпись= ложь) ТабДокумент = Новый ТабличныйДокумент; Если Дата < '20040216' Тогда ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура575"; Макет = ПолучитьОбщийМакет("СчетФактура575"); ИначеЕсли Дата < '20060530' Тогда ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура84"; Макет = ПолучитьОбщийМакет("СчетФактура84"); ИначеЕсли Дата < '20090609' Тогда ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура283"; Макет = ПолучитьОбщийМакет("СчетФактура283"); ИначеЕсли Дата < '20120124' Тогда ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451"; Макет = ПолучитьОбщийМакет("СчетФактура451"); Иначе ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451"; Макет = ПолучитьОбщийМакет("СчетФактура283_после240112Метро"); КонецЕсли; СведенияОбПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Покупатель, Дата); СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Поставщик, Дата); СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(?(ДанныеДляПечати.Грузоотправитель = "он же", Неопределено, ДанныеДляПечати.Грузоотправитель), Дата); СведенияОГрузополучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Грузополучатель, Дата); ВыборкаПоТоварам = ДанныеДляПечати.ТабличнаяЧасть.Скопировать(); ВыборкаПоТоварам.Свернуть("Товар"); Если ВыборкаПоТоварам.Количество() > 0 Тогда ТолькоУслуги = Истина; Для Каждого СтрокаТовар Из ВыборкаПоТоварам Цикл Если (ТипЗнч(СтрокаТовар.Товар) = Тип("СправочникСсылка.Номенклатура") И Не СтрокаТовар.Товар.Услуга) Тогда ТолькоУслуги = Ложь; Прервать; КонецЕсли; КонецЦикла; Иначе ТолькоУслуги = Ложь; КонецЕсли; // Выводим шапку накладной ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати); ЗаголовокДляПечати = ОбщегоНазначения.СформироватьЗаголовокДокумента(ДанныеДляПечати, "Счет-фактура"); ОбластьМакета.Параметры.Номер = ЗаголовокДляПечати; Если Дата < '20040216' Тогда ОбластьМакета.Параметры.ПредставлениеПоставщика = "Продавец: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,"); ОбластьМакета.Параметры.АдресПоставщика = "Адрес: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес,"); ОбластьМакета.Параметры.ИННпоставщика = "Идентификационный номер продавца (ИНН): " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ИНН,", Ложь); ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузоотправитель), "", ?(ДанныеДляПечати.Грузоотправитель = "он же", ДанныеДляПечати.Грузоотправитель, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес,"))); ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель), "", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ФактическийАдрес,")); Строка_ПоДокументу = ""; Для каждого ПараметрыДокуентаОплаты Из ДанныеДляПечати.ТаблицаДатОплат Цикл Строка_ПоДокументу = Строка_ПоДокументу+ ?(ПустаяСтрока(Строка_ПоДокументу), "К платежно-расчетному документу № ",", ") +ПараметрыДокуентаОплаты.НомерПлатежноРасчетногоДокумента + " от " + Формат(ПараметрыДокуентаОплаты.ДатаПлатежноРасчетногоДокумента, "ДФ=dd.MM.yyyy"); КонецЦикла; Если ПустаяСтрока(Строка_ПоДокументу) Тогда Строка_ПоДокументу = "К платежно-расчетному документу № -- от --" КонецЕсли; ОбластьМакета.Параметры.ПоДокументу = Строка_ПоДокументу; ОбластьМакета.Параметры.ПредставлениеПокупателя = "Покупатель: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ПолноеНаименование,"); ОбластьМакета.Параметры.АдресПокупателя = "Адрес: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ЮридическийАдрес,"); ОбластьМакета.Параметры.ИННПокупателя = "Идентификационный номер покупателя (ИНН): " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ИНН,", Ложь); Иначе ДатаНачалаУказанияСокращенногоНаименованияПродавцаВСчетеФактуре = Константы.ДатаНачалаУказанияСокращенногоНаименованияПродавцаВСчетеФактуре.Получить(); Если ДатаНачалаУказанияСокращенногоНаименованияПродавцаВСчетеФактуре <> '00010101' И ДатаНачалаУказанияСокращенногоНаименованияПродавцаВСчетеФактуре <= Дата Тогда ОбластьМакета.Параметры.ПредставлениеПоставщика = "Продавец: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,") + " (" + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "Представление,") + ")"; Иначе ОбластьМакета.Параметры.ПредставлениеПоставщика = "Продавец: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,"); КонецЕсли; ОбластьМакета.Параметры.АдресПоставщика = "Адрес: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес,"); КПП = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "КПП,", Ложь); Если ЗначениеЗаполнено(КПП) Тогда КПП = "/" + КПП; КонецЕсли; ОбластьМакета.Параметры.ИННпоставщика = "ИНН/КПП продавца: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ИНН,", Ложь) + КПП; Если ТолькоУслуги Тогда ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + "-"; ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + "-"; Иначе ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузоотправитель), "", ?(ДанныеДляПечати.Грузоотправитель = "он же", ДанныеДляПечати.Грузоотправитель, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес,"))); ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель), "", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ФактическийАдрес,")); КонецЕсли; Строка_ПоДокументу = ""; Для каждого ПараметрыДокуентаОплаты Из ДанныеДляПечати.ТаблицаДатОплат Цикл Строка_ПоДокументу = Строка_ПоДокументу+ ?(ПустаяСтрока(Строка_ПоДокументу), "К платежно-расчетному документу № ",", ") +ПараметрыДокуентаОплаты.НомерПлатежноРасчетногоДокумента + " от " + Формат(ПараметрыДокуентаОплаты.ДатаПлатежноРасчетногоДокумента, "ДФ=dd.MM.yyyy"); КонецЦикла; Если ПустаяСтрока(Строка_ПоДокументу) Тогда Строка_ПоДокументу = "К платежно-расчетному документу № -- от --" КонецЕсли; ОбластьМакета.Параметры.ПоДокументу = Строка_ПоДокументу; ОбластьМакета.Параметры.ПредставлениеПокупателя = "Покупатель: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ПолноеНаименование,"); ОбластьМакета.Параметры.АдресПокупателя = "Адрес: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ЮридическийАдрес,"); КПП = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "КПП,", Ложь); Если ЗначениеЗаполнено(КПП) Тогда КПП = "/" + КПП; КонецЕсли; ОбластьМакета.Параметры.ИННПокупателя = "ИНН/КПП покупателя: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ИНН,", Ложь) + КПП; КонецЕсли; ПроставитьПрочеркиВПустыеПоля(ОбластьМакета); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати); ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Область("ЗаголовокТаблицы"); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ИтогоСуммаНДС = 0; ИтогоВсего = 0; ВыборкаСтрокТовары = ДанныеДляПечати.ТабличнаяЧасть; ВыборкаСтрокТовары.Колонки.Добавить("СуммаБезНДС"); ВыборкаСтрокТовары.Колонки.Добавить("СуммаСНДС"); Для Каждого Строчка Из ВыборкаСтрокТовары Цикл Строчка.СуммаСНДС = Строчка.Сумма + ?(Строчка.СуммаВключаетНДС, 0, Строчка.СуммаНДС); Если (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120) Или (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118) Или (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110) Тогда Строчка.СуммаБезНДС = Строчка.СуммаСНДС; Если Не Строчка.СуммаВключаетНДС тогда Строчка.Цена = 0; КонецЕсли; Иначе Строчка.СуммаБезНДС = Строчка.СуммаСНДС - Строчка.СуммаНДС; Если Строчка.СуммаВключаетНДС тогда Строчка.Цена = 0; КонецЕсли; КонецЕсли; Если Не НаАванс И Строчка.Цена = 0 Тогда Строчка.Цена = Окр(?(Строчка.Количество = 0, 0, Строчка.СуммаБезНДС / Строчка.Количество), 2); КонецЕсли; КонецЦикла; ВыборкаСтрокТовары.Свернуть("Товар, ТоварНаименование, СтранаПроисхождения, ПредставлениеСтраны, НомерГТД, ПредставлениеГТД, ЕдиницаИзмерения, Цена, СтавкаНДС", "Количество, Сумма, СуммаНДС, СуммаСНДС, СуммаБезНДС"); Для Каждого Строчка Из ВыборкаСтрокТовары Цикл ОбластьМакета.Параметры.Заполнить(Строчка); Если Строчка.СтранаПроисхождения = Справочники.КлассификаторСтранМира.Россия Тогда ОбластьМакета.Параметры.ПредставлениеСтраны = "--"; ОбластьМакета.Параметры.ПредставлениеГТД = "--"; КонецЕсли; Количество = Строчка.Количество; // LEX НомерАртикулаМетро = Справочники.Номенклатура.НомерАртикулаМЕТРО; // LEX Если НаАванс Тогда // В счетах-фактурах на аванс колонка 3, 4, 5 не выводится ОбластьМакета.Параметры.Стоимость = 0; ОбластьМакета.Параметры.Количество = 0; ОбластьМакета.Параметры.Цена = 0; Иначе ОбластьМакета.Параметры.Количество = Количество; ОбластьМакета.Параметры.Цена = Строчка.Цена; ОбластьМакета.Параметры.Стоимость = Строчка.СуммаБезНДС; КонецЕсли; //LEX ОбластьМакета.Параметры.НомерАртикулаМетро = НомерАртикулаМетро; // LEX ОбластьМакета.Параметры.Всего = Строчка.СуммаСНДС; ОбластьМакета.Параметры.СтавкаНДС = Строчка.СтавкаНДС; ИтогоСуммаНДС = ИтогоСуммаНДС + Строчка.СуммаНДС; ИтогоВсего = ИтогоВсего + Строчка.СуммаСНДС; ПроставитьПрочеркиВПустыеПоля(ОбластьМакета); ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; Если ВыборкаСтрокТовары.Количество()>0 Тогда ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ВместеСоСледующим = Истина; КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.ИтогоСуммаНДС = ИтогоСуммаНДС; ОбластьМакета.Параметры.ИтогоВсего = ИтогоВСего; ПроставитьПрочеркиВПустыеПоля(ОбластьМакета); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати); //ВЫВОД ЭЛЕКТРОННОЙ ПОДПИСИ **************************************************** Если Подпись Тогда Руководители1 = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизации1(Организация, Дата,); Руководитель1 = Руководители1.Руководитель; Бухгалтер1 = Руководители1.ГлавныйБухгалтер; //ОбластьМакета.Рисунки.ПодписьРуководителя.Картинка ПодписьРук = РаботаСДиалогами.ПолучитьПодпись(Руководитель1); ПодписьБух = РаботаСДиалогами.ПолучитьПодпись(Бухгалтер1); Если ПодписьРук <> NULL Тогда ОбластьМакета.Рисунки.ПодписьРуководителя.Картинка = ПодписьРук; КонецЕсли; Если ПодписьБух <> NULL Тогда ОбластьМакета.Рисунки.ПодписьБухгалтера.Картинка = ПодписьБух; КонецЕсли; КонецЕсли; Если не Дата < '20040216' Тогда ОбластьМакета.Параметры.Свидетельство = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "Свидетельство,"); КонецЕсли; ПроставитьПрочеркиВПустыеПоля(ОбластьМакета); ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабДокумент.ПолеСверху = 13; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСправа = 0; ТабДокумент.ВерхнийКолонтитул.Выводить = Истина; ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2; ТабДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ; ТабДокумент.ВерхнийКолонтитул.ТекстСлева = ЗаголовокДляПечати; ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы]"; Возврат ТабДокумент; КонецФункции // ПечатьСчетаФактуры() |
|||
6
andreymongol82
05.04.13
✎
15:32
|
Блииин, проглядел в предыдущих постах, но зато нашел в портянке
// LEX НомерАртикулаМетро = Справочники.Номенклатура.НомерАртикулаМЕТРО; // LEX Справочники.Номенклатура = это у нас менеджер, где нет данных Надо же вот так НомерАртикулаМетро = Строчка.Товар..НомерАртикулаМЕТРО; Вообще, молодежь, читайте больше книжек :) |
|||
7
andreymongol82
05.04.13
✎
15:33
|
(6) пардон, очепятка
НомерАртикулаМетро = Строчка.Товар.НомерАртикулаМЕТРО; |
|||
8
zzzLEXzzz
05.04.13
✎
15:37
|
(6) поле заполнилось, но почему оно заполнилось буквами истина или ложь, хотя у меня там цифровое значение?
|
|||
9
zzzLEXzzz
05.04.13
✎
15:45
|
(8) то есть в место цифр, заполнилось слово "Ложь" или "Истина"
|
|||
10
zzzLEXzzz
05.04.13
✎
15:47
|
Всё извеняюсь, это я дурак, не правильно всё сделал, вот так написал, вот дебил
НомерАртикулаМетро = НомерАртикулаМетро = Строчка.Товар.НомерАртикулаМЕТРО |
|||
11
andreymongol82
05.04.13
✎
15:47
|
(8) Забавно.
// LEX НомерАртикулаМетро = Справочники.Номенклатура.НомерАртикулаМЕТРО; // LEX Вместо этого и потом дальше написал? |
|||
12
andreymongol82
05.04.13
✎
15:48
|
(10) А ну так-то да, прям в стиле С++ получилось сравнить предыдущий результат с текущим ;)
|
|||
13
zzzLEXzzz
05.04.13
✎
15:56
|
(12) Спасибо огромное за помощь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |