К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Помогите студенту, пожалуйста!

Гость
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);



Гость
121 - 05.07.2020 - 18:28
Цитата:
Сообщение от Ирли Бёрд Посмотреть сообщение
Указан проект или не указан, не суть важно. Важно проектировать запрос так, чтобы он не сломался в ситуации, когда проект не указан (а такие ситуации могут произойти).
Да! Я поняла почему так нужно сделать. Но ошибка возникает из-за того, что в документе не указан проект?
Гость
122 - 05.07.2020 - 19:13
Мне не понятна последовательность чисел, которые указываются в ошибке.
123 - 05.07.2020 - 20:07
Добавь вот это в код:

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ, 1, 0);
ТЗ.ВыбратьСтроку();


Так ты сможешь посмотреть результат запроса, и станет понятен ответ на твой вопрос.
124 - 15.07.2020 - 10:37
студент на 7.7?? препод старовер видать)))
Гость
125 - 16.07.2020 - 09:25
124-user1C > Препод умный человек.
Гость
126 - 16.07.2020 - 09:26
Цитата:
Сообщение от Ирли Бёрд Посмотреть сообщение
Указан проект или не указан, не суть важно. Важно проектировать запрос так, чтобы он не сломался в ситуации, когда проект не указан (а такие ситуации могут произойти).
Поток демагогии и пафоса продолжался которую неделю...
127 - 16.07.2020 - 11:09
(125)
умный бы на dbase IV задания давал, чеуж...)))
Гость
128 - 25.07.2020 - 14:00
А знаете! Этот мужик, который составлял задачник, он очень умный! И семерку, скорее всего, знает от и до.
Судя по задачам, которые я не все могу решить, он просто асс!
Например у него есть задание сделать отчет, который бы выводил данные без запуска 1с, на основании файлов dbf. Мне такое даже в голову не приходило.
Из того, что у меня так и не получилось...
Я никогда не работала с таблицами значений на форме до этой ситуации. У меня не получилось вывести результаты по колонкам в ТЗ на форму. У меня не получилось вывести результат в ТЗ при нескольких группировках. У меня не получилось вывести в первый столбец наименование группы (ну или как это назвать, когда группировка по дням, например, в первой колонке должна быть указана дата, если по месяцам, то месяц).
У меня не получилось создать список значений и выгрузить данные в отдельный файл, а потом загрузить эти данные из файла. При чем у меня ошибка явно в формировании самого списка значений.
Еще неделю я бабушка-одиночка. Надо бы успеть за это время!
И куча еще чего...
Я вообще в шоке от возможностей работы с ТЗ.
И вот правда! Прям чувствую, как мой усыхавший было мозг, увеличивается в размере! :)

Отредактировано tutsi; 25.07.2020 в 14:02. Причина: Орфографические ошибки
Гость
129 - 25.07.2020 - 20:34
128-tutsi > "Например у него есть задание сделать отчет, который бы выводил данные без запуска 1с, на основании файлов dbf. Мне такое даже в голову не приходило."
- так не получится. Отчет - работает в среде запущенной 1С. Без 1С отчет работать не будет. если речь идет о том. что отчет формировался бы БЕЗ ПОКАЗА окна 1С - то это тривиально - при запуске 1С В ПриНачалеРаботыСистемы() - выполняем запуск отчета (который не может быть показан. а значит автоматом д.б. сохранен в вижд, который м.б. открыть вне 1С - в эксель например). а откуда уж отчет тянет данные из каки-то сторонних дбф или из базы - не суть важно.
.
если речь идет о неком НЕ 1C-ном отчете - который тянет данные из файлов дбф базы 1С - то во первых такой отчет в общем случае работать не будет ибо база может быть скульная, или отчет будет похитрее чем просто из дбф. Можно еще тупо по ОЛЕ извне подключиться к клюшкам и по оле запустить построение отчета. по всякому можно. из краткого упоминания "изврата" - хз понять что там имел в виду препод
Гость
130 - 25.07.2020 - 20:36
128-tutsi > "У меня не получилось вывести результаты по колонкам в ТЗ на форму. "
- в заисимости от данных динамически определяешь колонки ТЗ, например,
Для ы=1 по 11 Цикл
ТЗ.НоваяКолонка("Месяц"+ы);
КонецЦикла;
.
а потом пихаешь в колонки нужные данные
Гость
131 - 25.07.2020 - 20:39
128-tutsi > "У меня не получилось создать список значений и выгрузить данные в отдельный файл, а потом загрузить эти данные из файла. При чем у меня ошибка явно в формировании самого списка значений."

СЗ = СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение(КакоеТоЗначение1,СтрокаВизуаль ноеПредставлениеКакогоТоЗначения1);
СЗ.ДобавитьЗначение(КакоеТоЗначение2,СтрокаВизуаль ноеПредставлениеКакогоТоЗначения2);

далее см. ЗначениеВФайл и ЗначениеИзФайла
Гость
132 - 25.07.2020 - 20:40
128-tutsi > "Прям чувствую, как мой усыхавший было мозг, увеличивается в размере! :)"
- потому как мозг был усохший, морщинистый, много извилин, думательный.
а тут егор стало распирать как воздушный шарик, извилины разглаживаются, думалка не работает.. ;-)
Гость
133 - 25.07.2020 - 20:48
128-tutsi > " У меня не получилось вывести в первый столбец наименование группы (ну или как это назвать, когда группировка по дням, например, в первой колонке должна быть указана дата, если по месяцам, то месяц)."
- не получилось - это сильно обще...
что именно не получилось? знаешь все буквы, но не смогла прочитать слово?
помогает тупое чтение синтаксПомощника - узнаешь много методов. которые оказывается есть...
.
например как-то так, типа

Пока Запрос.Группировка(1)=1 Цикл
ЗначениеГруппировки = Запрос.ЗначениеУпорядочивания(1,)
ТЗ.НоваяСтрока();
ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,1,ЗначениеГру ппировки)

КонецЦикла;
Гость
134 - 26.07.2020 - 12:05
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
если речь идет о неком НЕ 1C-ном отчете - который тянет данные из файлов дбф базы 1С
Именно НЕ 1С-ный отчет и для дбф базы.
Гость
135 - 26.07.2020 - 12:09
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
а потом пихаешь в колонки нужные данные
Пихаю. В печатную форму получается вывести. А в ТЗ на форму не отображается. Синтаксических ошибок не находит, но, чую, где-то с запятыми засада.
Гость
136 - 26.07.2020 - 12:15
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
например как-то так, типа
А в процедуру ПриОткрытии эту строку нужно прописывать как-то?
Гость
137 - 26.07.2020 - 12:27
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
Пока Запрос.Группировка(1)=1 Цикл ЗначениеГруппировки = Запрос.ЗначениеУпорядочивания(1,) ТЗ.НоваяСтрока(); ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,1,ЗначениеГру ппировки) КонецЦикла;
При таком раскладе пишет "Неверный номер упорядочивания
ЗначениеГруппировки = Запрос.ЗначениеУпорядочивания(1);"
Гость
138 - 26.07.2020 - 12:43
ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,1,ЗначениеГру ппировки);
ERT(116)**: Номер за пределами значения!
Гость
139 - 27.07.2020 - 03:32
135-tutsi > ну ты же код свой не показываешь. тут собрались ведь исключительно телепаты и бабыванги. хз что там у тебя. самая простейшая ошибка когда вроде вен написано, а ВТЗ ничего не выводится - тупо пропустила ТЗ.НоваяСтрока(); - по коду идет установка значений в ТЗ - но строк добавляемых нет. уходит в никуда.
Гость
140 - 27.07.2020 - 03:37
134-tutsi > ну так это к 1с имеет весьма отладенное отношение. не зная что в каой ДБФ лежит - хрен ты знаешь что ткуда тянуть.
чтобы узнать что где лежит - тебе НЕ 1Сными средствами придется разбирать словарь данных 1cv7.dв - парсить его, строить модель данных по распарсенным данным и в соответствии с построенной моделью тянуть данные из нужных ДБФ - это далеко задача не начального уровня. и не среднего. и вообще не 1Сная. в этоq задаче вы или что-то не договариваете или не так транслируете здесь задачу.
Гость
141 - 27.07.2020 - 04:00
137-tutsi > здесь налажал.

тут смысл в том. чтобы в коде получить имя группировки (например, День/Месяц/Квартал) - и сделать ТЗ колонку с таким идентификатором.
.
обычно когда ты строишь запрос - ты знаешь какая группировка у тебя используется явно
То есть в коде написано
Группировка Месяц;
.
Если группировка зависит от периодичности - выбранной юзером на форме например (день/месяц/....) то имя группировки - ты тоже знаешь - имя сидит в какой-то переменной которую ты используешь при формирвоании текста запроса.
.
дальше ты используешь имя группировки периодичности в качестве идентфикатора колонки. и делаешь что надо...
.

1. получить из итогов запроса перечень всех периодов
2. в цикле по перечню всех периодов создаешь колонки с идентфикаторами периодов
3. делаешь что надо с распихиванием даннных по колонкам-строкам.

п.2,3 могут варьироваться в зависимости от конкретности задачи.
Гость
142 - 27.07.2020 - 04:03
задачи не скажу совсем чтобы уж новичковые, надо иметь какое-то представление о возможностях программрирования 1С.
надо получить более подробные пояснения ПО КОНКРЕТНОЙ задаче/проблем - стучитесь или пишите здесь конкретную задачу/проблему. Чем более общий вопрос - тем более общий ответ.
Гость
143 - 27.07.2020 - 16:52
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
задачи не скажу совсем чтобы уж новичковые, надо иметь какое-то представление о возможностях программрирования 1С.
Ну, насколько мне разъяснили, этому задачнику мильён лет. И писался он с расчетом на сквозное обучение на всех курсах. В нем не только 1с-овские задачи.
Я ж чего так стараюсь...
Следующий учебный год племянник будет учиться. Не хочется второй раз на одни и те же грабли наступать.
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
ну ты же код свой не показываешь. тут собрались ведь исключительно телепаты и бабыванги. хз что там у тебя
Та мне ж самой хочется! Уже если что-то не получится, выставлю код и буду просить помощь зала.
А вообще я поняла, что годы моего "программирования" в 1С - это был детский сад. Ни одной интересной задачи не было. Тут с одними запросами головомороки полным полно. А я... Печатные формочки делала, небольшие изменения в программу...
Отчеты - вот сила мысли! :)
Гость
144 - 28.07.2020 - 12:34
143-tutsi > ну, обычно здесь и на мисте если ты выкладываешь код проблемный - обычно не спешат сразу решение давать. а подталкивают в нужном направлении ;-) так что не баись.
Гость
145 - 28.07.2020 - 19:57
Уважаемые суперзнатоки! У меня вопрос!
Берем нашу первую задачу и усложняем ее.

Есть функции

|Функция РеализацияП1 = Сумма(СуммаРеализация) когда(Проект.Наименование = ""П1""); и тут еще нужно указать, что склад "1"
|Функция РеализацияП2 = Сумма(СуммаРеализация) когда(Проект.Наименование = ""П2""); и тут еще нужно указать, что склад "1"
|Функция РеализацияП1 = Сумма(СуммаРеализация) когда(Проект.Наименование = ""П1"");и тут еще нужно указать, что склад "2"
|Функция РеализацияП2 = Сумма(СуммаРеализация) когда(Проект.Наименование = ""П2""); и тут еще нужно указать, что склад "2"
|Функция РеализацияП3 = Сумма(СуммаРеализация) когда(Проект.Наименование = ""П3"");
|Функция ВозвратП1 = Сумма(СуммаВозврат) когда(Проект.Наименование = ""П1"");
|Функция ВозвратП2 = Сумма(СуммаВозврат) когда(Проект.Наименование = ""П2"");
|Функция ВозвратП3 = Сумма(СуммаВозврат) когда(Проект.Наименование = ""П3"");

Как это правильно реализовать?
Гость
146 - 28.07.2020 - 20:08
Пишу так

((Проект.Наименование = ""1"") и (Склад.Наименование = ""1""));
Как добавить еще склад 3 к этой функции?
Гость
147 - 28.07.2020 - 20:22
Писать отдельную функцию и потом их суммировать?
Гость
148 - 28.07.2020 - 21:18
Трэш и угар полнейший.
Гость
149 - 28.07.2020 - 21:19
146-tutsi > "Как добавить еще склад 3 к этой функции?"
нет такой операции "еще".
есть операции И, Или, Не.
Гость
150 - 28.07.2020 - 21:22
если в том же стиле трэша и угара то примерно так
(Проект.Наименование = ""1"") и ((Склад.Наименование = ""1"") или (Склад.Наименование = ""3""))
Гость
151 - 28.07.2020 - 21:23
Представь что проектов будет 30 и складов штук 8.
так и будешь функции множить?
Гость
152 - 28.07.2020 - 21:28
Чисто на подумать на досуге

загнать список складов в СЗ
загнать список проектов в СЗ

Условие(Проект в СписокПроектов)
Условие(Склад в СписокСкладов)

Функция Продажа = Сумма(СуммаРеализация);
Функция Возврат = Сумма(СуммаРеализация);

Группировка Склад;
Группировка Проект;

далее тупо обходить результаты запроса и суммировать данные по нужным условиям.
Гость
153 - 28.07.2020 - 21:29
Если в запросе несколько Условие - они соединяются как "И"
Гость
154 - 28.07.2020 - 21:33
для тупой учебной задачи - покатит как в 145. в реальности - так никто не делает
.
как говорится
.
"Недоделанные отчеты - это не беда. Главное - доделывайте детей. А то недоделанные дети вырастают и приносят недоделанные отчеты. И никак не разорвать этот порочный круг"
.
большой смайл.
Гость
155 - 28.07.2020 - 21:33
главное, что в ТЗ видимо все получилось. бо направленеи вопросов резко изменилось...
Гость
156 - 28.07.2020 - 22:29
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
Представь что проектов будет 30 и складов штук 8. так и будешь функции множить?
Та я уже в страшном сне вижу семерку! Кому она вообще нужна? НО! Задание есть, его нужно выполнить...
Гость
157 - 28.07.2020 - 22:51
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
(Проект.Наименование = ""1"") и ((Склад.Наименование = ""1"") или (Склад.Наименование = ""3""))
Ну, Семен Семеныч!
Я ж так и делаю! Только скобку одну не поставила. И он у меня выругался нецензурно!!
Гость
158 - 28.07.2020 - 22:52
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
главное, что в ТЗ видимо все получилось. бо направленеи вопросов резко изменилось...
Та это разные задания. С ТЗ все получилось, кроме даты в первой колонке и результатов в последней строке.
Гость
159 - 29.07.2020 - 00:30
"С ТЗ все получилось, кроме даты в первой колонке и результатов в последней строке."
.
- Правда ли что вы виграли в спортлото миллион рублей?
- Правда, ноне в спортлото, а в карты, и не миллион, а квартиру, и не выиграл, а проиграл...
Гость
160 - 01.08.2020 - 13:49
Цитата:
Сообщение от Сергей Че Посмотреть сообщение
- Правда ли что вы виграли в спортлото миллион рублей? - Правда, ноне в спортлото, а в карты, и не миллион, а квартиру, и не выиграл, а проиграл...
Ну кроме тех задач, которые я сюда кидаю, я еще ж и другие решаю.


К списку вопросов






Copyright ©, Все права защищены