Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
1
1C 8.x

Как обратиться с Документа1 к реквизиту Документа2?

15.11.2010, 10:17. Показов 6666. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, я сделал из на основании документа1 - документ2, при этом записал в реквизит Документа2 значение, и сейчас хочу узнать по этому реквизиту делал ли я на основании Документ2 или нет, как это реализовать. Спасибо всем за ответы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2010, 10:17
Ответы с готовыми решениями:

Как Из Документа-объекта Обратиться К Реквизиту Формы?
Здравствуйте! Подскажите, пожалуйста, как из документа объекта обратиться к реквизиту формы этого...

Как обратиться к реквизиту справочника в модуле менеджера
Есть справочник Договоры Контрагентов в нем создан макет active document и команда. Подскажите как...

Как обратиться к реквизиту экранной формы в модуле документа?
Привет Всем Не подскажите как можно обратится к реквизиту многострочной части экранной формы из...

как можно обратиться к реквизиту справочника из модуля документа?
я пытаюсь вот таким образом: &НаКлиенте Процедура ПробегПриИзменении(Элемент)...

17
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.11.2010, 15:12 2
В документе1 нет сведений о документе2, поэтому делайте запрос с отбором по документу основание:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
Запрос = Новый ЗАпрос("ВЫБРАТЬ
    |   НалоговаяНакладная.Номер,
    |   НалоговаяНакладная.СуммаДокумента
    |ИЗ
    |   Документ.НалоговаяНакладная КАК НалоговаяНакладная
    |ГДЕ
    |   НалоговаяНакладная.ДокументОснование.Ссылка = &ДокументОснование");
Запрос.УстановитьПараметр("ДокументОснование", ЭтотОбект.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Док = Выборка.Ссылка.ПолучитьОбъект();
    НужныйРеквизит = Док.СуммаДокумента;
КонецЦикла;
1
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
15.11.2010, 15:23  [ТС] 3
Спасибо, вечерком попробую, что получится. И Уточнение НалоговаяНакладная это как документ2, То есть Документ2.МойРеквизит ИЗ Документ.Документ2 КАК Документ2 или я не так понял?
0
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.11.2010, 17:25 4
да, вы правильно поняли
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
15.11.2010, 22:07  [ТС] 5
Что-то не получается, хочу хоть просто получить и сообщить реквизит, но нет, хоть при вводе на основании ему присваивается уникальное значение
Вот что у меня получилось, но не работает
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Запрос = Новый Запрос;
            Запрос.Текст = "
        |ВЫБРАТЬ
        |       РеализацияТоваровУслуг.ВВодНаОснованииСервис
        |ИЗ
        |       Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |       РеализацияТоваровУслуг.Ссылка = &Ссылка" ;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
        Док = Выборка.Ссылка.ПолучитьОбъект();
        ВВодНаОснованииСервис = Док.ВВодНаОснованииСервис;
        Если Номер = ВВодНаОснованииСервис Тогда
        Сообщить (ВВодНаОснованииСервис);
        КонецЕсли;
КонецЦикла;
0
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
15.11.2010, 23:07 6
что-то вы сильно намудрили
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
15.11.2010, 23:43  [ТС] 7
Цитата Сообщение от Konctantin Посмотреть сообщение
что-то вы сильно намудрили
Да, если честно никак не могу понять как правильно делать запросы, от сейчас читаю в гугле, но не могу понять как именно обратится к тому реквизиту, который нужно.
Подскажите, а то уже голову сломал.
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
17.11.2010, 02:40  [ТС] 8
Подскажите, как все же сравнить номер квитанции с реквизитом Документ.РеализацияТоваровУслуг.ВводНаОснованииСервис, а то никак не получается. Спасибо.

Добавлено через 59 минут
Пока код запроса такой:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Запрос = Новый Запрос;
            Запрос.Текст =
        "ВЫБРАТЬ
        |   РеализацияТоваровУслуг.ВВодНаОснованииСервис КАК ВВодНаОснованииСервис
        |ИЗ
        |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |   РеализацияТоваровУслуг.ВВодНаОснованииСервис = &ВВодНаОснованииСервис";
        Запрос.УстановитьПараметр("ВВодНаОснованииСервис", Ссылка);
        Запрос.УстановитьПараметр("Номер", Номер);
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            Док = Выборка.Ссылка.ПолучитьОбъект();
        ВВодНаОснованииСервис = Док.ВВодНаОснованииСервис;
             Конеццикла;
       Если Номер = ВВодНаОснованииСервис Тогда
            Сообщить(ВВодНаОснованииСервис);
        Иначе
            Сообщить ("Не нашел");
            КонецЕсли;
           КонецЕсли;
Но ответ один: "Не нашел"
Что не так не могу понять, подскажите
0
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
17.11.2010, 09:30 9
Естественно работать не будет, что вы сравниваете??
Вы написали полнейший бред.
Никогда объекты разных типов не будут равны, да и тем более ссылка и номер

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"ВЫБРАТЬ
|       РеализацияТоваровУслуг.ВВодНаОснованииСервис КАК ВВодНаОснованииСервис
|ИЗ
|       Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
|       РеализацияТоваровУслуг.ВВодНаОснованииСервис = &ВВодНаОснованииСервис";
Запрос.УстановитьПараметр("ВВодНаОснованииСервис", Ссылка);
[COLOR="Red"]Запрос.УстановитьПараметр("Номер", Номер);// что это за бред? куда вы его прицепили[/COLOR]
 
// все необходимые отборы есть в запросе, или если нету, то добавьте туда
// работаем только с выборкой, и выводим то что есть.
Нашли = Ложь;
// да и сама выборка, если нужно получать данные только для чтения, то получать объект не надо
Пока Выборка.Следующий() Цикл
    //Док = Выборка.Ссылка.ПолучитьОбъект();
    Сообщить(Выборка.Ссылка.ВВодНаОснованииСервис);
    Нашли = Истина;
КонецЦикла;
 
Если Не Нашли Тогда
    Сообщить ("Не нашел");
КонецЕсли;
Могу посоветовать только посмотреть исходники конфигурации, как и что работает, а так же читать книжки.
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
17.11.2010, 14:36  [ТС] 10
Сделал так как вы написали, но результат "Не нашел", почему он не может показать значения ВводНаОснованииСервис, никак не могу понять,
Вот текст:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        "ВЫБРАТЬ
        |   РеализацияТоваровУслуг.ВВодНаОснованииСервис КАК ВВодНаОснованииСервис
        |ИЗ
        |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |   РеализацияТоваровУслуг.ВВодНаОснованииСервис = &ВВодНаОснованииСервис";
        Запрос.УстановитьПараметр("ВВодНаОснованииСервис", Ссылка);
        Выборка = Запрос.Выполнить().Выбрать();
        Нашли = Ложь;
        Пока Выборка.Следующий() Цикл
            Сообщить(Выборка.Ссылка.ВВодНаОснованииСервис);
        Нашли = Истина;
        КонецЦикла;
        Если Не Нашли Тогда
                Сообщить ("Не нашел");
           КонецЕсли;
PS. Книжки читаю, но на все не хватает времени, от и достаю добрых людей по глупым вопросам, и все же снова жду от вас ответа.
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
25.11.2010, 19:18  [ТС] 11
Спасибо за помощь, проблему решил таким способом:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Если ЗначениеЗаполнено(ЭлементыФормы.Работы.Значение) Тогда
            Нашел = Ложь;
            Док = Документы.РеализацияТоваровУслуг;
            Выборка = Док.Выбрать();
            ДокНомер = Выборка.ВВодНаОснованииСервис;
            Пока Выборка.Следующий() Цикл
                ДокНомер = Выборка.ВВодНаОснованииСервис;
           Если ДокНомер = Номер Тогда
        Нашел = Истина;  
        Сообщить("По документу створено Реалізацію за № "+Выборка.Номер);
            
    КонецЕсли;
       
КонецЦикла;
Если Нашел = Ложь Тогда
    Режим = РежимДиалогаВопрос.ДаНет;
                Ответ = Вопрос("По даному документу не створено Реалізацію", Режим, 0);
            Если Ответ = КодВозвратаДиалога.Да Тогда
             Возврат;
         Иначе
             Отказ = Ложь;
             КонецЕсли;
 
    КонецЕсли;
КонецЕсли;
0
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.11.2010, 21:56 12
Коллекции в 1С работают очень медленно, поэтому лучше использовать запросы, они намного быстрее и выполняются на сервере.
Да и не пойму, чем вас не устроило то решение что я предлагал, оно более оптимальное.
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
26.11.2010, 11:43  [ТС] 13
Что-то никак не получается сделать запросом, так - без проблем, но работает действительно медленно. Делал тем способом, что вы подсказали, но никакого результата, что не так делаю понять не могу. Подскажите, как то же сделать запросом. Спасибо
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
09.12.2010, 10:42  [ТС] 14
наконец-то решил проблему:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ ВВодНаОснованииСервис, Номер
        |ИЗ Документ.РеализацияТоваровУслуг";
        
        Результат = Запрос.Выполнить().Выбрать();
        Нашел = Ложь;
        Пока Результат.Следующий() Цикл
            ДокНомер = Результат.ВВодНаОснованииСервис;
            Если ДокНомер = Номер Тогда
        Нашел = Истина;  
        Сообщить("По документу створено Реалізацію за № "+Результат.Номер);
            
    КонецЕсли;
0
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
09.12.2010, 15:45 15
Это вы не решили, а усложнили, почему бы с помощью того же самого запроса и отбор не делать?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Запрос = Новый Запрос("ВЫБРАТЬ 
    |   РеализацияТоваровУслуг.Номер КАК Номер
    | ИЗ 
    |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    | ГДЕ
    |   РеализацияТоваровУслуг.ВВодНаОснованииСервис = &Номер");
Запрос.УстановитьПараметр("Номер", Номер);
Выборка = Запрос.Выполнить().Выбрать();
 
Нашел = Ложь;
 
Пока Результат.Следующий() Цикл
 
    Нашел = Истина;
    Сообщить("По документу створено Реалізацію за № "+Выборка.Номер);
 
КонецЦикла;
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
09.12.2010, 17:23  [ТС] 16
Это немножко не правильно! Но в принципе возможно. И все же результат даже такого запроса на лицо, он выполняется мгновенно несмотря на количество документов.


Подскажите, как сделать что бы в "Связанные документы" было видно какой документ был создан на основании
0
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
09.12.2010, 17:36 17
Конфигуратция -> Документы -> ИмяДокумента открыть главный конструктор документа
Далее переходим на вкладку "Ввод на основании", и видим, "Вводится на основании:", "Является основанием для:".
Вот тут указываются документы.

Далее, надо не забывать про отбор:
Идем в Конфигуратция -> Общие -> КритерииОтбора -> СтруктураПодчиненности, и там то же самое.
0
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 26
09.12.2010, 23:07  [ТС] 18
Цитата Сообщение от Konctantin Посмотреть сообщение
.

Далее, надо не забывать про отбор:
Идем в Конфигуратция -> Общие -> КритерииОтбора -> СтруктураПодчиненности, и там то же самое.
Нашел, но там нет Ввод на основании или что-то подобного. Что здесь выбрать?
0
09.12.2010, 23:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2010, 23:07
Помогаю со студенческими работами здесь

Как обратиться к реквизиту формы документа из внешней обработки
Добрый день) Появился такой вопрос - в модуле формы обработки пишу запрос к документу(нахожу...

Обратиться к реквизиту отчета, обычная форма
Подскажите пожалуйста, как можно обратиться к реквизиту отчета? Из модуля формы. Объект,...

Как в oracle обратиться к таблице и где и как в delphi 5 обратиться к бд?
как в oracle обратиться к таблице и где и как в delphi 5 обратиться к бд?

Как связать Справочник и РегистрНакопления по реквизиту
Ребят, помогите пожалуйста, уже много времени бьюсь, не знаю как сделать, вообщем, есть задание: ...

Как реквизит справочника подставить реквизиту документа
Всем привет!!! Начал изучать 1С нужно сделать чтобы при выборе сотрудника в ДокументеНаряд его...

Как назначить тип реквизиту непределенного типа?
Как назначить тип реквизиту табличной части документа (в данном случае реквизит называется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru