Все доброго дня Подскажите как быть
Цель: При разноске обедов обрабатываются ручные ведомости, их несколько и бывают ситуации что в разных ведомостях пообедал один человек. Это ошибка и такого не должно быть. Как ввести проверку по эти трем позициям Обед/Ужин/Собойка
Вот запрос. В файле картинка отработки в Консоль. В запросе ужин и собойку пока не прописывал.
Цель: При разноске обедов обрабатываются ручные ведомости, их несколько и бывают ситуации что в разных ведомостях пообедал один человек. Это ошибка и такого не должно быть. Как ввести проверку по эти трем позициям Обед/Ужин/Собойка
Вот запрос. В файле картинка отработки в Консоль. В запросе ужин и собойку пока не прописывал.
Процедура СписокКолПриИзменении(Элемент)
// Вставить содержимое обработчика.
Строка = ЭлементыФормы.Список.ТекущиеДанные;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВедомостьРаздачиПищи.Список.(
| ФИОСотрудника,
| КолОбед,
| КолУжин,
| КолСобойка,
| КолМинВода
| ),
| ВедомостьРаздачиПищи.Ссылка КАК Документ,
| ВедомостьРаздачиПищи.МестоХранения,
| ВедомостьРаздачиПищи.Проведен
|ИЗ
| Документ.ВедомостьРаздачиПищи КАК ВедомостьРаздачиПищи
|ГДЕ
| КОНЕЦПЕРИОДА(ВедомостьРаздачиПищи.Дата, ДЕНЬ) = КОНЕЦПЕРИОДА(&Дата, ДЕНЬ)
| И ВедомостьРаздачиПищи.Список.ФИОСотрудника = &ФИОСотрудника
| И ВедомостьРаздачиПищи.Проведен = &Проведен";
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Проведен", ИСТИНА);
Запрос.УстановитьПараметр("ФИОСотрудника", Строка.ФИОСотрудника);
Результат = Запрос.Выполнить();
//Массив = Результат.Выгрузить();
//СтрокиЗапроса = Массив.ВыгрузитьКолонку("Список");
//КоличествоСтрокЗапроса = СтрокиЗапроса.Количество();
//Массив[0].Список[0]
//СтрокиЗапроса[] = Массив.ВыгрузитьКолонку("КолОбед");
Если Результат.Пустой() тогда
Строка = ЭлементыФормы.Список.ТекущаяСтрока;
Строка.СуммаОбеда = СтоимостьОбеда * Строка.КолОбед;
Строка.СуммаУжина = СтоимостьУжина * Строка.КолУжин;
Строка.СуммаСобойка = СтоимостьСобойки * Строка.КолСобойка;
Строка.СуммаМинВода = СтоимостьМинВоды * Строка.КолМинВода;
РасчетПолнойСтоимости();
РасчетЛьготнойСтоимости();
Иначе
Пока Выборка.Следующий() Цикл
Документ = Выборка.Документ;
Склад = Выборка.МестоХранения;
Обед = Выборка.Список.Колонки.КолОбед;
//СтрокиЗапроса = Массив.ВыгрузитьКолонку("Список");
//СтрокиЗапроса1 = Массив.ВыгрузитьКолонку("КолОбед");
КонецЦикла;
Если Обед > 0 Тогда
Обед = "обедал";
Предупреждение("Он уже " + Обед + " у " + Склад + " (" + Документ + ")" );
Иначе
Строка = ЭлементыФормы.Список.ТекущаяСтрока;
Строка.СуммаОбеда = СтоимостьОбеда * Строка.КолОбед;
Строка.СуммаУжина = СтоимостьУжина * Строка.КолУжин;
Строка.СуммаСобойка = СтоимостьСобойки * Строка.КолСобойка;
Строка.СуммаМинВода = СтоимостьМинВоды * Строка.КолМинВода;
РасчетПолнойСтоимости();
РасчетЛьготнойСтоимости();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Ну так это у вас вложенная таблица в запросе. Для её обхода надо ещё раз выполнить запрос:
Только это не правильно. У вас в этом запросе всегда будет количество обедов = 1. А вот одинаковых физ лиц запросто может быть несколько.
Результат = Запрос.Выполнить();
Пока Выборка.Следующий() Цикл
ВложеннаяТаблицаВыборка = Выборка.Список.Выбрать(); // Или может Выборка.ВедомостьРаздачиПищиСписок
Пока ВложеннаяТаблицаВыборка .Следующий() Цикл
// Действия
КонецЦикла;
КонецЦикла;
ПоказатьТолько это не правильно. У вас в этом запросе всегда будет количество обедов = 1. А вот одинаковых физ лиц запросто может быть несколько.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот