0
- 06.06.2020 - 14:10
|
Удаленное обучение, к сожалению, мало добавило знаний. Помогите, пожалуйста, разобраться с заданием. Выполнять нужно на ТиС. Сам запрос сделали. Работает правильно. Печатную форму тоже создали. Препод всё проверил. Сказал, что норм. Не получается вывести данные отчета на форму. И не могу разобраться с таблицей значений. ЗАДАНИЕ Магазин ведёт учёт продаж и возвратов товара по складам и проектам. В течение дня возникает необходимость проверить продажи в разрезе некоторых учетных единиц. Учёт продаж ведётся документами Реализация и РеализацияРозница. Учёт возвратов с помощью документа ВозвратОтПокупателя. Создайте отчёт, позволяющий учесть продажи по трём выборочным проектам (П1, П2, П3) с группировкой по складам, причём наименования и количество складов зависит от данных, введённых в пользовательском режиме. Результат отчета должен формироваться, с учётом корректирующей величины (Корректировка), вводимой через числовое поле на форме отчета, в таблице значений и выводиться в текстовое поле на форме отчета по следующей формуле. Продажа П1+П2+Корректировка, Возврат П1+П2, Итог (Продажа П1+П2)-(Возврат П1+П2)+Корректировка Продажа П3-Корректировка, Возврат П3, Итог (Продажа П3)-(Возврат П3) Результат ((Продажа П1+П2)-(Возврат П1+П2)+(Продажа П3)-(Возврат П3)-Корректировка) Наименование столбцов Продажа первый этаж - для (Продажа П1+П2) Возврат первый этаж - для (Возврат П1+П2) Итого первый этаж - для (Итог (Продажа П1+П2)-(Возврат П1+П2)) Продажа второй этаж - для (Продажа П3) Возврат второй этаж - для (Возврат П3) Итого второй этаж - для (Итог (Продажа П3)-(Возврат П3)) Всего продаж - для (Результат ((Продажа П1+П2)-(Возврат П1+П2)+(Продажа П3)-(Возврат П3))) Отчёт должен учитывать продажи только за текущий день, без возможности изменения периода на форме. Сделайте кнопку, позволяющую обновлять результат в течение дня, без закрытия формы отчета. Создайте такой же отчёт, с выводом данных в таблицу значений, расположенную на форме. Создайте печатную форму отчета. Модуль отчета Процедура ОтчетКассира() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//**{ЗАПРОС(ОтчетКассира) |Период с (ТекущаяДата()) по (ТекущаяДата()); |Обрабатывать НеПомеченныеНаУдаление; |Реализация = Документ.Реализация.ТекущийДокумент, Документ.РеализацияРозница.ТекущийДокумент; |ВозвратОтПокупателя = Документ.ВозвратОтПокупателя.ТекущийДокумент; |Склад = Документ.Реализация.Склад.Наименование, Документ.ВозвратОтПокупателя.Склад.Наименование, Документ.РеализацияРозница.Склад.Наименование; |Проект = Документ.Реализация.Проект, Документ.ВозвратОтПокупателя.Проект, Документ.РеализацияРозница.Проект; |Фирма = Документ.ВозвратОтПокупателя.Фирма.Наименование, Документ.Реализация.Фирма.Наименование, Документ.РеализацияРозница.Фирма.Наименование; |СуммаВозврат = Документ.ВозвратОтПокупателя.Сумма; |СуммаРеализация = Документ.Реализация.Сумма, Документ.РеализацияРозница.Сумма; |Функция РеализацияП1 = Сумма(СуммаРеализация) когда(Проект.Наименование = ""П1""); |Функция РеализацияП2 = Сумма(СуммаРеализация) когда(Проект.Наименование = ""П2""); |Функция РеализацияП3 = Сумма(СуммаРеализация) когда(Проект.Наименование = ""П3""); |Функция ВозвратП1 = Сумма(СуммаВозврат) когда(Проект.Наименование = ""П1""); |Функция ВозвратП2 = Сумма(СуммаВозврат) когда(Проект.Наименование = ""П2""); |Функция ВозвратП3 = Сумма(СуммаВозврат) когда(Проект.Наименование = ""П3""); |Группировка Склад; |"//****ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ОтчетКассира"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Склад Таб.ВывестиСекцию("Склад"); КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); | |
161
- 01.08.2020 - 16:38
|
И все-таки прошу помощи. Ничего не получается с итогами в таблицу на форме. Вот такая таблица Пока Запрос.Группировка(1) = 1 Цикл ТЗДМГ.ПолучитьСтроку(); ТЗДМГ.НоваяСтрока(); ТЗДМГ.Параметр1 = Запрос.1 - Запрос.2 - Запрос.3; ТЗДМГ.Параметр2 = Запрос.4 - Запрос.5; ТЗДМГ.Параметр3 = ТЗДМГ.Параметр1+ ТЗДМГ.Параметр2; ТЗДМГ.Параметр4 = Запрос.6 - Запрос.7; ТЗДМГ.Параметр5 = Запрос.8; ТЗДМГ.Параметр6 = Запрос.9; ТЗДМГ.Параметр7 = Запрос.10; ТЗДМГ.Параметр8 = Запрос.11; ТЗДМГ.Параметр9 = ТЗДМГ.Параметр1 + ТЗДМГ.Параметр3; ТЗДМГ.Параметр10 = ТЗДМГ. Параметр1 + ТЗДМГ. Параметр2 + ТЗДМГ. Параметр6 + ТЗДМГ. Параметр7 + ТЗДМГ.Параметр8; КонецЦикла; Как вывести итоги внизу этой таблицы? Отредактировано tutsi; 01.08.2020 в 16:40. Причина: Орфографические ошибки | |
162
- 02.08.2020 - 09:17
| Посмотрел только последний запрос. Выбирать в запросе "Наименование" и сравнивать с "Наименованием" - это очень плохая практика, не надо к ней приучаться. | |
163
- 02.08.2020 - 09:50
| Спасибо за совет! Можете объяснить, почему? | |
164
- 02.08.2020 - 09:58
|
152-Сергей Че >Перечитала... Возник вопрос... В список складов и список проектов загонять только те, которые нужны для отчета или все, которые существуют? | |
165
- 02.08.2020 - 12:11
|
(163)Наименование могут поменять и Ваш отчет перестанет работать. Выбирайте в запросе ссылки. В запросе можно сразу группировать по складам и проектам. а потом уже обрабатывать запрос или выгрузить его в таблицу значений, с которой можно делать что угодно. Например развернуть проекты по горизонтали Выбирать в запросе по конкретным проектам это плохое решение. Завтра их станет 4 и все сломается. Надо группировать по нему | |
166
- 02.08.2020 - 13:59
|
Да! Есть похожая задача в этом сборнике. Но я с ней еще не разбиралась. Причем группировка мне понятна, а вот дальше пока темный лес. Как поступать, если в отчет нужно вывести данные только по конкретным складам и проектам? Аналогично множественному фильтру в ТиС? Я с этим сборником чувствую себя очень неуютно. Я поняла, что я слишком мало знаю о семерке. | |
167
- 02.08.2020 - 14:33
| (166)для универсального решения - множественный фильтр.Для частного - отборы проектов в 3 полях, с проверкой заполнения Надо будет не 3, а больше, скажете - Вы же сами просили 3. Вариантов много | |
168
- 02.08.2020 - 14:35
| Не пытайтесь охватить сразу все. Научитесь выбирать данные и обрабатывать их для отчета. А потом займитесь отборами | |
169
- 03.08.2020 - 11:21
|
166-tutsi > угу, типа. Можно положить на форму СЗ. Пользователь сам туда добавляет нужные данные. | |
170
- 03.08.2020 - 11:23
|
161-tutsi > Пока Запрос.Группировка(1) = 1 Цикл ТЗДМГ.ПолучитьСтроку(); ТЗДМГ.НоваяСтрока(); .... КонецЦикла; . это что за бред? в чем смысл получения очередной строки из ТЗ, неиспользования ее и сразу же добавление новой строки в ТЗ? в чем сакральный смысл? . | |
171
- 03.08.2020 - 11:35
|
161-tutsi > "Как вывести итоги внизу этой таблицы?" внизу - это ГДЕ? . если надо вывести итоги в ТЗ в последней строке этой ТЗ - то как обычно - в цикле или еще где накапливаем итоги, после цикла добавляем новую строку в ТЗ, запихиваем в строку итоговые данные. . опять же - что понимается под "итогами"..? - если вопрос стоит "как в ТЗ добавить строку с итогами по всем колонкам этой же ТЗ?" - то просто, итоги не надо накапливать? есть метод ТЗ.Итоги() - его и применяем.. - и вообще полезно открывать СинтаксПомощник и смотреть даже тупо подряд на описание языка... там можно найти много интересного... | |
172
- 03.08.2020 - 11:36
|
А про итоги, вот тестовый пример . //******************************************* Процедура Сформировать() // тестовые данные ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Первая","Число"); ТЗ.НоваяКолонка("Вторая","Число"); Для ы=1 по 3 Цикл ТЗ.НоваяСтрока(); ТЗ.Первая = ы; ТЗ.Вторая = ы*4; КонецЦикла; // тут выше код заполнения ТЗ // ниже код итогов ТЗ.НоваяСтрока(); КК = ТЗ.КоличествоКолонок(); Для НомерКолонки = 1 по КК Цикл ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,НомерКолонки, ТЗ.Итог(НомерКолонки)); КонецЦикла; //ОТЛАДКА ТЗ.ВидимостьКолонки("НомерСтроки",1); ТЗ.ВыбратьСтроку(,"просмотр ТЗ"); КонецПроцедуры | |
173
- 03.08.2020 - 11:37
| И держать в ТЗ последней строкой итоги - это очень нехорошая практика. Учитьяс такому не надо. ТЗ по своей природе - простой список однородных данных. и пихать в нее её же самое итоги - фу, бяка... | |
174
- 20.03.2021 - 22:26
|
Всем здравствуйте! Надеялась, что племяннику удастся воспользоваться знаниями, полученными моим сыном в прошлом учебном году. Не тут-то было! Задания совсем другие! Многое я знаю, но вот есть задание, которое я выполнить не смогла. Нужно при загрузке конфигурации открыть справочник номенклатура для Пользователя 1, Журнал документов общий для пользователя 2, Выписку банка для пользователя 3, Обработку банк-клиент для пользователя 4 и внешнюю обработку для пользователя 5. В чем загвоздка... Не могу заставить открываться всему этому только у конкретных пользователей. | |
175
- 23.03.2021 - 13:50
|
быдлокод: Если ИмяПользователя()="Иванов" Тогда ОткрытьФорму(...справочник) итд... | |
176
- 23.03.2021 - 18:44
| На одном из релизов 7.7 была такая фишка, что если имя пользователя содержало символы "катя" (в любом регистре) у этого пользователя обрубались все права. И приходилось именно через сравнение со строкой обходить это издевательство. | |
![]() | Интернет-форум Краснодарского края и Краснодара | Реклама на kuban.ru Jooble-работа Краснодар |