Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Помогите студенту, пожалуйста! (http://forums.kuban.ru/f1040/pomogite_studentu_pozhalujsta-9068264.html)

tutsi 05.07.2020 18:28

[quote=Ирли Бёрд;47763895]Указан проект или не указан, не суть важно. Важно проектировать запрос так, чтобы он не сломался в ситуации, когда проект не указан (а такие ситуации могут произойти).[/quote]
Да! Я поняла почему так нужно сделать. Но ошибка возникает из-за того, что в документе не указан проект?

tutsi 05.07.2020 19:13

Мне не понятна последовательность чисел, которые указываются в ошибке.

EarlyBird 05.07.2020 20:07

Добавь вот это в код:

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

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

Так ты сможешь посмотреть результат запроса, и станет понятен ответ на твой вопрос.

user1C 15.07.2020 10:37

студент на 7.7?? препод старовер видать)))

DogJohn 16.07.2020 09:25

124-user1C > Препод умный человек.

DogJohn 16.07.2020 09:26

[quote=Ирли Бёрд;47763895]Указан проект или не указан, не суть важно. Важно проектировать запрос так, чтобы он не сломался в ситуации, когда проект не указан (а такие ситуации могут произойти).[/quote]
Поток демагогии и пафоса продолжался которую неделю...

user1C 16.07.2020 11:09

(125)
умный бы на dbase IV задания давал, чеуж...)))

tutsi 25.07.2020 14:00

А знаете! Этот мужик, который составлял задачник, он очень умный! И семерку, скорее всего, знает от и до.
Судя по задачам, которые я не все могу решить, он просто асс!
Например у него есть задание сделать отчет, который бы выводил данные без запуска 1с, на основании файлов dbf. Мне такое даже в голову не приходило.
Из того, что у меня так и не получилось...
Я никогда не работала с таблицами значений на форме до этой ситуации. У меня не получилось вывести результаты по колонкам в ТЗ на форму. У меня не получилось вывести результат в ТЗ при нескольких группировках. У меня не получилось вывести в первый столбец наименование группы (ну или как это назвать, когда группировка по дням, например, в первой колонке должна быть указана дата, если по месяцам, то месяц).
У меня не получилось создать список значений и выгрузить данные в отдельный файл, а потом загрузить эти данные из файла. При чем у меня ошибка явно в формировании самого списка значений.
Еще неделю я бабушка-одиночка. Надо бы успеть за это время!
И куча еще чего...
Я вообще в шоке от возможностей работы с ТЗ.
И вот правда! Прям чувствую, как мой усыхавший было мозг, увеличивается в размере! :)

Zlop 25.07.2020 20:34

128-tutsi > "Например у него есть задание сделать отчет, который бы выводил данные без запуска 1с, на основании файлов dbf. Мне такое даже в голову не приходило."
- так не получится. Отчет - работает в среде запущенной 1С. Без 1С отчет работать не будет. если речь идет о том. что отчет формировался бы БЕЗ ПОКАЗА окна 1С - то это тривиально - при запуске 1С В ПриНачалеРаботыСистемы() - выполняем запуск отчета (который не может быть показан. а значит автоматом д.б. сохранен в вижд, который м.б. открыть вне 1С - в эксель например). а откуда уж отчет тянет данные из каки-то сторонних дбф или из базы - не суть важно.
.
если речь идет о неком НЕ 1C-ном отчете - который тянет данные из файлов дбф базы 1С - то во первых такой отчет в общем случае работать не будет ибо база может быть скульная, или отчет будет похитрее чем просто из дбф. Можно еще тупо по ОЛЕ извне подключиться к клюшкам и по оле запустить построение отчета. по всякому можно. из краткого упоминания "изврата" - хз понять что там имел в виду препод

Zlop 25.07.2020 20:36

128-tutsi > "У меня не получилось вывести результаты по колонкам в ТЗ на форму. "
- в заисимости от данных динамически определяешь колонки ТЗ, например,
Для ы=1 по 11 Цикл
ТЗ.НоваяКолонка("Месяц"+ы);
КонецЦикла;
.
а потом пихаешь в колонки нужные данные

Zlop 25.07.2020 20:39

128-tutsi > "У меня не получилось создать список значений и выгрузить данные в отдельный файл, а потом загрузить эти данные из файла. При чем у меня ошибка явно в формировании самого списка значений."

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

далее см. ЗначениеВФайл и ЗначениеИзФайла

Zlop 25.07.2020 20:40

128-tutsi > "Прям чувствую, как мой усыхавший было мозг, увеличивается в размере! :)"
- потому как мозг был усохший, морщинистый, много извилин, думательный.
а тут егор стало распирать как воздушный шарик, извилины разглаживаются, думалка не работает.. ;-)

Zlop 25.07.2020 20:48

128-tutsi > " У меня не получилось вывести в первый столбец наименование группы (ну или как это назвать, когда группировка по дням, например, в первой колонке должна быть указана дата, если по месяцам, то месяц)."
- не получилось - это сильно обще...
что именно не получилось? знаешь все буквы, но не смогла прочитать слово?
помогает тупое чтение синтаксПомощника - узнаешь много методов. которые оказывается есть...
.
например как-то так, типа

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

КонецЦикла;

tutsi 26.07.2020 12:05

[quote=Сергей Че;47800617]если речь идет о неком НЕ 1C-ном отчете - который тянет данные из файлов дбф базы 1С [/quote]
Именно НЕ 1С-ный отчет и для дбф базы.

tutsi 26.07.2020 12:09

[quote=Сергей Че;47800617]а потом пихаешь в колонки нужные данные[/quote]
Пихаю. В печатную форму получается вывести. А в ТЗ на форму не отображается. Синтаксических ошибок не находит, но, чую, где-то с запятыми засада.

tutsi 26.07.2020 12:15

[quote=Сергей Че;47800643]например как-то так, типа[/quote]
А в процедуру ПриОткрытии эту строку нужно прописывать как-то?

tutsi 26.07.2020 12:27

[quote=Сергей Че;47800643]Пока Запрос.Группировка(1)=1 Цикл ЗначениеГруппировки = Запрос.ЗначениеУпорядочивания(1,) ТЗ.НоваяСтрока(); ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,1,ЗначениеГру ппировки) КонецЦикла;[/quote]

При таком раскладе пишет "Неверный номер упорядочивания
ЗначениеГруппировки = Запрос.ЗначениеУпорядочивания(1);"

tutsi 26.07.2020 12:43

ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,1,ЗначениеГруппировки);
ERT(116)**: Номер за пределами значения!

Zlop 27.07.2020 03:32

135-tutsi > ну ты же код свой не показываешь. тут собрались ведь исключительно телепаты и бабыванги. хз что там у тебя. самая простейшая ошибка когда вроде вен написано, а ВТЗ ничего не выводится - тупо пропустила ТЗ.НоваяСтрока(); - по коду идет установка значений в ТЗ - но строк добавляемых нет. уходит в никуда.

Zlop 27.07.2020 03:37

134-tutsi > ну так это к 1с имеет весьма отладенное отношение. не зная что в каой ДБФ лежит - хрен ты знаешь что ткуда тянуть.
чтобы узнать что где лежит - тебе НЕ 1Сными средствами придется разбирать словарь данных 1cv7.dв - парсить его, строить модель данных по распарсенным данным и в соответствии с построенной моделью тянуть данные из нужных ДБФ - это далеко задача не начального уровня. и не среднего. и вообще не 1Сная. в этоq задаче вы или что-то не договариваете или не так транслируете здесь задачу.

Zlop 27.07.2020 04:00

137-tutsi > здесь налажал.

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

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

п.2,3 могут варьироваться в зависимости от конкретности задачи.

Zlop 27.07.2020 04:03

задачи не скажу совсем чтобы уж новичковые, надо иметь какое-то представление о возможностях программрирования 1С.
надо получить более подробные пояснения ПО КОНКРЕТНОЙ задаче/проблем - стучитесь или пишите здесь конкретную задачу/проблему. Чем более общий вопрос - тем более общий ответ.

tutsi 27.07.2020 16:52

[quote=Сергей Че;47802167]задачи не скажу совсем чтобы уж новичковые, надо иметь какое-то представление о возможностях программрирования 1С.[/quote]
Ну, насколько мне разъяснили, этому задачнику мильён лет. И писался он с расчетом на сквозное обучение на всех курсах. В нем не только 1с-овские задачи.
Я ж чего так стараюсь...
Следующий учебный год племянник будет учиться. Не хочется второй раз на одни и те же грабли наступать.
[quote=Сергей Че;47802163]ну ты же код свой не показываешь. тут собрались ведь исключительно телепаты и бабыванги. хз что там у тебя[/quote]
Та мне ж самой хочется! Уже если что-то не получится, выставлю код и буду просить помощь зала.
А вообще я поняла, что годы моего "программирования" в 1С - это был детский сад. Ни одной интересной задачи не было. Тут с одними запросами головомороки полным полно. А я... Печатные формочки делала, небольшие изменения в программу...
Отчеты - вот сила мысли! :)

Zlop 28.07.2020 12:34

143-tutsi > ну, обычно здесь и на мисте если ты выкладываешь код проблемный - обычно не спешат сразу решение давать. а подталкивают в нужном направлении ;-) так что не баись.

tutsi 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"");

Как это правильно реализовать?

tutsi 28.07.2020 20:08

Пишу так

((Проект.Наименование = ""1"") и (Склад.Наименование = ""1""));
Как добавить еще склад 3 к этой функции?

tutsi 28.07.2020 20:22

Писать отдельную функцию и потом их суммировать?

Zlop 28.07.2020 21:18

Трэш и угар полнейший.

Zlop 28.07.2020 21:19

146-tutsi > "Как добавить еще склад 3 к этой функции?"
нет такой операции "еще".
есть операции И, Или, Не.

Zlop 28.07.2020 21:22

если в том же стиле трэша и угара то примерно так
(Проект.Наименование = ""1"") и ((Склад.Наименование = ""1"") или (Склад.Наименование = ""3""))

Zlop 28.07.2020 21:23

Представь что проектов будет 30 и складов штук 8.
так и будешь функции множить?

Zlop 28.07.2020 21:28

Чисто на подумать на досуге

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

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

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

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

далее тупо обходить результаты запроса и суммировать данные по нужным условиям.

Zlop 28.07.2020 21:29

Если в запросе несколько Условие - они соединяются как "И"

Zlop 28.07.2020 21:33

для тупой учебной задачи - покатит как в 145. в реальности - так никто не делает
.
как говорится
.
"Недоделанные отчеты - это не беда. Главное - доделывайте детей. А то недоделанные дети вырастают и приносят недоделанные отчеты. И никак не разорвать этот порочный круг"
.
большой смайл.

Zlop 28.07.2020 21:33

главное, что в ТЗ видимо все получилось. бо направленеи вопросов резко изменилось...

tutsi 28.07.2020 22:29

[quote=Сергей Че;47805264]Представь что проектов будет 30 и складов штук 8. так и будешь функции множить?[/quote]

Та я уже в страшном сне вижу семерку! Кому она вообще нужна? НО! Задание есть, его нужно выполнить...

tutsi 28.07.2020 22:51

[quote=Сергей Че;47805260](Проект.Наименование = ""1"") и ((Склад.Наименование = ""1"") или (Склад.Наименование = ""3""))[/quote]
Ну, Семен Семеныч!
Я ж так и делаю! Только скобку одну не поставила. И он у меня выругался нецензурно!!

tutsi 28.07.2020 22:52

[quote=Сергей Че;47805288]главное, что в ТЗ видимо все получилось. бо направленеи вопросов резко изменилось...[/quote]

Та это разные задания. С ТЗ все получилось, кроме даты в первой колонке и результатов в последней строке.

Zlop 29.07.2020 00:30

"С ТЗ все получилось, кроме даты в первой колонке и результатов в последней строке."
.
- Правда ли что вы виграли в спортлото миллион рублей?
- Правда, ноне в спортлото, а в карты, и не миллион, а квартиру, и не выиграл, а проиграл...

tutsi 01.08.2020 13:49

[quote=Сергей Че;47805668]- Правда ли что вы виграли в спортлото миллион рублей? - Правда, ноне в спортлото, а в карты, и не миллион, а квартиру, и не выиграл, а проиграл...[/quote]

Ну кроме тех задач, которые я сюда кидаю, я еще ж и другие решаю.


Текущее время: 09:19. Часовой пояс GMT +3.