Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 07:46
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Итог по полю табличной части документа.  (Прочитано 4741 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Конст_007

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2015-05-25
  • Сайт: 
  • Профессия: Ученик 1С
Всем доброго времени суток!

Помогите пожалуйста, не получается посчитать в форме документа итог по столбцу табличной части.
УТ 11.1
В справочнике номенклатуры добавлен числовой реквизит.
В табличной часть документа (накладная на внутреннее перемещение) выведен столбец с этим реквизитом, и по нему надо посчитать
итоговую сумму. Не получается обратиться в модуле формы к этому полю, пытаюсь так:

&НаКлиенте
Процедура РассчитатьИтоги(Команда)
     ТекСтрокаНоменклатура = Элементы.Товары.ТекущиеДанные;
ПеремИтого = 0;
Для Каждого ТекСтрокаНоменклатура Из Объект.Товары Цикл
ПеремИтого = ПеремИтого + ТекСтрокаНоменклатура.Номенклатура.СуммаИсходная;
КонецЦикла;                                               
КонецПроцедуры

Ругается, пишет поле объекта "СуммаИсходная" не обнаружено, хотя
путь к данным на форме для этого столбца: Объект.Товары.Номенклатура.СуммаИсходная
Пытался посчитать через функцию подсчета итога:
Объект.Товары.Итог( ТекСтрокаНоменклатура.Номенклатура.СуммаИсходная)
 
Тоже не получается, это же ссылочное поле, как блин к нему обратиться и просуммировать, уже всю голову сломал...


Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Подобный подсчет надо выполнять на сервере. На клиенте нет реквизитов.
Если нужна только номенклатура, то
ТекСтрокаНоменклатура.Номенклатура - можно использовать на клиенте.
А если нужен реквизит номенклатуры,
ТекСтрокаНоменклатура.Номенклатура.СуммаИсходная - то только на сервере.

Оффлайн Rasty

  • *****
  • Сообщений: 988
  • РЕПУТАЦИЯ: 139
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
а может проще отобразить итог в подвале колонки таблицы?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Как? нужен итог по реквизиту номенклатуры.

Оффлайн Rasty

  • *****
  • Сообщений: 988
  • РЕПУТАЦИЯ: 139
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
пора мне очки покупать
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн Конст_007

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2015-05-25
  • Сайт: 
  • Профессия: Ученик 1С
vitasw и Rasty спасибо за ответы!

Пытаюсь получить значение реквизита через функцию на сервере и передать значение реквизита в модуль формы просто в сообщение для проверки
(все написано в модуле формы). Номенклатуру ищу просто по Артикулу:

&НаСервере
Функция ПолучитьЗначениеСуммыПоПозиции(ПараметрДляПоиска)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Номенклатура.СуммаИсходная
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Артикул = &Артикул");
Запрос.УстановитьПараметр("Артикул",ПараметрДляПоиска);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Возврат Выборка.СуммаИсходная;
КонецФункции

&НаКлиенте
Процедура РассчитатьИтоги(Команда)
     ТекСтрокаНоменклатура = Элементы.Товары.ТекущиеДанные;
Для Каждого ТекСтрокаНоменклатура Из Объект.Товары Цикл
ПараметрДляПоиска = ТекСтрокаНоменклатура.Артикул;
                Сообщить(ПолучитьЗначениеСуммыПоПозиции(ПараметрДляПоиска));
КонецЦикла;
КонецПроцедуры

Выводит пустые значения. Вроде все верно, ТекСтрокаНоменклатура.Артикул в форме точно выводит правильное значение, проверил.
Подскажите пожалуйста, кто знает...

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
:))) Похвально ваше желание выполнять любые действия с помощью запросов. Со стратегической точки зрения это абсолютно правильно. Но реализация....:(
Вариант1(ленивый):
&НаСервере
Функция ПолучитьЗначениеСуммыПоПозиции(ПараметрДляПоиска)
   Возврат ПараметрДляПоиска.СуммаИсходная;
КонецФункции

&НаКлиенте
Процедура РассчитатьИтоги(Команда)
         Итого=0;
         Для Каждого ТекСтрокаНоменклатура Из Объект.Товары Цикл
            Итого=Итого+ПолучитьЗначениеСуммыПоПозиции(ТекСтрокаНоменклатура.Номенклатура);
         КонецЦикла;
КонецПроцедуры

Вариант2(стратегически правильный):
&НаСервере
Функция ПолучитьЗначениеСуммыПоПозиции(ПараметрДляПоиска)
   Запрос = Новый Запрос(   
    "ВЫБРАТЬ
     |    Номенклатура.СуммаИсходная
     |ИЗ
     |    Справочник.Номенклатура КАК Номенклатура
     |ГДЕ
     |    Номенклатура.Ссылка в (&МассивНоменклатуры)";
     Запрос.УстановитьПараметр("МассивНоменклатуры",Объект.Товары.ВыгрузитьКолонку("Номенклатура"));
     РезультатЗапроса = Запрос.Выполнить().Выгрузить();
     Возврат РезультатЗапроса.Итог("СуммаИсходная");
КонецФункции

&НаКлиенте
Процедура РассчитатьИтоги(Команда)
         Итого=ПолучитьЗначениеСуммыПоПозиции();
КонецПроцедуры

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
vitasw, ну зачем так-то
&НаСервере
Функция ПолучитьЗначениеСуммыПоПозиции(ПараметрДляПоиска)
   Запрос = Новый Запрос(   
    "ВЫБРАТЬ
     |    Номенклатура.СуммаИсходная
     |ИЗ
     |    Справочник.Номенклатура КАК Номенклатура
     |ГДЕ
     |    Номенклатура.Ссылка в (&МассивНоменклатуры)";
     Запрос.УстановитьПараметр("МассивНоменклатуры",Объект.Товары.ВыгрузитьКолонку("Номенклатура"));
     РезультатЗапроса = Запрос.Выполнить().Выгрузить();
     Возврат РезультатЗапроса.Итог("СуммаИсходная");
КонецФункции


агрегатные функции в запросе надо искользовать, получится так

&НаСервере
Функция ПолучитьЗначениеСуммыПоПозиции(ПараметрДляПоиска)

   //если табличная часть пустая сразу возвращаем 0
   Если Объект.Товары.Количество() = 0 Тогда
      Возврат 0;
   КонецЕсли;

   Запрос = Новый Запрос(   
    "ВЫБРАТЬ
     |    СУММА(Спр.СуммаИсходная) КАК СуммаИсходная
     |ИЗ
     |    Справочник.Номенклатура КАК Спр
     |ГДЕ
     |    Спр.Ссылка в (&МассивНоменклатуры)";
     Запрос.УстановитьПараметр("МассивНоменклатуры",Объект.Товары.ВыгрузитьКолонку("Номенклатура"));
   //не надо получать таблицу и ее дополнительно суммировать 
   //РезультатЗапроса = Запрос.Выполнить().Выгрузить();
   //Возврат РезультатЗапроса.Итог("СуммаИсходная");

   РезультатЗапроса = Запрос.Выполнить().Выбрать();
   РезультатЗапроса.Следующий();

   Возврат РезультатЗапроса.СуммаИсходная;

КонецФункции
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Те же ...ца, только впрофиль

Оффлайн Конст_007

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2015-05-25
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо за ответы, ленивый вариант работает!!!

На вариантах с запросами правда ругается:
{Документ.ПеремещениеТоваров.Форма.ФормаДокумента.Форма(2548)}: Метод объекта не обнаружен (ВыгрузитьКолонку)
     Запрос.УстановитьПараметр("МассивНоменклатуры",Объект.Товары.ВыгрузитьКолонку("Номенклатура"));




Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4470
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7734
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
"Не совпадают сумма документа и общая сумма по платежным ведомостям"

Автор yunovoРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4769
Последний ответ 11 Янв 2015, 02:55
от MuI_I_Ika
При создании нового документа "Заявка на кассовый расход" Ошибка "Значение 9 поля "номер" не уникально

Автор ppkmliteРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 8480
Последний ответ 22 Ноя 2014, 04:50
от cska-fanat-kz
Фамилия руководителя в печатных формах документа "Акт сверки", "Акт об оказании"

Автор MKozzlikРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 7330
Последний ответ 03 Фев 2012, 17:27
от Dinah

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
167 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
46 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
BuhRust
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 335
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal