Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / ТипЦен в запросе / 9 сообщений из 9, страница 1 из 1
14.01.2013, 17:22
    #38109668
Сергей1981
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
Есть запрос, позволяющий выгружать данные в прайс-лист:

Запр = Новый Запрос;
Запр.Текст = "ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Код КАК Код,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул КАК Артикул,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаХраненияОстатков КАК Ед,
| СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
| СкидкиНаценкиНоменклатурыСрезПоследних.ПолучательСкидки КАК ПолучательСкидки1,
| СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки,
| ВЫБОР
| КОГДА ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ДатаОкончания, &ТекДата) > &ТекДата
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена - ЦеныНоменклатурыСрезПоследних.Цена * ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки, 0) / 100
| ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена
| КОНЕЦ КАК ЦенаНов,
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура2,
| ТоварыНаСкладахОстатки.Склад КАК Склад,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &ТекДата,
| ТипЦен = &ТипЦен
| И Номенклатура.ПопадаетВПрайсЛист) КАК ЦеныНоменклатурыСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&ТекДата, ПолучательСкидки = &ПолучательСкидки) КАК СкидкиНаценкиНоменклатурыСрезПоследних
| ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата, Склад = &Склад) КАК ТоварыНаСкладахОстатки
| ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Код,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаХраненияОстатков,
| СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура,
| СкидкиНаценкиНоменклатурыСрезПоследних.ПолучательСкидки,
| СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки,
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.Склад,
| ВЫБОР
| КОГДА ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ДатаОкончания, &ТекДата) > &ТекДата
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена - ЦеныНоменклатурыСрезПоследних.Цена * ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки, 0) / 100
| ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена
| КОНЕЦ,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура
|ИТОГИ ПО
| Номенклатура ИЕРАРХИЯ";

Запр.Параметры.Вставить("ТипЦен",Контрагент.ОсновнойДоговорКонтрагента.ТипЦен);
Запр.Параметры.Вставить("ПолучательСкидки",Контрагент);
Запр.Параметры.Вставить("Склад",Склад);
Запр.Параметры.Вставить("ТекДата",ТекущаяДата());
Запр.Параметры.Вставить("набор",Справочники.ВидыНоменклатуры.НайтиПоКоду("000000003"));

ТБЗ = Запр.Выполнить().Выгрузить();
ТБЗ.ВыбратьСтроку();
Выборка = Запр.Выполнить().Выбрать(ОбходРезультатаЗапроса.Прямой);
Почему в поле выбора по некоторым контрагентам, где отсутствует основной договор(выделен жирным шрифтом) пусто, а по остальным заполнение идет? Как реализовать, чтобы был отбор по всем контрагентам?
...
Рейтинг: 0 / 0
14.01.2013, 17:29
    #38109676
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
Потому что Контрагент.ОсновнойДоговорКонтрагента.ТипЦен - пустое, если договор пустой
...
Рейтинг: 0 / 0
14.01.2013, 17:33
    #38109684
Сергей1981
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
А как тогда сделать чтобы по договорам из базы шел отбор в поле выбора?
...
Рейтинг: 0 / 0
14.01.2013, 17:46
    #38109710
chatm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
Сергей1981,

попробуйте переформулировать вопрос в терминах множеств и получите текст запроса
...
Рейтинг: 0 / 0
14.01.2013, 19:39
    #38109905
Сергей1981
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
Я так понимаю:

// проверка основного договора контрагента
Если НЕ Контрагент.ОсновнойДоговорКонтрагента.ВидДоговора = "с покупателем" И НЕ Контрагент.ОсновнойДоговорКонтрагента.Организация = "Наша организация" Тогда
Запр = Новый Запрос;
Запр.Текст = "ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Код КАК Код,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул КАК Артикул,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаХраненияОстатков КАК Ед,
| СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
| СкидкиНаценкиНоменклатурыСрезПоследних.ПолучательСкидки КАК ПолучательСкидки1,
| СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки,
| ВЫБОР
| КОГДА ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ДатаОкончания, &ТекДата) > &ТекДата
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена - ЦеныНоменклатурыСрезПоследних.Цена * ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки, 0) / 100
| ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена
| КОНЕЦ КАК ЦенаНов,
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура2,
| ТоварыНаСкладахОстатки.Склад КАК Склад,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &ТекДата,
| ТипЦен = &ТипЦен
| И Номенклатура.ПопадаетВПрайсЛист) КАК ЦеныНоменклатурыСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&ТекДата, ПолучательСкидки = &ПолучательСкидки) КАК СкидкиНаценкиНоменклатурыСрезПоследних
| ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата, Склад = &Склад) КАК ТоварыНаСкладахОстатки
| ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Код,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаХраненияОстатков,
| СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура,
| СкидкиНаценкиНоменклатурыСрезПоследних.ПолучательСкидки,
| СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки,
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.Склад,
| ВЫБОР
| КОГДА ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ДатаОкончания, &ТекДата) > &ТекДата
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена - ЦеныНоменклатурыСрезПоследних.Цена * ЕСТЬNULL(СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки, 0) / 100
| ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена
| КОНЕЦ,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура
|ИТОГИ ПО
| Номенклатура ИЕРАРХИЯ";

Запр.Параметры.Вставить("ТипЦен", Контрагент.ОсновнойДоговорКонтрагента.ТипЦен) ;
Запр.Параметры.Вставить("ПолучательСкидки",Контрагент);
Запр.Параметры.Вставить("Склад",Склад);
Запр.Параметры.Вставить("ТекДата",ТекущаяДата());
Запр.Параметры.Вставить("набор",Справочники.ВидыНоменклатуры.НайтиПоКоду("000000003"));

ТБЗ = Запр.Выполнить().Выгрузить();

ТБЗ.ВыбратьСтроку();
Выборка = Запр.Выполнить().Выбрать(ОбходРезультатаЗапроса.Прямой);

Иначе
Сообщить("такого договора нет");
КонецЕсли;
...
Рейтинг: 0 / 0
14.01.2013, 23:37
    #38110103
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
Сергей1981Если НЕ Контрагент.ОсновнойДоговорКонтрагента.ВидДоговора = "с покупателем" И НЕ Контрагент.ОсновнойДоговорКонтрагента.Организация = "Наша организация" ТогдаСергей - у Вас КУЧА ошибок. Поучитесь пожалуйста на курсах. И желательно именно основы поймите.
...
Рейтинг: 0 / 0
15.01.2013, 11:02
    #38110360
chatm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
Программист 1сСергей1981Если НЕ Контрагент.ОсновнойДоговорКонтрагента.ВидДоговора = "с покупателем" И НЕ Контрагент.ОсновнойДоговорКонтрагента.Организация = "Наша организация" ТогдаСергей - у Вас КУЧА ошибок. Поучитесь пожалуйста на курсах. И желательно именно основы поймите.

Поддерживаю. Есть в конце концов nasf.ru , intuit - там полно бесплатных видеоуроков
...
Рейтинг: 0 / 0
15.01.2013, 12:19
    #38110483
Сергей1981
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
я ошибся: Если Не ВидДоговора = Перечисления.ВидыДоговоров.СПокупателем И Не Контрагент.ОсновнойДоговорКонтрагента.Организация = Справочники.Организации.НайтиПоКоду("00001") Тогда
...
Рейтинг: 0 / 0
15.01.2013, 12:24
    #38110489
Сергей1981
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ТипЦен в запросе
вернее Если Не Контрагент.ОсновнойДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем как-то так
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / ТипЦен в запросе / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]