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