Недостаточно фактических параметров внешняя обработка
Недостаточно фактических параметров в 1С 8.3
Ошибка Недостаточно фактических параметров в 1С 8.3 показывает, что в исполняемую функцию передано меньше параметров, чем необходимо для выполнения операции. Для анализа ошибки Бухэксперт8 подготовил специальный пример.
Прочитав статью, вы узнаете на что обращать внимание при появлении этой ошибки и получите подробные рекомендации по ее исправлению.
Причины ошибки
Бухэксперт8 рекомендует начать работу над ошибкой по схеме, предложенной нашими экспертами в статье Слишком много фактических параметров.
Важно выполнить все рекомендации статьи, чтобы исключить ошибку, вызванную обновлением 1С. Только после этого желательно переходить к действиям, описанным ниже.
Ошибка программного кода
При нажатии на кнопку Подбор номенклатуры в документе поступления услуг появляется ошибка о недостаточности фактических параметров. Ошибка стала появляться после доработки программистом функции подбора услуг.
При нажатии на кнопку Подбор появляется ошибка:
Получите понятные самоучители 2021 по 1С бесплатно:
Для исправления ошибки:
При ошибке 1С Недостаточно фактических параметров число фактических параметров, определяемое в п. 3, меньше числа описываемых параметров, определяемых в п. 5:
— фактические параметры — 1;
— описанные параметры — 2.
Cохраните выполненные изменения. После обновления конфигурации операция подбора номенклатуры в документах поступления услуг будет выполняться без ошибки.
См. также:
Если Вы еще не являетесь подписчиком системы БухЭксперт8:
После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
Карточка публикации
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку «Задать вопрос», я соглашаюсь с
регламентом БухЭксперт8.ру >>
Спасибо огромное.Очень ценный нужный материал. Всегда в восторге от семинаров Климовой.
Недостаточно фактических параметров 1С
1. Фактические параметры методов и функций
Недостаточно фактических параметров – такая ошибка программы 1С не часто возникает при работе с типовыми конфигурациями, отчего еще больше обескураживает пользователя, так как не является заурядной проблемой. Чаще всего она появляется в результате доработки конфигурации 1С вне зависимости от того, насколько качественно конфигурация дорабатывалась. Скорее всего, эта ошибка связана с тем, что конфигурация обновилась и метод, который раньше использовался в доработке конфигурации 1С, изменился.
Чтобы исправить ошибку «Недостаточно фактических параметров» 1С, нужно прежде всего понять для себя, что является фактическим параметром методов. Это те реквизиты, которые передаются функции или методу в 1С 8.3. Выглядит это примерно так:
ЗаполнитьДокумент(Ссылка, ДанныеЗаполнения, Источник) <
2. Исправление ошибки в 1С
Ссылка, ДанныеЗаполнения, Источник – это и есть фактические параметры. Соответственно, когда вызываем эту функцию в 1С 8.3, мы должны передавать эти параметры, иначе получим ошибку.
Теперь необходимо решить, почему мы передаем недостаточно фактических параметров и где взять нужные. Если мы используем типовые методы в наших доработках, то идем по следующему пути.
Выбираем вызов функции 1С, которая возвращает ошибку, и нажимаем на F12. Так мы найдем ее объявление. Прямо перед функцией сможете увидеть комментарий разработчиков, где будут перечислены необходимые параметры и их тип. Если все равно не очень понятно, каким именно параметром нужно заполнить, то есть вариант использовать отладку. Просто ставим точку остановки, и можно будет попасть сюда типовым образом. Например, если стоит вопрос о заполнении документа, то достаточно будет использовать «Заполнить на основании» в Обработчике событий формы.
Обработчик событий формы
Как только 1С покажет, что вы находитесь в отладке, то выделите реквизит, параметр которого вам необходим и нажмите Shift+F9. Вы увидите, как именно выглядит реквизит, которого вам не хватает. Остается только заполнить его в вызове функций в вашем коде.
Если же речь идет о какой-то самописной функции или методе, который возвращает такую ошибку, то можно удалить лишний параметр в том случае, если вы уверены, что в коде он не используется и его удаление не нарушит логику дальнейших действий 1С.
К сожалению, невозможно предложить универсальное решение этой ошибки программы 1С, но если понять принцип, ее исправление не должно занимать много времени и сил. В любом случае, если у вас появляются подобного рода ошибки, лучше обратитесь к фирме, которая вас обслуживает, чтобы решить проблему.
Внешняя обработка: недостаточно фактических параметров
Помогите, пожалуйста, разобраться с созданием печатной формы.
Создаю внешнюю ПФ «ТОРГ12» из встроенной.
Конфа: Комплексная автоматизация, редакция 1.1 + CRM, редакция 1.4 (1.1.58/1.4.10)
Создал новую внешнюю обработку, добавил реквизит СсылкаНаОбъект нужного типа, вытащил нужный макет, и функцию печати взял из документа «РеализацияТоваровУслуг».
В функции печати по умолчанию стоят параметры:
Функция Печать(МассивОбъектов, ОбъектыПечати, БезУслуг = Ложь) Экспорт
И возникает ошибка при попытке использования обработки:
<Форма.Форма.Форма(3,2)>: Недостаточно фактических параметров (Печать)
>Печать();
Убираю МассивОбъектов и ОбъектыПечати из параметров, а ниже в функции добавляю СсылкаНаОбъект.МассивОбъектов и СсылкаНаОбъект.ОбъектыПечати.
Но появляется другая ошибка:
<ВнешняяОбработка.Торг12.МодульОбъекта(252)>: Поле объекта не обнаружено (МассивОбъектов)
Для каждого СсылкаНаОбъект Из СсылкаНаОбъект.МассивОбъектов Цикл
Подскажите новичку, как этот МассивОбъектов правильно определить, чтобы при этом не было ругани на недостаток факт. параметров?
(5) Fabula, вот полный код.
Перем мВалютаРегламентированногоУчета Экспорт;
Функция Печать(БезУслуг = Ложь) Экспорт
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ТоварКод = «Артикул»;
Иначе
ТоварКод = «Код»;
КонецЕсли;
ЗапросШапка = Новый Запрос;
ЗапросШапка.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
ТекстЗапросаТовары = «ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК ТоварНаименование,
| ВложенныйЗапрос.Номенклатура.» + ТоварКод + » КАК ТоварКод,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК БазоваяЕдиницаНаименование,
| ВложенныйЗапрос.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
| ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.ЕдиницаИзмеренияМест.Представление КАК ВидУпаковки,
| ВложенныйЗапрос.КоэффициентМест / ВложенныйЗапрос.Коэффициент КАК КоличествоВОдномМесте,
| ВЫБОР
| КОГДА ВложенныйЗапрос.КоличествоМест > 0 ТОГДА ВложенныйЗапрос.КоличествоМест * ВложенныйЗапрос.ЕдиницаИзмеренияМест.Вес
| ИНАЧЕ ВложенныйЗапрос.Количество * ВложенныйЗапрос.ЕдиницаИзмерения.Вес
| КОНЕЦ КАК МассаБрутто,
| ВложенныйЗапрос.Характеристика КАК Характеристика,
| ВложенныйЗапрос.Серия КАК Серия,
| ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС,
| ВложенныйЗапрос.Цена КАК Цена,
| ВЫБОР
| КОГДА((ВложенныйЗапрос.ПроцентСкидкиНаценки = 0) И
| (ВложенныйЗапрос.ПроцентАвтоматическихСкидок = 0))
| ТОГДА ЛОЖЬ
| ИНАЧЕ Истина
| КОНЕЦ КАК ЕстьСкидкиПоСтроке,
| ВложенныйЗапрос.Количество КАК Количество,
| ВложенныйЗапрос.КоличествоМест КАК КоличествоМест,
| ВложенныйЗапрос.Сумма КАК Сумма,
| ВложенныйЗапрос.СуммаНДС КАК СуммаНДС,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапрос.Метка КАК Метка
|ИЗ
|
| (
| ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.ЕдиницаИзмеренияМест,
| РеализацияТоваровУслуг.ЕдиницаИзмеренияМест.Коэффициент КАК КоэффициентМест,
| РеализацияТоваровУслуг.ХарактеристикаНоменклатуры КАК Характеристика,
| РеализацияТоваровУслуг.СерияНоменклатуры КАК Серия,
| РеализацияТоваровУслуг.СтавкаНДС,
| РеализацияТоваровУслуг.Цена * &Курс / &Кратность КАК Цена,
| РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
| РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок,
| СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
| СУММА(РеализацияТоваровУслуг.КоличествоМест) КАК КоличествоМест,
| СУММА(РеализацияТоваровУслуг.Сумма * &Курс / &Кратность) КАК Сумма,
| СУММА(РеализацияТоваровУслуг.СуммаНДС * &Курс / &Кратность) КАК СуммаНДС,
| МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки,
| 0.00 КАК Метка
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.ЕдиницаИзмеренияМест,
| РеализацияТоваровУслуг.ХарактеристикаНоменклатуры,
| РеализацияТоваровУслуг.СерияНоменклатуры,
| РеализацияТоваровУслуг.СтавкаНДС,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
| РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок
| ) КАК ВложенныйЗапрос
|»;
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания(«РеализацияТоваровУслуг»);
ТекстЗапросаТовары = ТекстЗапросаТовары + »
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
| » + СтрокаВыборкиПоляСодержания + » КАК ТоварНаименование,
| РеализацияТоваровУслуг.Номенклатура.» + ТоварКод + » КАК ТоварКод,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК БазоваяЕдиницаНаименование,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
| NULL КАК ВидУпаковки,
| NULL КАК КоличествоВОдномМесте,
| 0.00 КАК МассаБрутто,
| NULL КАК Характеристика,
| NULL КАК Серия,
| РеализацияТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
| РеализацияТоваровУслуг.Цена * &Курс / &Кратность КАК Цена,
| ВЫБОР КОГДА(РеализацияТоваровУслуг.ПроцентСкидкиНаценки = 0.00)
| ТОГДА ЛОЖЬ
| ИНАЧЕ Истина
| КОНЕЦ КАК ЕстьСкидкиПоСтроке,
| РеализацияТоваровУслуг.Количество КАК Количество,
| NULL КАК КоличествоМест,
| РеализацияТоваровУслуг.Сумма * &Курс / &Кратность КАК Сумма,
| РеализацияТоваровУслуг.СуммаНДС * &Курс / &Кратность КАК СуммаНДС,
| РеализацияТоваровУслуг.НомерСтроки КАК НомерСтроки,
| 1.00 КАК Метка
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|»;
ТекстЗапросаТовары = ТекстЗапросаТовары + »
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК ТоварНаименование,
| РеализацияТоваровУслуг.Номенклатура.» + ТоварКод + » КАК ТоварКод,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК БазоваяЕдиницаНаименование,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
| NULL КАК ВидУпаковки,
| NULL КАК КоличествоВОдномМесте,
| РеализацияТоваровУслуг.Количество * РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Вес КАК МассаБрутто,
| NULL КАК Характеристика,
| NULL КАК Серия,
| «»Без НДС»» КАК СтавкаНДС,
| РеализацияТоваровУслуг.Цена * &Курс / &Кратность КАК Цена,
| Ложь КАК ЕстьСкидкиПоСтроке,
| РеализацияТоваровУслуг.Количество КАК Количество,
| NULL КАК КоличествоМест,
| РеализацияТоваровУслуг.Сумма * &Курс / &Кратность КАК Сумма,
| 0.00 КАК СуммаНДС,
| РеализацияТоваровУслуг.НомерСтроки КАК НомерСтроки,
| 2.00 КАК Метка
|ИЗ
| Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|
|УПОРЯДОЧИТЬ ПО Метка ВОЗР, НомерСтроки ВОЗР
|
|»;
ТабДокумент = Новый ТабличныйДокумент;
// Зададим параметры печатной формы по умолчанию
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу = 0;
ТабДокумент.АвтоМасштаб = Истина;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
// Восстановим установленные пользователем параметры печатной формы
ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_ТОРГ12»;
//Макет = ПолучитьОбщийМакет(«ТОРГ12»);
Макет = ПолучитьМакет («ТОРГ12»);
Для каждого СсылкаНаОбъект Из СсылкаНаОбъект.МассивОбъектов Цикл
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ДатаСреза», СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр(«СтруктурнаяЕдиница», СсылкаНаОбъект.Склад);
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.УстановитьПараметр(«ПустойКонтрагент», Справочники.Контрагенты.ПустаяСсылка());
Запрос.УстановитьПараметр(«Организация», СсылкаНаОбъект.Организация);
Запрос.УстановитьПараметр(«Подразделение», СсылкаНаОбъект.Подразделение);
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.УстановитьПараметр(«Курс», ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
Запрос.УстановитьПараметр(«Кратность», ЗаполнениеДокументов.КратностьДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
Запрос.Текст = ТекстЗапросаТовары;
ЗапросТовары = Запрос.Выполнить().Выгрузить();
// Вычислим курс документа для печати
Если СсылкаНаОбъект.ВалютаДокумента <> мВалютаРегламентированногоУчета
И (СсылкаНаОбъект.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах
ИЛИ СсылкаНаОбъект.Дата >= ‘20090101000000’) Тогда
ЗапросКурсАванса = Новый Запрос;
ЗапросКурсАванса.УстановитьПараметр(«ДокументСсылка», СсылкаНаОбъект);
ЗапросКурсАванса.Текст =
«ВЫБРАТЬ
| Док.СуммаВзаиморасчетов,
| Док.СуммаРегл
|ИЗ
| Документ.РеализацияТоваровУслуг.ДокументыРасчетовСКонтрагентом КАК Док
|ГДЕ Док.Ссылка = &ДокументСсылка
|ИТОГИ СУММА(СуммаВзаиморасчетов), СУММА(СуммаРегл) ПО ОБЩИЕ»;
Выборка = ЗапросКурсАванса.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если Выборка.Следующий() Тогда
ВыборкаСуммаВзаиморасчетов = Выборка.СуммаВзаиморасчетов;
ВыборкаСуммаРегл = Выборка.СуммаРегл;
Иначе
ВыборкаСуммаВзаиморасчетов = 0;
ВыборкаСуммаРегл = 0;
КонецЕсли;
НеоплаченнаяСуммаРегл = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(НеоплаченнаяСумма,
СсылкаНаОбъект.ДоговорКонтрагента.ВалютаВзаиморасчетов, мВалютаРегламентированногоУчета,
СсылкаНаОбъект.КурсВзаиморасчетов, 1,
СсылкаНаОбъект.КратностьВзаиморасчетов, 1);
СуммаРегл = ВыборкаСуммаРегл + НеоплаченнаяСуммаРегл;
Если НЕ СуммаРегл = 0 Тогда
ЗапросТовары.Колонки.Добавить(«СуммаБезНДС»);
МассивРаспределения = Новый Массив;
ЗапросТовары.Колонки.Добавить(«СуммаРублевая»);
УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаРегл, ЗапросТовары, «СуммаРублевая»);
Если Шапка.СуммаВключаетНДС Тогда
СтрокаТовар.Сумма = СтрокаТовар.Сумма+СтрокаТовар.СуммаНДС;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
// Выводим общие реквизиты шапки
СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаДокумента,, Шапка.БанковскийСчет);
СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.ДатаДокумента);
СведенияОГрузополучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.ДатаДокумента);
СведенияОГрузоотправитель = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента);
ОбластьМакета = Макет.ПолучитьОбласть(«Шапка»);
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);
ОбластьМакета.Параметры.ДатаДокумента = Шапка.ДатаДокумента;
Если Шапка.ЮрФизЛицо = Шапка.Грузоотправитель Тогда
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике);
Иначе
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузоотправитель, «ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет»);
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, «ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет»);
Если СокрЛП(Шапка.АдресДоставки) <> «» Тогда
ОбластьМакета.Параметры.АдресДоставки = УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдресаПоСтрока(Шапка.АдресДоставки);
Иначе
ОбластьМакета.Параметры.АдресДоставки = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, «ФактическийАдрес»);
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике);
ОбластьМакета.Параметры.ПредставлениеПлательщика = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПокупателе);
Если Шапка.ВедениеВзаиморасчетов <> Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам
И Шапка.ВедениеВзаиморасчетов <> Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоСчетам Тогда
ОбластьМакета.Параметры.Основание = Шапка.Основание;
Иначе
Если ЗначениеЗаполнено(Шапка.Сделка) Тогда
ОбластьМакета.Параметры.Основание = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка.Сделка, Строка(Шапка.Сделка.Метаданные().Синоним));
КонецЕсли;
КонецЕсли;
// Выводим всевозможные коды
ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОГрузоотправитель.КодПоОКПО;
ОбластьМакета.Параметры.ВидДеятельностиПоОКДП = «»;
ОбластьМакета.Параметры.ГрузополучательПоОКПО = СведенияОГрузополучателе.КодПоОКПО;
ОбластьМакета.Параметры.ПоставщикПоОКПО = СведенияОПоставщике.КодПоОКПО;
ОбластьМакета.Параметры.ПлательщикПоОКПО = СведенияОПокупателе.КодПоОКПО;
ОбластьМакета.Параметры.ОснованиеНомер = «»;
ОбластьМакета.Параметры.ОснованиеДата = «»;
ОбластьМакета.Параметры.ТранспортнаяНакладнаяНомер = «»;
ОбластьМакета.Параметры.ТранспортнаяНакладнаяДата = «»;
НомерСтроки = 0;
КоличествоСтрок = ЗапросТовары.Количество();
КоличествоСтрок = ЗапросТовары.Количество();
КонецЕсли;
// инициализация итогов по странице
ИтогоМассаБруттоНаСтранице = 0;
ИтогоМестНаСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоСуммаНаСтранице = 0;
ИтогоНДСНаСтранице = 0;
ИтогоСуммаСНДСНаСтранице = 0;
// инициализация итогов по документу
ИтогоМассаБрутто = 0;
ИтогоМест = 0;
ИтогоКоличество = 0;
ИтогоСуммаСНДС = 0;
ИтогоСумма = 0;
ИтогоНДС = 0;
// Создаем массив для проверки вывода
МассивВыводимыхОбластей = Новый Массив;
// Выводим многострочную часть докмента
ЗаголовокТаблицы = Макет.ПолучитьОбласть(«ЗаголовокТаб»);
ОбластьМакета = Макет.ПолучитьОбласть(«Строка»);
ОбластьИтоговПоСтранице = Макет.ПолучитьОбласть(«ИтогоПоСтранице»);
ОбластьПодвала = Макет.ПолучитьОбласть(«Подвал»);
ОбластьМакетаВсего = Макет.ПолучитьОбласть(«Всего»);
Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
Продолжить;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
ОбластьМакета.Параметры.МассаБрутто = МассаБрутто;
ОбластьМакета.Параметры.СуммаСНДС = СуммаСНДС;
ОбластьМакета.Параметры.СуммаНДС = СуммаНДС;
ОбластьМакета.Параметры.СтавкаНДС = ВыборкаСтрок.СтавкаНДС;
ОбластьМакета.Параметры.СуммаБезНДС = СуммаБезНДС;
Если НомерСтроки = 1 Тогда // первая строка
ЗаголовокТаблицы.Параметры.НомерСтраницы = «Страница » + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
МассивВыводимыхОбластей.Очистить();
МассивВыводимыхОбластей.Добавить(ОбластьМакета);
МассивВыводимыхОбластей.Добавить(ОбластьИтоговПоСтранице);
Если НомерСтроки = КоличествоСтрок Тогда
МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
МассивВыводимыхОбластей.Добавить(ОбластьМакетаВсего);
КонецЕсли;
Если НомерСтроки <> 1 И НЕ ФормированиеПечатныхФормСервер.ПроверитьВыводТабличногоДокумента(ТабДокумент, МассивВыводимыхОбластей) Тогда
ОбластьИтоговПоСтранице.Параметры.ИтогМассаБруттоПоСтранице = ИтогоМассаБруттоНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогМестПоСтранице = ИтогоМестНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогКоличествоПоСтранице = ИтогоКоличествоНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогСуммыПоСтранице = ИтогоСуммаНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогНДСПоСтранице = ИтогоНДСНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогСуммыСНДСПоСтранице = ИтогоСуммаСНДСНаСтранице;
// очистим итоги по странице
ИтогоМассаБруттоНаСтранице = 0;
ИтогоМестНаСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоСуммаНаСтранице = 0;
ИтогоНДСНаСтранице = 0;
ИтогоСуммаСНДСНаСтранице = 0;
НомерСтраницы = НомерСтраницы + 1;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ЗаголовокТаблицы.Параметры.НомерСтраницы = «Страница » + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
// увеличим итоги по странице
ИтогоМассаБруттоНаСтранице = ИтогоМассаБруттоНаСтранице + МассаБрутто;
ИтогоМестНаСтранице = ИтогоМестНаСтранице + Мест;
ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + Количество;
ИтогоСуммаНаСтранице = ИтогоСуммаНаСтранице + СуммаБезНДС;
ИтогоНДСНаСтранице = ИтогоНДСНаСтранице + СуммаНДС;
ИтогоСуммаСНДСНаСтранице = ИтогоСуммаСНДСНаСтранице + СуммаСНДС;
// увеличим итоги по дукументу
ИтогоМассаБрутто = ИтогоМассаБрутто + МассаБрутто;
ИтогоМест = ИтогоМест + Мест;
ИтогоКоличество = ИтогоКоличество + Количество;
ИтогоСумма = ИтогоСумма + СуммаБезНДС;
ИтогоНДС = ИтогоНДС + СуммаНДС;
ИтогоСуммаСНДС = ИтогоСуммаСНДС + СуммаСНДС;
// Выводим итоги по последней странице
ОбластьИтоговПоСтранице.Параметры.ИтогМассаБруттоПоСтранице = ИтогоМассаБруттоНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогМестПоСтранице = ИтогоМестНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогКоличествоПоСтранице = ИтогоКоличествоНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогСуммыПоСтранице = ИтогоСуммаНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогНДСПоСтранице = ИтогоНДСНаСтранице;
ОбластьИтоговПоСтранице.Параметры.ИтогСуммыСНДСПоСтранице = ИтогоСуммаСНДСНаСтранице;
// Выводим итоги по документу в целом
ОбластьМакетаВсего.Параметры.ИтогМассаБрутто = ИтогоМассаБрутто;
ОбластьМакетаВсего.Параметры.ИтогМест = ИтогоМест;
ОбластьМакетаВсего.Параметры.ИтогКоличество = ИтогоКоличество;
ОбластьМакетаВсего.Параметры.ИтогСуммы = ИтогоСумма;
ОбластьМакетаВсего.Параметры.ИтогНДС = ИтогоНДС;
ОбластьМакетаВсего.Параметры.ИтогСуммыСНДС = ИтогоСуммаСНДС;
// Выводим подвал документа
ПолнаяДатаДокумента = Формат(Шапка.ДатаДокумента, «ДФ=»»дд ММММ гггг «»»»года»»»»»»»);
ДлинаСтроки = СтрДлина(ПолнаяДатаДокумента);
ПервыйРазделитель = Найти(ПолнаяДатаДокумента,» «);
ВторойРазделитель = Найти(Прав(ПолнаяДатаДокумента,ДлинаСтроки-ПервыйРазделитель),» «)+ПервыйРазделитель;
ОбластьПодвала.Параметры.ДатаДокументаДень = «»»»+Лев(ПолнаяДатаДокумента,ПервыйРазделитель-1)+»»»»;
ОбластьПодвала.Параметры.ДатаДокументаМесяц = Сред(ПолнаяДатаДокумента,ПервыйРазделитель+1,ВторойРазделитель-ПервыйРазделитель-1);
ОбластьПодвала.Параметры.ДатаДокументаГод = Прав(ПолнаяДатаДокумента,ДлинаСтроки-ВторойРазделитель);
Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Руководители, Шапка.ДатаДокумента,);
Руководитель = Руководители.Руководитель;
Бухгалтер = Руководители.ГлавныйБухгалтер;
// Главный бухгалтер
Если НЕ ЗначениеЗаполнено(Шапка.ГлавныйБухгалтер) Тогда
ФИОБухгалтер = Бухгалтер;
Иначе
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(Шапка.ГлавныйБухгалтер, Шапка.ДатаДокумента);
ФамилияИмяОтчествоБухгалтер = ФамилияИмяОтчествоФизЛица.Фамилия + » » + ФамилияИмяОтчествоФизЛица.Имя + » » + ФамилияИмяОтчествоФизЛица.Отчество;
ФИОБухгалтер = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоБухгалтер);
ФИОБухгалтер = ФИОБухгалтер + » » + Шапка.ЗаГлавногоБухгалтераПоПриказу;
КонецЕсли;
ОбластьПодвала.Параметры.ФИОГлавБухгалтера = ФИОБухгалтер;
// Отпуск товара разрешил
Если НЕ ЗначениеЗаполнено(Шапка.ОтпускРазрешил) Тогда
ФИООтпускРазрешил = Руководитель;
ДолжностьОтпускРазрешил = Руководители.РуководительДолжность;
Иначе
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(Шапка.ОтпускРазрешил, Шапка.ДатаДокумента);
ПодразделениеДолжностьФизЛица = ПолныеПрава.СведенияОСотруднике(Шапка.ОтпускРазрешил, Шапка.ДатаДокумента, Шапка.Организация);
ФамилияИмяОтчествоОтпускРазрешил = ФамилияИмяОтчествоФизЛица.Фамилия + » » + ФамилияИмяОтчествоФизЛица.Имя + » » + ФамилияИмяОтчествоФизЛица.Отчество;
ФИООтпускРазрешил = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтпускРазрешил);
ДолжностьОтпускРазрешил = ПодразделениеДолжностьФизЛица.Должность;
ФИООтпускРазрешил = ФИООтпускРазрешил + » » + Шапка.ЗаРуководителяПоПриказу;
КонецЕсли;
ОбластьПодвала.Параметры.ФИОРуководителя = ФИООтпускРазрешил;
ОбластьПодвала.Параметры.ДолжностьРуководителя = ДолжностьОтпускРазрешил;
// Отпуск товара произвел
Если НЕ ЗначениеЗаполнено(Шапка.ОтпускПроизвел) Тогда
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(Шапка.ОтветственноеЛицо, Шапка.ДатаДокумента);
ПодразделениеДолжностьФизЛица = ПолныеПрава.СведенияОСотруднике(Шапка.ОтветственноеЛицо, Шапка.ДатаДокумента, Шапка.Организация);
Иначе
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(Шапка.ОтпускПроизвел, Шапка.ДатаДокумента);
ПодразделениеДолжностьФизЛица = ПолныеПрава.СведенияОСотруднике(Шапка.ОтпускПроизвел, Шапка.ДатаДокумента, Шапка.Организация);
КонецЕсли;
ФамилияИмяОтчествоОтпускПроизвел = ФамилияИмяОтчествоФизЛица.Фамилия + » » + ФамилияИмяОтчествоФизЛица.Имя + » » + ФамилияИмяОтчествоФизЛица.Отчество;
ФИООтпускПроизвел = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтпускПроизвел);
ДолжностьОтпускПроизвел = ПодразделениеДолжностьФизЛица.Должность;
ОбластьПодвала.Параметры.ФИОКладовщика = ФИООтпускПроизвел;
ОбластьПодвала.Параметры.ДолжностьКладовщика = ДолжностьОтпускПроизвел;
// Доверенность
ОбластьПодвала.Параметры.ДоверенностьНомер = Шапка.ДоверенностьНомер;
ОбластьПодвала.Параметры.ДоверенностьДата = Формат(Шапка.ДоверенностьДата, «ДФ=’дд ММММ гггг'»);
ОбластьПодвала.Параметры.ДоверенностьВыдана = Шапка.ДоверенностьВыдана;
ОбластьПодвала.Параметры.ДоверенностьЧерезКого = Шапка.ДоверенностьЧерезКого;