Имя: Пароль:
1C
1С v8
Как получить объект по ссылке из запроса
0 ultrannge89
 
04.02.14
14:51
Имеется запрос простенький запрос:
ВЫБРАТЬ
    ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо,
    ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация
ПОМЕСТИТЬ ПриемНаРаботу
ИЗ
    Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
ГДЕ
    ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Ссылка = &ДокССылка
    И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
    ЗаявкаНаОткрытиеСчетов.Организация,
    ЗаявкаНаОткрытиеСчетов.Дата,
    ЗаявкаНаОткрытиеСчетов.Ссылка
ПОМЕСТИТЬ НеВыгруженнаяЗаявка
ИЗ
    Документ.ЗаявкаНаОткрытиеСчетов КАК ЗаявкаНаОткрытиеСчетов
ГДЕ
    ЗаявкаНаОткрытиеСчетов.ПометкаУдаления = ЛОЖЬ
    И ЗаявкаНаОткрытиеСчетов.БанковскийСчет.Ссылка = &БанковскийСчет
    И ЗаявкаНаОткрытиеСчетов.БанковскийСчет.Банк.Ссылка = &Банк
    И ПОДСТРОКА(ЗаявкаНаОткрытиеСчетов.Комментарий, 0, 6) = &Комментарий

УПОРЯДОЧИТЬ ПО
    ЗаявкаНаОткрытиеСчетов.Дата УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПриемНаРаботу.ФизЛицо,
    НеВыгруженнаяЗаявка.Дата,
    НеВыгруженнаяЗаявка.Ссылка
ИЗ
    ПриемНаРаботу КАК ПриемНаРаботу
        ЛЕВОЕ СОЕДИНЕНИЕ НеВыгруженнаяЗаявка КАК НеВыгруженнаяЗаявка
        ПО ПриемНаРаботу.Организация = НеВыгруженнаяЗаявка.Организация

И простое условие:
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда
        Выборка = Результат.Выбрать().Следующий();
        СсылкаНаДокумент = Выборка.Ссылка;
        НовыйДокумент = СсылкаНаДокумент.ПолучитьОбъект();
        НовыйДокумент.Дата = Дата;
        
    Иначе
        НовыйДокумент = Документы.ЗаявкаНаОткрытиеСчетов.СоздатьДокумент();
        НовыйДокумент.Дата =  Дата;
    КонецЕсли;
        НовыйДокумент.Организация = Справочники.Организации.НайтиПоКоду("000000002");
        НовыйДокумент.Банк = Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП("Банк для перечисления зарплаты на карточки"));
        НовыйДокумент.БанковскийСчет = Справочники.БанковскиеСчета.НайтиПоНаименованию("Зарплатный");
        НовыйДокумент.НомерДоговора = "72276141";
        НовыйДокумент.Комментарий = "Создан "+ НовыйДокумент.Дата;

        Для Каждого Строка из РаботникиОрганизации Цикл
            
            НоваяСтрока = НовыйДокумент.РаботникиОрганизации.Добавить();
            НоваяСтрока.ФизЛицо = Строка.ФизЛицо;
            ДанныеТекущегоРаботникаОрганизации = Новый Структура("ФизЛицо,ЭмбоссированныйТекст1,ЭмбоссированныйТекст2,ЭмбоссированныйТекст3,КодМиграционногоДокумента,НомерМиграционногоДокумента,Резидент,Гражданство,Должность");
            ДанныеТекущегоРаботникаОрганизации.Вставить("ФизЛицо", Строка.ФизЛицо);
            ДанныеТекущегоРаботникаОрганизации = ЗаполнитьСтрокуПоФизическомуЛицу(ДанныеТекущегоРаботникаОрганизации);
            НоваяСтрока.ЭмбоссированныйТекст1 = ДанныеТекущегоРаботникаОрганизации.ЭмбоссированныйТекст1;
            НоваяСтрока.ЭмбоссированныйТекст2 = ДанныеТекущегоРаботникаОрганизации.ЭмбоссированныйТекст2;
            НоваяСтрока.ЭмбоссированныйТекст3 = ДанныеТекущегоРаботникаОрганизации.ЭмбоссированныйТекст3;
            НоваяСтрока.Резидент = ДанныеТекущегоРаботникаОрганизации.Резидент;
            НоваяСтрока.Гражданство  = ДанныеТекущегоРаботникаОрганизации.Гражданство;
            НоваяСтрока.Должность = ДанныеТекущегоРаботникаОрганизации.Должность;
            НоваяСтрока.КодМиграционногоДокумента = ДанныеТекущегоРаботникаОрганизации.КодМиграционногоДокумента;
            НоваяСтрока.НомерМиграционногоДокумента = ДанныеТекущегоРаботникаОрганизации.НомерМиграционногоДокумента;
            
        КонецЦикла;
        //НовыйДокумент.Записать();
        Объект = НовыйДокумент.ПолучитьФорму("ФормаДокумента");
        Объект.Открыть();


Ругается на это:
        СсылкаНаДокумент = Выборка.Ссылка;
        НовыйДокумент = СсылкаНаДокумент.ПолучитьОбъект();

Как будет правильнее получить по ссылке объект, чтобы потом его изменить? Дело в том что я бы мог и без запроса, но мне надо проверить есть ли документ со строкой "Создан" в поле комментарий, если есть то не создавать новый документ а загрузить данные в существующий.
1 Maxus43
 
04.02.14
14:53
у тебя получается
"Истина".ПолучиьтОбъект();

отладчик смотри...
2 Maxus43
 
04.02.14
14:54
Выборка = Результат.Выбрать();
Выборка.Следующий();
3 ultrannge89
 
04.02.14
14:54
Блин)))
4 КРТЩ
 
04.02.14
14:58
к тому же у тебя левое соединение в запросе, а проверки на NULL нету
5 Maxus43
 
04.02.14
15:02
>>ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Ссылка = &ДокССылка

неправильно написал, надо ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка
6 КРТЩ
 
04.02.14
15:04
(5) XD
7 zak555
 
04.02.14
15:05
зачем ЗаявкаНаОткрытиеСчетов?
8 ultrannge89
 
04.02.14
18:08
(7) Просто решил упростить задачу кадровикам по формированию списков в сбербанк... Сначала выгружаю из приема на работу списки в заявки. И раз в неделю запускаю обработку которая обрабатывает их и создает xml файл.
9 Maxus43
 
04.02.14
18:51
>>задачу кадровикам по формированию списков в сбербанк
т.е. типовые обработки вас не устраивают?
10 Maxus43
 
04.02.14
18:52
в УПП это ИмпортЭкспортОперацийПоЛицевымСчетамРаботников, сиречь "Операции с лицевыми счетами сотрудников"
11 ultrannge89
 
04.02.14
20:14
Типовые и правлю, просто чуть охото поудобней сделать, попроще... Например хочу чтобы в документе приема по кнопочке создавался лицевой счет в заявке с комментарием создан +датасоздания, если уже имеется созданный то просто дописывался в текущий документ. При выгрузке обработкой ИпортЭкспортОперацийПоЛС, формируется на каждый документ свой файл, тоесть получается что вммеесто того чтобы получить 100 документов у меня будет 1. И если файл успешно создан в комментарий к нему пишется выгружен + датавыгрузки и уже соответственно не обрабатывается.
12 ultrannge89
 
04.02.14
20:20
Блин странная фигня.
    Запрос.Текст ="ВЫБРАТЬ ПЕРВЫЕ 1
                  |    ЗаявкаНаОткрытиеСчетов.Ссылка,
                  |    ЗаявкаНаОткрытиеСчетов.Дата
                  |ИЗ
                  |    Документ.ЗаявкаНаОткрытиеСчетов КАК ЗаявкаНаОткрытиеСчетов
                  |ГДЕ
                  |    ЗаявкаНаОткрытиеСчетов.ПометкаУдаления = ЛОЖЬ
                  |    И ЗаявкаНаОткрытиеСчетов.БанковскийСчет.Ссылка = &БанковскийСчет
                  |    И ЗаявкаНаОткрытиеСчетов.БанковскийСчет.Банк.Ссылка = &Банк
                  |    И ПОДСТРОКА(ЗаявкаНаОткрытиеСчетов.Комментарий, 0, 6) = ""Создан""
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    ЗаявкаНаОткрытиеСчетов.Дата УБЫВ";
    БанковскийСчет = Справочники.БанковскиеСчета.НайтиПоНаименованию("Зарплатный");
    Банк = Справочники.Контрагенты.НайтиПоНаименованию("Банк для перечисления зарплаты на карточки");
    Запрос.УстановитьПараметр("БанковскийСчет", БанковскийСчет);
    Запрос.УстановитьПараметр("Банк", Банк);
    Результат = Запрос.Выполнить();




Почему-то не проходит проверку на пустоту Результата
Хотя в консоле все отлично.
13 ultrannge89
 
04.02.14
20:42
Ладно пойду спать, со свежей головы может врублюсь где накасячил.
14 hhhh
 
04.02.14
20:44
(12) ЗаявкаНаОткрытиеСчетов.БанковскийСчет.Банк.Ссылка = &Банк

будет в 215 раз медленнее работать, чем

ЗаявкаНаОткрытиеСчетов.БанковскийСчет.Банк = &Банк

думаешь кадровики обрадуются, если у них обработка будет в 215 раз медленнее работать?
15 ultrannge89
 
05.02.14
05:56
И правда, утром думается легче...
Заменил параметр на
    Банк = Справочники.Банки.НайтиПоРеквизиту("КоррСчет", "ххххххххххххххх");
А было Банк = Справочники.Контрагенты.найтипонаименованию("блаблабла");
16 rphosts
 
05.02.14
06:08
(0)>ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен = ИСТИНА
и
>ЗаявкаНаОткрытиеСчетов.ПометкаУдаления = ЛОЖЬ

это плохой стиль!

(15) всё получилось?
17 Wobland
 
05.02.14
06:09
(16) это для отчётности не годно
18 rphosts
 
05.02.14
06:13
(17) что у него не получилось?
19 Wobland
 
05.02.14
06:20
(18) спасибо сказать у него не получилось. а так вроде всё хорошо
20 ultrannge89
 
05.02.14
06:32
Спасибо)))