Имя: Пароль:
1C
 
Запрос дополнительных реквизитов справочника
,
0 Khan7779
 
23.12.15
14:21
Здравствуйте! Очень нужна помощь! 1С 8.3, УТ 11.1. Как запросом получить дополнительные реквизиты добавленные справочнику через режим предприятия?
1 Naumov
 
23.12.15
14:21
а как вы пытались?
2 Naumov
 
23.12.15
14:21
+ доп реквизиты  скорее через ТЧ объекта.
3 Cyberhawk
 
23.12.15
14:22
Значения сидят в ТЧ каждого объекта, а сами реквизиты (их описание) - в соответствующем ПВХ и в справочнике "Наборы значений реквизитов"
4 Khan7779
 
23.12.15
14:36
(1) вот именно, что никак, потому что первый раз с этим сталкиваюсь
5 Khan7779
 
23.12.15
14:37
(3) вижу у объекта ТЧ доп. реквизиты, но что из нее взять, чтоб работать с нужным мне доп. реквизитами? Под описанием реквизитов имеется ввиду их название из предприятия? Не нашел ничего подобного.
6 Naumov
 
23.12.15
15:14
(5) Реквизит Значение из ТЧ - это значение доп.реквизита.
7 Cyberhawk
 
23.12.15
15:46
(5) ИР тебе в помощь - там увидишь стркутуру ТЧ и данные, в ней хранящиеся
8 vicof
 
23.12.15
15:50
(0)
ВЫБРАТЬ * ИЗ Документ.Мегадокумент.ТЧ_Допреквизитов
9 Khan7779
 
24.12.15
09:27
В общем у меня получилось достать данные доп. реквизитов.
Вот код запроса:
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаказКлиента.Номер,
                   |    ЗаказКлиента.Дата КАК ДатаДоговора,
                   |    ЗаказКлиента.Контрагент.Наименование КАК ПокупательКратко,
                   |    ЗаказКлиента.Контрагент.НаименованиеПолное КАК ОрганизацияПокупатель,
                   |    ЗаказКлиента.Контрагент.ИНН КАК ИННПокупателя,
                   |    ЗаказКлиента.Контрагент.КПП КАК КПППокупателя,
                   |    ЗаказКлиента.СуммаДокумента,
                   |    ЗаказКлиента.БанковскийСчетКонтрагента.НомерСчета,
                   |    ЗаказКлиента.БанковскийСчетКонтрагента.БанкДляРасчетов,
                   |    ЗаказКлиента.БанковскийСчетКонтрагента.БИКБанкаДляРасчетов,
                   |    ЗаказКлиента.Контрагент.ДополнительныеРеквизиты.(
                   |        Свойство.Ссылка КАК Название,
                   |        Значение КАК Значение
                   |    ),
                   |    ЗаказКлиента.Товары.(
                   |        НомерСтроки,
                   |        Номенклатура.Наименование,
                   |        Упаковка.ЕдиницаИзмерения,
                   |        КоличествоУпаковок,
                   |        Цена,
                   |        Сумма
                   |    )
                   |ИЗ
                   |    Документ.ЗаказКлиента КАК ЗаказКлиента
                   |ГДЕ
                   |    ЗаказКлиента.Ссылка В(&МассивОбъектов)";
                  
    Запрос.Выполнить().Выгрузить();

Как теперь достать из массива нужные мне доп. реквизиты по отдельности?
10 Khan7779
 
24.12.15
09:59
Ну пожалуйста, помогите! Нигде в гугле не могу найти как это сделать.
11 cw014
 
24.12.15
10:04
(10) ты же в (9) все уже сделал
12 Khan7779
 
24.12.15
10:06
(11) не все. У меня доп. реквизиты в массиве кучей. Теперь мне нужно вычленить их по отдельности.
13 cw014
 
24.12.15
10:07
Вычленяй
14 cw014
 
24.12.15
10:07
У тебя в результате есть поле "ДополнительныеРеквизиты"
15 cw014
 
24.12.15
10:07
Это таблица значений из двух колонок "Название" и "Значение"
16 cw014
 
24.12.15
10:08
Свойство.Ссылка КАК Название, замени на  Свойство КАК Название,
17 Khan7779
 
24.12.15
10:10
(15) ну да, я знаю, я как бэ в курсе) В этой таблице 3 доп. реквизита. Теперь мне нужно их по отдельности заполучить.
18 Khan7779
 
24.12.15
10:13
(16) заменил. Так что мне это даст?
19 cw014
 
24.12.15
10:14
(17) У тебя три реквизита. Значит в таблице 3 строки. Что именно ты хочешь?
20 cw014
 
24.12.15
10:14
Отдельно получаю:
СтрокаТЧ.ДополнительныеРеквизиты[0].Значение - 1 реквизит
СтрокаТЧ.ДополнительныеРеквизиты[1].Значение - 2 реквизит
СтрокаТЧ.ДополнительныеРеквизиты[2].Значение - 3 реквизит
21 cw014
 
24.12.15
10:15
Отдельно? Отдельно
22 Nolan
 
24.12.15
10:17
(0) А запрос где ты писать будешь?
23 Khan7779
 
24.12.15
10:19
(22) запрос уже написан, смотри выше
24 Khan7779
 
24.12.15
10:21
(19) нужно получить значение доп. реквизита и присвоить его отдельной переменной, для дальнейшего использования.
25 Khan7779
 
24.12.15
10:21
(20) этот код не работает
26 Nolan
 
24.12.15
10:22
(23) я понял, что написан. ты его в конфигураторе пишешь или где?
27 cw014
 
24.12.15
10:23
(23)Что именно у тебя не получается?
28 cw014
 
24.12.15
10:23
Спорим работает?
29 Khan7779
 
24.12.15
10:23
(26) эм, ну да, через конфигуратор, в модуле внешней обработки.
30 cw014
 
24.12.15
10:24
ТЗ = Запрос.Выполнить().Выгрузить();
СтрокаТЧ = ТЗ[0];
СтрокаТЧ.ДополнительныеРеквизиты[0].Значение; // 1 реквизит
СтрокаТЧ.ДополнительныеРеквизиты[1].Значение; // 2 реквизит
СтрокаТЧ.ДополнительныеРеквизиты[2].Значение; // 3 реквизит
31 cw014
 
24.12.15
10:24
И почему у меня то все получается?
32 Khan7779
 
24.12.15
10:26
(31) вылетает ошибка: неопознанный оператор.
33 cw014
 
24.12.15
10:26
В какой строке?
34 Nolan
 
24.12.15
10:26
(30) так должно работать)
35 Khan7779
 
24.12.15
10:29
(33) в этих трех:
                  СтрокаТЧ.ДополнительныеРеквизиты[0].Значение;// 1 реквизит
            СтрокаТЧ.ДополнительныеРеквизиты[1].Значение;// 2 реквизит
            СтрокаТЧ.ДополнительныеРеквизиты[2].Значение;// 3 реквизит
36 cw014
 
24.12.15
10:30
1) точку с запятой пропустил
2) Это просто пример. Ну сделай так:
Реквизит1 = СтрокаТЧ.ДополнительныеРеквизиты[0].Значение;
Реквизит2 = СтрокаТЧ.ДополнительныеРеквизиты[1].Значение;
Реквизит3 = СтрокаТЧ.ДополнительныеРеквизиты[2].Значение;
37 Khan7779
 
24.12.15
10:32
(36) Ошибок нет. Теперь этим реквизиту 1,2 и 3 присвоено значение тех доп. реквизитов?
38 Nolan
 
24.12.15
10:34
(37) Посмотри как пользоваться отладчиком. Тогда ты сможешь сам проверять значения.