|
Процедура или функция с указанным именем не определена (Итог) | ☑ | ||
---|---|---|---|---|
0
Айрат_116
23.07.19
✎
14:30
|
Здравствуйте. Скажите в чем ошибка? {Документ.ТН_ДефектнаяВедомость.МодульМенеджера(103,25)}: Процедура или функция с указанным именем не определена (Итог)
об.Параметры.СуммаПР = <<?>>Итог(стрТЗПроводки.Сумма); (Проверка: Сервер) Для Каждого СТР Из Ссылка.Товары Цикл А = А + 1; об.Параметры.А = "1." + Строка(А); об.Параметры.Номенклатура = СТР.Номенклатура; об.Параметры.ЕдиницаИзмерения = СТР.Номенклатура.ЕдиницаИзмерения; об.Параметры.Кол = СТР.Количество; стрТЗПроводки = ТЗПроводки.Найти(СТР.Номенклатура, "Номенклатура"); Если стрТЗПроводки = Неопределено Тогда об.Параметры.Сумма = 0; Иначе об.Параметры.Сумма = стрТЗПроводки.Сумма; КонецЕсли; об.Параметры.Цена = стрТЗПроводки.Сумма / СТР.Количество; ТабДок.Вывести(об); КонецЦикла; об = Макет.ПолучитьОбласть("СуммаПР"); об.Параметры.СуммаПР = Итог(стрТЗПроводки.Сумма); |
|||
1
mistеr
23.07.19
✎
14:32
|
ТЗПроводки.Итог("Сумма");
|
|||
2
Айрат_116
23.07.19
✎
14:33
|
(1) Точно
|
|||
3
Айрат_116
23.07.19
✎
14:34
|
(1) Спасибо=)
|
|||
4
Айрат_116
23.07.19
✎
14:40
|
(1)Все равно ошибка(
|
|||
5
Айрат_116
23.07.19
✎
14:41
|
{Документ.ТН_ДефектнаяВедомость.МодульМенеджера(103)}: Метод объекта не обнаружен (Итог)
об.Параметры.СуммаПР = стрТЗПроводки.Итог("Сумма"); |
|||
6
piter3
23.07.19
✎
14:41
|
Может стоит итог применять к тз,а к не строчке?
|
|||
7
mistеr
23.07.19
✎
14:42
|
Дальше сам
|
|||
8
Cyberhawk
23.07.19
✎
14:42
|
(6) Не, правильнее итог вообще не применять
|
|||
9
Айрат_116
23.07.19
✎
14:45
|
(8) Надо применить. У меня таблица Номенклатура - Сумма а после таблицы Итоговая Сумма прописью должна быть
|
|||
10
Cyberhawk
23.07.19
✎
14:46
|
(9) А, точно, уже не в цикле. Тогда да, используй Итог таблицы.
|
|||
11
Айрат_116
23.07.19
✎
14:47
|
(10) Итог("стрТЗПроводки.Сумма"); Так?
|
|||
12
1Сергей
23.07.19
✎
14:56
|
(11) ответ в (6)
|
|||
13
pasha_d
23.07.19
✎
14:56
|
Отладкой глянь на тип значения вот это - стрТЗПроводки
|
|||
14
pasha_d
23.07.19
✎
14:57
|
это скорее всего строка ТЗ, а не сама ТЗ
|
|||
15
1Сергей
23.07.19
✎
14:58
|
Блин, даже (1) не смог правильно скопипастить?
|
|||
16
Фрэнки
23.07.19
✎
14:59
|
он не копипастил
|
|||
17
Айрат_116
23.07.19
✎
15:04
|
(12) Да. Вот так получилось)
|
|||
18
Айрат_116
23.07.19
✎
15:04
|
ТЗПроводки.Итог("Сумма") вот так получилось
|
|||
19
Айрат_116
23.07.19
✎
15:04
|
Всем спасибо=)
|
|||
20
Фрэнки
23.07.19
✎
15:05
|
(18) но это не самый правильный способ, это если пытаться на будущее оценить, нужно ли делать так или нужно как-то сделать лучше
|
|||
21
Фрэнки
23.07.19
✎
15:06
|
Ниже попробую разъяснить это свое утверждение
|
|||
22
1Сергей
23.07.19
✎
15:07
|
(21) Давай-давай. Мне интересны твои доводы
|
|||
23
Айрат_116
23.07.19
✎
15:10
|
(20) А почему это не самый правильный способ?
|
|||
24
Фрэнки
23.07.19
✎
15:16
|
У нас в данном случае рассматривается вывод строк из Таблицы Значений в печатную форму (или в табличный документ).
Получается, что задана выборка из ТЗ и по завершению выборки надо отобразить подвал с суммой всех строк (умышленно избегаю слова "Итог") Так вот, в общем случае Итог может не совпасть с той суммой, которая пойдет в подвал. Я далее в примере кода лишние строки убрал, которые не нужны для этого примера. --- СуммаСтрок = 0; Для Каждого СТР Из Ссылка.Товары Цикл стрТЗПроводки = ТЗПроводки.Найти(СТР.Номенклатура, "Номенклатура"); Если стрТЗПроводки = Неопределено Тогда об.Параметры.Сумма = 0; Иначе об.Параметры.Сумма = стрТЗПроводки.Сумма; СуммаСтрок = СуммаСтрок + стрТЗПроводки.Сумма; КонецЕсли; ТабДок.Вывести(об); КонецЦикла; об = Макет.ПолучитьОбласть("СуммаПР"); // об.Параметры.СуммаПР = ТЗПроводки.Итог("Сумма"); об.Параметры.СуммаПР = СуммаСтрок ; --- Вот обрати внимание на выполнение отбора по условию и можно придумать случаи условий, когда ТЗПроводки.Итог("Сумма") не будет равняться СуммаСтрок |
|||
25
Айрат_116
23.07.19
✎
15:26
|
(24) Щас попробую
|
|||
26
Айрат_116
23.07.19
✎
15:30
|
(24) Спасибо большое сработало)
|
|||
27
Фрэнки
23.07.19
✎
15:32
|
(26) подумать только, сам себе удивляюсь - с чего бы это оно сработало?! :-))))
|
|||
28
Айрат_116
23.07.19
✎
15:32
|
(27) =)
|
|||
29
Фрэнки
23.07.19
✎
15:38
|
(26) т.е. ты же видишь сейчас, что сейчас в твоем цикле выводится только Номенклатура из ТЧ Товары, а там в проводках может быть и что-то еще?
|
|||
30
Айрат_116
23.07.19
✎
16:01
|
(29) Нет там только номенклатура
|
|||
31
Фрэнки
23.07.19
✎
16:06
|
(30) Повезло. Но исходно пример написан таким образом, что в ТЗПроводки могут быть попасть общие данные из всех ТЧ документа :
одна ТЧ - Товары , другая ТЧ - Услуги Собственно, именно поэтому делается поиск методом Найти, а не шлепают абсолютно все строки проводок подряд |
|||
32
1Сергей
23.07.19
✎
16:09
|
(24) Ладно, уговорил. Так правильнее. И обращений к БД меньше :)
|
|||
33
Фрэнки
23.07.19
✎
16:11
|
И это мы еще ничего не говорим о том, что в исходной ТЧ Товары могут повторятся элементы Номенклатура в разных строках
А метод ТЗПроводки.Найти(СТР.Номенклатура, "Номенклатура") каждый раз выдаст одинаково. Тогда Итог будет меньше. |
|||
34
Айрат_116
23.07.19
✎
16:16
|
(33) Сгруппировать тогда лучше?
|
|||
35
Айрат_116
23.07.19
✎
16:19
|
(33) А почему меньше? СуммаСтрок + каждую сумму номенклатуры плюсует и итог. даже если одинаковые они, он же должен +
|
|||
36
Фрэнки
23.07.19
✎
16:32
|
(34) А это на усмотрение разработчика. Вдруг по всем алгоритмам в твоем этом документе дублей номенклатуры уже не будет попадаться...
(35) Сумма строк же! Допустим, что у нас 10 строк в тч Товар с повторяющимся элементом и других нет - по проводкам Найти вернет всегда одну и ту же строку с одной и той же суммой, даже если там будет только одна такая подходящая проводка или будут разные проводки с разными суммами. Итог нам вернет итоговую сумму записей из своих записей, а СуммаСтрок наберет свои других 10-ти сумм. |
|||
37
Айрат_116
23.07.19
✎
16:40
|
(36) Понял
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |