Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 01:23

Re: Помогите новичку освоить восьмерку в конфигурировании

Автор andryus, 07 фев 2014, 10:40

0 Пользователей и 1 гость просматривают эту тему.

andryus

Не буду открывать новую тему для своего вопроса, т.к. вопрос так же касается "конфигурирование для новичка". Суть вопроса заключается вот в чем, для обучения, ради эксперимента создаю простенькую конфигурацию. Чтобы разобраться что и как работает в восьмерке, часть идей "беру" с типовых конфигураций, чтобы покрутить эти моменты на своей конфигурации и просто напросто зачем изобретать велосипед если он давно уже изобретен. Значит суть состоит в следующем. Создан справочник Организации (создан, не скопирован). Скопирован из типовой Регистр сведений ОтветственныеЛицаУчреждений. Взят от из типовой, но единственное что я заменил, что Ресурс ОтветственноеЛицо ссылался на справочник Сотрудники, а мне это не нужно и я сделал этот Ресурс по типу Строка длинной 150 символов. Значит этот Регистр имеет: Измерения: Учреждения (ссылка Справочник.Организации), ВидОтветственногоЛица (Перечисление); Ресурс: ОтветственноеЛицо (Строка,150). Далее в справочнике Организации в ФормеЭлемента создаю Табличное поле: ТПОтветственныеЛица с типом значения РегистрСведенийСписок.ОтветственныеЛицаУчреждений. Так же тут создаю поле ввода ДатаПросмотра (Дата). Значит суть этого всего чтобы в выше сказанном табличном поле выводились актуальные да ДатаПросмотра ответственные лица. Взял опять же с типовой код, который поставил в Модуль объекта

Процедура ПрочитатьНаборЗаписейОЛ(ТекОбъект, ДатаПросмотра, ТПОтветственныеЛица) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ОбъектСсылка", ТекОбъект);
Запрос.УстановитьПараметр("ДатаПросмотра", ДатаПросмотра);

Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
               | МАКСИМУМ(ВложенныйЗапрос.Период) КАК Период,
               | ВложенныйЗапрос.ВидОЛ КАК ВидОтветственногоЛица,
               | МАКСИМУМ(ВложенныйЗапрос.Сотрудник) КАК ОтветственноеЛицо
               |ИЗ
               | (ВЫБРАТЬ
               | NULL КАК Период,
               | ОтветственныеЛицаОрганизаций.Ссылка КАК ВидОЛ,
               | NULL КАК Сотрудник
               | ИЗ
               | Перечисление.ОтветственныеЛицаОрганизаций КАК ОтветственныеЛицаОрганизаций
               |
               | ОБЪЕДИНИТЬ ВСЕ
               |
               | ВЫБРАТЬ
               | ОтветственныеЛицаУчрежденийСрезПоследних.Период,
               | ОтветственныеЛицаУчрежденийСрезПоследних.ВидОтветственногоЛица,
               | ОтветственныеЛицаУчрежденийСрезПоследних.ОтветственноеЛицо
               | ИЗ
               | РегистрСведений.ОтветственныеЛицаУчреждений.СрезПоследних(&ДатаПросмотра, Учреждение = &ОбъектСсылка) КАК ОтветственныеЛицаУчрежденийСрезПоследних) КАК ВложенныйЗапрос
               |
               |СГРУППИРОВАТЬ ПО
               | ВложенныйЗапрос.ВидОЛ";

   
ТаблицаНабораЗаписей = Запрос.Выполнить().Выгрузить();
Для каждого СтрокаЗаписи из ТаблицаНабораЗаписей Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗаписи.Период) Тогда
СтрокаЗаписи.Период = ДатаПросмотра;
КонецЕсли;
КонецЦикла;

ТПОтветственныеЛица.Загрузить(ТаблицаНабораЗаписей);
КонецПроцедуры


Вот данный код ругается на строке ТПОтветственныеЛица.Загрузить(ТаблицаНабораЗаписей)
Цитировать
{Справочник.Организации.МодульОбъекта(38)}: Метод объекта не обнаружен (Загрузить)
ТПОтветственныеЛица.Загрузить(ТаблицаНабораЗаписей);

Исходя из этого, я так понимаю, что результат запроса он не может загрузить в Табличное поле: ТПОтветственныеЛица, но вот из-за чего не могу понять. Неужели из-за замены типа в Регистре сведений Ресурса ОтветственноеЛицо (что в типовой он был Справочник.Сотрудники, а тут стал Строка). Помогите разобраться

Vit1501

В табличном поле нельзя хранить данные (собственно как и загрузить) - это элемент отображения данных.А вот самми данные можешь выгрузить в реквизит формы с типом например таблица значений

andryus

Цитата: Vit1501 от 07 фев 2014, 15:18
В табличном поле нельзя хранить данные (собственно как и загрузить) - это элемент отображения данных.А вот самми данные можешь выгрузить в реквизит формы с типом например таблица значений

Это все что выше написано взято с типовой конфигурации. У них же это все работает

GRADUS

Цитата: andryus от 07 фев 2014, 10:40
Не буду открывать новую тему для своего вопроса, т.к. вопрос так же касается "конфигурирование для новичка". Суть вопроса заключается вот в чем, для обучения, ради эксперимента создаю простенькую конфигурацию. Чтобы разобраться что и как работает в восьмерке, часть идей "беру" с типовых конфигураций, чтобы покрутить эти моменты на своей конфигурации и просто напросто зачем изобретать велосипед если он давно уже изобретен. Значит суть состоит в следующем. Создан справочник Организации (создан, не скопирован). Скопирован из типовой Регистр сведений ОтветственныеЛицаУчреждений. Взят от из типовой, но единственное что я заменил, что Ресурс ОтветственноеЛицо ссылался на справочник Сотрудники, а мне это не нужно и я сделал этот Ресурс по типу Строка длинной 150 символов. Значит этот Регистр имеет: Измерения: Учреждения (ссылка Справочник.Организации), ВидОтветственногоЛица (Перечисление); Ресурс: ОтветственноеЛицо (Строка,150). Далее в справочнике Организации в ФормеЭлемента создаю Табличное поле: ТПОтветственныеЛица с типом значения РегистрСведенийСписок.ОтветственныеЛицаУчреждений. Так же тут создаю поле ввода ДатаПросмотра (Дата). Значит суть этого всего чтобы в выше сказанном табличном поле выводились актуальные да ДатаПросмотра ответственные лица. Взял опять же с типовой код, который поставил в Модуль объекта

Процедура ПрочитатьНаборЗаписейОЛ(ТекОбъект, ДатаПросмотра, ТПОтветственныеЛица) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ОбъектСсылка", ТекОбъект);
Запрос.УстановитьПараметр("ДатаПросмотра", ДатаПросмотра);

Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
               | МАКСИМУМ(ВложенныйЗапрос.Период) КАК Период,
               | ВложенныйЗапрос.ВидОЛ КАК ВидОтветственногоЛица,
               | МАКСИМУМ(ВложенныйЗапрос.Сотрудник) КАК ОтветственноеЛицо
               |ИЗ
               | (ВЫБРАТЬ
               | NULL КАК Период,
               | ОтветственныеЛицаОрганизаций.Ссылка КАК ВидОЛ,
               | NULL КАК Сотрудник
               | ИЗ
               | Перечисление.ОтветственныеЛицаОрганизаций КАК ОтветственныеЛицаОрганизаций
               |
               | ОБЪЕДИНИТЬ ВСЕ
               |
               | ВЫБРАТЬ
               | ОтветственныеЛицаУчрежденийСрезПоследних.Период,
               | ОтветственныеЛицаУчрежденийСрезПоследних.ВидОтветственногоЛица,
               | ОтветственныеЛицаУчрежденийСрезПоследних.ОтветственноеЛицо
               | ИЗ
               | РегистрСведений.ОтветственныеЛицаУчреждений.СрезПоследних(&ДатаПросмотра, Учреждение = &ОбъектСсылка) КАК ОтветственныеЛицаУчрежденийСрезПоследних) КАК ВложенныйЗапрос
               |
               |СГРУППИРОВАТЬ ПО
               | ВложенныйЗапрос.ВидОЛ";

   
ТаблицаНабораЗаписей = Запрос.Выполнить().Выгрузить();
Для каждого СтрокаЗаписи из ТаблицаНабораЗаписей Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗаписи.Период) Тогда
СтрокаЗаписи.Период = ДатаПросмотра;
КонецЕсли;
КонецЦикла;

ТПОтветственныеЛица.Загрузить(ТаблицаНабораЗаписей);
КонецПроцедуры


Вот данный код ругается на строке ТПОтветственныеЛица.Загрузить(ТаблицаНабораЗаписей)
Цитировать
{Справочник.Организации.МодульОбъекта(38)}: Метод объекта не обнаружен (Загрузить)
ТПОтветственныеЛица.Загрузить(ТаблицаНабораЗаписей);

Исходя из этого, я так понимаю, что результат запроса он не может загрузить в Табличное поле: ТПОтветственныеЛица, но вот из-за чего не могу понять. Неужели из-за замены типа в Регистре сведений Ресурса ОтветственноеЛицо (что в типовой он был Справочник.Сотрудники, а тут стал Строка). Помогите разобраться

ТПОтветственныеЛица не тот имеет тип, советую для начала руками заполнять, перебирая по строчно, затем уже пользоваться выгрузками / загрузками.

Все методы написаны в синтаксис помощнике.

Alekssf

Добрый день.
Во-первых. Это код для управляемого режима или для обычного.
Во-вторых. Этот кусок кода бессмыслен. Периодический регистр сведений не позволить сделать запись без указания Периода. Поэтому это поле в регистре не может быть не заполненным. И даже если это нужно, то правильнее это сделать сразу в запросе.

Для каждого СтрокаЗаписи из ТаблицаНабораЗаписей Цикл
Если НЕ ЗначениеЗаполнено(СтрокаЗаписи.Период) Тогда
СтрокаЗаписи.Период = ДатаПросмотра;
КонецЕсли;
КонецЦикла;


В-третьих. Платформа вам явно подсказала, что для вашего объекта метода Загрузить нет. Значит нужно выбрать другой объект или изменить алгоритм заполнения.


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск