Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Создание подчиненных документов на основании документа "Счет на оплату покупателю"          
PavlovaYA Подменю пользователя
сообщение 28.10.16, 14:57
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день. Помогите пожалуйста новичку в программировании.
Создаю внешнюю обработку, по которой на основании документа "Счет на оплату покупателю" можно создать подчиненные документы "Реализация товаров и услуг" и "Платежное поручение".
Проблема в том, что по "Счету на оплату покупателю" №В0000000313 по документу "Платежное поручение" дублируетя в три строки хоть документ "Реализация товаров и услуг" всего один.
Скриншоты прилагаю:




        Запрос = Новый Запрос();
        Запрос.Текст =  "ВЫБРАТЬ
                        |    СчетНаОплатуПокупателю.Ссылка,
                        |    СчетНаОплатуПокупателю.Проведен,
                        |    СчетНаОплатуПокупателю.Дата,
                        |    СчетНаОплатуПокупателю.Организация,
                        |    СчетНаОплатуПокупателю.Контрагент,
                        |    СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаДокумента,
                        |    РеализацияТоваровУслуг.Ссылка КАК СсылкаРеализации,
                        |    РеализацияТоваровУслуг.Проведен КАК ПроведенРеализации,
                        |    ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка КАК СсылкаПлатежноеПоручение,
                        |    ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Проведен КАК ПроведенПоручение
                        |ИЗ
                        |    Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
                        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                        |        ПО (РеализацияТоваровУслуг.Сделка = СчетНаОплатуПокупателю.Ссылка)
                        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящееРасшифровкаПлатежа
                        |        ПО (ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Сделка = СчетНаОплатуПокупателю.Ссылка)
                        |ГДЕ
                        |    СчетНаОплатуПокупателю.Дата МЕЖДУ &Дата1 И &Дата2"+
        ?(ЗначениеЗаполнено(Контрагент)," И СчетНаОплатуПокупателю.Контрагент = &Контрагент","")+
        ?(ЗначениеЗаполнено(Организация)," И СчетНаОплатуПокупателю.Организация = &Организация" ,"")+
        ?(ЗначениеЗаполнено(Договор)," И СчетНаОплатуПокупателю.ДоговорКонтрагента = &ДоговорКонтрагента","")+"";
    КонецЕсли;                
    
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.УстановитьПараметр("Контрагент",Контрагент);
    Запрос.УстановитьПараметр("ДоговорКонтрагента",Договор);
    Запрос.УстановитьПараметр("Дата1",ДатаНач);
    Запрос.УстановитьПараметр("Дата2",КонецДня(ДатаКон));
    Результат = Запрос.Выполнить().Выгрузить();
    
    Таблица.Очистить();
    Для Каждого Стр из Результат Цикл
        НоваяСтрока = Таблица.Добавить();
        Если Стр.Проведен = Истина Тогда
            НоваяСтрока.Состояние = "Проведен";
        Иначе
            НоваяСтрока.Состояние = "";
        КонецЕсли;
        НоваяСтрока.Документ = Стр.Ссылка;
        Если Стр.ПроведенРеализации = Истина Тогда
            НоваяСтрока.ДокументРеализации = Стр.СсылкаРеализации;
        КонецЕсли;
        Если Стр.ПроведенПоручение = Истина Тогда
            НоваяСтрока.ДокументПлатежноеПоручение = Стр.СсылкаПлатежноеПоручение;
        КонецЕсли;
        НоваяСтрока.Контрагент = Стр.Контрагент;
        НоваяСтрока.Сумма = Стр.СуммаДокумента;
    КонецЦикла;



podcast Подменю пользователя
сообщение 28.10.16, 15:12
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 306
Спасибо сказали: 75 раз
Рейтинг: 0

PavlovaYA @ Сегодня, 15:57 * ,
Я конечно не уверен, но у вас в запросе что то не так мне кажется.
ВЫБРАТЬ
    СчетНаОплатуПокупателю.Ссылка,
    СчетНаОплатуПокупателю.Проведен,
    СчетНаОплатуПокупателю.Дата,
    СчетНаОплатуПокупателю.Организация,
    СчетНаОплатуПокупателю.Контрагент,
    СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаДокумента,
    ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка КАК СсылкаПлатежноеПоручение,
    ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Проведен КАК ПроведенПоручение
ПОМЕСТИТЬ ВТ_Счет
ИЗ
    Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящееРасшифровкаПлатежа
        ПО (ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Сделка = СчетНаОплатуПокупателю.Ссылка)
ГДЕ
    СчетНаОплатуПокупателю.Дата МЕЖДУ &Дата1 И &Дата2
    И СчетНаОплатуПокупателю.Контрагент = &Контраген
    И СчетНаОплатуПокупателю.Организация = &Организация
    И СчетНаОплатуПокупателю.ДоговорКонтрагента = &ДоговорКонтрагента
;

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

Попробуйте так.

logist Подменю пользователя
сообщение 28.10.16, 15:16
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Ваш запрос так построен. Левое соединение работает для каждого правого, поэтому будет столько строк сколько найдется соединений. В данном случае у вас в платежке вероятно по три строки, поэтому такую таблицу надо брать вложенным запросом что бы свернуть, и в итоге вышла одна ссылка.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

PavlovaYA Подменю пользователя
сообщение 28.10.16, 15:54
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 15:16 * ,

Вот таким образом?

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

logist Подменю пользователя
сообщение 28.10.16, 15:56
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(PavlovaYA @ 28.10.16, 16:54) *
Вот таким образом?

Да только вложенный запрос не по РТУ а по Платежкам.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: PavlovaYA,

PavlovaYA Подменю пользователя
сообщение 28.10.16, 16:32
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 15:56 * ,
Спасибо, но все-таки по РТУ получается нужный результат.

Я указываю что "РеализацияТоваровУслуг.Проведен = ИСТИНА" и этих строк не нужных нет.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 21.06.25, 22:10
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!