Здравствуйте, нужно чтоб из одного запроса одну строку делило на одно число, в другою строку делил на другое число.
Написал такой код делит все значения на одно число, может кто подскажет куда копать.
Запрос2 = Новый Запрос;
Запрос2.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос2.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоИнгредиенты.Количество КАК Итого,
| НарядНаПроизводствоИнгредиенты.Номенклатура,
| НарядНаПроизводствоИнгредиенты.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.НарядНаПроизводство.Ингредиенты КАК НарядНаПроизводствоИнгредиенты
|ГДЕ
| НарядНаПроизводствоИнгредиенты.Ссылка = &ТекущийДокумент";
Макет = ПолучитьМакет("Накладная");
Выборка2 = Запрос2.Выполнить().Выбрать();
Пока Выборка2.Следующий() Цикл
ОбластьПирожки = Макет.ПолучитьОбласть("Тесто2|Количество");
ОбластьПирожки.Параметры.Пирожки =Выборка2.Итого/2 ;
ТабДокумент.Вывести(ОбластьПирожки);
КонецЦикла;
Выборка2.Итого - всегда будет только два значения.
Написал такой код делит все значения на одно число, может кто подскажет куда копать.
Запрос2 = Новый Запрос;
Запрос2.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос2.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоИнгредиенты.Количество КАК Итого,
| НарядНаПроизводствоИнгредиенты.Номенклатура,
| НарядНаПроизводствоИнгредиенты.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.НарядНаПроизводство.Ингредиенты КАК НарядНаПроизводствоИнгредиенты
|ГДЕ
| НарядНаПроизводствоИнгредиенты.Ссылка = &ТекущийДокумент";
Макет = ПолучитьМакет("Накладная");
Выборка2 = Запрос2.Выполнить().Выбрать();
Пока Выборка2.Следующий() Цикл
ОбластьПирожки = Макет.ПолучитьОбласть("Тесто2|Количество");
ОбластьПирожки.Параметры.Пирожки =Выборка2.Итого/2 ;
ТабДокумент.Вывести(ОбластьПирожки);
КонецЦикла;
Выборка2.Итого - всегда будет только два значения.
По теме из базы знаний
- Как создать свою внешнюю печатную форму к обработкам АЛАНН
- Создание внешней печатной формы под УП с возможностью передачи параметров (для конфигураций на БСП)
- Внешняя печатная форма для Договора (работы, услуги) (ЗУП 3.1)
- Шаблон для разработки внешних печатных форм с отладкой
- Печать договора поставки для УТ 11.5, УТ 11.4, КА 2.4 и ERP 2.4 (внешняя печатная форма)
Найденные решения
(20) ну если надо пропустить первый результат то хотя бы так можно
н=1;
Пока Выборка2.Следующий() Цикл
Если н=1 Тогда
н=н+1;
Продолжить;
Иначе
ОбластьПирожки.Параметры.Пирожки =Выборка2.Итого/2 ;
ТабДокумент.Вывести(ОбластьПирожки);
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7)Функция ПечатьДокумента(СсылкаНаОбъект, СуммыВРублях = Ложь)
ТабДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоСоставБлюд.Номенклатура КАК Наименование,
| НарядНаПроизводствоСоставБлюд.Количество КАК Количество,
| НарядНаПроизводствоСоставБлюд.Единица
|ИЗ
| Документ.НарядНаПроизводство.СоставБлюд КАК НарядНаПроизводствоСоставБлюд
|ГДЕ
| НарядНаПроизводствоСоставБлюд.Ссылка = &ТекущийДокумент";
Выборка = Запрос.Выполнить().Выбрать();
Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос1.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоСоставБлюд.Номенклатура КАК Ингредиент,
| НарядНаПроизводствоСоставБлюд.Количество КАК Количество1
|ИЗ
| Документ.НарядНаПроизводство.СоставБлюд КАК НарядНаПроизводствоСоставБлюд
|ГДЕ
| НарядНаПроизводствоСоставБлюд.Ссылка = &ТекущийДокумент";
Выборка1 = Запрос1.Выполнить().Выбрать();
Запрос2 = Новый Запрос;
Запрос2.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос2.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоИнгредиенты.Количество КАК Итого,
| НарядНаПроизводствоИнгредиенты.Номенклатура,
| НарядНаПроизводствоИнгредиенты.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.НарядНаПроизводство.Ингредиенты КАК НарядНаПроизводствоИнгредиенты
|ГДЕ
| НарядНаПроизводствоИнгредиенты.Ссылка = &ТекущийДокумент";
Выборка2 = Запрос2.Выполнить().Выбрать();
Макет = ПолучитьМакет("Накладная");
Пока Выборка.Следующий() Цикл
ОбластьТовара = Макет.ПолучитьОбласть("Строка|Наименование");
ОбластьКоличества = Макет.ПолучитьОбласть("Строка|Количество");
ОбластьТовара.Параметры.Товар = Выборка.Наименование;
ОбластьКоличества.Параметры.Количество = Выборка.Количество;
ТабДокумент.Вывести(ОбластьТовара);
ТабДокумент.Присоединить(ОбластьКоличества);
КонецЦикла;
Пока Выборка2.Следующий() Цикл
ОбластьИтого = Макет.ПолучитьОбласть("Подвал|Количество");
ОбластьИтого.Параметры.Итого = Выборка2.Итого;
ОбластьНоменклатура = Макет.ПолучитьОбласть("Подвал|Наименование");
ОбластьНоменклатура.Параметры.Номенклатура = Выборка2.Номенклатура;
ТабДокумент.Вывести(ОбластьНоменклатура);
ТабДокумент.Присоединить(ОбластьИтого);
КонецЦикла;
Запрос3 = Новый Запрос;
Запрос3.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос3.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоИнгредиенты.Количество КАК Итого,
| НарядНаПроизводствоИнгредиенты.Номенклатура,
| НарядНаПроизводствоИнгредиенты.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.НарядНаПроизводство.Ингредиенты КАК НарядНаПроизводствоИнгредиенты
|ГДЕ
| НарядНаПроизводствоИнгредиенты.Ссылка = &ТекущийДокумент";
Выборка3 = Запрос3.Выполнить().Выбрать();
Пока Выборка3.Следующий() Цикл
ОбластьПирожки = Макет.ПолучитьОбласть("Тесто2|Количество");
ОбластьПирожки.Параметры.Пирожки =Выборка3.Итого/2;
ТабДокумент.Вывести(ОбластьПирожки);
КонецЦикла;
ТабДокумент.АвтоМасштаб = Ложь;
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу = 0;
ТабДокумент.ПолеСверху = 10;
ТабДокумент.ПолеСлева = 10;
ТабДокумент.ПолеСнизу = 10;
ТабДокумент.ПолеСправа = 10;
ТабДокумент.Защита = Ложь;
ТабДокумент.ОтображатьГруппировки = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.Показать();
Возврат ТабДокумент;
КонецФункции // ПечатьДокумента()
ТабДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоСоставБлюд.Номенклатура КАК Наименование,
| НарядНаПроизводствоСоставБлюд.Количество КАК Количество,
| НарядНаПроизводствоСоставБлюд.Единица
|ИЗ
| Документ.НарядНаПроизводство.СоставБлюд КАК НарядНаПроизводствоСоставБлюд
|ГДЕ
| НарядНаПроизводствоСоставБлюд.Ссылка = &ТекущийДокумент";
Выборка = Запрос.Выполнить().Выбрать();
Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос1.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоСоставБлюд.Номенклатура КАК Ингредиент,
| НарядНаПроизводствоСоставБлюд.Количество КАК Количество1
|ИЗ
| Документ.НарядНаПроизводство.СоставБлюд КАК НарядНаПроизводствоСоставБлюд
|ГДЕ
| НарядНаПроизводствоСоставБлюд.Ссылка = &ТекущийДокумент";
Выборка1 = Запрос1.Выполнить().Выбрать();
Запрос2 = Новый Запрос;
Запрос2.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос2.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоИнгредиенты.Количество КАК Итого,
| НарядНаПроизводствоИнгредиенты.Номенклатура,
| НарядНаПроизводствоИнгредиенты.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.НарядНаПроизводство.Ингредиенты КАК НарядНаПроизводствоИнгредиенты
|ГДЕ
| НарядНаПроизводствоИнгредиенты.Ссылка = &ТекущийДокумент";
Выборка2 = Запрос2.Выполнить().Выбрать();
Макет = ПолучитьМакет("Накладная");
Пока Выборка.Следующий() Цикл
ОбластьТовара = Макет.ПолучитьОбласть("Строка|Наименование");
ОбластьКоличества = Макет.ПолучитьОбласть("Строка|Количество");
ОбластьТовара.Параметры.Товар = Выборка.Наименование;
ОбластьКоличества.Параметры.Количество = Выборка.Количество;
ТабДокумент.Вывести(ОбластьТовара);
ТабДокумент.Присоединить(ОбластьКоличества);
КонецЦикла;
Пока Выборка2.Следующий() Цикл
ОбластьИтого = Макет.ПолучитьОбласть("Подвал|Количество");
ОбластьИтого.Параметры.Итого = Выборка2.Итого;
ОбластьНоменклатура = Макет.ПолучитьОбласть("Подвал|Наименование");
ОбластьНоменклатура.Параметры.Номенклатура = Выборка2.Номенклатура;
ТабДокумент.Вывести(ОбластьНоменклатура);
ТабДокумент.Присоединить(ОбластьИтого);
КонецЦикла;
Запрос3 = Новый Запрос;
Запрос3.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос3.Текст ="ВЫБРАТЬ
| НарядНаПроизводствоИнгредиенты.Количество КАК Итого,
| НарядНаПроизводствоИнгредиенты.Номенклатура,
| НарядНаПроизводствоИнгредиенты.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.НарядНаПроизводство.Ингредиенты КАК НарядНаПроизводствоИнгредиенты
|ГДЕ
| НарядНаПроизводствоИнгредиенты.Ссылка = &ТекущийДокумент";
Выборка3 = Запрос3.Выполнить().Выбрать();
Пока Выборка3.Следующий() Цикл
ОбластьПирожки = Макет.ПолучитьОбласть("Тесто2|Количество");
ОбластьПирожки.Параметры.Пирожки =Выборка3.Итого/2;
ТабДокумент.Вывести(ОбластьПирожки);
КонецЦикла;
ТабДокумент.АвтоМасштаб = Ложь;
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу = 0;
ТабДокумент.ПолеСверху = 10;
ТабДокумент.ПолеСлева = 10;
ТабДокумент.ПолеСнизу = 10;
ТабДокумент.ПолеСправа = 10;
ТабДокумент.Защита = Ложь;
ТабДокумент.ОтображатьГруппировки = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.Показать();
Возврат ТабДокумент;
КонецФункции // ПечатьДокумента()
Попробуй так
ОбластьПирожки = Макет.ПолучитьОбласть("Тесто2|Количество"); ///Выноси за цикл лучше
Пока Выборка2.Следующий() Цикл
ОбластьПирожки.Параметры.Пирожки =Выборка2.Итого/2 ;
ТабДокумент.Вывести(ОбластьПирожки);
ОбластьПирожки.Параметры.Пирожки =Выборка2;
ТабДокумент.Вывести(ОбластьПирожки);
КонецЦикла;
Показать
(20) ну если надо пропустить первый результат то хотя бы так можно
н=1;
Пока Выборка2.Следующий() Цикл
Если н=1 Тогда
н=н+1;
Продолжить;
Иначе
ОбластьПирожки.Параметры.Пирожки =Выборка2.Итого/2 ;
ТабДокумент.Вывести(ОбластьПирожки);
КонецЕсли;
Показать
(24) да просто поменяй местами код в операторе Если Иначе
и выведется результат только из первой выборки
н=1;
Пока Выборка2.Следующий() Цикл
Если н=1 Тогда
ОбластьПирожки.Параметры.Пирожки =Выборка2.Итого/2 ;
ТабДокумент.Вывести(ОбластьПирожки);
Иначе
н=н+1;
Продолжить;
КонецЕсли;
Показатьи выведется результат только из первой выборки
(28) Выборка4 = Запрос4.Выполнить().Выбрать();
н=1;
Пока Выборка4.Следующий() Цикл
Если н=1 Тогда
н=н+1;
Продолжить;
Иначе
ОбластьХотдоги = Макет.ПолучитьОбласть("Тесто");
ОбластьХотдоги.Параметры.Хотдоги =Выборка4.Итого/0.09/30 ;
ТабДокумент.Вывести(ОбластьХотдоги);
КонецЕсли;
н=1;
Пока Выборка4.Следующий() Цикл
Если н=1 Тогда
н=н+1;
Продолжить;
Иначе
ОбластьХотдоги = Макет.ПолучитьОбласть("Тесто");
ОбластьХотдоги.Параметры.Хотдоги =Выборка4.Итого/0.09/30 ;
ТабДокумент.Вывести(ОбластьХотдоги);
КонецЕсли;
(29) Если в запросе больше ДВУХ результатов , то такой костыль пропустит только Первый, но выведет второй и третий результаты, может быть поэтому у тебя две строки. ?
И уже делали замечание
Вот эту строку ОбластьХотдоги = Макет.ПолучитьОбласть("Тесто"); выведи из цикла, она должна быть ПЕРЕД циклом Пока
Напиши перед циклом Пока
Сообщить("В запросе 4 "+Выборка4.Количество()+" результатов");
и поймешь сколько раз тебе выведется строка, если костыль пропускает только Первый результат
И уже делали замечание
Вот эту строку ОбластьХотдоги = Макет.ПолучитьОбласть("Тесто"); выведи из цикла, она должна быть ПЕРЕД циклом Пока
Напиши перед циклом Пока
Сообщить("В запросе 4 "+Выборка4.Количество()+" результатов");
и поймешь сколько раз тебе выведется строка, если костыль пропускает только Первый результат
Сделай одним запросом, все проще должно быть
ВЫБРАТЬ
| НарядНаПроизводствоИнгредиенты.Количество КАК Итого,
| НарядНаПроизводствоИнгредиенты.Количество /2 КАК Итого2,
| НарядНаПроизводствоИнгредиенты.Номенклатура,
| НарядНаПроизводствоИнгредиенты.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.НарядНаПроизводство.Ингредиенты КАК НарядНаПроизводствоИнгредиенты
|ГДЕ
| НарядНаПроизводствоИнгредиенты.Ссылка = &ТекущийДокумент
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот