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

Работа с выборкой ТЧ (ошибка)

Автор Алексей_1985_06, 14 мар 2020, 12:32

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

Алексей_1985_06

В документе создан реквизит "ОперативныйДежурный" с типом ТаблицаЗначений (скрин во вложении) с реквизитами, необходимо заполнить эту таблицу из другого документа "ГрафикЗаступленияОперативныхДежурных" с ТЧ "ГрафикЗаступления", выходит ошибка:
{Документ.ДокладыПреступленияПроисшествия.Форма.ФормаДокумента.Форма(664)}: Поле объекта не обнаружено (Подразделение)
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
, не могу разобраться в чем дело ????:dfbsdfbsdf::dfbsdfbsdf::dfbsdfbsdf:

Знатоки подскажите как исправить !!!!
Код такой сейчас:
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Выборка = Документы.ГрафикЗаступленияОперативныхДежурных.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ОперативныйДежурный.Добавить();
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = Выборка.ГрафикЗаступления.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = Выборка.ГрафикЗаступления.ДатаЗаступления;
КонецЦикла;
КонецПроцедуры

alexandr_ll

Цитата: Алексей_1985_06 от 14 мар 2020, 12:32
В документе создан реквизит "ОперативныйДежурный" с типом ТаблицаЗначений (скрин во вложении) с реквизитами, необходимо заполнить эту таблицу из другого документа "ГрафикЗаступленияОперативныхДежурных" с ТЧ "ГрафикЗаступления", выходит ошибка:
{Документ.ДокладыПреступленияПроисшествия.Форма.ФормаДокумента.Форма(664)}: Поле объекта не обнаружено (Подразделение)
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
, не могу разобраться в чем дело ????:dfbsdfbsdf::dfbsdfbsdf::dfbsdfbsdf:

Знатоки подскажите как исправить !!!!
Код такой сейчас:
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Выборка = Документы.ГрафикЗаступленияОперативныхДежурных.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ОперативныйДежурный.Добавить();
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = Выборка.ГрафикЗаступления.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = Выборка.ГрафикЗаступления.ДатаЗаступления;
КонецЦикла;
КонецПроцедуры

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

Алексей_1985_06

Цитата: alexandr_ll от 14 мар 2020, 12:49
Цитата: Алексей_1985_06 от 14 мар 2020, 12:32
В документе создан реквизит "ОперативныйДежурный" с типом ТаблицаЗначений (скрин во вложении) с реквизитами, необходимо заполнить эту таблицу из другого документа "ГрафикЗаступленияОперативныхДежурных" с ТЧ "ГрафикЗаступления", выходит ошибка:
{Документ.ДокладыПреступленияПроисшествия.Форма.ФормаДокумента.Форма(664)}: Поле объекта не обнаружено (Подразделение)
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
, не могу разобраться в чем дело ????:dfbsdfbsdf::dfbsdfbsdf::dfbsdfbsdf:

Знатоки подскажите как исправить !!!!
Код такой сейчас:
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Выборка = Документы.ГрафикЗаступленияОперативныхДежурных.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ОперативныйДежурный.Добавить();
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = Выборка.ГрафикЗаступления.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = Выборка.ГрафикЗаступления.ДатаЗаступления;
КонецЦикла;
КонецПроцедуры

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


alexandr_ll Извините, можете помочь с кодом, как мне правильно написать... у самого к сожалению не получается....


alexandr_ll

Цитата: Алексей_1985_06 от 14 мар 2020, 13:50
Цитата: alexandr_ll от 14 мар 2020, 12:49
Цитата: Алексей_1985_06 от 14 мар 2020, 12:32
В документе создан реквизит "ОперативныйДежурный" с типом ТаблицаЗначений (скрин во вложении) с реквизитами, необходимо заполнить эту таблицу из другого документа "ГрафикЗаступленияОперативныхДежурных" с ТЧ "ГрафикЗаступления", выходит ошибка:
{Документ.ДокладыПреступленияПроисшествия.Форма.ФормаДокумента.Форма(664)}: Поле объекта не обнаружено (Подразделение)
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
, не могу разобраться в чем дело ????:dfbsdfbsdf::dfbsdfbsdf::dfbsdfbsdf:

Знатоки подскажите как исправить !!!!
Код такой сейчас:
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Выборка = Документы.ГрафикЗаступленияОперативныхДежурных.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ОперативныйДежурный.Добавить();
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = Выборка.ГрафикЗаступления.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = Выборка.ГрафикЗаступления.ДатаЗаступления;
КонецЦикла;
КонецПроцедуры

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


alexandr_ll Извините, можете помочь с кодом, как мне правильно написать... у самого к сожалению не получается....
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Выборка = Документы.ГрафикЗаступленияОперативныхДежурных.Выбрать();
Пока Выборка.Следующий() Цикл
Для Каждого стр из Выборка.ГрафикЗаступления Цикл
НоваяСтрока = ОперативныйДежурный.Добавить();
НоваяСтрока.Подразделение = Стр.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = Стр.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = Стр.ДатаЗаступления;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Алексей_1985_06

Цитата: alexandr_ll от 14 мар 2020, 14:38
Цитата: Алексей_1985_06 от 14 мар 2020, 13:50
Цитата: alexandr_ll от 14 мар 2020, 12:49
Цитата: Алексей_1985_06 от 14 мар 2020, 12:32
В документе создан реквизит "ОперативныйДежурный" с типом ТаблицаЗначений (скрин во вложении) с реквизитами, необходимо заполнить эту таблицу из другого документа "ГрафикЗаступленияОперативныхДежурных" с ТЧ "ГрафикЗаступления", выходит ошибка:
{Документ.ДокладыПреступленияПроисшествия.Форма.ФормаДокумента.Форма(664)}: Поле объекта не обнаружено (Подразделение)
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
, не могу разобраться в чем дело ????:dfbsdfbsdf::dfbsdfbsdf::dfbsdfbsdf:

Знатоки подскажите как исправить !!!!
Код такой сейчас:
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Выборка = Документы.ГрафикЗаступленияОперативныхДежурных.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ОперативныйДежурный.Добавить();
НоваяСтрока.Подразделение = Выборка.ГрафикЗаступления.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = Выборка.ГрафикЗаступления.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = Выборка.ГрафикЗаступления.ДатаЗаступления;
КонецЦикла;
КонецПроцедуры

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


alexandr_ll Извините, можете помочь с кодом, как мне правильно написать... у самого к сожалению не получается....
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Выборка = Документы.ГрафикЗаступленияОперативныхДежурных.Выбрать();
Пока Выборка.Следующий() Цикл
Для Каждого стр из Выборка.ГрафикЗаступления Цикл
НоваяСтрока = ОперативныйДежурный.Добавить();
НоваяСтрока.Подразделение = Стр.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = Стр.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = Стр.ДатаЗаступления;
КонецЦикла;
КонецЦикла;
КонецПроцедуры


alexandr_ll ОГРОМНОЕ ВАМ СПАСИБО ЗА ПОМОЩЬ!!!
Единственное, возникает ошибка при отборе по реквизиту "подразделение" (он индексируемый):
{Документ.ДокладыПреступленияПроисшествия.Форма.ФормаДокумента.Форма(645)}: Ошибка при вызове метода контекста (Выбрать)
Выборка = Документы.ГрафикЗаступленияОперативныхДежурных.Выбрать(Период.ДатаНачала,Период.ДатаОкончания,Отбор);
по причине:
Недопустимое значение параметра (параметр номер '3')


БУДЬТЕ ДОБРЫ, ЕСЛИ ЗНАЕТЕ, ПОДСКАЖИТЕ КАК РЕШИТЬ...

&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
ОперативныйДежурный.Очистить();   

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

Пока Выборка.Следующий() Цикл
Для Каждого стр из Выборка.ГрафикЗаступления Цикл
НоваяСтрока = ОперативныйДежурный.Добавить();

НоваяСтрока.Подразделение = стр.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = стр.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = стр.ДатаЗаступления;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

alexandr_ll


DmitriyF

[quote author=Алексей_1985_06 link=topic=75393.msg215542#msg215542 date=1584197360]

НоваяСтрока.ДатаЗаступления = стр.ДатаЗаступления;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

[/quote]
Слушай, а почему бы запросом не получить нужные документы и потом обходить их циклом?

Алексей_1985_06

Цитата: DmitriyF от 14 мар 2020, 18:13
[quote author=Алексей_1985_06 link=topic=75393.msg215542#msg215542 date=1584197360]

НоваяСтрока.ДатаЗаступления = стр.ДатаЗаступления;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Слушай, а почему бы запросом не получить нужные документы и потом обходить их циклом?
[/quote]

Да запросом конечно лучше, но ребят не получается, может кто помочь? Хоть ты тресни... не выходит каменный цветок
Ошибка:
{Документ.ДокладыПреступленияПроисшествия.Форма.ФормаДокумента.Форма(824)}: Итератор для значения не определен
Для Каждого стр из Выборка.ГрафикЗаступления Цикл
Код:
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ГрафикЗаступленияОперативныхДежурных.ГрафикЗаступления.(
               | ДатаЗаступления КАК ДатаЗаступления,
               | ФамилияИмяОтчество КАК ФамилияИмяОтчество,
               | Подразделение КАК Подразделение
               | )
               |ИЗ
               | Документ.ГрафикЗаступленияОперативныхДежурных КАК ГрафикЗаступленияОперативныхДежурных
               |ГДЕ
               | ГрафикЗаступленияОперативныхДежурных.ГрафикЗаступления.ДатаЗаступления = &ДатаЗаступления";

Запрос.УстановитьПараметр("ДатаЗаступления",Объект.Сегодня);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();


Пока Выборка.Следующий() Цикл
Для Каждого стр из Выборка.ГрафикЗаступления Цикл

НоваяСтрока = ОперативныйДежурный.Добавить();

НоваяСтрока.Подразделение = стр.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = стр.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = стр.ДатаЗаступления;
КонецЦикла;
КонецЦикла;
КонецПроцедуры


Добавлено: 15 мар 2020, 19:35


Цитата: Алексей_1985_06 от 15 мар 2020, 11:50
Цитата: DmitriyF от 14 мар 2020, 18:13
[quote author=Алексей_1985_06 link=topic=75393.msg215542#msg215542 date=1584197360]

НоваяСтрока.ДатаЗаступления = стр.ДатаЗаступления;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Слушай, а почему бы запросом не получить нужные документы и потом обходить их циклом?

Да запросом конечно лучше, но ребят не получается, может кто помочь? Хоть ты тресни... не выходит каменный цветок
Ошибка:
{Документ.ДокладыПреступленияПроисшествия.Форма.ФормаДокумента.Форма(824)}: Итератор для значения не определен
Для Каждого стр из Выборка.ГрафикЗаступления Цикл
Код:
&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ГрафикЗаступленияОперативныхДежурных.ГрафикЗаступления.(
               | ДатаЗаступления КАК ДатаЗаступления,
               | ФамилияИмяОтчество КАК ФамилияИмяОтчество,
               | Подразделение КАК Подразделение
               | )
               |ИЗ
               | Документ.ГрафикЗаступленияОперативныхДежурных КАК ГрафикЗаступленияОперативныхДежурных
               |ГДЕ
               | ГрафикЗаступленияОперативныхДежурных.ГрафикЗаступления.ДатаЗаступления = &ДатаЗаступления";

Запрос.УстановитьПараметр("ДатаЗаступления",Объект.Сегодня);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();


Пока Выборка.Следующий() Цикл
Для Каждого стр из Выборка.ГрафикЗаступления Цикл

НоваяСтрока = ОперативныйДежурный.Добавить(); // добавляем строку в ТЧ "ОперативныйДежурный" документа2

НоваяСтрока.Подразделение = стр.Подразделение;
НоваяСтрока.ФамилияИмяОтчество = стр.ФамилияИмяОтчество;
НоваяСтрока.ДатаЗаступления = стр.ДатаЗаступления;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

[/quote]


Уважаемые специалисты 1с, может кто-то помочь мне с данным вопросом?
Всю голову уже изломал, не получается поместить данные ТЧ документа1 из запроса, в другую ТЧ документа2 хоть тресни....

bsn-chita

Цитата: Алексей_1985_06 от 15 мар 2020, 11:50&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    ГрафикЗаступленияОперативныхДежурных.ГрафикЗаступления.(
               |        ДатаЗаступления КАК ДатаЗаступления,
               |        ФамилияИмяОтчество КАК ФамилияИмяОтчество,
               |        Подразделение КАК Подразделение
               |    )
               |ИЗ
               |    Документ.ГрафикЗаступленияОперативныхДежурных КАК ГрафикЗаступленияОперативныхДежурных
               |ГДЕ
               |    ГрафикЗаступленияОперативныхДежурных.ГрафикЗаступления.ДатаЗаступления = &ДатаЗаступления";

Запрос.УстановитьПараметр("ДатаЗаступления",Объект.Сегодня);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

 
Пока Выборка.Следующий() Цикл
Для Каждого стр из Выборка.ГрафикЗаступления Цикл
   
НоваяСтрока = ОперативныйДежурный.Добавить(); // добавляем строку в ТЧ "ОперативныйДежурный" документа2

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

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

В большинстве случаев проще обращаться к таблице табличной части документа.


Теги:

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

Рейтинг@Mail.ru

Поиск