У меня есть документ Заказ, в нем две вкладки ТЧ Блюда и ТЧ Ингредиенты, сначала я заполняю блюда( наименование, кол-во порций и т.д), далее нажимаю на кнопку заполнить ингредиенты и во вкладке Ингредиенты с учетом порций заполняются ингредиенты, далее перед проведением проходит проверка на наличие этих ингредиентов на складе, и если не хватает то выводится сообщение что такого-то ингредиента не хватает. А как мне сделать чтобы выводилось еще и блюдо в какое входит этот ингредиент???? Скорее всего это нужно что-то в запросе изменить, но у меня не получается. Помогите пожалуйста.
Вот проверка
Процедура ОбработкаПроведения(Отказ, Режим)
// проверяем остатки
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Ингредиенты.Ингредиент КАК Ингредиент,
| СУММА(Ингредиенты.КоличествоИнгредиентов) КАК КоличествоИнгредиентов
|ПОМЕСТИТЬ ВтИнгридиенты
|ИЗ
| Документ.Заказ.ПереченьИнгредиентов КАК Ингредиенты
|ГДЕ
| Ингредиенты.Ссылка = &ТекущийДокумент
|СГРУППИРОВАТЬ ПО
| Ингредиенты.Ингредиент
|;
|///////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВтИнгридиенты.Ингредиент КАК Товар,
| ВтИнгридиенты.КоличествоИнгредиентов КАК Количество,
| ЕСТЬNULL(ОстаткиТоваров.КоличествоОстаток, 0) КАК КоличествоОстаток
|ИЗ
| ВтИнгридиенты КАК ВтИнгридиенты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&Период, Товар В (ВЫБРАТЬ ВтИнгридиенты.Ингредиент ИЗ ВтИнгридиенты КАК ВтИнгридиенты )) КАК ОстаткиТоваров
| ПО ВтИнгридиенты.Ингредиент = ОстаткиТоваров.Товар
|";
Запрос.УстановитьПараметр("Период", Дата);
Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
Движения.ОстаткиТоваров.Записывать = Истина;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
Сообщить("Недостаточно товара - "+Выборка.Товар+", необходимо - "+Выборка.Количество+", в наличии - "+Выборка.КоличествоОстаток );
Отказ = Истина;
Продолжить;
КонецЕсли;
Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
ЗаполнитьЗначенияСвойств(Движение, Выборка);
Движение.Период = Дата;
Движение.Регистратор = Ссылка;
КонецЦикла;
КонецПроцедуры
! | http://pro1c.org.ua/index.php?act=announce&id=2: 4,5 |
Светлана0000 @ Сегодня, 11:38
,
Идите от простого к сложному. Сделайте в отдельной обработке запрос который по ссылке на инградиент выведет все товары куда он входит. И потом далее делайте...
Из вопроса не понятна как у вас хранятся борщи и картошка и что такое ВтИнгридиенты.
хакерок @ Сегодня, 17:40
,
У меня есть справочники Блюда(где хранятся борщи) и Ингредиенты(где картошка). В справочнике блюда есть ТЧ Ингредиенты.
А ВТИнгредиенты это названия временной таблицы.
А вы не подскажите как выглядит такой запрос, который по ссылке показывает куда входит ингредиент?
Светлана0000 @ 17.03.18, 20:15
,
&НаСервере
Процедура ВКакихБлюдахНаСервере()
Ингредиент = Справочники.Ингредиенты.НайтиПоНаименованию("Картопля");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Блюда.Ссылка КАК Блюдо
|ИЗ
| Справочник.Блюда КАК Блюда
|ГДЕ
| Блюда.Ингредиенты.Ингредиент = &Ингредиент";
Запрос.УстановитьПараметр("Ингредиент", Ингредиент);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Строка(ВыборкаДетальныеЗаписи.Блюдо);
Сообщение.Сообщить();
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВКакихБлюдах(Команда)
ВКакихБлюдахНаСервере();
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua