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