Имя: Пароль:
1C
1С v8
Обход Табличной части документа
0 Lunovar
 
22.10.15
15:44
Помогите пожалуйста всю голову уже сломал, в интернете у всех все получается по данному примеру, а у меня нет!
Запросом получаем данные и записываем в табличную часть документа.
Обработка отрабатывает но данные в табличной части документа не появляются.

ТабличнаяЧасть = Объект[ИмяТабличнойЧасти];
    СсылкаНаОбъект = Объект;
    Форма = ПолучитьФорму("Документ.ОплатаПраздничныхИВыходныхДнейОрганизаций.Форма.ФормаДокумента");
    Форма.Открыть();
    
    Если Не ЗначениеЗаполнено(МесяцЗаполнения) Тогда
        Сообщить("Не выбран месяц начисления");
        Возврат;
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "";
            
    Результат = Запрос.Выполнить().Выгрузить();
    
    ТабличнаяЧасть.Очистить();
    
    Для Каждого ЭлементРезультата из Результат Цикл
        НоваяСтрокаТЧ    = Объект[ИмяТабличнойЧасти].Добавить();
        
        ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, ЭлементРезультата);
        
        НоваяСтрокаТЧ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПраздничныхИВыходных;
        НоваяСтрокаТЧ.Сторно = Ложь;
    КонецЦикла;
1 hhhh
 
22.10.15
15:49
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект[ИмяТабличнойЧасти].Загрузить(Запрос.Выполнить().Выгрузить());
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");

всё
2 Eugene_life
 
22.10.15
16:27
(0) Может быть, обновить форму надо? Ты же ее сперва открыл, а потом заполнил.
Ну, или сперва заполняй, а потом уже открывай.
3 Lunovar
 
22.10.15
16:30
Не управляемые формы...
4 Anjo
 
22.10.15
16:30
Запрос.Текст = "";  это сам нас оградил от текста запроса или нет текста запроса)
5 hhhh
 
22.10.15
16:34
(3) тогда вообще одной строкой

Объект[ИмяТабличнойЧасти].Загрузить(Запрос.Выполнить().Выгрузить());
6 Lunovar
 
22.10.15
16:34
Там большой запрос могу написать просто проблема не в нем и он не оптимальный) стыдно
7 hhhh
 
22.10.15
16:37
(6) главное чтобы там поля назывались также как в тч

типа  ЛОЖЬ КАК Сторно,
8 Anjo
 
22.10.15
16:37
(5) не совсем подходит ...или ему запрос допилить чуть чтобы потом руками ВидРасчета не прописывать, а так конечно эстетично)... а отладчик показывает что нить в результате запроса?
9 hhhh
 
22.10.15
16:40
(8) ну это элементарщина уже

ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПраздничныхИВыходных) КАК ВидРасчета
10 Anjo
 
22.10.15
16:41
(0) Визуально твой код имеет право на жизнь если не УФ, так что тут пожалуй идти отладчиком и глядеть уже где чего не попадает (9) не это понятно) я ж написал "допилить чуть" =)
11 Lunovar
 
22.10.15
16:42
и в результате запроса показывает, и показывает Объект[ИмяТабличнойЧасти] - но тут не заполнено одно поле... попробую заполнить щас его
12 Lunovar
 
22.10.15
16:44
я понимаю что имеет право на жизнь я уже пол интернета облазил и везде это написано, поэтому отбезисходности и написал... щас попробую отпишусь...
13 silent person
 
22.10.15
16:44
а как открываемая форма связана с объектом в котором заполняешь табличную часть ?
14 Lunovar
 
22.10.15
16:47
Да
15 Anjo
 
22.10.15
16:49
(13) хороший вопрос... (14) не хороший ответ
16 Anjo
 
22.10.15
16:51
(13) тут вообщем не совсем понятно... когда этот код вообще выполняется
17 Serg_1960
 
22.10.15
16:57
Третья строка кода - оригинальное получение формы. Так чью же форму автор получил и причем тут Объект?

"я уже пол интернета облазил и везде это написано" - это была неправильная половина интернета :)
18 Anjo
 
22.10.15
16:57
(14) в (13) имеется ввиду что у тебя "  Форма = ПолучитьФорму("Документ.ОплатаПраздничныхИВыходныхДнейОрганизаций.Форма.ФормаДокумента");
    Форма.Открыть();" никак не связана с остальным кодом... судя по тому кучку что ты показал... так что хотелось бы узнать что ты конкретно делаешь.
19 Lunovar
 
22.10.15
17:03
Не-а не помогло..

Процедура Инициализировать(Объект, ИмяТабличнойЧасти = Неопределено, ТабличноеПолеОбъекта = Неопределено) Экспорт
    
    ТабличнаяЧасть = Объект[ИмяТабличнойЧасти];
    СсылкаНаОбъект = Объект;
    Форма = ПолучитьФорму("Документ.ОплатаПраздничныхИВыходныхДнейОрганизаций.Форма.ФормаДокумента");
        
    Если Не ЗначениеЗаполнено(МесяцЗаполнения) Тогда
        Сообщить("Не выбран месяц начисления");
        Возврат;
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КомандировкиОрганизацийРаботникиОрганизации.Ссылка,
        |    КомандировкиОрганизацийРаботникиОрганизации.Сотрудник КАК Сотрудник,
        |    ВЫБОР
        |        КОГДА КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала В
        |                (ВЫБРАТЬ
        |                    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
        |                ИЗ
        |                    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        |                ГДЕ
        |                    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала
        |                    И (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Суббота)
        |                        ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Воскресенье)
        |                        ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Праздник)))
        |            ТОГДА КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала
        |        ИНАЧЕ 0
        |    КОНЕЦ КАК Выходной,
        |    КомандировкиОрганизацийРаботникиОрганизации.Сотрудник.Код,
        |    КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала,
        |    КомандировкиОрганизацийРаботникиОрганизации.ФизЛицо
        |ПОМЕСТИТЬ ВТ_Командировка
        |ИЗ
        |    Документ.КомандировкиОрганизаций.РаботникиОрганизации КАК КомандировкиОрганизацийРаботникиОрганизации
        |ГДЕ
        |    КомандировкиОрганизацийРаботникиОрганизации.Сторно = ЛОЖЬ
        |    И КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала > НАЧАЛОПЕРИОДА(&ДатаРасчета, МЕСЯЦ)
        |    И КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала < КОНЕЦПЕРИОДА(&ДатаРасчета, МЕСЯЦ)
        |    И КомандировкиОрганизацийРаботникиОрганизации.Ссылка.Проведен = ИСТИНА
        |    И КомандировкиОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления = ЛОЖЬ
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    КомандировкиОрганизацийРаботникиОрганизации.Ссылка,
        |    КомандировкиОрганизацийРаботникиОрганизации.Сотрудник,
        |    ВЫБОР
        |        КОГДА КомандировкиОрганизацийРаботникиОрганизации.ДатаОкончания В
        |                (ВЫБРАТЬ
        |                    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
        |                ИЗ
        |                    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        |                ГДЕ
        |                    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = КомандировкиОрганизацийРаботникиОрганизации.ДатаОкончания
        |                    И (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Суббота)
        |                        ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Воскресенье)
        |                        ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Праздник)))
        |            ТОГДА КомандировкиОрганизацийРаботникиОрганизации.ДатаОкончания
        |        ИНАЧЕ 0
        |    КОНЕЦ,
        |    КомандировкиОрганизацийРаботникиОрганизации.Сотрудник.Код,
        |    КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала,
        |    КомандировкиОрганизацийРаботникиОрганизации.ФизЛицо
        |ИЗ
        |    Документ.КомандировкиОрганизаций.РаботникиОрганизации КАК КомандировкиОрганизацийРаботникиОрганизации
        |ГДЕ
        |    КомандировкиОрганизацийРаботникиОрганизации.Сторно = ЛОЖЬ
        |    И КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала > НАЧАЛОПЕРИОДА(&ДатаРасчета, МЕСЯЦ)
        |    И КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала < КОНЕЦПЕРИОДА(&ДатаРасчета, МЕСЯЦ)
        |    И КомандировкиОрганизацийРаботникиОрганизации.Ссылка.Проведен = ИСТИНА
        |    И КомандировкиОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления = ЛОЖЬ
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
        |    ОсновныеНачисленияРаботниковОрганизаций.Регистратор,
        |    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
        |    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,
        |    ОсновныеНачисленияРаботниковОрганизаций.Организация,
        |    ОсновныеНачисленияРаботниковОрганизаций.НормаДней,
        |    ОсновныеНачисленияРаботниковОрганизаций.НормаЧасов,
        |    ОсновныеНачисленияРаботниковОрганизаций.ДополнительныеДанные,
        |    ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации,
        |    ОсновныеНачисленияРаботниковОрганизаций.ДатаНачалаСобытия,
        |    ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка
        |ПОМЕСТИТЬ ВТ_ОсновныеНачисления
        |ИЗ
        |    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
        |        ПО ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник
        |            И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо
        |ГДЕ
        |    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета = &ВидРасчета
        |    И ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации = НАЧАЛОПЕРИОДА(&ДатаРасчета, МЕСЯЦ)
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_Командировка.Сотрудник КАК Сотрудник,
        |    ВТ_Командировка.Выходной КАК ДатаВыхода,
        |    ВТ_Командировка.СотрудникКод КАК СотрудникКод,
        |    ВТ_ОсновныеНачисления.ПодразделениеОрганизации,
        |    ВТ_ОсновныеНачисления.НормаЧасов / ВТ_ОсновныеНачисления.НормаДней КАК ОтработаноЧасов,
        |    ВТ_ОсновныеНачисления.ДополнительныеДанные КАК Результат,
        |    ВТ_ОсновныеНачисления.ДополнительныеДанные / (ВТ_ОсновныеНачисления.НормаЧасов / ВТ_ОсновныеНачисления.НормаДней) КАК Размер,
        |    ВТ_Командировка.ФизЛицо,
        |    ВТ_ОсновныеНачисления.Ссылка КАК УдалитьПриказ
        |ИЗ
        |    ВТ_Командировка КАК ВТ_Командировка
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОсновныеНачисления КАК ВТ_ОсновныеНачисления
        |        ПО ВТ_Командировка.Сотрудник = ВТ_ОсновныеНачисления.Сотрудник
        |            И ВТ_Командировка.ДатаНачала = ВТ_ОсновныеНачисления.ДатаНачалаСобытия
        |ГДЕ
        |    ВТ_Командировка.Выходной <> 0
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТ_ОсновныеНачисления.ПодразделениеОрганизации,
        |    ВТ_Командировка.Сотрудник,
        |    ВТ_Командировка.СотрудникКод,
        |    ВТ_Командировка.Выходной,
        |    ВТ_ОсновныеНачисления.НормаЧасов / ВТ_ОсновныеНачисления.НормаДней,
        |    ВТ_ОсновныеНачисления.ДополнительныеДанные,
        |    ВТ_ОсновныеНачисления.ДополнительныеДанные / (ВТ_ОсновныеНачисления.НормаЧасов / ВТ_ОсновныеНачисления.НормаДней),
        |    ВТ_Командировка.ФизЛицо,
        |    ВТ_ОсновныеНачисления.Ссылка
        |
        |УПОРЯДОЧИТЬ ПО
        |    СотрудникКод";
    
    Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднему);
    Запрос.УстановитьПараметр("ДатаРасчета", МесяцЗаполнения);
    Результат = Запрос.Выполнить().Выгрузить();
    
    ТабличнаяЧасть.Очистить();
    
    Для Каждого ЭлементРезультата из Результат Цикл
        НоваяСтрокаТЧ    = Объект[ИмяТабличнойЧасти].Добавить();
        
        ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, ЭлементРезультата);
        
        НоваяСтрокаТЧ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПраздничныхИВыходных;
        НоваяСтрокаТЧ.Сторно = Ложь;
        //НоваяСтрокаТЧ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаПраздничныеИВыходные;
        КонецЦикла;

     Форма.Открыть();    
    
КонецПроцедуры
20 asady
 
22.10.15
17:09
(0) УФ код где? на клиенте, на сервере?
21 Lunovar
 
22.10.15
17:11
На сервере
22 Lunovar
 
22.10.15
17:15
(18) Сейчас Обдумаю вашу мысль
23 Serg_1960
 
22.10.15
17:22
"Чего тут думать? Трясти надо!"(с)

   ...
   Форма.ДокументОбъект = Объект;
   Форма.Открыть();
КонецПроцедуры

:))
24 Lunovar
 
22.10.15
17:34
(23) Да получилось спасибо!!!!!
А сможете объяснить почему так?
Форма.ДокументОбъект = Объект;
25 Lunovar
 
22.10.15
17:34
Просто как бы то что я сделал это хорошо еще б понять
26 Anjo
 
23.10.15
08:01
(25) Форма должна быть связана с конкретным объектом который ты обрабатываешь... иначе будет открываться пустая форма...никак не связанная с действиями над объектом.

Или в чем то другом непонимание?
27 Serg_1960
 
23.10.15
09:13
(24) Это фича платформы - недокументированное поведение платформы. Установленная связь между собой объекта и его формы сохраняется в "предопределенном" реквизите формы "ДокументОбъект". При изменении этого реквизита неявно инициализируется перезаполнение всех значений формы.

В третьей строке Вашего алгоритма ("Форма = ПолучитьФорму...") допущена ошибка - не указан объект для которого создаётся форма. Вместо этой строки можно/нужно было написать, например, Форма = Объект.ПолучитьФорму(и так далее).