7.7 Получение переменной из подчиненных документов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем mic100, 5 июн 2013.

  1. TopicStarter Overlay
    mic100
    Offline

    mic100

    Регистрация:
    3 апр 2013
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Зравствуйте. Такая ситуация: необходимо в табличку отчета вывести значение переменной из подчиненных документов данного. Делаем сначала выборку:
    //*************************
    Процедура Выборка()

    Перем Док;
    Перем ТекДок;

    Док = СоздатьОбъект("Документ");
    ТекДок = ТекущийДокумент();
    Док.ВыбратьПодчиненныеДокументы(НачДата, , ТекДок);
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Если Док.Проведен() = 1 Тогда
    Продолжить;
    КонецЕсли;
    Если Док.Вид() <> "ПриходныйОрдер" Тогда
    Продолжить;
    КонецЕсли;
    Оплачено=Строка(Док.ТекущийДокумент.Сумма);
    КонецЦикла;

    КонецПроцедуры // Выборка()
    //**************************************************
    И вот ошибка:

    ТекДок = ТекущийДокумент<<?>>();
    {D:\КОПИЯ 1CBASE\STAVM\EXTFORMS\ОТЧЕТ1.ERT(17)}: Функция не обнаружена (ТекущийДокумент)

    Хде что не так?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Скобки забыли... Это же функция
    Код:
    Оплачено=Строка(Док.ТекущийДокумент().Сумма);
    З/ы.. В данном случае можно так
    Код:
    Оплачено=Строка(Док.Сумма);
  3. TopicStarter Overlay
    mic100
    Offline

    mic100

    Регистрация:
    3 апр 2013
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Извените, вы немного невнимательно прочитали ошибку.
    ТекДок = ТекущийДокумент<<?>>();
    {D:\КОПИЯ 1CBASE\STAVM\EXTFORMS\ОТЧЕТ1.ERT(17)}: Функция не обнаружена (ТекущийДокумент)
    Она не в том месте. Не хочет переменной ТехДок присваивать значение встроенного модуля ТекущийДокумент()
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Там где я указал - тоже ошибка)))))

    Т.е. вы из документа вызываете отчет в ТЧ которого нужно вывести? Тогда ссылку на документ нужно передавать через параметр формы.... И при открытии отчета ее получать
  5. TopicStarter Overlay
    mic100
    Offline

    mic100

    Регистрация:
    3 апр 2013
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    В приложенном файле полный текст обработинки. Если убрать выборку, то все ок. Смысл в том, что по каждой заявке нужно вывести еще и сумму РО, созданных на ее основании. Посмотреть вложение 14908

    Вложения:

    • отчет.txt
      Размер файла:
      2,5 КБ
      Просмотров:
      17
  6. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Здравствуйте.
    Может быть я не поняла, что нужно, но на мой взгляд легче в процедуре Выборка использовать уже имеющийся документ из запроса.
    То есть объявить переменную Заявка и применить
    Код:
    Док.ВыбратьПодчиненныеДокументы(НачДата, , Заявка);
  7. TopicStarter Overlay
    mic100
    Offline

    mic100

    Регистрация:
    3 апр 2013
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Т.е. прямо в процедуре Выполнить() объявить переменную Док, а потом использовать Ваше условие? Сейчас попробую, но как то все нагромождено получается. Цикл в цикле, выборка обычно отдельно делается.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Код:
    Функция Выборка(Докум)
    
    Док = СоздатьОбъект("Документ");
    Док.ВыбратьПодчиненныеДокументы(, , Докум.ТекущийДокумент());
    Сумма=0;
    Пока Док.ПолучитьДокумент() = 1 Цикл
    
    Если Док.Проведен() = 1 Тогда
    Продолжить;
    КонецЕсли;
    
    Если Док.Вид() <> "ПриходныйОрдер" Тогда
    Продолжить;
    КонецЕсли;
    
    
    Сумма=Сумма+Док.Сумма;
    
    КонецЦикла;
    Возврат Сумма;
    КонецФункции
    
    Процедура Сформировать()
    ....
    Оплачено=Выборка(Заявка);
    ....
    КонецПроцедуры
    
  9. TopicStarter Overlay
    mic100
    Offline

    mic100

    Регистрация:
    3 апр 2013
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Или так))) Спасибо, ща попробую. По варианту Катюфки заработало, то почему то с пустым результатом. Где то с датами намудрил видимо...
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    потому что из процедуры не возвращался результат. + все равно не совсем правильно, т.к. в случае нескольких платежей вернул бы только последний. В моем - вернет общую сумму
  11. TopicStarter Overlay
    mic100
    Offline

    mic100

    Регистрация:
    3 апр 2013
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Как бэ работает, тока с нулями теперь((( поди разберусь, если нет, напишу. Спасибо
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    смотри в СП функцию формат
  13. TopicStarter Overlay
    mic100
    Offline

    mic100

    Регистрация:
    3 апр 2013
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Ну блин, чета не понимаю... Все вроде ок. Через отладчик по циклу функции прыгает норм, а выводит нолик. Напомните пож, как сделать, чтобы в служебные сообщения плевал принт результата, чтоб видеть, что функция возвращает?

    Да я даже тупо пытался переделать в
    Оплачено=Строка(Выборка(Заявка));
    чтобы в текст переделать, один фиг нолик
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    а так что?
    Код:
    Оплачено=Выборка(Заявка);
    Сообщить("По заявке "+Заявка+" оплачено "+Оплачено);
  15. TopicStarter Overlay
    mic100
    Offline

    mic100

    Регистрация:
    3 апр 2013
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Всем спасибо, все работает. Проблема действительно была в формате
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    "спасибо" выражают кнопкой.....

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