Условие для Статуса заказа
Пишу код для Второго Вычисляемого поля в СКД.
Для поля по линии Заказа надо вывести общий статус в колонку СрокПоставки
Для номенклатурных позиций (временно закрасил белым) Срокпоставки подтягивается из общего модуля в Первое вычисляемое поле СКД.
Функция Первого вычисляемого поля СКД к примеру имеет вид ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки). Получаю напротив номенклатурных позиций статусы "Готов к отгрузке", "В резерве" (на фото).
Во втрое вычисляемое поле Пишу такой код, итог которого должен вывестись в поля по линии Заказа.
Как результат все хорошо, кроме заказа 5. (на фото) его разрывает, не смотря на первое условие в коде (КОГДА ... И .. ТОГДА)
"ИЛИ" срабатывает аналогично.
Какие еще варианты можно, чтобы в итоге получить для Заказа 5 именно "Отгружен частично" ?
Для поля по линии Заказа надо вывести общий статус в колонку СрокПоставки
Для номенклатурных позиций (временно закрасил белым) Срокпоставки подтягивается из общего модуля в Первое вычисляемое поле СКД.
Функция Первого вычисляемого поля СКД к примеру имеет вид ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки). Получаю напротив номенклатурных позиций статусы "Готов к отгрузке", "В резерве" (на фото).
Во втрое вычисляемое поле Пишу такой код, итог которого должен вывестись в поля по линии Заказа.
ВЫБОР
КОГДА (ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "Поставка:%"
И ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "Всё отгружено")
ТОГДА "Отгружен частично"
КОГДА ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "Всё отгружено"
ТОГДА "Всё отгружено!"
КОГДА ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "Всё в резерве"
ТОГДА "Готов к отгрузке"
КОГДА ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "В%%наличии% резерв%%"
ТОГДА "В резерве"
КОГДА ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "В%резерв%Отгружено:%"
ТОГДА "Отгружен частично"
КОГДА ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "В%%наличии%%поставк%%резерв%%"
ТОГДА "В резерве"
КОГДА ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "Поставка:%"
ИЛИ ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "Поставка %"
ТОГДА "Поставка " + ФОРМАТ(КоличествоДнейПоставки, "ЧЦ=; ЧДЦ=0")+ " дн."
ИНАЧЕ ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки)
КОНЕЦ
ПоказатьКак результат все хорошо, кроме заказа 5. (на фото) его разрывает, не смотря на первое условие в коде (КОГДА ... И .. ТОГДА)
"ИЛИ" срабатывает аналогично.
Какие еще варианты можно, чтобы в итоге получить для Заказа 5 именно "Отгружен частично" ?
Прикрепленные файлы:
По теме из базы знаний
- Помощник (мастер) оформления производственного заказа
- Реестр накладных по зонам доставки - отчет выводит заказы, зоны доставки, номенклатуру, вес и объем со статусами - УТ 11, КА 2, ЕРП
- Автоматическая обработка заказов, получаемых по электронной почте для 1С: Бухгалтерия предприятия 3.0
- Закрытие заказов клиента
- Помощник (мастер) оформления производственного заказа
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(3) У заказа 5 получаются разные статусы, отсюда и разрыв. Выведите колонку по который определяете статус и все станет понятно. Не надо гадать что не так.
Если срабатывает не то условие, значит значение не то, которое Вы ожидаете. Программа сама ничего придумывать не будет.
Если срабатывает не то условие, значит значение не то, которое Вы ожидаете. Программа сама ничего придумывать не будет.
(6)
вот эта функция (ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) определяет статус по отдельным номенклатурным позициям.
Статус по отдельным номенклатурным позициям выводится верным.
Для заказа общего статуса нет.
Я его формирую на основании статусов номенклатурных позиций, во втором вычисляемом поле СКД.
вот эта функция (ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) определяет статус по отдельным номенклатурным позициям.
Статус по отдельным номенклатурным позициям выводится верным.
Для заказа общего статуса нет.
Я его формирую на основании статусов номенклатурных позиций, во втором вычисляемом поле СКД.
Я вижу результат условия:
КОГДА (ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "Поставка:%"
И ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) ПОДОБНО "Всё отгружено")
ТОГДА "Отгружен частично" //Это мы видим
//а сам текст для сравнения не видим
//может выражение (ОпределитьСрокПоставки(ЗаказКлиента,КодСтроки) =" Поставка:%, Поставка: % Поставка %"
1) Можно выгрузить данные в промежуточную таблицу, обработать её программно и загрузить обратно в СКД.
Можно подготовить таблицу и загрузить в СКД.
Или помучится и "искаверкать" как нить так запрос, что бы брать один статус для всех строк из заказа.
На вскидку, создаете временную таблицу со всеми статусами, из этой таблицы выбираем наш заказ и после правильно сортировки выбираем первую запись. И эта запись и будет статусом для всех строк заказа.
Можно подготовить таблицу и загрузить в СКД.
Или помучится и "искаверкать" как нить так запрос, что бы брать один статус для всех строк из заказа.
На вскидку, создаете временную таблицу со всеми статусами, из этой таблицы выбираем наш заказ и после правильно сортировки выбираем первую запись. И эта запись и будет статусом для всех строк заказа.
Если предварительно подготовить таблицу, то добавить не набор данных запрос, а надор данных объект, описываем все поля из таблицы. И при компоновке подключить таблицу:
СтандартнаяОбработка = Ложь;
Таблица = ПолучаемНужнуюТаблицу();
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
//Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// - Если сделать так, как показано выше(рекомендуют на некоторых ресурсах), то при изменении настроек в режиме клиента
// этих изменений Вы не увидите, потому что настройки всегда будут по умолчанию. Как правильно - вариант ниже
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ВнешнийНаборДанных = Новый Структура("Таблица", Таблица);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Показать
Перечисление - это не где хранится, а всего лишь ограниченный список значений.
А статус заказа либо в самом заказе (ЗаказКлиента.СтатусЗаказа), либо рассчитывается динамически, либо хранится в регистре сведений. Так сказать в зависимости от того как придумали разработчики.
А статус заказа либо в самом заказе (ЗаказКлиента.СтатусЗаказа), либо рассчитывается динамически, либо хранится в регистре сведений. Так сказать в зависимости от того как придумали разработчики.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)