Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/50: Рейтинг темы: голосов - 50, средняя оценка - 4.82
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
1
1C 8.x

Не могу вытащить данные из табличной части

21.08.2014, 23:23. Показов 10101. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток всем.
возникла проблема с запросом - не могу вытащить данные из табличной части (Обеспечение) документа - Залогодатель.

запрос вот какой (сразу скажу - он не правильный, потому что при формировании ругается на ..нельзя обращаться к вложенной таблице через поле составного типа..)



1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   мфоЗаявкаНаВыдачуЗайма.Залог.Описание КАК ОписаниеЗалога,
        |   мфоЗаявкаНаВыдачуЗайма.Залог.Местонахождение КАК АдресЗалога,
        [B]|    мфоЗаявкиЗаймыВыданные.Регистратор.Обеспечение.(
        |       Залогодатель.Наименование КАК Поручитель
        |   ),
        |   мфоЗаявкаНаВыдачуЗайма.Залогодатель.Наименование[/B]
        |ИЗ
        |   Документ.мфоЗаявкаНаВыдачуЗайма.Обеспечение КАК мфоЗаявкаНаВыдачуЗайма,
        |   РегистрСведений.мфоЗаявкиЗаймыВыданные КАК мфоЗаявкиЗаймыВыданные";
 
    Результат = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОписаниеЗалога = ВыборкаДетальныеЗаписи.ОписаниеЗалога;
        АдресЗалога = ВыборкаДетальныеЗаписи.АдресЗалога;
        Поручитель = ВыборкаДетальныеЗаписи.Поручитель;
    КонецЦикла;

подскажите пожалуйста, как вытащить данные из табличной части (Залогодатель)?
заранее благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2014, 23:23
Ответы с готовыми решениями:

Запрос. Условие: строка из первой табличной части равна любой строке из другой табличной части
Есть документ "РаспределениеМатериаловНаВыпуск". У этого документа имеется "Форма документа". На...

Значение строки табличной части получить в табличной части другого документа
Есть документ ПриходнаяНакладная (товар приходит от поставщика по его цене), с табличной частью...

Данные - Табличной части
Как работать с данными Табличной части в запросе??? Как его тоже выгружать и записывать в него...

Программное заполнение табличной части документа из табличной части справочника
Доброго! Ситуация, поставившая меня в тупик. Имеем 1с 8.2 УФ Имеем справочник "Работ" Имеем...

30
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
22.08.2014, 00:30 2
тащить надо табличную часть. А атрибуты шапки через Ссылка.

Добавлено через 3 минуты
Цитата Сообщение от start_kmv Посмотреть сообщение
ИЗ | Документ.мфоЗаявкаНаВыдачуЗайма.Обеспечение
вот это - правильная фраза.
Конструктор запроса в руки!!!
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
22.08.2014, 12:32  [ТС] 3
вот беру констуктор запроса и вот, что выходит:

1C
1
2
3
4
5
6
7
8
9
10
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   мфоЗаявкаНаВыдачуЗайма.Залог.Описание КАК ОписаниеЗалога,
        |   мфоЗаявкаНаВыдачуЗайма.Залог.Местонахождение КАК АдресЗалога,
        |   мфоЗаявкаНаВыдачуЗайма.Залогодатель.Наименование КАК Поручитель
        |ИЗ
        |   Документ.мфоЗаявкаНаВыдачуЗайма.Обеспечение КАК мфоЗаявкаНаВыдачуЗайма";
 
    Результат = Запрос.Выполнить();

НО

| мфоЗаявкаНаВыдачуЗайма.Залогодатель.Наименование КАК Поручитель

у меня вытаскивает совершенно другого контрагента.
вот в чем проблема. может я что не так делаю?
подскажите пожалуйста.
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
22.08.2014, 12:41 4
1. Наименование - лишнее, Залогодатель достаточно
2. Конструктор обозвал бы алиас КАК мфоЗаявкаНаВыдачуЗаймаОбеспечение, посему подозрительно. (Ну, только если подменять таблицу по кнопке)
3.
Цитата Сообщение от start_kmv Посмотреть сообщение
у меня вытаскивает совершенно другого контрагента
что есть, то и вытаскивает.

Добавлено через 1 минуту
Залогодатель - это колонка ТЧ Обеспечение типа спр.Контрагенты?
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
22.08.2014, 13:04  [ТС] 5
duk337,
1. изменил. результат не поменялся
3. поясню. когда идет перебор в цикле

1C
1
2
3
4
5
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОписаниеЗалога = ВыборкаДетальныеЗаписи.ОписаниеЗалога;
        АдресЗалога = ВыборкаДетальныеЗаписи.АдресЗалога;
        Поручитель = ВыборкаДетальныеЗаписи.Поручитель;
    КонецЦикла;
то ВыборкаДетальныеЗаписи.Поручитель - у меня перебирается куча значений (интересно, почему не берется именно тот контрагент, который указан в документе) и цикл останавливается на совершенно другом контрагенте (заметил при отладке, что нужный контрагент является предпоследним )

Цитата Сообщение от duk337 Посмотреть сообщение
Залогодатель - это колонка ТЧ Обеспечение типа спр.Контрагенты?
это Справочник.Контрагенты
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
22.08.2014, 13:16 6
Поле "Поручитель" или "Залогодатель" где находится?

Добавлено через 53 секунды
Если не сложно, используйте для скриптов тэг "1С"
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
22.08.2014, 14:31  [ТС] 7
Цитата Сообщение от duk337 Посмотреть сообщение
Если не сложно, используйте для скриптов тэг "1С"
хорошо.

Цитата Сообщение от duk337 Посмотреть сообщение
Поле "Поручитель" или "Залогодатель" где находится?
поле (Залогодатель) находится в табличной части Обеспечение.
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
22.08.2014, 15:18 8
Цитата Сообщение от start_kmv Посмотреть сообщение
поле (Залогодатель) находится в табличной части Обеспечение.
следовательно, проблем быть не должно: поле-ссылка однозначно для каждой строки тч
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
22.08.2014, 15:38  [ТС] 9
Цитата Сообщение от duk337 Посмотреть сообщение
следовательно, проблем быть не должно: поле-ссылка однозначно для каждой строки тч
но проблема, к сожалению, есть. поскольку цикл

1C
1
2
3
4
5
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОписаниеЗалога = ВыборкаДетальныеЗаписи.ОписаниеЗалога;
        АдресЗалога = ВыборкаДетальныеЗаписи.АдресЗалога;
        Поручитель = ВыборкаДетальныеЗаписи.Поручитель;
    КонецЦикла;
не останавливается на нужном контрагенте.
скажите, может в запросе я допустил ошибку?
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
22.08.2014, 15:43 10
Цитата Сообщение от start_kmv Посмотреть сообщение
не останавливается на нужном контрагенте.
в каком виде контрагент и где, собственно, остановка?
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
22.08.2014, 16:05  [ТС] 11
Цитата Сообщение от duk337 Посмотреть сообщение
в каком виде контрагент и где, собственно, остановка?
смотрите. когда делаю отладку, ставлю точку останова на

1C
1
Поручитель = ВыборкаДетальныеЗаписи.Поручитель;
проходит цикл, в информационном табло вижу, как перебираются различные контрагенты (хотя должен быть выбран один контрагент, который указан в документе как Залогодатель или Поручитель), в отладке вижу своего нужного контрагента, но цикл продолжается. затем выбирается совершенно не причастный к документу контрагент и идет завершение цикла.
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
22.08.2014, 16:14 12
Цитата Сообщение от start_kmv Посмотреть сообщение
хотя должен быть выбран один контрагент
сами сказали, что он в тч, т.е. их много.
Цитата Сообщение от start_kmv Посмотреть сообщение
в отладке вижу своего нужного контрагента, но цикл продолжается
цикл по строкам тч, что не так?
Цитата Сообщение от start_kmv Посмотреть сообщение
затем выбирается совершенно не причастный к документу контрагент
что значит "выбирается"? Присваивается куда-нибудь?
Цитата Сообщение от start_kmv Посмотреть сообщение
и идет завершение цикла.
Очевидно, не устраивает Контр в последней строке тч?
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
22.08.2014, 17:44  [ТС] 13
Цитата Сообщение от duk337 Посмотреть сообщение
Очевидно, не устраивает Контр в последней строке тч?
так дело в том, что контрагент в ТЧ один. там больше никого нет.
вот в чем прикол.

Добавлено через 5 минут
duk337, скажите пож-та, есть возможность Вам позвонить и объяснить? может я что не так объясняю?
есть ли возможность подключиться через teamviewer?
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
22.08.2014, 18:08 14
start_kmv, у вас нет отбора в запросе...

Оставьте в базе 1 документ и будет работать как надо
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
23.08.2014, 09:46  [ТС] 15
Dethmontt, а как сделать отбор? подскажите пожалуйста

Добавлено через 28 минут
Dethmontt, тогда по Вашему получается, запрос проходит все документы, где есть Поручитель и всех перебирает? этого не может быть, поскольку документов очень много, а при отладке отбираются 7-8 контрагентов.

правильно ли я на писал запрос? правильно ли написан цикл?

Добавлено через 14 часов 56 минут
duk337, можете мне подсказать, правильно ли я написал запрос и цикл?
по словам Dethmontt, у меня идет перебор всех документов в базе.
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
23.08.2014, 13:43 16
1C
1
2
"...ГДЕ Док.Ссылка=&Ссылка..."
Запрос.УстановитьПараметр("Ссылка",ТекДок);
Добавлено через 1 минуту
где гарантия, что в тч одна запись? В принципе, в это м случае не цикл, а просто
1C
1
2
3
4
5
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
        ОписаниеЗалога = ВыборкаДетальныеЗаписи.ОписаниеЗалога;
        АдресЗалога = ВыборкаДетальныеЗаписи.АдресЗалога;
        Поручитель = ВыборкаДетальныеЗаписи.Поручитель;
Конецесли;
Добавлено через 2 минуты
Если записей много, хотя Контр и один, то куда девать Адрес и Описание залога? Или они тоже одинаковые?
Почему тогда в тч, а не в шапке?
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
08.02.2015, 03:26  [ТС] 17
duk337, доброго времени суток.
понимаю, тема старая. все работает. но...
ТЧ действительно содержит 2 строки и этим кодом я выбираю только первую строку
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |   мфоЗаявкаНаВыдачуЗайма.Залог.Описание КАК Залог,
    |   мфоЗаявкаНаВыдачуЗайма.Залог.Местонахождение КАК АдресИмущества,
    |   мфоЗаявкаНаВыдачуЗайма.Залог.Наименование КАК ВидИмущества
    |ИЗ
    |   Документ.мфоЗаявкаНаВыдачуЗайма.Обеспечение КАК мфоЗаявкаНаВыдачуЗайма
    |ГДЕ
    |   мфоЗаявкаНаВыдачуЗайма.Ссылка = &ТекДок";
    
    Запрос.УстановитьПараметр("ТекДок",СсылкаНаОбъект);
    Результат = Запрос.Выполнить();
    ТЗ = Результат.Выгрузить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ВидИмущества = ВыборкаДетальныеЗаписи.ВидИмущества;
        АдресИмущества = ВыборкаДетальныеЗаписи.АдресИмущества;
        Залог = ВыборкаДетальныеЗаписи.Залог;
    КонецЦикла;
соответственно, я получил 1-ю строку и вывел. а как сделать так, чтобы при необходимости выводилась либо только 1-я строка, либо и 1-я и 2-я??

заранее благодарю за помощь.
0
Эксперт 1С
843 / 606 / 211
Регистрация: 24.07.2013
Сообщений: 2,102
08.02.2015, 08:19 18
1C
1
2
3
4
5
6
7
8
9
10
"ВЫБРАТЬ
|   мфоЗаявкаНаВыдачуЗайма.Залог.НомерСтроки,
|   мфоЗаявкаНаВыдачуЗайма.Залог.Описание КАК Залог,
|   мфоЗаявкаНаВыдачуЗайма.Залог.Местонахождение КАК АдресИмущества,
|   мфоЗаявкаНаВыдачуЗайма.Залог.Наименование КАК ВидИмущества
|ИЗ
|   Документ.мфоЗаявкаНаВыдачуЗайма.Обеспечение КАК мфоЗаявкаНаВыдачуЗайма
|ГДЕ
|   мфоЗаявкаНаВыдачуЗайма.Ссылка = &ТекДок
|   И мфоЗаявкаНаВыдачуЗайма.НомерСтроки В (&СписокНомеровНужныхСтрок)"
0
3 / 3 / 3
Регистрация: 27.04.2014
Сообщений: 230
08.02.2015, 12:52  [ТС] 19
Tklwegsd, попробовал - ошибка
{ВнешняяОбработка.ЗаявкаДКП.МодульОбъекта(183)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(10, 44)}: Не задано значение параметра "СписокНомеровНужныхСтрок"
И мфоЗаявкаНаВыдачуЗайма.НомерСтроки В (<<?>>&СписокНомеровНужныхСтрок)

что делаю не так?
0
Эксперт 1С
843 / 606 / 211
Регистрация: 24.07.2013
Сообщений: 2,102
08.02.2015, 14:08 20
Не задал значение параметра "СписокНомеровНужныхСтрок".
Цитата Сообщение от start_kmv Посмотреть сообщение
Запрос.УстановитьПараметр("ТекДок",СсылкаНаОбъект);
Параметр "ТекДок", ты же задаешь.
0
08.02.2015, 14:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2015, 14:08
Помогаю со студенческими работами здесь

Автоматическое заполнение табличной части документа из табличной части другого
Добрый день. Совсем недавно начал изучать 1С и пока не могу найти решения собственной задачи)...

Не выводятся данные в табличной части
Добрый день, помогите пожалуйста с процедурой. Необходимо, чтобы при выборе товара в табличной...

Выбрать данные из табличной части
Помогите пожалуйста. Есть табличная часть, из которой нужно выбрать строки из колонки Услуги в...

Данные из табличной части справочника
Добрый день, уважаемые форумчане! Очередной новичок, прошу не сердиться, а помочь! Требуется из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru