|
|
|
Почему не выводятся колонки в отчете СКД? lEvGl, piter3, Fish, zenik, Mr_Boogie, Gucci76, Somebody, 1сПупс, Шурик71, denk32, asady, 1cVandal, Timon1405, alexxx961503, ДенисСмирнов, K1RSAN, Crusher, azt-yur, Kigo_Kigo, Гипервизор, Shurjk, BOOL, DemonShinji2, alexis_nov, Homer, U4Me2, maxar, Hawk_1c, Жеглофф, Михаил Козлов, igouranga, программистище, Sanchez_22, rozer76, toypaul, dergreche, abfm, unenu, АнализДанных, dva1c, Хряк, crotnn, ads55, _Batoo, RomanYS, lubitelxml, mikecool, dchumak, formista2000, elka302, Silgis, Prog_man, vv2304, Amra
| ☑ | ||
|---|---|---|---|---|
|
0
1сПупс
25.11.25
✎
08:18
|
Добрый день!
Заказчик просит добавить пару колонок в существующий отчет СКД. Источником данных является регистр сведений: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
//...и настройки
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
мПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодСтр")).Значение;
Если НЕ ЗначениеЗаполнено(мПериод) Тогда
мПериод = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодСтр")).Значение;
КонецЕсли;
//Заголовок отчета
НачПериода = мПериод.ДатаНачала;
КонПериода = мПериод.ДатаОкончания;
ПодразделениеОтчетаПар = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Подразделение")).Значение;
Если Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Подразделение")).Использование Тогда
мМагазин = ПодразделениеОтчетаПар;
Иначе
мМагазин = "";
КонецЕсли;
СотрудникДляРасчетаПар = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Сотрудник")).Значение;
Если Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Сотрудник")).Использование Тогда
СотрудникДляРасчета = СотрудникДляРасчетаПар;
Иначе
СотрудникДляРасчета = "";
КонецЕсли;
//Создаем компоновщик макета и получаем макет компоновки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);
ТаблицаДанных= Новый ТаблицаЗначений;
СформироватьТаблицуДанных(ТаблицаДанных);
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ТаблицаДанных",ТаблицаДанных);
//Инициализируем процессор компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
//<--------------------------------------------------------------------------------------->//
//Очищаем документ результата
ДокументРезультат.Очистить();
//Выводим отчет в документ
ПроцессорВывода = Новый
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ДокументРезультат.ФиксацияСлева = 1;
КонецПроцедуры
Процедура СформироватьТаблицуДанных(ТаблицаДанных)
Перем КолонкиДляСвертки;
НачПериода = мПериод.ДатаНачала;
КонПериода = КонецДня(мПериод.ДатаОкончания);
Если Не ЗначениеЗаполнено(НачПериода) Тогда
Сообщить("Заполните дату");
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(КонПериода) Тогда
Сообщить("Заполните дату");
Возврат;
КонецЕсли;
КЧ = Новый КвалификаторыЧисла(20,2);
Массив = Новый Массив;
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
КЧ = Новый КвалификаторыЧисла(10);
Массив = Новый Массив;
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ2 = Новый ОписаниеТипов(Массив, , ,КЧ);
//ТаблицаДанных = Новый ТаблицаЗначений;
ТаблицаДанных.Колонки.Добавить("Магазин");
ТаблицаДанных.Колонки.Добавить("Сотрудник");
ТаблицаДанных.Колонки.Добавить("ЧекККМ");
ТаблицаДанных.Колонки.Добавить("ЦеновойДиапазон");
ТаблицаДанных.Колонки.Добавить("ОбъемПродажТовары",ОписаниеТиповЧ);
ТаблицаДанных.Колонки.Добавить("КоличествоПродажТовары",ОписаниеТиповЧ2);
ТаблицаДанных.Колонки.Добавить("КоличествоПродажУслугиРабочего",ОписаниеТиповЧ2);
ТаблицаДанных.Колонки.Добавить("КоличествоПродажУслугиИнженера",ОписаниеТиповЧ2);
ТаблицаДанных.Колонки.Добавить("ОбъемПродажУслугиРабочего",ОписаниеТиповЧ);
ТаблицаДанных.Колонки.Добавить("ОбъемПродажУслугиИнженера",ОписаниеТиповЧ);
ТаблицаДанных.Колонки.Добавить("БаллыЗаТовар",ОписаниеТиповЧ);
ТаблицаДанных.Колонки.Добавить("БаллыЗаУслугиРабочего",ОписаниеТиповЧ);
ТаблицаДанных.Колонки.Добавить("БаллыЗаУслугиИнженера",ОписаниеТиповЧ);
ТаблицаДанных.Колонки.Добавить("БаллыЗаТретийТовар",ОписаниеТиповЧ);
ТаблицаДанных.Колонки.Добавить("ИТОГ",ОписаниеТиповЧ);
Запрос = Новый Запрос;
Текст = "ВЫБРАТЬ
| РасчетБалловСистемыМотивации.Период КАК Период,
| РасчетБалловСистемыМотивации.Сотрудник КАК Сотрудник,
| РасчетБалловСистемыМотивации.Магазин КАК Магазин,
| РасчетБалловСистемыМотивации.ЦеновойДиапазон КАК ЦеновойДиапазон,
| РасчетБалловСистемыМотивации.ЧекККМ КАК ЧекККМ,
| РасчетБалловСистемыМотивации.Номенклатура КАК Номенклатура,
| РасчетБалловСистемыМотивации.НомерСтрокиЧека КАК НомерСтрокиЧека,
| РасчетБалловСистемыМотивации.Дата КАК Дата,
| РасчетБалловСистемыМотивации.БаллыЗаТовар КАК БаллыЗаТовар,
| РасчетБалловСистемыМотивации.БаллыЗаУслугиРабочего КАК БаллыЗаУслугиРабочего,
| РасчетБалловСистемыМотивации.БаллыЗаУслугиИнженера КАК БаллыЗаУслугиИнженера,
| РасчетБалловСистемыМотивации.БаллыЗаТретийТовар КАК БаллыЗаТретийТовар,
| РасчетБалловСистемыМотивации.ПроцентМотивации КАК ПроцентМотивации,
| РасчетБалловСистемыМотивации.КоэффициентТовар КАК КоэффициентТовар,
| РасчетБалловСистемыМотивации.КоэффициентУслуга КАК КоэффициентУслуга,
| РасчетБалловСистемыМотивации.ПовышенныйКоэффициентТовар КАК ПовышенныйКоэффициентТовар,
| РасчетБалловСистемыМотивации.КоэффициентСегмента КАК КоэффициентСегмента,
| РасчетБалловСистемыМотивации.ОбъемПродажТовары КАК ОбъемПродажТовары,
| РасчетБалловСистемыМотивации.ОбъемПродажУслугиРабочего КАК ОбъемПродажУслугиРабочего,
| РасчетБалловСистемыМотивации.ОбъемПродажУслугиИнженера КАК ОбъемПродажУслугиИнженера,
| ВЫБОР
| КОГДА РасчетБалловСистемыМотивации.ОбъемПродажТовары > 0
| ТОГДА РасчетБалловСистемыМотивации.Количество
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПродажТовары,
| ВЫБОР
| КОГДА РасчетБалловСистемыМотивации.ОбъемПродажУслугиРабочего > 0
| ТОГДА РасчетБалловСистемыМотивации.Количество
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПродажУслугиРабочего,
| ВЫБОР
| КОГДА РасчетБалловСистемыМотивации.ОбъемПродажУслугиИнженера > 0
| ТОГДА РасчетБалловСистемыМотивации.Количество
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПродажУслугиИнженера
|ИЗ
| РегистрСведений.РасчетБалловСистемыМотивации КАК РасчетБалловСистемыМотивации";
Если ЗначениеЗаполнено(СотрудникДляРасчета) и не ЗначениеЗаполнено(мМагазин) Тогда
Текст = Текст + "
|ГДЕ";
Текст = Текст + "
| РасчетБалловСистемыМотивации.Сотрудник = &СотрудникДляРасчета";
ИначеЕсли ЗначениеЗаполнено(СотрудникДляРасчета) и ЗначениеЗаполнено(мМагазин) Тогда
Текст = Текст + "
|ГДЕ";
Текст = Текст + "
| РасчетБалловСистемыМотивации.Сотрудник = &СотрудникДляРасчета
| И РасчетБалловСистемыМотивации.Магазин = &Магазин";
ИначеЕсли не ЗначениеЗаполнено(СотрудникДляРасчета) и ЗначениеЗаполнено(мМагазин) Тогда
Текст = Текст + "
|ГДЕ";
Текст = Текст + "
| РасчетБалловСистемыМотивации.Магазин = &Магазин";
КонецЕсли;
Если СтрНайти(Текст, "ГДЕ")=0 Тогда
Текст = Текст + "
|ГДЕ";
Иначе
Текст = Текст + "
|И";
КонецЕсли;
Текст = Текст + "
| РасчетБалловСистемыМотивации.Период >= &ДатаНачала
| И РасчетБалловСистемыМотивации.Период <= &КонПериода";
Запрос.Текст = Текст;
Запрос.УстановитьПараметр("ДатаНачала",НачПериода);
Запрос.УстановитьПараметр("КонПериода",КонПериода);
Запрос.УстановитьПараметр("Магазин",мМагазин);
Запрос.УстановитьПараметр("СотрудникДляРасчета",СотрудникДляРасчета);
Выборка = Запрос.Выполнить().Выбрать();
СуммаБаллы = 0;
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаДанных.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,выборка);
//НоваяСтрока.ИТОГ = НоваяСтрока.БаллыЗаТовар + НоваяСтрока.БаллыЗаУслугиРабочего +НоваяСтрока.БаллыЗаУслугиИнженера +НоваяСтрока.БаллыЗаТретийТовар;
КонецЦикла;
КонецПроцедуры
Скд берет данные из ТЗ(Источник - набор данных), туда добавил новые поля (из запроса где выбор). добавил эти поля как ресурсы, На вкладке настройки добавил свои ресурсы в выбранные поля. Почему нет моих колонок в отчете?
|
|||
|
1
lEvGl
гуру
25.11.25
✎
09:26
|
Источник - набор данных интересно имена полей должны совпадать, и для чего создание тз, можно выгрузить из запроса а может выбранные поля для группировки работают |
|||
|
2
unenu
25.11.25
✎
09:44
|
(0) Почистить кеши, переименовать отчет если не знаете как новые настройки отчета применить.
Я бы переписал отчет к живому виду с дифференцированием параметров прямо в исходном тексте запроса. УПП-шная условная технология Текст = Текст + " | вызывает у меня смешанные чувства грусти и негодования, иногда до крайностей - казнить :-( |
|||
|
3
lEvGl
гуру
25.11.25
✎
10:01
|
да да и период можно между задать!
|
|||
|
4
1сПупс
25.11.25
✎
14:04
|
(2) оказалось что в системе был отчет с таким же наименованием, и он тянулся при запуске внешнего отчета. Изменил имя, встроил в конфигурацию - все работает, спасибо!
|
|||
|
5
1cVandal
25.11.25
✎
14:31
|
(2) "Почистить кеши, переименовать отчет" как же это задрало в скд...
|
|||
|
6
Gucci76
25.11.25
✎
14:55
|
(5) Поддерживаю. Кучу времени бывает потратишь, чтобы убедиться, что все должно работать, но не фурычит.
Чистишь кеш и вуаля - нужный результат. Сейчас уже первым делом меняю имя отчета, чтобы отмести ошибку кеша (он быстрее, но вернуть старое имя бывает забываю) |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |