|
v7: Отчет о движении товаров выводит группы | ☑ | ||
---|---|---|---|---|
0
vadim777
03.07.16
✎
14:27
|
ТекстЗапроса =
"//{{ЗАПРОС(ТоварыЗаПериоды) |ПЕРИОД С Дата1 По Дата2; |Склад=Регистр.Остатки.Склад; |Товар=Регистр.Остатки.Номенклатура; |Док=Регистр.Остатки.ТекущийДокумент; |Кол=Регистр.Остатки.Остаток; |Функция НачКол = НачОст(Кол); |Функция КонКол = КонОст(Кол); |Функция ПрихКол = Приход(Кол); |Функция РасхКол = Расход(Кол); |Группировка Товар Без Групп; |"; ... Пока Запрос.Группировка("Товар") = 1 Цикл НаимТовара = Запрос.Товар.Наименование; ПечНачКол=Запрос.НачКол; ПечПрихКол=Запрос.ПрихКол; ПечРасхКол=Запрос.РасхКол; ПечКонКол=Запрос.КонКол; Если Запрос.Товар.ЭтоГруппа()=1 Тогда Отступы = Лев(" ", Запрос.Товар.Уровень()*2); Т.ВывестиСекцию("Группа"); Продолжить; Иначе Т.ВывестиСекцию("Товар"); КонецЕсли КонецЦикла; ... На выходе: Браво 15шт 0 2 0 2 Браво+ 60шт 0 -3 0 -3 Бюбхен 0 -1 0 -1 детская щетка 0 -3 0 -3 Детский жемчуг 50мл 0 1 0 1 для детей/мам 120шт 0 4 0 4 зубн/п 0 4 0 4 зубн/щ 0 1 0 1 Карапуз 0 -1 0 -1 крем 0 2 0 2 крем от ушибов и ссадин 0 -1 0 -1 Ласковая мама 0 -2 0 -2 Львенок черепаха 0 1 0 1 масло дет с алоэ и чередой 0+ 0 -2 0 -2 масло подсол/карите 0 -1 0 -1 Мир детсва Крем п\подг 0 1 0 1 мыло 0 -1 0 -1 мыло антибакт с подорожн и масл чайн дер 0 -1 0 -1 мыло ром 0 -1 0 -1 В чем причина? |
|||
1
Chameleon1980
03.07.16
✎
14:36
|
чет я не понял, а зачем:
Если Запрос.Товар.ЭтоГруппа()=1 Тогда если в тексте запроса - Группировка по номенклатуре Без групп организуйте что нить типа испытательного стенда типа обработки на которой будет ТЗ и туда будет выгружаться результат вашего запроса. + по клику на таблице сделайте открытие элемента текущей ячейки. типа так. я в свое время всегда использовал обработку типа ПросмотрТСЗ. которая через параметр принимала СЗ, ТЗ или запрос и показывала его на форме. вот и отладите запрос - посмотрите результат. |
|||
2
Chameleon1980
03.07.16
✎
14:39
|
вот это в глобальный модуль:
Процедура глПросмотрТСЗ(Знач ТСЗ, НазваниеТСЗ="") Экспорт Путь="" + КаталогИБ() + "ExtForms\ПросмотрТСЗ.ert"; Если ФС.СуществуетФайл(Путь)=1 Тогда Если (ТипЗначенияСтр(ТСЗ)="ТаблицаЗначений") или (ТипЗначенияСтр(ТСЗ)="СписокЗначений") Тогда Параметры=СоздатьОбъект("СписокЗначений"); Параметры.УдалитьВсе(); Параметры.ДобавитьЗначение(ТСЗ,"ТСЗ"); Параметры.ДобавитьЗначение(НазваниеТСЗ,"НазваниеТСЗ"); ОткрытьФорму("Отчет#",Параметры,Путь); ИначеЕсли ТипЗначенияСтр(ТСЗ)="Запрос" Тогда Параметры=СоздатьОбъект("СписокЗначений"); Параметры.УдалитьВсе(); _Т_=СоздатьОбъект("ТаблицаЗначений"); ТСЗ.Выгрузить(_Т_); Параметры.ДобавитьЗначение(_Т_,"ТСЗ"); Параметры.ДобавитьЗначение("Запрос: "+НазваниеТСЗ,"НазваниеТСЗ"); ОткрытьФорму("Отчет#",Параметры,Путь); Иначе Сообщить("В процедуру глПросмотрТСЗ передана не ТЗ или СЗ с именем " + НазваниеТСЗ + "!!!"); Сообщить(ТипЗначенияСтр(ТСЗ)); КонецЕсли; Иначе //Сообщить("Отсутствует файл по пути " + Путь); КонецЕсли; КонецПроцедуры // глПросмотрТСЗ |
|||
3
Chameleon1980
03.07.16
✎
14:41
|
вот это в текст обработки
ExtForms\ПросмотрТСЗ.ert //***************************************************************************** Процедура ПриОткрытии() Парам=Форма.Параметр; Если ТипЗначенияСтр(Парам)<>"СписокЗначений" Тогда Возврат; КонецЕсли; ТСЗ=Парам.Получить("ТСЗ"); Попытка Форма.Заголовок(Парам.Получить("НазваниеТСЗ")); Исключение ; КонецПопытки; //Если (ТипЗначенияСтр(Парам)<>"ТаблицаЗначений") И (ТипЗначенияСтр(Парам)<>"СписокЗначений") Тогда Если (ТипЗначенияСтр(ТСЗ)<>"ТаблицаЗначений") И (ТипЗначенияСтр(ТСЗ)<>"СписокЗначений") Тогда Возврат; КонецЕсли; ТЗ.Загрузить(ТСЗ); КонецПроцедуры // ПриОткрытии //***************************************************************************** Процедура Печать() Если ТЗ.КоличествоСтрок()=0 Тогда Возврат; КонецЕсли; Если ТЗ.КоличествоКолонок()=0 Тогда Возврат; КонецЕсли; Таб=СоздатьОбъект("Таблица"); Заголовок=""; ТЗ.ПолучитьПараметрыКолонки(1,,,,Заголовок); Таб.ВывестиСекцию("Шапка|Начало"); КоличествоСтрок=ТЗ.КоличествоСтрок(); КоличествоКолонок=ТЗ.КоличествоКолонок(); Для Н=1 По КоличествоКолонок Цикл ТЗ.ПолучитьПараметрыКолонки(Н,,,,Заголовок); Таб.ПрисоединитьСекцию("Шапка|Колонка"); КонецЦикла; Для Х=1 По КоличествоСтрок Цикл Таб.ВывестиСекцию("Строка|Начало"); Для У=1 По КоличествоКолонок Цикл Значение=ТЗ.ПолучитьЗначение(Х,У); Таб.ПрисоединитьСекцию("Строка|Колонка"); КонецЦикла; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.ПараметрыСтраницы(1,,,1,1,1,1,0,0,1); Таб.Опции(0,0,4,0); Таб.Показать("ТЗ"); КонецПроцедуры // Печать //***************************************************************************** //Т=СоздатьОбъект("ТаблицаЗначений"); //ТЗ.Выгрузить(Т); //ОткрытьФорму("Отчет",Т,"d:\nick\1С\Отчеты\ПоказатьТЗ.ert"); //***************************************************************************** Процедура ПоЩелчкуНаТаблице() ТекущаяСтрока=ТЗ.ТекущаяСтрока(); ТекущаяКолонка=ТЗ.ТекущаяКолонка(); Если (ТекущаяСтрока=0) ИЛИ (ТекущаяКолонка=0) Тогда Возврат; КонецЕсли; Значение=ТЗ.ПолучитьЗначение(ТекущаяСтрока,ТекущаяКолонка); Если (ТипЗначенияСтр(Значение)="Документ") ИЛИ (ТипЗначенияСтр(Значение)="Справочник") Тогда ОткрытьФорму(Значение); ИначеЕсли (ТипЗначенияСтр(Значение)="ТаблицаЗначений") ИЛИ (ТипЗначенияСтр(Значение)="СписокЗначений") Тогда ОткрытьФорму("Обработка.ПоказатьТЗ#",Значение); Иначе Сообщить("Тип значения: "+ТипЗначенияСтр(Значение)); Сообщить("Значение: "+Значение); КонецЕсли; КонецПроцедуры // ПоЩелчкуНаТаблице //***************************************************************************** |
|||
4
Chameleon1980
03.07.16
✎
14:41
|
На форме обработки
ТЗ с именем ТЗ, кнопка печать, да закрыть |
|||
5
Chameleon1980
03.07.16
✎
14:42
|
такое использовалось еще лет 15 назад
|
|||
6
Chameleon1980
03.07.16
✎
14:44
|
в чем-то другом у вас затык
|
|||
7
vadim777
03.07.16
✎
14:45
|
(1) Группировку Без Групп добавил для отладки, ее изначально не было. Когда увидел, что выводятся лишние группы в конце, решил посмотреть, что будет без групп. И вот получил то что получил.
А вывод через таблицу сейчас будут пробовать. |
|||
8
Это_mike
03.07.16
✎
14:46
|
Мизда-лучший отладчик!©
|
|||
9
vadim777
03.07.16
✎
15:17
|
(7) Может в структуре регистра Остатки? Подобный отчет без выкрутасов работает в ТиС, где регистр ОстаткиТоваров:
Измерения: Фирма Товар Склад В это конфигурации регистр Остатки: Измерения: Склад Номенклатура Партия Размер ЦенаПродажи |
|||
10
Chameleon1980
03.07.16
✎
15:30
|
какая конфа?
ТиС ? кинь отчет |
|||
11
Chameleon1980
03.07.16
✎
15:31
|
+(10) нетленка, я так понял
|
|||
12
vadim777
03.07.16
✎
15:32
|
(10) ТиС для Украины 7.70.028
Старый отчет, почти не изменялся чуть-ли не с первого релиза конфы. |
|||
13
Chameleon1980
03.07.16
✎
15:33
|
запрос - то и тут фигня.
не знаю. может так для профилактики - индексы убить, ТиИ попробовать ну и подобное чтонить? |
|||
14
vadim777
03.07.16
✎
15:44
|
(13) ТИИ сделал в первую очередь. Просмотрел содержимое регистра Остатки с помощью RegisterExplorer, в нем также Движения показывает группы.
Минутку, гляну в конфу... Разработчик дебил блд, пихает в регистр не только номенклатуру, но и группы: ... //чисто остатки Регистр.Остатки.ПривязыватьСтроку(НомерСтроки); Регистр.Остатки.Склад=Склад; Регистр.Остатки.Номенклатура=Номенклатура; Регистр.Остатки.Партия=Партия; Регистр.Остатки.Размер=Партия.Размер; Регистр.Остатки.ЦенаПродажи=ЦенаПродажи; Регистр.Остатки.Остаток=Количество; Регистр.Остатки.СуммаЗакупки=Сумма; Регистр.Остатки.СуммаПродажи=ПродСумма; Регистр.Остатки.ДвижениеПриходВыполнить(); //по родителю Регистр.Остатки.Склад=Склад; Регистр.Остатки.Номенклатура=Номенклатура.Родитель; Регистр.Остатки.Партия=ПустаяПартия; Регистр.Остатки.Размер=ПустойРазмер; Регистр.Остатки.ЦенаПродажи=0; Регистр.Остатки.Остаток=Количество; Регистр.Остатки.СуммаЗакупки=Сумма; Регистр.Остатки.СуммаПродажи=ПродСумма; Регистр.Остатки.ДвижениеПриходВыполнить(); ... И шо мне делать... |
|||
15
vadim777
03.07.16
✎
15:47
|
Так понимаю, нужно озвучить конфу:
ИТДБ Магазин 2.12.8.16 Инфы в инете по ней не нашел. |
|||
16
Chameleon1980
03.07.16
✎
16:01
|
(14) "...Разработчик дебил блд..."
может в этом какой-то скрытый смысл??? :) хотя.... а в итоге то с группами что нужно делать? при обходе результата пропускать группы да и все? вобщем я цели не допойму. |
|||
17
Это_mike
03.07.16
✎
18:11
|
(15) ну а что ж ты хотел от конфы, где автор прямым текстом "ИТ-ДБ"...
Н расстраивайся... Еще может быть в изменениях регистра поле "текущий документ". Или текстовое поле со значениями " приход" и "расход". |
|||
18
linoblack
03.07.16
✎
20:26
|
маленький офф: что быстрее, перебирать в цикле значения упорядочивания объекта "запрос", или выгрузить запрос в ТЗ и перебирать строки ТЗ?
|
|||
19
vadim777
05.07.16
✎
06:34
|
(18) Быстрее вместо запроса использовать прямое обращение к регистрам.
|
|||
20
Это_mike
05.07.16
✎
08:00
|
(19) быстрее написать нормальный прямой запрос, который выполнится гораздо быстрее, и вернет результат в ТЗ, работать с которой тоже быстрее...
|
|||
21
aka AMIGO
05.07.16
✎
09:00
|
(18) Если уж очень интересно, и есть немного свободного времени - напиши эти два варианта и запусти отладку с "Замером производительности". Вот и сравнишь, и ответ получишь конкретно на свой вопрос.
|
|||
22
пипец
05.07.16
✎
09:05
|
(15) http://umakt.com/com/moscow/ac1b-itdb позвони ))) спроси )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |