Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 03:57

Как добавить текущую и предыдущую строку в ТЗ (ВПФ)

Автор Elfidor, 23 дек 2019, 13:44

0 Пользователей и 1 гость просматривают эту тему.

Elfidor

Добрый день товарищи! В сфере 1С ещё не так давно и всё ещё возникают вопросы. Большая просьба помочь или хотя бы немного подтолкнуть. Буду безмерно благодарен!
Дело в том, что во ВПФ нужно сделать отбор, если в один товар входит более 1й комплектующей, тогда надо вывести под строкой товары строки с его комплектующими(по типу дерева как в отчётах).
На сам товар уже наложено куча отборов, дабы нормально всё выводилось, и я придумал создать ещё одну ТЗ куда бы вылетали все комплектующие относящиеся к одному товару с разными ШК.... Но вот в чём проблема, отбор то я написал, но у меня в ТЗ вылетает только текущая строка, которую обходит цикл, а предыдущая(которая не равна ей) нет! Цикл по текущей строке трогать не могу иначе всё остальное полетит к черту, а вот как объяснить программе что мне нужна эта и предыдущая строка - не знаю... Можете подсказать, пожалуйста?
Вот кусочек кода... я пока писал это уже начал думать может написать вообще отдельный цикл для этого дела, но мне кажется что проблему это не решит так как обходить оно будет всё равно ТекСтроку...


Штрихкоды = "";
Если СтрДлина(Штрихкоды)>1  Тогда
Штрихкоды = Сред(Штрихкоды,1,СтрДлина(Штрихкоды)-2);
КонецЕсли;


ТабЗначений = Новый ТаблицаЗначений;

ТабЗначений = РезультатЗапроса[0].Выгрузить();

ТаблицаЗнач2 = ТабЗначений.Скопировать();
ТаблицаЗнач2.Очистить();

ТаблицаЗначенийК = ТабЗначений.Скопировать();
ТаблицаЗначенийК.Очистить();


ТабЗначений.Сортировать("Товар, Характеристика, Комплектующая, ДокументРезерва");

ТекНоменклатура = Неопределено;
ТекХарактеристика = Неопределено;
ТекДокументРезерва = Неопределено;
ТекКомплектующая = Неопределено;
ТекШтрихкод = Неопределено;

НоваяСтрока = "";

Для каждого ТекСтрока ИЗ ТабЗначений Цикл

Если   ТекНоменклатура = ТекСтрока.Номенклатура        И ТекХарактеристика = ТекСтрока.Характеристика
И ТекДокументРезерва = ТекСтрока.ДокументРезерва 
Тогда
        Если  ТекШтрихкод = 0 Тогда
НоваяСтрока.Штрихкоды = НоваяСтрока.Штрихкоды + ТекСтрока.Штрихкоды;
//НоваяСтрока.Идентификатор = НоваяСтрока.Идентификатор + ТекСтрока.Идентификатор;
ИначеЕсли ТекШтрихкод = ТекСтрока.Штрихкоды Тогда
НоваяСтрока.Штрихкоды = НоваяСтрока.Штрихкоды;
//НоваяСтрока.Штрихкоды = НоваяСтрока.Штрихкоды + ", " + ТекСтрока.Штрихкоды;
//ДанныеДляСтрокиКомплектующих(ТекНоменклатура,ТекСтрока.Комплектующая);
ИначеЕсли ТекКомплектующая <> ТекСтрока.Комплектующая И ТекХарактеристика = ТекСтрока.Характеристика Тогда
НоваяСтрока = ТаблицаЗначенийК.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);
КонецЕсли;
Иначе
НоваяСтрока = ТаблицаЗнач2.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);

КонецЕсли;


ТекКомплектующая = ТекСтрока.Комплектующая;
ТекНоменклатура = ТекСтрока.Номенклатура;
ТекХарактеристика = ТекСтрока.Характеристика;
ТекДокументРезерва = ТекСтрока.ДокументРезерва;
ТекШтрихкод = ТекСтрока.Штрихкоды;

КонецЦикла;


В ТаблицеЗначений вся отсортированная куча из всего документа(Перемещение запасов)
В ТаблицаЗнач2 всё что вылетит в Печать
А вот в ТаблицаЗначенийК должны влететь комплектующие

wise

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск