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

v8: Выгрузка данных в Табличную часть

Ermak
26.10.2015 17:17Прочитано: 1247

Не выгружаются данные в Табличную часть, в отладчике все работает а табличная часть пустая, подскажите что не так

Код 1C v 8.х
 Запрос = Новый Запрос;
    ТекстЗапроса = "ВЫБРАТЬ
                   |    ЗаявкаЕдиноеОкно.Дата КАК Период,
                   |    ЗаявкаЕдиноеОкно.ТипЗаявки,
                   |    ЗаявкаЕдиноеОкно.Причина,
                   |    ЗаявкаЕдиноеОкно.Статус,
                   |    ЗаявкаЕдиноеОкно.Номер
                   |ИЗ
                   |    Документ.ЗаявкаЕдиноеОкно КАК ЗаявкаЕдиноеОкно";
   
    Запрос.Текст=ТекстЗапроса;
    Вывод=Запрос.Выполнить().Выбрать();
    Номер1 = ЭлементыФормы.ТП.Колонки.НомерСтроки;
    Номер1 = 0;
    Пока Вывод.Следующий() Цикл
        Дата1 = ЭлементыФормы.ТП.Колонки.Дата;
        Информ = ЭлементыФормы.ТП.Колонки.Информация;      
        Дата2 = Формат(Вывод.Период,"ДФ='дд.ММ.гггг'");
         Номер1 = Номер1+1;
            Дата1 = Дата2;
            Информ = " " + "Заявка:" + " " + "№" + Вывод.Номер + Символы.ПС + " " + "Тип заявки:" + " " + Вывод.ТипЗаявки + Символы.ПС + " " + "Причина заявки:" + " " + Вывод.Причина;
    КонецЦикла;
Yandex
Возможно, вас также заинтересует
Реклама на портале
IBReiter
26.10.2015 17:24Ответ № 1

ТЧ.Загрузить(Запрос.Выполнить().Выгрузить())

Чем не вариант?

Ermak
26.10.2015 17:27Ответ № 2

Мне надо только сделать две колонки, первая колонка Период а во второй колонки вся другая информация 

Код 1C v 8.х
 Информ = " " + "Заявка:" + " " + "№" + Вывод.Номер + Символы.ПС + " " + "Тип заявки:" + " " + Вывод.ТипЗаявки + Символы.ПС + " " + "Причина заявки:" + " " + Вывод.Причина;   
EMigachev
26.10.2015 17:33Ответ № 3

А где код заполнения ТЧ? что-то типо:

Код 1C v 8.х
 Пока Вывод.Следующий() Цикл
    новСтр = ТП.Добавить();
    новСтр.Информ = " " + "Заявка:" + " " + "№" + Вывод.Номер + Символы.ПС + " " + "Тип заявки:" + " " + Вывод.ТипЗаявки + Символы.ПС + " " + "Причина заявки:" + " " + Вывод.Причина;
    КонецЦикла;   
Ermak
26.10.2015 17:37Ответ № 4

изначально такой был код

Код 1C v 8.х
  Запрос = Новый Запрос;
    ТекстЗапроса = "ВЫБРАТЬ
                   |    ЗаявкаЕдиноеОкно.Дата КАК Период,
                   |    ЗаявкаЕдиноеОкно.ТипЗаявки,
                   |    ЗаявкаЕдиноеОкно.Причина,
                   |    ЗаявкаЕдиноеОкно.Статус,
                   |    ЗаявкаЕдиноеОкно.Номер
                   |ИЗ
                   |    Документ.ЗаявкаЕдиноеОкно КАК ЗаявкаЕдиноеОкно";
   
    //Запрос.УстановитьПараметр("ФИО",ЭтаФорма.ЭлементыФормы.Ответственный.Значение);
    //Запрос.УстановитьПараметр("Статус",Перечисления.СтатусЕдиноеОкно.Открыта);
    Запрос.Текст=ТекстЗапроса;
    Вывод=Запрос.Выполнить().Выбрать();
    Номер1 = ЭлементыФормы.ТП.Колонки.НомерСтроки;
    Номер1 = 0;
    Пока Вывод.Следующий() Цикл
        Дата1 = ЭлементыФормы.ТП.Колонки.Дата;
        Информ = ЭлементыФормы.ТП.Колонки.Информация;      
        Дата2 = Формат(Вывод.Период,"ДФ='дд.ММ.гггг'");
        //Для Каждого Стр Из ТП Цикл
        Номер1 = Номер1+1;
            Дата1 = Дата2;
            Информ = " " + "Заявка:" + " " + "№" + Вывод.Номер + Символы.ПС + " " + "Тип заявки:" + " " + Вывод.ТипЗаявки + Символы.ПС + " " + "Причина заявки:" + " " + Вывод.Причина;
        //КонецЦикла;
    КонецЦикла;

но он не работает

E_Migachev
27.10.2015 00:48Ответ № 5

Что такое ТП? попробуй:

Код 1C v 8.х
  Пока Вывод.Следующий() Цикл
        Дата1 = ЭлементыФормы.ТП.Колонки.Дата;
        Информ = ЭлементыФормы.ТП.Колонки.Информация;       
        Дата2 = Формат(Вывод.Период,"ДФ='дд.ММ.гггг'");
        //Для Каждого Стр Из ТП Цикл
        Номер1 = Номер1+1;
            Дата1 = Дата2;
            Информ = " " + "Заявка:" + " " + "№" + Вывод.Номер + Символы.ПС + " " + "Тип заявки:" + " " + Вывод.ТипЗаявки + Символы.ПС + " " + "Причина заявки:" + " " + Вывод.Причина;
        //КонецЦикла;

новСтр = ТП.Добавить();
    новСтр.Дата=Дата1;
    новСтр.Информация=Информ;
    КонецЦикла;   
Ermak
27.10.2015 08:47Ответ № 6

ТП это название Табличной части

Ermak
27.10.2015 08:56Ответ № 7

Появились данные только выводятся не все а только "Заявка:" + " " + "№" + Вывод.Номер, но когда выделяю строку то данные видны, почему сразу не появляются?

Ermak
27.10.2015 09:11Ответ № 8

Разобрался с текстом

Ermak
27.10.2015 09:15Ответ № 9

Тут такая идея была использовать обновление табличной части в каждую секунду, использовал такой способ

Код 1C v 8.х
 Процедура ПриОткрытии()

ОповещениеЗаявки();

КонецПроцедуры

Процедура ОповещениеЗаявки()

Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ
              | ЗаявкаЕдиноеОкно.Ссылка,
              | ЗаявкаЕдиноеОкно.Номер,
              | ЗаявкаЕдиноеОкно.Дата
              |ИЗ
              | Документ.ЗаявкаЕдиноеОкно КАК ЗаявкаЕдиноеОкно
              |ГДЕ
              | ЗаявкаЕдиноеОкно.Статус =Статус";

//Запрос.УстановитьПараметр("ФИО",ЭтаФорма.ЭлементыФормы.Ответственный.Значение);
Запрос.УстановитьПараметр("Статус",Перечисления.СтатусЕдиноеОкно.Открыта);
Запрос.Текст=ТекстЗапроса;
Вывод=Запрос.Выполнить().Выбрать();
Пока Вывод.Следующий() Цикл 
Информ = " " + "Новая Заявка:" + " " + "№" + Вывод.Номер + " " + "от" + " " + Формат(Вывод.Дата,"ДФ='дд.ММ.гггг'");
//Информ = " " + Вывод.Ссылка;
новСтр = ТП.Добавить();
новСтр.Информация=Информ;
КонецЦикла;      

КонецПроцедуры

ПодключитьОбработчикОжидания("ОповещениеЗаявки", 1);

Теперь данные загружаются повторно в каждую секунду, нужно когда появился новый документ документ сразу же загружались данные Табличную часть

IBReiter
27.10.2015 10:18Ответ № 10

У вас должно быть "Оповестить("ОповещениеОНовойЗаявке");" в модуле объекта, например, ПриЗаписи(), ОбработкаПроведения() - на ваш выбор по условию задачи.

Далее, в модуле формы - где у вас табличная часть - ОбработкаОповещения(), которая будет откликаться на имя этого оповещения.

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если ИмяСобытия = "ОповещениеОНовойЗаявке" Тогда

Код из вашей процедуры ОповещениеЗаявки()

КонецЕсли;

КонецПроцедуры

И все здорово, класс..

Ermak
27.10.2015 10:23Ответ № 11

ОповещениеОНовойЗаявке - это что понимаете?

Ermak
27.10.2015 10:42Ответ № 12

Этот код вставил в обработку где табличная часть

Код 1C v 8.х
 Процедура ОповещениеЗаявки()

Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ
              | ЗаявкаЕдиноеОкно.Ссылка,
              | ЗаявкаЕдиноеОкно.Номер,
              | ЗаявкаЕдиноеОкно.Дата
              |ИЗ
              | Документ.ЗаявкаЕдиноеОкно КАК ЗаявкаЕдиноеОкно
              |ГДЕ
              | ЗаявкаЕдиноеОкно.Статус =Статус";

//Запрос.УстановитьПараметр("ФИО",ЭтаФорма.ЭлементыФормы.Ответственный.Значение);
Запрос.УстановитьПараметр("Статус",Перечисления.СтатусЕдиноеОкно.Открыта);
Запрос.Текст=ТекстЗапроса;
Вывод=Запрос.Выполнить().Выбрать();
Пока Вывод.Следующий() Цикл 
Информ = " " + "Новая Заявка:" + " " + "№" + Вывод.Номер + " " + "от" + " " + Формат(Вывод.Дата,"ДФ='дд.ММ.гггг'");
//Информ = " " + Вывод.Ссылка;
новСтр = ТП.Добавить();
новСтр.Информация=Информ;
КонецЦикла;      

КонецПроцедуры


Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)


Если ИмяСобытия = "ОповещениеОНовойЗаявке" Тогда


ОповещениеЗаявки();


КонецЕсли;


КонецПроцедуры


Этот код вставил в обработку которая создает документ ЗаявкаЕдиноеОкно. Создал новый документ информация не появилась в табличой части

Код 1C v 8.х
 Док=Документы.ЗаявкаЕдиноеОкно.СоздатьДокумент();	
Док.Дата=ДатаПоставки;
Док.ДатаСозданияДок=ТекущаяДата();
Док.ЛицевойСчет=ЛицевойСчет;
Док.Причина=Примечание;
Док.ТипЗаявки=ТипЗаявки;
Док.Статус=Перечисления.СтатусЕдиноеОкно.Открыта;

Для Каждого Строка Из Ответственных Цикл
НоваяСтрока=Док.ТабОтветственных.Добавить();
НоваяСтрока.ФИО=Строка.Наименование;
НоваяСтрока.Должность=Строка.Код;
НоваяСтрока.Статус=Перечисления.СтатусЕдиноеОкно.Открыта;
НоваяСтрока.ДатаСозданияДок=ТекущаяДата();
КонецЦикла;
Док.Записать(РежимЗаписиДокумента.Проведение);
ОтправитьНаПочту();
Оповестить("ОповещениеОНовойЗаявке");
IBReiter
27.10.2015 12:07Ответ № 13

В обработку оповещения попадает?

Ermak
27.10.2015 12:13Ответ № 14

Не заходит, а как вообще должен туда зайти, я что то не понимаю

IBReiter
27.10.2015 12:17Ответ № 15

Форма с обработкой оповещения открыта?

ОбработкаОповещения типовая или вы просто руками имя ее написали?

Ermak
27.10.2015 12:19Ответ № 16

Что за Форма с обработкой оповещения открыта? не понимаю

Ermak
27.10.2015 12:19Ответ № 17

Скопировал ваш текст

IBReiter
27.10.2015 12:28Ответ № 18

Это форма, которую вы пытаетесь оповестить

А обработкаоповещения - это стандартное событие формы, также как приоткрытии призакрытии и т.п.

Ermak
27.10.2015 12:37Ответ № 19

Все я понял, добавил. В отладчике проверяю не заходит в нее

IBReiter
27.10.2015 12:40Ответ № 20

Форма, которую нужно оповестить, открыта?

Ermak
27.10.2015 16:46Ответ № 21

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

IBReiter
27.10.2015 17:37Ответ № 22

А кого вы оповещать тогда собираетесь?

Ermak
27.10.2015 18:57Ответ № 23

Я не понимаю вас. Обработка оповещения добавлена в форму обработки где находится табличная часть

IBReiter
28.10.2015 09:00Ответ № 24

Эта форма должна быть открыта во время отладки, иначе оповещать некого и в обработку оповещения вы не попадете.

Поэтому, запускаете отладчик, открываете обработку, в которой ТЧ и обработка оповещения, потом открываете обработку, где у вас создается все и есть команда Оповестить(.....) и создаете что там создается и отладчиком смотрите, попадаете ли вы вообще в обработку оповещения формы, если нет тогда у вас скорее всего не назначен обработчик на стандартное событие, если да, но не оповещается, тогда имя события разное в оповестить и обработке оповещения

У меня варианты кончились

Ermak
28.10.2015 10:28Ответ № 25

Все как вы написали я проверил не заходит, давай те еще раз я расскажу что у меня:

1) Есть обработка Стартовая, когда пользователь заходит в 1С сразу же включается эта обработка, ее не как не выключить. В этой обработке есть табличная часть в которой выводятся данные нового созданного документа ЗаявкаЕдиноеОкно. Эта форма открыта

Код 1C v 8.х
 Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если ИмяСобытия = "ОповещениеОНовойЗаявке" Тогда
ОповещениеЗаявки(); 
КонецЕсли;

КонецПроцедуры

Процедура ОповещениеЗаявки()

Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ
              | ЗаявкаЕдиноеОкно.Ссылка,
              | ЗаявкаЕдиноеОкно.Номер,
              | ЗаявкаЕдиноеОкно.Дата
              |ИЗ
              | Документ.ЗаявкаЕдиноеОкно КАК ЗаявкаЕдиноеОкно
              |ГДЕ
              | ЗаявкаЕдиноеОкно.Статус =Статус";

//Запрос.УстановитьПараметр("ФИО",ЭтаФорма.ЭлементыФормы.Ответственный.Значение);
Запрос.УстановитьПараметр("Статус",Перечисления.СтатусЕдиноеОкно.Открыта);
Запрос.Текст=ТекстЗапроса;
Вывод=Запрос.Выполнить().Выбрать();
Пока Вывод.Следующий() Цикл 
Информ = " " + "Новая Заявка:" + " " + "№" + Вывод.Номер + " " + "от" + " " + Формат(Вывод.Дата,"ДФ='дд.ММ.гггг'");
//Информ = " " + Вывод.Ссылка;
новСтр = ТП.Добавить();
новСтр.Информация=Информ;
КонецЦикла;      

КонецПроцедуры

2) Вторая обработка - в ней заносятся данные и создается новый документ ЗаявкаЕдиноеОкно. Вот часть кода

Код 1C v 8.х
 	Док=Документы.ЗаявкаЕдиноеОкно.СоздатьДокумент();	
Док.Дата=ДатаПоставки;
Док.ДатаСозданияДок=ТекущаяДата();
Док.ЛицевойСчет=ЛицевойСчет;
Док.Причина=Примечание;
Док.ТипЗаявки=ТипЗаявки;
Док.Статус=Перечисления.СтатусЕдиноеОкно.Открыта;

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

Когда проверял отладчиком у меня запущены две формы, после создания нового документа ЗаявкаЕдиноеОкно, в Табличной части он не отображается, отладчик не заходит в Процедура ОбработкаОповещения. Не понятно

IBReiter
28.10.2015 10:33Ответ № 26

Давайте сf

Ermak
28.10.2015 10:46Ответ № 27

Вроде разобрался почему не заходила в процедуру ОбработкаОповещения. Теперь заходит и обновляет табличную часть но почему то удваивает, например создал я Документ№1, он вывел. Создаю Документ№2, он выводит опять Доуцмент№1 и Документ№2, в табличной части отображается теперь Документ№1, Документ№1, Документ№2. Бред какой то

Ermak
28.10.2015 11:13Ответ № 28

Все разобрался, спасибо большое

IBReiter
28.10.2015 12:25Ответ № 29

Очистка ТЧ нужна, видимо

Ermak
02.11.2015 09:04Ответ № 30
Вопрос закрыт!
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.