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

Как Запросом выбрать данные Документа-Основания?

Автор Nail2010, 28 фев 2011, 10:45

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

Nail2010

Добрый день!
Вопрос может и на удивление простой, но все таки...
На основании документов "РеализацияТоваровУслуг" и "ЗаказПокупателя" вводиться "Приходно-кассовый ордер"
Текст моего запроса: "ВЫБРАТЬ
                |   ПриходныйКассовыйОрдер.ДокументОснование.Ссылка
                |ИЗ
                |   Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер";

Нужно то всего - условие ГДЕ - ДокументОснование.Ссылка= ?????????? Что? (&Ссылка, &ДокументОснованиеСсылка?)
И самое противное - как установить параметр, нужный для данной выборки?
И вторая половина задачи - В реквизите КОММЕНТАРИЙ этих 2-х документов - оснований нужно программно прописать "Приходный кассовый ордер"... тип реквизита, конечно, строка.
Жду ваших вариантов!


Klyacksa

Приветствую!
Это Вы запрос где пишете? В обработке заполнения?
И зачем Вам запрос? Запросом вы не получите никакое Основание, его нет в базе, оно есть только в обработке заполнения нового объекта, и после записи вы уже не узнаете, на основании чего был создан документ.

Если писать в Обработке заполнения ПКО, то там есть параметр Основание. К нему и нужно обращаться. Основание - это уже и будет ссылка на документ РТУ или ЗаказПокупателя.

Чтобы прописать Комментарий:
ДокОснование=Основание.ПолучитьДокумент();
ДокОснование.Комментарий="Пишем нужный нам комментарий";
ДокОснование.Записать();

xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

В ПКО надо завести реквизит ДокументОснование и заполнять его в ОбработкеЗаполнения

ДокументОснование = Основание.Ссылка;

По другому никак не узнаете документ-основание.

Задача 2. После изменений (см. выше) перебирайте все ПКО и по реквизиту ДокументОснование получайте нужный документ и устанавливайте нужный комментарий...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Klyacksa

ЦитироватьВ ПКО надо завести реквизит ДокументОснование и заполнять его в ОбработкеЗаполнения
Это только если в дальшнейшем нужно хранить ссылку на документ-основание. Но как правило, достаточно знания документа-основания в момент обработки заполнения нового объекта.

Я так понимаю, вся задача изначально состояла в том, чтобы при вводе на основании в доке-основании прописывался комментарий. Тогда не вижу смысла добавлять еще и реквизит.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

У него еще Задача1 - в запросе каким то образом отбирать по документу-основанию...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Хотя... Если Задача1 нужна для осуществления Задачи2...
То вполне можно обойтись и без реквизита...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Nail2010

Реквизит в обоих документах добавлен изначально, в этом то и фишка. Спасибо за ответ! Насчет коммента - ценная информация.
Заказ клиента таков: После ввода примерно 10000 документов начальство решило отсортировать Заказы покупателей и реализациюТоваровУслуг. Условие сортировки - Отобрать те документы, на основании которых вводился "Приходный кассовый ордер". В иотге данные обработки имеют следующий вид: На 100 записей "Заказа Покупателей" приводиться 2 записи "реализацияТоваровУслуг". Данные выводяться в таблицу следующим кодом:

                               Выборка=Запрос.Выполнить().Выбрать();         
   Пока Выборка.Следующий() Цикл;
      СтрокаТабличнойЧасти=ДокВыбор.Добавить();
      СтрокаТабличнойЧасти.ЗаказПокупателя=Выборка.ДокументОснованиеСсылка;
   КонецЦикла;
   Запрос2=Новый Запрос;
   запрос2.Текст="ВЫБРАТЬ
                 |   ПриходныйКассовыйОрдер.ДокументОснование.Ссылка
                 |ИЗ
                 |   Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер";
   Выборка=Запрос2.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл;
      СтрокаТабличнойЧасти=ТоварыУслуги.Добавить();
      СтрокаТабличнойЧасти.РеализацияТоваровИУслуг=выборка.ДокументОснованиеСсылка;

теперь моя задача - освободиться от ненужных пустых строк.... в этом то и суть.

Klyacksa

2 cska-fanat-kz
меня терзают смутные сомнения, что отобрать по документу-основанию товарисч хотел именно текущий документ-основание, чтобы прописать комментарий... но для этих целей запрос вовсе и не обязателен.

Ждем аффтара...
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Nail2010

А забыл сказать что в табличной части типы реквизитов разные - один Докссылка Заказ покупателей, а другой - соответственно ДокСсылка РеализацияТоваров...

cska-fanat-kz

Что значит "в обоих документах"?

Реквизит ДокументОснование находится в ОДНОМ документе ПКО!
А вот значений может быть 2 - ДокументСсылка.Реализация и ДокументСсылка.Заказ.

"теперь моя задача - освободиться от ненужных пустых строк...."
Вот этом случае ИМХО без реквизита не обойтись...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск