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

Не заполняется табличная часть при вводе документа на основании

Автор Glikeria, 30 авг 2010, 12:51

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

Glikeria

Здравствуйте!Скажите,пожалуйста,почему при выполнении следующей обработки табличная часть документа ВозвратНаРаботу не заполняется?Спасибо.
Запрос=Новый Запрос("ВЫБРАТЬ
                        |    СостояниеПоДокументуОтпускаОрганизаций.Организация,
                        |    СостояниеПоДокументуОтпускаОрганизаций.Сотрудник,
                        |    СостояниеПоДокументуОтпускаОрганизаций.Состояние КАК ВидОтпуска,
                        |    МИНИМУМ(СостояниеПоДокументуОтпускаОрганизаций.Период) КАК ДатаНачалаОтпуска,
                        |    СостояниеПоДокументуОтпускаОрганизаций.ПериодЗавершения КАК ДатаОкончанияОтпуска,
                        |    ДОБАВИТЬКДАТЕ(СостояниеПоДокументуОтпускаОрганизаций.ПериодЗавершения, ДЕНЬ, 1) КАК ДатаОкончанияОтпускаПлюсОдинДень,
                        |    СостояниеРаботниковОрганизаций.Период КАК ДатаНачалаСостоянияПослеОтпуска,
                        |    СостояниеРаботниковОрганизаций.ПериодЗавершения КАК ДатаЗавершенияСостоянияПослеОтпуска,
                        |    СостояниеРаботниковОрганизаций.Состояние,
                        |    СостояниеРаботниковОрганизаций.СостояниеЗавершения
                        |ИЗ
                        |    РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеПоДокументуОтпускаОрганизаций
                        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
                        |        ПО СостояниеПоДокументуОтпускаОрганизаций.Организация = СостояниеРаботниковОрганизаций.Организация
                        |            И СостояниеПоДокументуОтпускаОрганизаций.Сотрудник = СостояниеРаботниковОрганизаций.Сотрудник
                        |            И (СостояниеРаботниковОрганизаций.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает))
                        |            И (ДОБАВИТЬКДАТЕ(СостояниеПоДокументуОтпускаОрганизаций.ПериодЗавершения, ДЕНЬ, 1) <= СостояниеРаботниковОрганизаций.Период)
                        |ГДЕ
                        //|    СостояниеПоДокументуОтпускаОрганизаций.Регистратор.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

                        |     СостояниеПоДокументуОтпускаОрганизаций.Регистратор ССЫЛКА Документ.ОтпускаОрганизаций
                        |
                        |СГРУППИРОВАТЬ ПО
                        |    СостояниеПоДокументуОтпускаОрганизаций.Организация,
                        |    СостояниеПоДокументуОтпускаОрганизаций.Сотрудник,
                        |    СостояниеПоДокументуОтпускаОрганизаций.ПериодЗавершения,
                        |    СостояниеРаботниковОрганизаций.Период,
                        |    СостояниеРаботниковОрганизаций.ПериодЗавершения,
                        |    СостояниеРаботниковОрганизаций.Состояние,
                        |    СостояниеРаботниковОрганизаций.СостояниеЗавершения,
                        |    СостояниеПоДокументуОтпускаОрганизаций.Состояние");

        Запрос.УстановитьПараметр("Работает",Перечисления.СостоянияРаботникаОрганизации.Работает);
        //Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);

        //Запрос.УстановитьПараметр("ДатаОкончания",ДатаОкончания);

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

Пока Выборка.Следующий() Цикл

    ДокументОбъект=Документы.ВозвратНаРаботуОрганизаций.СоздатьДокумент();
    ДокументОбъект.Заполнить(ВЫБОРКА.Ссылка);
    ДокументОбъект.Дата=ТекущаяДата();
    ДокументОбъект.Записать();
    //ДокументОбъект.ПолучитьФорму().Открыть();

mohock

Самое первое поставьте точку останова в
Выборка=Результат.Выбрать();
И посмотрите, что возвращает запрос.

Glikeria

Я проверяла с помощью консоли запросов,запрос возвращает то,что надо.В таблицу выводятся те сотрудники,которые состоят в отпуске.

mohock

И еще, я редко пользуюсь конструкцией
ДокументОбъект.Заполнить(...)
У Вас заполняется шапка документа?
Если и ТЧ, то для тч нужен свой запрос и конструкция, если память не отшибло:
ДокументОбъект.ТабличнаяЧасть.Заполнить(...)

Glikeria

Шапка документа заполняется,а вот табличная часть нет.
А что значит следующая ошибка?
{Обработка.Обработка3.Форма.Форма(49)}: Метод объекта не обнаружен (Заполнить)
                    ДокументОбъект.РаботникиОрганизации.Заполнить(Выборка.Ссылка);

mohock

Цитата: Glikeria от 30 авг 2010, 14:36
Шапка документа заполняется,а вот табличная часть нет.
А что значит следующая ошибка?
{Обработка.Обработка3.Форма.Форма(49)}: Метод объекта не обнаружен (Заполнить)
                    ДокументОбъект.РаботникиОрганизации.Заполнить(Выборка.Ссылка);


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

mohock

Цитата: mohock от 30 авг 2010, 14:50
Цитата: Glikeria от 30 авг 2010, 14:36
Шапка документа заполняется,а вот табличная часть нет.
А что значит следующая ошибка?
{Обработка.Обработка3.Форма.Форма(49)}: Метод объекта не обнаружен (Заполнить)
                    ДокументОбъект.РаботникиОрганизации.Заполнить(Выборка.Ссылка);


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

Похоже из-за этого я не доверяю конструкции Заполнить... Обычно ТЧ загружаю перебором.  B)

Glikeria


mohock

Цитата: Glikeria от 30 авг 2010, 14:59
А как это можно сделать перебором?

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

Кстати в твоем коде конструкция
Запрос.Выполнить.Выгрузить(); абсолютно лишняя.
Надо либо Выгружать либо Выбирать.
Причем, как говорится: Выбирать и Выгружать это совершенно разные вещи  :D

Glikeria

А почему может быть следующая ситуация:в отладике всё правильно,но при этом если открыть документ ВозвратНаРаботуОрганизаций табличная часть всё равно не заполняется?

Теги:

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

Рейтинг@Mail.ru

Поиск