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

Как, связать док. и справочник?

Автор Eva686, 09 мая 2015, 14:58

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

Eva686

Здравствуйте, не подскажете один вопрос.
есть справочник "Аналитические коды" и Документы "Заказы"
Данные берутся из справочника для документа, а для создания новой колонки "бонусы"
в отчете, была создана таблица в справочнике в котом в каждом "аналитическом коде" есть "бонус" с условием.
таб
1. от 1 до 5 бонус 100
2. 0т 6 до 10 бонус 150
когда формируется отчет, он берет это условие из справочника,
но сами данные берутся из документа и получается 2-е условие не выполняется.
как связать, док. и справочник, чтобы условие выполнялось в отчете?

Дмитрий@

Что такое справочник аналитические коды и какая в нем хранится информация.
Как справочник аналитические коды связан с документом заказы.

ЦитироватьДанные берутся из справочника для документа, а для создания новой колонки "бонусы"
Какие данные берутся.

Цитироватьв отчете, была создана таблица в справочнике в котом в каждом "аналитическом коде" есть "бонус" с условием.
таб
1. от 1 до 5 бонус 100
2. 0т 6 до 10 бонус 150
Непонятно где хранится эта таблица, и что это за таблица.

Цитироватьполучается 2-е условие не выполняется
Почему должно выполнятся второе условие а не первое.

vitasw

Я б для началя сказал что у вас таблица задана не совсем корректно.
Обычно задается таблица вида
0-5
5-10
и читается как больше минимальной границы и меньше или равно максимальной. В противном случае у вас выподают цифры >5 и <6, 5,1; 5,2 и т.д. в вашу таблицу не попадут.
Что касается кода, то если я все правильоно понял, то в качестве примера:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказТовары.Материал,
| ЗаказТовары.Количество,
| ЗаказТовары.АналитическийКод
|ПОМЕСТИТЬ ВТМатериалы
|ИЗ
| Документ.Заказ.Товары КАК ЗаказТовары
|ГДЕ
| ЗаказТовары.Ссылка.Проведен
| И ЗаказТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| АналитическиекодыТаблицаКоэфициентов.Ссылка,
| АналитическиекодыТаблицаКоэфициентов.МинГраница,
| АналитическиекодыТаблицаКоэфициентов.МаксГраница,
| АналитическиекодыТаблицаКоэфициентов.Бонус
|ПОМЕСТИТЬ ВТКоэфф
|ИЗ
| Справочник.Аналитическиекоды.ТаблицаКоэфициентов КАК АналитическиекодыТаблицаКоэфициентов
|ГДЕ
| АналитическиекодыТаблицаКоэфициентов.Ссылка В
| (ВЫБРАТЬ
| ВТМатериалы.АналитическийКод
| ИЗ
| ВТМатериалы КАК ВТМатериалы)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТМатериалы.Материал,
| ВТМатериалы.Количество,
| ВложенныйЗапрос.Бонус
|ИЗ
| ВТМатериалы КАК ВТМатериалы
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ВТМатериалы.Материал КАК Материал,
| МАКСИМУМ(ВТКоэфф.Бонус) КАК Бонус
| ИЗ
| ВТМатериалы КАК ВТМатериалы
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКоэфф КАК ВТКоэфф
| ПО ВТМатериалы.АналитическийКод = ВТКоэфф.Ссылка
| И ВТМатериалы.Количество > ВТКоэфф.МинГраница
| И ВТМатериалы.Количество <= ВТКоэфф.МаксГраница
|
| СГРУППИРОВАТЬ ПО
| ВТМатериалы.Материал) КАК ВложенныйЗапрос
| ПО ВТМатериалы.Материал = ВложенныйЗапрос.Материал";

Запрос.УстановитьПараметр("Дата1", Дата1);
Запрос.УстановитьПараметр("Дата2", Дата2);

Eva686


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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
таб.Номенклатура,
таб.Дата,
таб.ПациентНаименование,
таб.НаправившаяОрганизация,
таб.НаправившийВрач,
таб.Ссылка,
таб.НоменклатураАналитическийКодМенеджеры,
таб.Проведен,
таб.ИсточникФинансирования,
таб.Количество,
таб.Дата1,
таб.Цена,
таб.ПроцентАвтоматическойСкидки,
таб.СуммаАвтоматическойСкидки,
таб.Сумма,
таб.НоменклатураАналитическийКодМенеджерыСсылка,
ЕСТЬNULL(АналитическиеКодыБонусы.Бонусы, 0) * таб.Количество КАК СуммаБонусов
ИЗ
таб КАК таб
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АналитическиеКоды.Бонусы КАК АналитическиеКодыБонусы
ПО таб.НоменклатураАналитическийКодМенеджерыСсылка = АналитическиеКодыБонусы.Ссылка
И таб.Количество <= АналитическиеКодыБонусы.По
И таб.Количество >= АналитическиеКодыБонусы.С





Если выполняется 1-е условие то бонус = 100.
Когда, должно выполнятся условие 2. бонус должен поменяться на 150
Но, 2-е условие не выполняется.

nemox

А строчка в запросе " 1 КАК Количество," Это как понять? Если у Вас всегда количество = 1, какие условия Вы хотите чтобы выполнялись?

Eva686

Цитата: nemox от 10 мая 2015, 13:02
А строчка в запросе " 1 КАК Количество," Это как понять? Если у Вас всегда количество = 1, какие условия Вы хотите чтобы выполнялись?
эта 1 подсчет всех строк в документе.
Я думаю если можно было бы сделать сумму из этого ко-во по отдельному "аналитическому коду", что бы выполнялось 2-е условие.
но не могу придумать как( вот и нужна помощь.

nemox

Вы загружаете данные во временную таблицу ТАБ где количество присваиваете 1 всем строкам всех документов, а потом сравниваете это 1 со справочником. Поэтому и не выполняется 2-ое условие. Как-то так

Дмитрий@

Цитироватьэта 1 подсчет всех строк в документе.
Я думаю если можно было бы сделать сумму из этого ко-во по отдельному "аналитическому коду", что бы выполнялось 2-е условие.
но не могу придумать как( вот и нужна помощь.
То есть вы не можете посчитать количество строк в документе?

Теги:

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

Рейтинг@Mail.ru

Поиск