8.х Передать сумму из табличной части в реквизит

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Алекс2206, 30 ноя 2018.

  1. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Доброго времени. Не могу понять как сделать, нужно собрать итоговую сумму по всем счетам от поставщика, проблема в том что колонка сумма является ссылкой на сумму из счёта, а не числом. иначе не писал бы сюда. Посоветуйте куда копать. спасибо) Заявка.PNG

    Вложения:

  2. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    Ну с первого взгляда не очень сложно. Можно попробовать обходом строк табчасти. Если ссылка в колонке "Сумма" ведёт к типовым документам, то накапливать сумму суммированием реквизита РеализацияСсылка.СуммаДокумента документов табчасти или суммы по колонке табчасти товары: РеализацияСсылка.Товары.Итог("Сумма") всех указанных документов. Аналогично можно использовать конструкцию в запросе с группировкой по какому-то единому реквизиту табчасти документов и суммированием только колонки "Сумма", но там кода побольше. Тут в зависимости от реализации задачи.
    В чём сложность то?
  3. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    сложность в том что, я так пытался с самого начала сделать. Мучался долго, итог всё равно не считается, и верно, ссылка "сумма" ведёт к типовому документу "счета от поставщиков".
  4. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    Должно получиться что-то вроде такого.

    Код:
    Для Каждого СтрокаЗаявки Из ТабличнаяЧастьСчетов Цикл
       СуммаСчета = СтрокаЗаявки.СуммаДокумента;
       // СуммаСчета = СтрокаЗаявки.Услуги.Итог("Сумма");
       Итог = Итог + СуммаСчета;
    КонецЦикла;
    На сервере всё должно работать без проблем. Может вы это выполняете на клиенте и не видите реквизитов ссылки?
  5. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Подскажите почему такое сообщает upload_2018-12-4_2-10-17.png
  6. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.055
    Симпатии:
    188
    Баллы:
    104
    Не совсем понял смысл фразы.
    Как такое может быть?
  7. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Ну при выборе "счет от поставщика" подтягивается общая сумма из этого счета и тип у неё не число.
  8. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    Зайдите в конфигураторе в форму документа. Остановитесь в отладчике в любом месте (обязательно на сервере) и выполните "Вычислить" (Shift+F9).
    Киньте туда такой код:
    Код:
    ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.[Имя документа]")).Метаданные().ТабличныеЧасти.[Имя табличной части].Реквизиты.Сумма
    Развернутую простыню скиньте сюда. Особенно интересует свойство "Тип".
  9. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    upload_2018-12-4_15-5-54.png
    не получилось
  10. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    Нужно без квадратных скобок.
    Код:
    ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.ЗаявкаНаЗарплатуПКОД")).Метаданные().ТабличныеЧасти.СчетаНаОплату.Реквизиты.Сумма
  11. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Извиняюсь, не знаком с данным методом. upload_2018-12-4_15-37-40.png
  12. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    не "ЗаявкаНаЗарплатуПКОД" а "ЗаявкаНаОплатуПКОД"
  13. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    upload_2018-12-4_15-52-42.png
  14. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    Реквизит суммы в табчасти счетов у вас числового типа. Сумму этой колонки можно получить в коде через Итог("ИмяКолонки").
    В вашем случае для примера можете по аналогии с тем, что вы делали выше выполнить такую команду:
    Код:
    ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.ЗаявкаНаОплатуПКОД")).СчетаНаОплату.Итог("Сумма")
    Далее подстроите его по аналогии в свой код...
    Алекс2206 нравится это.
  15. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Добрался наконец до этой части, соответственно у меня всё так же итог не считается. Проходит циклом и видит по всей колонке ноль!
  16. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    Покажите код
  17. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Так вы его мне вверху сами написали.
    upload_2018-12-11_18-3-24.png
  18. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    Замените цикл на следующий код:
    Код:
    Объект.ИтогоВсего = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.ЗаявкаНаОплатуПКОД")).СчетаНаОплату.Итог("Сумма")
    Имхо, закоментированный код свиду правильный. Тоже должен работать.
  19. TopicStarter Overlay
    Алекс2206
    Offline

    Алекс2206 Опытный в 1С

    Регистрация:
    21 июл 2017
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Так я и заменил, а он не работает) И закомментированный код, тоже не работает.)
  20. bajiepka
    Offline

    bajiepka Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    459
    Симпатии:
    31
    Баллы:
    54
    Не знаю как помочь. Тут как-то смотреть надо. Проверяйте значения реквизитов. Вычисляйте промежуточные значения...

Поделиться этой страницей