Функция ИнитТбУзла()
тбУзла = СоздатьОбъект("ТаблицаЗначений");
тбУзла.НоваяКолонка("родитель", "справочник.Товар");
тбУзла.НоваяКолонка("Группа","справочник.Товар");
тбУзла.НоваяКолонка("Уровень", "Число");
тбУзла.НоваяКолонка("тбДети");
Возврат тбУзла;
КонецФункции
//============================
Процедура ПечатьГрупп(тбТекущийУровень, тбПечать)
тбТекущийУровень.ВыбратьСтроки();
Пока тбТекущийУровень.ПолучитьСтроку()>0 Цикл
тбПечать.НоваяСтрока();
тбПечать.Группа = тбТекущийУровень.Группа;
тбСледУровень = тбТекущийУровень.тбДети;
Если ПустоеЗначение(тбСледУровень) = 0 Тогда
ПечатьГрупп(тбСледУровень, тбПечать);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
//=================================================================
Процедура ОбрТекУровень(знач текУровень, тбИсходная, тбБуферВходящий, тбБуферИсходящий, текСтрока, тбУзлаПустая);
колСтрок = тбИсходная.КоличествоСтрок();
тбБуфер = СоздатьОбъект("ТаблицаЗначений");
тбУзлаПустая.Выгрузить(тбБуфер);
колСтрокБуфВход = тбБуферВходящий.КоличествоСтрок();
Пока текСтрока <= колСтрок Цикл
тбИсходная.ПолучитьСтрокуПоНомеру(текСтрока);
Если тбИсходная.Уровень <> текУровень Тогда Прервать КонецЕсли;
текГруппа = тбИсходная.Группа;
тбБуфер.НоваяСтрока();
тбБуфер.родитель = тбИсходная.Родитель;
тбБуфер.Группа = текГруппа;
тбБуфер.Уровень = тбИсходная.Уровень;
тбБуфер.тбДети = СоздатьОбъект("ТаблицаЗначений") ;
тбУзлаПустая.Выгрузить(тбБуфер.тбДети);
тбДетиБуфера = тбБуфер.тбДети;
счБуферВходящий = 0;
Если тбБуферВходящий.НайтиЗначение(текГруппа, счБуферВходящий, "Родитель") > 0 Тогда
тбБуферВходящий.ПолучитьСтрокуПоНомеру(счБуферВходящий);
Пока счБуферВходящий <= колСтрокБуфВход Цикл
Если тбБуферВходящий.Родитель <> текГруппа Тогда Прервать КонецЕсли;
тбДетиБуфера.НоваяСтрока();
тбДетиБуфера.родитель = текГруппа;
тбДетиБуфера.Группа = тбБуферВходящий.Группа;
тбДетиБуфера.Уровень = тбБуферВходящий.Уровень;
тбДетиБуфера.тбДети = тбБуферВходящий.тбДети;
тбБуферВходящий.УдалитьСтроку();
колСтрокБуфВход = колСтрокБуфВход - 1;
КонецЦикла;
тбДетиБуфера.Сортировать("Группа");
КонецЕсли;
текСтрока = текСтрока + 1;
КонецЦикла;
тбБуфер.Сортировать("родитель");
тбБуферИсходящий = тбБуфер;
КонецПроцедуры
//*******************************************
Процедура Сформировать()
RecordSet = СоздатьОбъект("ODBCRecordset");
текстСКЛ = "
|WITH Parts(ParentID, ID, goodsLevel) as
|(
| SELECT mainGoods.ParentID, mainGoods.ID, 0 goodsLevel
| FROM SC14 mainGoods
| WHERE mainGoods.ISFolder = 1 AND mainGoods.ParentID = $ПустойИД
| UNION ALL
| SELECT childGoods.ParentID, childGoods.ID, goodsLevel + 1
| FROM SC14 childGoods
| INNER JOIN Parts p
| ON childGoods.ParentID = p.ID AND childGoods.ISFolder = 1
| )
|SELECT ParentID [родитель $справочник.Товар], ID [Группа $справочник.Товар], goodsLevel Уровень
|FROM Parts
|ORDER BY goodsLevel DESC";
тбРодителиИДети= RecordSet.ВыполнитьИнструкцию(текстСКЛ);
тбРодителиИДети.НоваяКолонка("тбДети");
тбРодителиИДети.ПолучитьСтрокуПоНомеру(1);
МаксУровень = тбРодителиИДети.Уровень;
тбУзлаПустая = ИнитТбУзла();
тбБуферВходящий = СоздатьОбъект("ТаблицаЗначений");
тбУзлаПустая.Выгрузить(тбБуферВходящий);
тбБуферИсходящий = СоздатьОбъект("ТаблицаЗначений");
тбУзлаПустая.Выгрузить(тбБуферИсходящий);
текСтрока = 1;
сч = МаксУровень;
Пока сч > -1 Цикл
ОбрТекУровень(сч, тбРодителиИДети, тбБуферВходящий, тбБуферИсходящий, текСтрока, тбУзлаПустая);
тбБуферВходящий = тбБуферИсходящий;
сч = сч - 1;
КонецЦикла;
тбПечать = СоздатьОбъект("ТаблицаЗначений");
тбПечать.НоваяКолонка("Группа");
тбБуферИсходящий.Сортировать("Группа");
ПечатьГрупп(тбБуферИсходящий,тбПечать);
//тбПечать.ВыбратьСтроку();
КонецПроцедуры
Вот контактные данные г-на Бенджамина, адрес электронной почты, lfdsloans@outlook.com. / Или WhatsApp 1 989-394-3740, который помог мне с займом в 90 000,00 евро, чтобы начать свой бизнес, и я очень благодарен, мне было очень тяжело, пытаясь найти способ, как мать-одиночка, вещи не были легкими со мной, но с помощью мистера Бенджамина улыбнулся мне в лицо, когда я смотрю, как растет и развивается мой бизнес. Я знаю, вы можете удивиться, почему я ставлю такие вещи здесь, но я действительно должен выразить свою благодарность, чтобы любой, кто ищет финансовая помощь или преодоление трудностей с этим бизнесом или желание запустить бизнес-проект могут позаботиться об этом и надеяться на выход из затруднений. Спасибо.
ОтветитьУдалить