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

Автор Тема: Работа с табличной частью  (Прочитано 376 раз)

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

Оффлайн Кот_Леопольд

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-20
  • Сайт: 
  • Профессия: Ученик 1С
Всем добрый день. Подскажите в чем ошибка?
Простая задача, найти максимальное значение в колонке таблице и вывести его: то есть пройтись по строкам в одной колонке в табличной части документа и найти максимальное значение(тип число) и вывести на реквизит в форме. Нашел на форумах примерное решение задачи.
Делаю так, Создаю новую ТЗ, добавляю туда нужную колонку и сортирую ее, затем присваиваю нужные значения:
       
     
   ТУ = Новый ТаблицаЗначений;
ТУ.Колонки.Добавить("КоличествоПластин");
ТУ.Сортировать("КоличествоПластин Убыв");
МаксКоличествоПластин = ТУ[0].КоличествоПластин;
Объект.ОбщееКоличествоПластин = МаксКоличествоПластин;

Ошибку выдает что тип не определен у ТЗ:
{Документ.ЗаказНаПроизводство.Форма.ФормаДокумента.Форма(31,14)}: Тип не определен (ТаблицаЗначений)
    ТУ = Новый <<?>>ТаблицаЗначений; (Проверка: Тонкий клиент)
 Конфигурацию пишу сам, платформа 8.3.
 P.S: Отнесись с пониманием, я только учусь!!!

Последний раз редактировалось: Кот_Леопольд; 14 Сен 2018, 11:47


Оффлайн wise

  • *****
  • Сообщений: 709
  • РЕПУТАЦИЯ: 97
  • КПД: 14%
  • Кто сгорел, того не подожжешь
  • Регистрация: 2013-03-21
  • Сайт: 
  • Профессия: Ученик 1С
(0) у Таблицы значений Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
вероятно Вы &наКлиенте ...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Оффлайн Кот_Леопольд

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-20
  • Сайт: 
  • Профессия: Ученик 1С
(0) у Таблицы значений Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
вероятно Вы &наКлиенте ...
Вы абсолютно правы!!! Спасибо!!!
Добавлено: 14 Сен 2018, 14:37

Переделал получилось вот что:
&НаСервере
Процедура  СортировкаЗначений();
ТУ = Новый ТаблицаЗначений;
ТУ.Колонки.Добавить("КоличествоПластин");
ТУ.Сортировать("КоличествоПластин Убыв");
МаксКоличествоПластин = ТУ[0].КоличествоПластин;
Объект.ОбщееКоличествоПластин = МаксКоличествоПластин;
КонецПроцедуры

&НаКлиенте
 Процедура РассчитатьОбщееКоличествоПластин(Стр)
Х = Стр.КоличествоВЗаказе/Стр.КоличествоНаМакете/2;
Если Цел(Х)-Окр(Х,0,0) = 0 И Цел(Х)<>Х Тогда
Стр.КоличествоПластин = Цел(Х)+0.5;
   Иначе Стр.КоличествоПластин = Окр(Х,0,0);
   КонецЕсли;
СортировкаЗначений();
Стр.КоличествоНаЗапас = (Объект.ОбщееКоличествоПластин*Стр.КоличествоНаМакете*2) - Стр.КоличествоВЗаказе;
КонецПроцедуры
Выдает ошибку при вводе данных в пользовательском режиме

Последний раз редактировалось: Кот_Леопольд; 14 Сен 2018, 14:37. Причина: Объединение сообщений

Оффлайн wise

  • *****
  • Сообщений: 709
  • РЕПУТАЦИЯ: 97
  • КПД: 14%
  • Кто сгорел, того не подожжешь
  • Регистрация: 2013-03-21
  • Сайт: 
  • Профессия: Ученик 1С
(2) посмотрите, ЧТО находится в Вашей Таблице значений...
она, ведь - ПУСТА.!!
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Оффлайн Кот_Леопольд

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-20
  • Сайт: 
  • Профессия: Ученик 1С
(2) посмотрите, ЧТО находится в Вашей Таблице значений...
она, ведь - ПУСТА.!!
Она да пуста, Я думал она при заполнении будет сравнивать значения и сортировать. Как же тут правильно все оформить? не подскажешь?=)

Оффлайн Sy4a

  • **
  • Сообщений: 90
  • РЕПУТАЦИЯ: 17
  • КПД: 19%
  • Регистрация: 2015-07-16
  • Сайт: 
  • Профессия: Программист 1С
Во первых заполните её и проверьте на работоспособность код.
Во вторых можно просто условие написать:
Если ТУ.количество()>0 тогда     
МаксКоличествоПластин = ТУ[0].КоличествоПластин;
Объект.ОбщееКоличествоПластин = МаксКоличествоПластин;
иначе
Объект.ОбщееКоличествоПластин=0;
КонецЕсли;
вообще вы просто создали колонку пустую и зачемто её сортируете, сначало заполните а уж потом сортируйте
Например так:
ТУ.ЗагрузитьКолонку(ВашМассивЗначений,"КоличествоПластин");

Оффлайн Кот_Леопольд

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-20
  • Сайт: 
  • Профессия: Ученик 1С
Во вторых можно просто условие написать:
Если ТУ.количество()>0 тогда     
Не совсем понимаю что означает это условие.
Я написал вот такой код по вашей подсказке =):
  Если Объект.Продукция.Количество()>0 Тогда
   МаксКоличествоПластин = Объект.Продукция[0].КоличествоПластин;
   Объект.ОбщееКоличествоПластин = МаксКоличествоПластин;
   Иначе
   Объект.ОбщееКоличествоПластин = 0;
   КонецЕсли;
Он мне проста первое значение из таблици берет как максимальное

Оффлайн bsn-chita

  • **
  • Сообщений: 50
  • РЕПУТАЦИЯ: 14
  • КПД: 28%
  • Регистрация: 2017-03-06
  • Сайт: 
  • Профессия: Ученик 1С
Цитировать
ТУ.количество()
Получает количество строк таблицы значений.
Цитировать
Он мне проста первое значение из таблици берет как максимальное
Вроде как что написано то и делает.
  Если Объект.Продукция.Количество()>0 Тогда
      МаксКоличествоПластин = Объект.Продукция[0].КоличествоПластин;
      Объект.ОбщееКоличествоПластин = МаксКоличествоПластин;
  Иначе
      Объект.ОбщееКоличествоПластин = 0;
  КонецЕсли;
Система смотрит есть ли у табличной части хоть одна строка. Если количество()>0 то да есть хотя бы одна строка и в этом случае берется значение КоличествоПластин из первой строки(Продукция[0] индексы начинаются 0). А иначе если в табличной части нет ни одной строки просто присваивается 0.
Добавлено: 19 Сен 2018, 03:22

Набросал навскидку варианты разные решения.
&НаСервере
Процедура Рассчитать1НаСервере()
Если Объект.Товары.Количество() > 0 Тогда
Объект.Товары.Сортировать("КоличествоПластин Убыв");
МаксимальноеЗначение = Объект.Товары[0].КоличествоПластин;
Иначе
МаксимальноеЗначение = 0;
КонецЕсли;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = МаксимальноеЗначение;
Сообщение.Сообщить();
КонецПроцедуры
&НаСервере
Процедура Рассчитать2НаСервере()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ПриходнаяТовары.Товар КАК Товар,
| СУММА(ПриходнаяТовары.КоличествоПластин) КАК КоличествоПластин
|ИЗ
| Документ.Приходная.Товары КАК ПриходнаяТовары
|ГДЕ
| ПриходнаяТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПриходнаяТовары.Товар
|
|УПОРЯДОЧИТЬ ПО
| КоличествоПластин УБЫВ";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
МаксимальноеЗначение = Выборка.КоличествоПластин;
Иначе
МаксимальноеЗначение = 0;
КонецЕсли;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = МаксимальноеЗначение;
Сообщение.Сообщить();
КонецПроцедуры
&НаСервере
Процедура Рассчитать3НаСервере()
Если Объект.Товары.Количество() > 0 Тогда
МаксимальноеЗначение = Объект.Товары[0].КоличествоПластин;
Для Каждого Стр Из Объект.Товары Цикл
Если Стр.КоличествоПластин > МаксимальноеЗначение Тогда
МаксимальноеЗначение = Стр.КоличествоПластин;
КонецЕсли;
КонецЦикла;
Иначе
МаксимальноеЗначение = 0;
КонецЕсли;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = МаксимальноеЗначение;
Сообщение.Сообщить();
КонецПроцедуры

Последний раз редактировалось: bsn-chita; 19 Сен 2018, 03:22. Причина: Объединение сообщений

Оффлайн Кот_Леопольд

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-20
  • Сайт: 
  • Профессия: Ученик 1С
Цитировать
Набросал навскидку варианты разные решения.
Большое спасибо, Попробовал, все варианты. С запросом правда пока плоха знаком, разберу его позже. А так два варианта абсолютно рабочии, а самая главное что понимаю как работают.

Добавлено: 19 Сен 2018, 21:52

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

Последний раз редактировалось: Кот_Леопольд; 19 Сен 2018, 21:52. Причина: Объединение сообщений

Оффлайн bsn-chita

  • **
  • Сообщений: 50
  • РЕПУТАЦИЯ: 14
  • КПД: 28%
  • Регистрация: 2017-03-06
  • Сайт: 
  • Профессия: Ученик 1С
Стр = Элементы.Продукция.ТекущиеДанные;
ТекущиеДанные представляет доступ к текущим данным (данным текущей строки). Так что и тут все правильно с точки зрения логики. Все что могут изменять ваши процедуры это данные текущей активной строки. А какие такие расчеты требуется делать?


Теги:
 

В строке номер "1" табличной части "Состав набора": Не заполнено значение реквиз

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

Ответов: 0
Просмотров: 7314
Последний ответ 18 Сен 2011, 16:07
от Хеля
В строке "1" табличной части "Состав набора": Не заполнено значение реквизитов Цена

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

Ответов: 0
Просмотров: 2971
Последний ответ 11 Апр 2014, 16:52
от rusalka
<< "Работа с комментариями" >>

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

Ответов: 10
Просмотров: 6283
Последний ответ 17 Май 2011, 11:06
от cska-fanat-kz
Не подтягивается Ставка налогообложения "Основная" в табличной части расчета НДФЛ в документе Начисление зарплаты работникам организаций

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

Ответов: 1
Просмотров: 3504
Последний ответ 11 Июн 2014, 07:05
от Alex56
Как программно вызывать обработчик ПриИзменении поля табличной части после того, как форма была заполнена программно?

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

Ответов: 6
Просмотров: 6165
Последний ответ 27 Июл 2015, 06:21
от cska-fanat-kz

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

wise wise
58 Сообщений
oleg-x
54 Сообщений
AIFrame AIFrame
52 Сообщений
alexandr_ll
46 Сообщений
alex0402
44 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
42 Сообщений
LexaK
31 Сообщений
BuhRust
29 Сообщений
andron81_81
24 Сообщений
MuI_I_Ika MuI_I_Ika
22 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal