helpf.pro
Регистрация

v8.2 УП: Взаимодействие клиента и сервера

bless18
22.08.2012 15:23Прочитано: 2231
Добрый день!
Подскажите, пожалуйста, как правильно обращаться значению колонок табличной части документа при выполнении процедуры на сервере.
Выполняю запрос, его результат выгружаю в таблицу значений. Колонки табличной части документа также имеют тип таблица значений, но при обращении к полю, выводится ошибка, что поле объекта не обнаружено..
Код 1C v 8.2 УП
 
&НаСервере
Процедура ВыборкаЗначенийПриВыдачеКниг()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Читатель", Объект.Читатель);
Запрос.Текст = "ВЫБРАТЬ
| ОстаткиКниг.Количество,
| ОстаткиКниг.Читатель.Наименование КАК Читатель,
| ОстаткиКниг.Книга.Наименование КАК Книга
|ИЗ
| РегистрНакопления.ОстаткиКниг КАК ОстаткиКниг
|ГДЕ
| ОстаткиКниг.Читатель = &Читатель";
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
СтрокаТЧ = Объект.ВозвратКниг.Выгрузить();

Для Каждого ТекСтрока Из Выборка Цикл
СтрокаТЧ.Колонки.НаименованиеКниги = ТекСтрока.Книга;
//СтрокаТЧ.Количество = ТекСтрока.Количество;
КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ЧитательПриИзменении(Элемент)
ВыборкаЗначенийПриВыдачеКниг();
КонецПроцедуры

Yandex
Возможно, вас также заинтересует
Реклама на портале
bless18
22.08.2012 17:31Ответ № 1
Получилось исправить. Всего лишь нужно было выгрузить табличную часть документа и добавить в нее колонки )
Возник другой вопрос. В запросе имеется параметр "Читатель". Но выборка в запросе с ним не производится. Подскажите, что с этим делать:
Код 1C v 8.2 УП
 
&НаСервере
Процедура ВыборкаЗначенийПриВыдачеКниг()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Читатель", Объект.Читатель);
Запрос.Текст = "ВЫБРАТЬ
| ОстаткиКнигОстатки.Книга,
| ОстаткиКнигОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ОстаткиКниг.Остатки КАК ОстаткиКнигОстатки
|ГДЕ
| ОстаткиКнигОстатки.Читатель = &Читатель";
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
СтрокаТЧ = Объект.ВозвратКниг.Добавить();
Для Каждого ТекСтрока Из Выборка Цикл
СтрокаТЧ.НаименованиеКниги = ТекСтрока.Книга;
СтрокаТЧ.Количество = ТекСтрока.Количество;
КонецЦикла;
КонецПроцедуры

E_Migachev
22.08.2012 21:44Ответ № 2
вот так должно быть:
Код 1C v 8.х
 Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Читатель", Объект.Читатель);
Запрос.Текст = "ВЫБРАТЬ
| ОстаткиКнигОстатки.Книга,
| ОстаткиКнигОстатки.Читатель,
| ОстаткиКнигОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ОстаткиКниг.Остатки КАК ОстаткиКнигОстатки
|ГДЕ
| ОстаткиКнигОстатки.Читатель = &Читатель";
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();

Для Каждого ТекСтрока Из Выборка Цикл
СтрокаТЧ = Объект.ВозвратКниг.Добавить();
СтрокаТЧ.НаименованиеКниги = ТекСтрока.Книга;
СтрокаТЧ.Количество = ТекСтрока.Количество;
КонецЦикла;
bless18
23.08.2012 09:21Ответ № 3
Спасибо..
Но почему-то не происходит вхождения в цикл. Если убрать параметр "Читатель", то все ок. Выходит, что параметр задан некорректно.
Как правильно его задать?

Читатель в регистре накопления имеет тип Ссылка.Справочник
Читатель в документе такой же ссылочный тип.
bless18
23.08.2012 10:09Ответ № 4
В запросе ОстаткиКиг.Читатель имеет тип Справочник.Ссылка с пустым значением почему-то *10
bless18
23.08.2012 10:20Ответ № 5
В регистре накопления не у всех строк заполнено значение Читатель. Быть может поэтому при задании параметра Читатель программа не заходит в цикл??
E_Migachev
23.08.2012 11:18Ответ № 6
(5) bless18, да именно поэтому... я так понимаю должно быть у всех заполнено
bless18
23.08.2012 12:21Ответ № 7
Да, все заработало )
Подскажите, пожалуйста, в табличную часть этого же документа нужно добавить значение места хранения данной книги.
Реквизит МестоХранения является Ресурсом регистра сведений. В этом же запросе получаю таблицу регистра сведений и выбираю в нем МестоХраненияКниг.
НО, это значение существует отдельно от книги. То есть нет соответствия полученная книга находится в месте, куда ее положили при проведении документа. Нужен, видимо параметр "МестоХранения". Но я не знаю, как его установить. Потому что на форме документа нет объекта ХранениеКниг. Элемент присутствует в табличной части, которая пуста при создании документа..Пробовала получить место хранения через регистр остатки.книга.ссылка.место хранения. Но оно просто содержит ссылку на справочник МестаХранения с пустым значением
Код 1C v 8.2 УП
 
&НаСервере
Процедура ВыборкаЗначенийПриВыдачеКниг()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Читатель", Объект.Читатель);

Запрос.Текст = "ВЫБРАТЬ
| ОстаткиКнигОстатки.КоличествоОстаток КАК Количество,
| ОстаткиКнигОстатки.Книга,
| ОстаткиКнигОстатки.Книга.Ссылка,
| ХранилищеКнигСрезПоследних.МестоХраненияКниг
|ИЗ
| РегистрНакопления.ОстаткиКниг.Остатки КАК ОстаткиКнигОстатки,
| РегистрСведений.ХранилищеКниг.СрезПоследних КАК ХранилищеКнигСрезПоследних
|ГДЕ
| ОстаткиКнигОстатки.Читатель = &Читатель";
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();

Для Каждого ТекСтрока Из Выборка Цикл
СтрокаТЧ = Объект.ВозвратКниг.Добавить();
СтрокаТЧ.НаименованиеКниги = ТекСтрока.Книга;
СтрокаТЧ.Количество = ТекСтрока.Количество;
СтрокаТЧ.МестоВозвратаКниги = Выборка.МестоХраненияКниг;
КонецЦикла;
КонецПроцедуры

*09
bless18
24.08.2012 09:57Ответ № 8
Пока все решилось добавлением измерения МестоХранения в регистр накопления..
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.