Переменная не определена этотобъект

Переменная не определена (СуммаИтого)

Переменная не определена (СуммаИтого)

Привет
Уважаемые, я в Бухгалтерии 8.1. в Общие макеты — М11. В Подвал добавил СуммаИтого.
А в документе "Требование-накладная" после строки 100:
(Область = Макет.ПолучитьОбласть("Подвал");)
добавил строку:
Область.Параметры.СуммаИтого=СуммаИтого+(Цена * СтрокаТЧ.Количество);
и мне выдаёт ошибку:
Переменная не определена (СуммаИтого)

Нужно ещё что то добавить?

Спасибо.

Re: Переменная не определена (СуммаИтого)

"Переменная не определена (СуммаИтого)" что непонятно в этой фразе?

Re: Переменная не определена (СуммаИтого)

СуммаИтого+(Цена * СтрокаТЧ.Количество)

вот эта переменная СуммаИтого не проинициализирована

Re: Переменная не определена (СуммаИтого)

(1) 🙂 дак вроде всё понятно, понятно что она не определена. Я ведь это и спрашиваю.

Отказ от использования модальных окон

Шутник
(2) Я в нескольких местах пытался её прописать. Смотрел по аналогии с Цена, Сумма (это уже стоит там). Никак не получается.

Re: Переменная не определена (СуммаИтого)

если я правильно понял то должно быть примерно так
СуммаИтого = 0;
<Начало цикла по строкам>

СуммаИтого = СуммаИтого+(Цена * СтрокаТЧ.Количество);

КонецЦикла;
// вывод итоговой суммы в подвал
Область.Параметры.СуммаИтого=СуммаИтого;

Re: Переменная не определена (СуммаИтого)

Функция ПечатьМ11()

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТребованиеНакладная_М11";

Макет = ПолучитьОбщийМакет("М11");

СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, Дата);

Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.Заголовок                = "ТРЕБОВАНИЕ-НАКЛАДНАЯ № " + Строка(Номер);
Область.Параметры.КодОКПО                  = СведенияОбОрганизации.КодПоОКПО;
Область.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации);
Область.Параметры.ДатаСоставления          = Формат( Дата, "ДФ=dd.MM.yy");
Область.Параметры.Склад                    = Склад;
Область.Параметры.КоррСчет                 = СчетЗатрат.Код;
Область.Параметры.ПредставлениеПодразделения = ?(СчетаУчетаЗатратВТаблице, ПодразделениеОрганизации, Субконто1);
ТабДокумент.Вывести(Область);

СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("Счет",                         "Счет");
СтруктураПолей.Вставить("Материал",                     "Номенклатура");
СтруктураПолей.Вставить("МатериалНаименование",         "Номенклатура.НаименованиеПолное");
СтруктураПолей.Вставить("НоменклатурныйНомер",          "Номенклатура.Код");
СтруктураПолей.Вставить("ЕдиницаИзмеренияНаименование", "Номенклатура.БазоваяЕдиницаИзмерения");
СтруктураПолей.Вставить("ЕдиницаИзмеренияКод",          "Номенклатура.БазоваяЕдиницаИзмерения.Код");
СтруктураПолей.Вставить("Количество",                   "Количество");

Область = Макет.ПолучитьОбласть("Строка");

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

// Поиск сумм списания активов для заполнения Цены и Суммы
ТаблицаСуммСписания = БухгалтерскийУчет.ПолучитьСуммуСписанияАктивов(ЭтотОБъект);

Для Каждого СтрокаТЧ Из ТаблицаМатериалов Цикл

Область.Параметры.Заполнить(СтрокаТЧ);
СтрокаСуммСписания =  ТаблицаСуммСписания.Найти(СтрокаТЧ.Материал, "Номенклатура");
Если СтрокаСуммСписания = Неопределено Тогда
Область.Параметры.Цена = 0;
Область.Параметры.Сумма = 0;

Иначе
Цена = ?(СтрокаСуммСписания.Количество = 0, 0, СтрокаСуммСписания.Сумма / СтрокаСуммСписания.Количество);
Область.Параметры.Цена  = Цена;
Область.Параметры.Сумма = Цена * СтрокаТЧ.Количество;

КонецЕсли;
ТабДокумент.Вывести(Область);

КонецЦикла;

ТаблицаМатериалов = ОбщегоНазначения.СформироватьЗапросПоТабличнойЧасти(ЭтотОбъект, "МатериалыЗаказчика", СтруктураПолей).Выгрузить();

Для Каждого СтрокаТЧ Из ТаблицаМатериалов Цикл

Область.Параметры.Заполнить(СтрокаТЧ);
СтрокаСуммСписания =  ТаблицаСуммСписания.Найти(СтрокаТЧ.Материал, "Номенклатура");
Если СтрокаСуммСписания = Неопределено Тогда
Область.Параметры.Цена = 0;
Область.Параметры.Сумма = 0;

Иначе
Цена = ?(СтрокаСуммСписания.Количество = 0, 0, СтрокаСуммСписания.Сумма / СтрокаСуммСписания.Количество);
Область.Параметры.Цена  = Цена;
Область.Параметры.Сумма = Цена * СтрокаТЧ.Количество;

КонецЕсли;
ТабДокумент.Вывести(Область);

СуммаИтого = 0;//добавил
СуммаИтого = СуммаИтого+(Цена * СтрокаТЧ.Количество);//добавил

КонецЦикла;

Область = Макет.ПолучитьОбласть("Подвал");

     Область.Параметры.СуммаИтого=СуммаИтого; //добавил

ТабДокумент.Вывести(Область);

Возврат ТабДокумент;

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

попробовал в разных местах вставлять. в одном варианте выводит последнюю сумму из всех строк. в другом случае не выводит ничего.
может что то нужно ещё добавить? 🙂

Re: Переменная не определена (СуммаИтого)

(0) вы на кого учились???? профессия какая???? судя по тому куда вы "СуммаИтого = 0;//добавил" вставили — вам бы азам программирования поучится где-нить…. инициализация переменных предназначенных для накопления каких-то данных делается в НАЧАЛЕ модуля….. но уж никак не в теле цикла.

Re: Переменная не определена (СуммаИтого)

(6) да это разводка, ну не реально за год как минимум не научиться таким простым вещам.

Re: Переменная не определена (СуммаИтого)

(6) Я поставил СуммаИтого = 0; перед
Область = Макет.ПолучитьОбласть("Строка");

в печ форме ничего не вывелось.
(7) да не, не разводка. можно конечно научится … если учится этому. вот решил попробовать.
© 2009 Форум 1С: Одинэс.Ру
В основу сайта был положен архив форума «Территория 1С»

Во встроенном языке программирования 1С используются переменные. Имена переменных должны начинаться с английского или русского символа, или подчеркивания. Нельзя чтобы наименование переменной начиналось с цифры. Не рекомендуется именовать переменные зарезервированными синтаксическими конструкциями. Имена переменных должны носить осмысленный характер.

Переменная ЭтотОбъект в 8.3

Это улучшает читабельность программного кода. Что в последующем увеличивает скорость разработки или доработки приложения. При объявлении переменных не требуется указывать тип значения, как это делается во многих других языках программирования. Тип значения определяется автоматически системой.

Локальные переменные

Локальные переменные определяются внутри процедур или функций. Перед ними необязательно писать ключевое слово "Перем". Область доступности таких переменных ограничена границами своей процедуры или функции. То есть, к такой переменной нельзя обратиться в другой процедуре или функции или из глобального контекста.

Функция РассчитатьСумму()
Сумма = 1;
Возврат Сумма;
КонецФункции;

Глобальные переменные

Во многих языках программирования предусмотрено создание глобальных переменных. Во встроенном языке 1С, так же есть возможность создавать глобальные переменные. Такие переменные доступны во всех процедурах и функциях модуля в котором они определены. В языке программирования 1С глобальные переменные могут быть определены в любых модулях (объектов, форм, и т.д) кроме общих модулей. Глобальные переменные задаются в самом верху модуля, перед определением всех процедур и функций. Перед именем переменной пишется ключевое слово "Перем". Значение указывать нельзя. Значение глобальной переменной можно задать в процедурах, функциях модуля или в конце модуля после всех процедур и функций.

Перем гСумма;

Функция РассчитатьСумму()
гСумма = 1;
КонецФункции;

//При данном варианте, значение переменной устанавливается при создании объекта
гСумма = 2;

Экспортные переменные

Глобальную переменную можно сделать экспортной, указав ключевое слово "Экспорт". Например, если экспортная переменная создаётся в модуле объекта справочника, то к ней можно обратиться через объект этого справочника, СправочникОбъект.ИмяПеременной.

Перем гСумма Экспорт;

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *