Группа: Пользователи
Сообщений: 99
Спасибо сказали: 14 раз
Рейтинг: 14.3
Добрый день
Платформа 8.3.15.1778 BAS 2.1.16.1 База серверная
Ранее был разработан самописный отчет для Обычных форм для конф-ции УТ на базе СКД. В качестве источника данных в СКД(ОсновнаяСхемаКомпоновкиДанных) используется "Набор данных-объект", в который после расчетов помещается таблица значений "ЗадолженностьТаблица" ВнешниеНаборыДанных.Вставить("ЗадолженностьТаблица", ЗадолженностьТаблица);
Еще особенность отчета в том, что для первичного отбора данных используется ПостроительОтчета. где Пользователь может задать начальные условия отбора, чтобы ограничить обрабатываемые данные.
При формировании отчета в Процедура ПриКомпоновкеРезультата() вначале получаются данные Построителя и далее выполняется дополнительный расчет, формируется ТЗ с данными отчета
Попросили меня бухгалтера сделать такой же отчет для Бухгалтерия предприятия, только эта конфа на УФ.
Переделал отчет под УФ. Т.к. под УФ объект ПостроительОтчета не доступен, пришлось в качестве Отбора первичных данных использовать дополнительный СКДОтбора.
Всё вроде получилось, в отладчике проверил - код в отладчике работает, проходит до последней строки процедуры, но на выходе имеем Ошибка исполнения отчета по причине: Поле не найдено "Регистратор"
Не могу понять, о чем говорит эта ошибка. Да, в ОсновнаяСхемаКомпоновкиДанных есть такое измерение и оно настроено, в ТЗ ЗадолженностьТаблица оно имеется и данные заполнены, но о каком ненайденном поле "Регистратор" идет речь не понимаю.
Группа: Пользователи
Сообщений: 74
Спасибо сказали: 30 раз
Рейтинг: 30
Тяжко так помочь, не видя запросов: телепатические способности в конце года на исходе. В СКД часто бывает такая фишка: автоматом поле Регистратор (на первой вкладке "Наборы данных") получает Роль "Период". Тогда как по логике использования Автор задумывал, что ето Измерение. Попробуйте, если у Вас там "Период" изменить роль на "Измерение"
Группа: Пользователи
Сообщений: 99
Спасибо сказали: 14 раз
Рейтинг: 14.3
Цитата(TohaMonster @ 19.12.21, 12:20)
Попробуйте, если у Вас там "Период" изменить роль на "Измерение"
проверил - у поля Регистратор Роль Измерение меня смущает тот факт, что в отчете имеется 2 макета СКД, хотя они и не связаны при этом в доп СКДОтбор как раз нет поля Регистратор из основного СКД
и еще - может подскажите, чем еще можно(кроме СКД) заменить ПостроительОтчета.Отбор в УФ ?
Группа: Пользователи
Сообщений: 99
Спасибо сказали: 14 раз
Рейтинг: 14.3
Цитата(sava1 @ 20.12.21, 9:59)
используйте просто СКД - забудьте про построитель
я так и поступил, другого решения не увидел но в итоге имею проблему, когда в отчете есть 2 макета СКД и похоже, что основная схема глючит из-за второй СКДОбор
Группа: Пользователи
Сообщений: 74
Спасибо сказали: 30 раз
Рейтинг: 30
Возможно, отбор, помещенный на Форме у Вас привязан не к СКДОтбор, а к основной СКД? А нельзя все действия, которые выполняются при формировании таблицы значения для основной СКД выполнить в запросе? То есть, получить на выходе одну СКД с одним отбором?
Группа: Пользователи
Сообщений: 99
Спасибо сказали: 14 раз
Рейтинг: 14.3
kserg2012 @ Сегодня, 10:10
, повторюсь изначально в отчете под Обычные формы в отчете был ПостроительОтчета и ОсновнаяСхемаКомпоновкиДанных, которые (как объекты отчета) между собой никак не были связаны
Цитата(TohaMonster @ 20.12.21, 10:13)
То есть, получить на выходе одну СКД с одним отбором
думаю, что так можно получить в одном основном СКД но тогда формирование ЗадолженностьТаблица (а при ее заполнении есть доп.запрос + расчет) будет происходить по всем долговым договорам покупателей, а это существенно увеличивает время формирования отчета
оптимальнее - применить отбор, получить некий первичный набор данных и по нему уже рассчитать и заполнить ЗадолженностьТаблица
Группа: Пользователи
Сообщений: 99
Спасибо сказали: 14 раз
Рейтинг: 14.3
Цитата(sava1 @ 20.12.21, 10:29)
Вы не можете применить отборы в СКД ?
согласен, могу применить и это работает, я это понимаю
но еще раз обращаю ваше внимание - что используется "Набор данных-объект", в который после расчетов помещается таблица значений "ЗадолженностьТаблица"
т.е. прежде чем СКД применит установленные отборы в алгоритме необходимо обойти все долговые договора, и по каждому из них рассчитать и заполнить таблицу движений (в которую помещаются долговые документы и рассчитывается обычный и просроченный долг)
и уже когда эта ТЗ будет помещена в СКД, только тогда будет применен отбор СКД
или я не правильно понимаю как работает в данном случае СКД?
Группа: Пользователи
Сообщений: 74
Спасибо сказали: 30 раз
Рейтинг: 30
Цитата(kserg2012 @ 20.12.21, 11:38)
и уже когда эта ТЗ будет помещена в СКД, только тогда будет применен отбор СКД
Совсем не обязательно. Делаете первым Запросом в своей новой СКД что-то типа
ВЫБРАТЬ Контрагенты.Ссылка ПОМЕСТИТЬ ВТКонтрагенты ИЗ Справочник.Контрагенты КАК Контрагенты {ГДЕ Контрагенты.Ссылка.* КАК Контрагент}
То есть, на закладке "Компоновка данных" данной временной таблицы сразу ставите условия, которые потом придут из Отбора СКД
А дальше, в основном запросе, формирующем выходную таблицу, добавляете что-то вроде
...ГДЕ Взаиморасчеты.Контрагент В (ВЫБРАТЬ ВТКонтрагенты.Ссылка ИЗ ВТКонтрагенты)...
Попробуйте, Вам понравится: 1 СКД - ето почти всегда лучше, чем 2 СКД
А причину того, почему не работает Ваш вариант, всё еще трудно понять: ведь Вы нам показали только рабочую версию на обычных формах. А как Вы его переделали на управляемых - не совсем понятно
но еще раз обращаю ваше внимание - что используется "Набор данных-объект", в который после расчетов помещается таблица значений "ЗадолженностьТаблица"
Есть 2 варианта 1 - Вы все запросы помещаете в СКД и там формируете отчет 2 - вместо построителя добавляете еще один макет СКД, его отборы на форму, компонуете в ТЗ и передаете второй СКД
Группа: Пользователи
Сообщений: 99
Спасибо сказали: 14 раз
Рейтинг: 14.3
alex1c @ Вчера, 15:37
, Други мои, всем спасибо за участие в обсуждение и советы.
Уже из своего опыта знаю,что иной раз "обсудить" проблему с коллегой - уже 50% её решения... и второй такой момент (также мною подмечено) - надо с проблемой "переспать", и бывает решение приходит
в моем случае - злую шутку сыграло моя невнимательность уже не помню как и откуда и натаскивал куски кода (у меня в качестве источников использовались 2 отчета и обработка) но у меня оказалась вот такая глупая команда
СтандартнаяОбработка = Истина;
исправил на Ложь - и отчет заработал! на 2-х скд! счас пробую сделать (по совету коллег) на одном скд и не париться с отборами
как говорит мой шеф - чудес не бывает, а бывают ляпы и баги программиста
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!