|
Дублирование строк на поле табличного документа при выводе через СКД | ☑ | ||
---|---|---|---|---|
0
Droning1C
06.09.21
✎
17:55
|
ОФ, УПП. По нажатию кнопки на форме обработки средствами СКД формируется набор данных и выводится в ТЗ. Создается объект отчета, открывается его форма и реквизиту формы "ТЗРезультат" этого отчета присваивается значение сформированной ранее ТЗ. Далее опять же средствами СКД уже полученная ТЗ используется для чуть другой схемы компановки и по новой выводится на поле табличного документа, расположенное на форме отчета. И все бы хорошо, но строки на поле табличного документа задублированы, хотя в источнике данных дублей строк нет. В чем может быть проблема? Уже глаза все сломал.
Причем, если после формирования отчета(из обработки) переформировать его, нажав на кнопку "сформировать", все выводится нормально. Если хоть ка-то тронуть настройки очтета и переформировать, тут же все дублируется. Если после выполнения этих действий закрыть обработку, закрыть отчет и выполнить все действия по новой - дубли присутствуют сразу после программного формирования из обработки... Шайтанство, крч. Процедура формирования набора данных и формирования отчета из обработки: Процедура НажатиеАрмПланирование(Кнопка) //черезТЗ Отчет = Отчеты.ТаблицаГотовностиЗаказов_v4.Создать(); Форма = Отчет.ПолучитьФорму("ФормаОтчета_АРМ_ПДО"); Форма.Открыть(); СхемаКомпоновкиДанных = Форма.ЭтотОбъект.ПолучитьМакет("ТаблицаГотовностиЗаказов_АРМ_ПДО_Источник"); //Настройки = Форма.ЭтотОбъект.СхемаКомпоновкиДанных.ВариантыНастроек.ПоДатеОтгрузкиКлассификатор.Настройки; Настройки = СхемаКомпоновкиДанных.ВариантыНастроек.ПоДатеОтгрузкиКлассификатор.Настройки; ЗаполнениеПараметров(Настройки); Форма.ЭтотОбъект.СформироватьТЗ_АктыПоБраку(); Форма.ЭтотОбъект.СформироватьТЗ_Уведомления(); Форма.ЭлементыФормы.Результат.Очистить(); //Вывод в тз КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("втАктыПоБракуПоЗаказам", Форма.ЭтотОбъект.АктыПоБракуПоЗаказам.Выгрузить()); ВнешниеНаборыДанных.Вставить("втУведомленияПоЗаказам", Форма.ЭтотОбъект.ТЗУведомленияПоЗаказам); ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,); ТЗРезультат = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТЗРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); Форма.ТЗРезультат = ТЗРезультат; Форма.ВызовИзАРМ_ПДО = Истина; //Вывод в ТабДок СхемаКомпоновкиДанныхТД = Форма.ЭтотОбъект.ПолучитьМакет("ТаблицаГотовностиЗаказов_АРМ_ПДО"); //Настройки = СхемаКомпоновкиДанных.ВариантыНастроек.ПоДатеОтгрузкиКлассификатор.Настройки; НастройкиТД = Форма.ЭтотОбъект.ПолучитьМакет("ТаблицаГотовностиЗаказов_АРМ_ПДО").ВариантыНастроек.ПоДатеОтгрузкиКлассификатор.Настройки; ДанныеРасшифровкиТД = Новый ДанныеРасшифровкиКомпоновкиДанных; ДанныеРасшифровкиТД.Настройки = НастройкиТД; Форма.ДанныеРасшифровки = ДанныеРасшифровкиТД; КомпоновщикМакетаТД = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиТД = КомпоновщикМакетаТД.Выполнить(СхемаКомпоновкиДанныхТД, НастройкиТД, Форма.ДанныеРасшифровки,,); ПроцессорКомпоновкиТД = Новый ПроцессорКомпоновкиДанных; ИспользоватьВнешниеФункции = Ложь; ВнешниеНаборыДанныхТД = Новый Структура; ВнешниеНаборыДанныхТД.Вставить("ТЗРезультат", Форма.ТЗРезультат); ПроцессорКомпоновкиТД.Инициализировать(МакетКомпоновкиТД, ВнешниеНаборыДанныхТД, Форма.ДанныеРасшифровки,); Форма.ЭлементыФормы.Результат.Очистить(); ПроцессорВыводаТД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВыводаТД.УстановитьДокумент(Форма.ЭлементыФормы.Результат); ПроцессорВыводаТД.Вывести(ПроцессорКомпоновкиТД, Истина); КонецПроцедуры |
|||
1
Droning1C
06.09.21
✎
17:56
|
Процедура формирования отчета из формы отчета
Процедура ДействияФормыСформировать_(Кнопка) Если ОчищатьМассивКПередаче Тогда МассивЗаказовКПередаче.Очистить(); КонецЕсли; Настройки = ""; Если ЗначениеЗаполнено(НастройкаВарината) Тогда Настройки = НастройкаВарината.НастройкиКомпоновщика.Получить(); КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Иначе //Настройки = СхемаКомпоновкиДанных.ВариантыНастроек.ПоДатеОтгрузкиКлассификатор.Настройки; //Настройки = КомпоновщикНастроек.Настройки; Если ТЗРезультат.Количество() = 0 Тогда Настройки = ЭтотОбъект.ПолучитьМакет("ТаблицаГотовностиЗаказов_АРМ_ПДО_Источник").ВариантыНастроек.ПоДатеОтгрузкиКлассификатор.Настройки; КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Иначе Настройки = КомпоновщикНастроек.Настройки; //Настройки = ЭтотОбъект.ПолучитьМакет("ТаблицаГотовностиЗаказов_АРМ_ПДО").ВариантыНастроек.ПоДатеОтгрузкиКлассификатор.Настройки; КонецЕсли; КонецЕсли; ПередачаПараметров(); ЭлементыФормы.Результат.Очистить(); СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("ТаблицаГотовностиЗаказов_АРМ_ПДО"); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Вывод в ТабДок МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки,,); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; //ИспользоватьВнешниеФункции = Ложь; ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ТЗРезультат", ТЗРезультат); ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки,); ЭлементыФормы.Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат); //ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ОбработкаПрерыванияПользователя(); ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры |
|||
2
Droning1C
06.09.21
✎
21:48
|
Видимо хреново описал проблему... Если проще - из-за чего могут дублироваться строки в табличном документе при формировании средствами СКД, если во внешнем источнике данных, на основании которого инициализируется макет, дублей нет?
|
|||
3
Droning1C
07.09.21
✎
09:38
|
ап
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |