Составить запрос.

1. alex_gus 3 24.11.15 16:09 Сейчас в теме
Доброго времени дня! Помогите строму 7-ку, составить запрос на 8-ке.
Есть вот такой запрос, нужно тоже самое на 8-ке, но только там другой вид документов будет.

	Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса = "
	|Период с НачДата по КонДата;
	|ОбрабатыватьДокументы Проведенные;
	|ТекДок  					  = Документ.ПриходныйОрдер.ТекущийДокумент;
	|Подраз                       = Документ.ПриходныйОрдер.ТекущийДокумент.Магазин;
	|СтатДох   					  = Документ.ПриходныйОрдер.ТекущийДокумент.СтатьяДоходов;
	|СуммаД                       = Документ.ПриходныйОрдер.ТекущийДокумент.Сумма;
	|Группировка ТекДок; 
	|Условие (ТекДок.ПометкаУдаления() = 0);
	|";

	Если ПустоеЗначение(ВбрПодразделения) = 0 Тогда
		ТекстЗапроса = ТекстЗапроса + "Условие (Подраз = ВбрПодразделения);";
	КонецЕсли;
	Если ПустоеЗначение(ВбрСтатьяДоходов) = 0 Тогда
		ТекстЗапроса = ТекстЗапроса + "Условие (СтатДох = ВбрСтатьяДоходов);";
	КонецЕсли;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1484 24.11.15 16:16 Сейчас в теме
(1) alex_gus, так а почему не воспользуетесь консолью запросов? Это отдельная обработка.
3. Arax 24.11.15 16:23 Сейчас в теме
(1) alex_gus, ежели я тебя правильно понял то что-то типа:

ВЫБРАТЬ
	ПриходныйКассовыйОрдер.Ссылка,
	ПриходныйКассовыйОрдер.Касса,
	ПриходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств,
	ПриходныйКассовыйОрдер.СуммаДокумента
ИЗ
	Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
ГДЕ
	ПриходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ
	И ПриходныйКассовыйОрдер.Дата МЕЖДУ &НачДата И &КонДата
Показать
4. alljoke 24.11.15 16:48 Сейчас в теме
Запрос.УстановитьПараметр("НачДата", ДататНачала);
Запрос.УстановитьПараметр("КонДата", ДататОкончания);

Ну и также для Подразделения и СтатьиДоходов.
5. Chameleon1980 24.11.15 16:51 Сейчас в теме
может еще итоги добавить
6. alex_gus 3 24.11.15 17:08 Сейчас в теме
Друзья может у кого есть какие заготовки, таких простых отчетов, может скинуть ? А то в этой богомерзкой восьмерке черт ногу сломит, откуда ту начинать, в 7.7 такой отчет за час бы наваял, с рисованием макета и т.п.
7. Alex_E 2355 24.11.15 17:12 Сейчас в теме
(6) alex_gus, вот тут я много всяких примеров собрал http://infostart.ru/public/303564/
8. alex_gus 3 24.11.15 17:15 Сейчас в теме
(7) Alex_E, ды какое такси, мне тут под обычную бухгалтерию 2-й редакции это слепить надо.
9. Boneman 298 24.11.15 17:18 Сейчас в теме
(8) alex_gus, в обычной бухне,
отчеты/прочее - универсальный отчет, или консоль отчетов,
можно все делать.
10. Xershi 1484 24.11.15 17:26 Сейчас в теме
(8) alex_gus, задача написать печатную форму?

Берем консоль запросов для тестирования результата запроса. В ней же его легко составить, протеститьваро и также сделать импорт кода для вставки в процедуру!
Далее берем любой типовой отчет и смотрим как он работает.
Думаю отладчиком в 1с7 научились пользоваться? В 1с8 он практически такой же.
Создаем макет, тут минимум отличий от 1с7.

Все скопировали код. Вставили запрос. Готово!

В 1с8 ноль? Слей уроки Гилева 21 программирования на 8.3. Для начала пойдет, а там вольешься.
11. alex_gus 3 24.11.15 17:36 Сейчас в теме
(10) Xershi, ды делал в 8-ке, печатные формы, ды кое что по мелочи правил в конфигурации. Своих отчетов в 8-ке никогда не делал, в моем представлении отчет должен быть таким, открываешь форму на ней выбираешь дату с по..дале два реквизита отбора данных, в самой процедуре запрос к документам с отборам по реквизитам выбранным на форме с выводом потом в макет, все профит....тут нихрена не понятно...мне бы для примера что -то типа такого отчета, там бы я быстро сообразил.
12. sssss_aaaaa_2011 24.11.15 17:58 Сейчас в теме
(11) alex_gus, тут - это где? В восьмерке? Все то же самое. Где и какие сложности нашел?
13. alex_gus 3 24.11.15 18:00 Сейчас в теме
(12) sssss_aaaaa_2011, буду потихоньку ковырять, если что буду тут отписываться, у кого будет желание подсказать советом, милости прошу.
14. Alex_E 2355 24.11.15 18:11 Сейчас в теме
(13) alex_gus, На самом деле поначалу не понимаешь, за что хвататься (как впрочем было всегда, с 6.0 на 7.* было круче), но поработав в 8 вернуться на клюшки прооблематично, как тут кто то заметил - ощущение, как будто у тебя не хватает одной руки :-)
Да, ИМХО - разбираться нужно сразу с управляемыми формами - всё новое сейчас только там...а Вам какая разница - если в "8 ноль"?
15. alex_gus 3 24.11.15 18:27 Сейчас в теме
(14) Alex_E, ды я не сомневаюсь что разберусь, почти 13 лет я на клюшках...там чего только не приходилось делать...а тут как то все очень много и много не нужного)))
16. Alex_E 2355 24.11.15 18:37 Сейчас в теме
(15) alex_gus,
а тут как то все очень много и много не нужного)))
- как сказал поэт - "Всё пройдёт, Пройдёт и это" :-)
17. Xershi 1484 24.11.15 19:06 Сейчас в теме
(11) alex_gus, так отчет нужен? Тогда делай на СКД! А 110 уроков Гилева на СКД в помощь!
18. alex_gus 3 24.11.15 20:39 Сейчас в теме
(17) Xershi, не, не буду использовать СКД, форму уже сделал, макет тоже, осталось внутрянку оформить и все, с внутрянкой тоже вроде определился.
19. Xershi 1484 24.11.15 20:51 Сейчас в теме
(18) alex_gus, а зря работы для отчета будет минимум!
20. alex_gus 3 26.11.15 15:18 Сейчас в теме
Итак сделал вот так :
	Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ПоступлениеНаРасчетныйСчет.Ссылка,
        |   ПоступлениеНаРасчетныйСчет.Подразделение,
	    |   ПоступлениеНаРасчетныйСчет.СтатьяДоходов,
	    |   ПоступлениеНаРасчетныйСчет.СуммаДокумента		
        |ИЗ
        |   Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
        |ГДЕ
        |   ПоступлениеНаРасчетныйСчет.ПометкаУдаления = ЛОЖЬ И
        |   ПоступлениеНаРасчетныйСчет.Дата МЕЖДУ &НачДат И &КонДат		
		|УПОРЯДОЧИТЬ ПО
        |   ПоступлениеНаРасчетныйСчет.Дата ВОЗР";
 
    Запрос.УстановитьПараметр("НачДат", НачДата);
    Запрос.УстановитьПараметр("КонДат", КонДата);
    Запрос.УстановитьПараметр("Подразделение", ВбрПодразделения);
    Запрос.УстановитьПараметр("СтатьяДоходов", ВбрСтатьяДоходов);
Показать


Почему то результаты ограничиваются интервалом выбора дат, а вот ни на Подразделение и Статью доходов не реагирует вываливает все что есть.
А второй вопрос, есть что то типа ПриОткрытии() что бы можно было при открытии формы установить уже некоторые реквизиты в заполненное состояние?
21. Xershi 1484 26.11.15 15:22 Сейчас в теме
(20) alex_gus, потому что у тебя в ГДЕ нет их. Конструктор открой увидишь что у тебя только 2 из 4 условий.
23. alex_gus 3 26.11.15 15:24 Сейчас в теме
(21) Xershi, сделал так, на выходе ничего нет вообще.
	Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	ПоступлениеНаРасчетныйСчет.Ссылка,
        |	ПоступлениеНаРасчетныйСчет.Подразделение,
        |	ПоступлениеНаРасчетныйСчет.СтатьяДоходов,
        |	ПоступлениеНаРасчетныйСчет.СуммаДокумента
        |ИЗ
        |	Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
        |ГДЕ
        |	ПоступлениеНаРасчетныйСчет.ПометкаУдаления = ЛОЖЬ
        |	И ПоступлениеНаРасчетныйСчет.Дата МЕЖДУ &НачДат И &КонДат
        |	И ПоступлениеНаРасчетныйСчет.Подразделение = &Подразделение
        |	И ПоступлениеНаРасчетныйСчет.СтатьяДоходов = &СтатьяДоходов
        |
        |УПОРЯДОЧИТЬ ПО
        |	ПоступлениеНаРасчетныйСчет.Дата";
Показать
24. Arax 26.11.15 15:31 Сейчас в теме
(23) alex_gus, проверяй параметры.
Если с параметрами все нормально значит нет записей
25. alex_gus 3 26.11.15 15:33 Сейчас в теме
(24) Arax, записи есть я искуственно создал разные варианты...на выходе ничего нет совсем.
26. alexx2510 38 26.11.15 15:38 Сейчас в теме
(25) alex_gus, посмотри значения переменных
ВбрПодразделения и ВбрПодразделения в момент установки параметров
    Запрос.УстановитьПараметр("Подразделение", ВбрПодразделения);
    Запрос.УстановитьПараметр("СтатьяДоходов", ВбрСтатьяДоходов);
27. spacecraft 26.11.15 15:44 Сейчас в теме
(23) alex_gus, ВбрПодразделения и ВбрСтатьяДоходов должны быть ссылочного типа, а не строка.
29. alex_gus 3 26.11.15 15:47 Сейчас в теме
(27) spacecraft, так и есть ссылочного.тут полная аналогия с "клюшками"
22. Xershi 1484 26.11.15 15:23 Сейчас в теме
(20) alex_gus, да, там можно статически прописать что-то.
КонДата = ТекущаяДата();
28. alex_gus 3 26.11.15 15:47 Сейчас в теме
Все, с запросом понятно, вроде работает как надо.
Второй пункт так и не понятен.
Сделал так :
Процедура ПриОткрытии()
	
	НачДата = НачалоМесяца(ТекущаяДата()); 
	КонДата = ТекущаяДата();
	
КонецПроцедуры 


При открытии формы боксы с датами пустые(
31. Xershi 1484 26.11.15 15:55 Сейчас в теме
(28) alex_gus, это реквизиты объекта или формы?
33. alex_gus 3 26.11.15 15:59 Сейчас в теме
(31) Xershi, реквизиты формы, тип дата. приложение не управляемые формы. в процедуры приоткрытии() даже не запрыгивает.
38. Xershi 1484 26.11.15 16:16 Сейчас в теме
(33) alex_gus, я писал для реквизитов объекта!
А раз это элемент формы, тогда и пиши:
ЭлементыФормы.ТвояДата.Значение = ТекущаяДата();
alex_gus; +1 Ответить
30. alljoke 26.11.15 15:51 Сейчас в теме
Боксы точно так названы: НачДата и КонДата?
32. Xershi 1484 26.11.15 15:56 Сейчас в теме
Ты где-то мог их еще раз переназначить.
У тебя обычные формы?
34. BackinSoda 26.11.15 16:01 Сейчас в теме
Кликните 2 раза на шапке вашей формы, проверьте, может там не назначено событие ПриОткрытии()
Даже если оно есть в модуле формы, но оно не назначено, то оно и не будет заходить в него.
alex_gus; +1 Ответить
35. alex_gus 3 26.11.15 16:10 Сейчас в теме
(34) BackinSoda, точно так...вот я нуб...
36. alex_gus 3 26.11.15 16:12 Сейчас в теме
Следующий вопрос, вот так в 8-ке можно сделать ?
	ТаблЗнач.Сортировать("2+,3+");
	ТабЗначИтогПодраз.Сортировать("Подраз+");
	ТабЗначИтогПодраз.Свернуть("Подраз","СуммаД");
37. BackinSoda 26.11.15 16:15 Сейчас в теме
(36) alex_gus, Все из ctrl + F1 взято:
Пример:

ТаблицаЦен.Сортировать("Цена Убыв, Товар Возр");
 
Пример:

ТаблицаЦен.Свернуть("Товар, Валюта", "Цена");
 

Показать
alex_gus; +1 Ответить
39. Xershi 1484 26.11.15 16:18 Сейчас в теме
(36) alex_gus, в 1С8 есть справка так можно всегда синтаксис подсмотреть.
40. alex_gus 3 26.11.15 17:14 Сейчас в теме
Все таки запрос работает не совсем так как нужно, если не выбирать параметры на форме типа подразделения или/ статьи то в результаты попадают документы только те у которых не заполнены эти параметры, а нужно что бы вообще все попадали....т.е. запрос отбрасывает документы у которых заполнен хотя бы один из этих параметров. Я так понимаю ДобавитьУсловие надо через если делить? Типа если выбрали на форме то добавлять условие ?
41. Xershi 1484 26.11.15 17:16 Сейчас в теме
(40) alex_gus, как написал условие так оно и работает.
Он работает так как нужно, но не так как вам хотелось бы.
42. Xershi 1484 26.11.15 17:24 Сейчас в теме
(40) alex_gus, ну да.
 Если ЗначениеЗаполнено(ЗначениеЭлементаФормы) Тогда 
ДописываемЗапрос;
КонецЕсли;
44. alex_gus 3 27.11.15 10:06 Сейчас в теме
(42) Xershi, сделал, через если, при пустых элементах на форме, т.е. по идее, должны выводится все документы, падает в ошибку.
{(12, 47)}: Не задано значение параметра "Подразделение"
И ПоступлениеНаРасчетныйСчет.Подразделение = <<?>>&Подразделение
45. Xershi 1484 27.11.15 10:10 Сейчас в теме
(44) alex_gus, параметр должен быть задан если ты в запрос его добавил!
46. alex_gus 3 27.11.15 10:13 Сейчас в теме
(45) Xershi, блин а можно как в 7.7 было по условию в запрос добавить то что нужно?
48. alexx2510 38 27.11.15 10:29 Сейчас в теме
(46) alex_gus, можно и по условию текст запроса формировать, но вариант (43) читабельнее + можно пользоваться конструктором.

с добавлением текста запроса по условию можно как-то так делать:

 Запрос = Новый Запрос;
    ТекстЗапроса = 
        "ВЫБРАТЬ
        |    ПоступлениеНаРасчетныйСчет.Ссылка,
        |    ПоступлениеНаРасчетныйСчет.Подразделение,
        |    ПоступлениеНаРасчетныйСчет.СтатьяДоходов,
        |    ПоступлениеНаРасчетныйСчет.СуммаДокумента
        |ИЗ
        |    Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
        |ГДЕ
        |    ПоступлениеНаРасчетныйСчет.ПометкаУдаления = ЛОЖЬ
        |    И ПоступлениеНаРасчетныйСчет.Дата МЕЖДУ &НачДат И &КонДат";

Если ЗначениеЗаполнено(ВбрПодразделения) Тогда
 ТекстЗапроса = ТекстаЗапроса + "
|    И ПоступлениеНаРасчетныйСчет.Подразделение = &Подразделение";
  Запрос.УстановитьПараметр("Подразделение", ВбрПодразделения);
КонецЕсли;

//... тоже самое со статьей

//в конце добавляем порядок сортировки
ТекстЗапроса = ТекстЗапроса + "
        |УПОРЯДОЧИТЬ ПО
        |    ПоступлениеНаРасчетныйСчет.Дата";

Запрос.Текст = ТекстЗапроса;
Показать
alex_gus; +1 Ответить
49. alex_gus 3 27.11.15 10:36 Сейчас в теме
(48) alexx2510, вот это прямо по "клюшкенски"))) Так мне нравится)
Вопрос такой возник, в 7.7 в свойстве ячейки в макете, ставил ТекРасшифровка# в модуле делал типа ТекРасшифровка = Запрос.ТекДок и по двойному клику, открывался документ ну или справочник что угодно короче..как это сделать тут ? Расшифровку я нашел в свойствах ячейки а что в модуле писать ? Да и надо было Таб.ТолькоПросмотр(1), а тут как?
50. BackinSoda 27.11.15 10:41 Сейчас в теме
(49) alex_gus, в свойстве ячейки указываете параметр для расшифровки, и задаете его в модуле типа :
Область.Параметры.ВашеИмяРасшифровки = СсылкаНаДокумент;

и ТабличныйДокумент.ТолькоПросмотр = Ложь; по умолчанию
alex_gus; +1 Ответить
43. alexx2510 38 26.11.15 17:26 Сейчас в теме
(40) alex_gus, пиши так

 Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ПоступлениеНаРасчетныйСчет.Ссылка,
        |    ПоступлениеНаРасчетныйСчет.Подразделение,
        |    ПоступлениеНаРасчетныйСчет.СтатьяДоходов,
        |    ПоступлениеНаРасчетныйСчет.СуммаДокумента
        |ИЗ
        |    Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
        |ГДЕ
        |    ПоступлениеНаРасчетныйСчет.ПометкаУдаления = ЛОЖЬ
        |    И ПоступлениеНаРасчетныйСчет.Дата МЕЖДУ &НачДат И &КонДат
        |    И ВЫБОР
        |           КОГДА &ПодразделениеЗаполнено Тогда ПоступлениеНаРасчетныйСчет.Подразделение = &Подразделение
        |    ИНАЧЕ ИСТИНА
        |    КОНЕЦ 
        |    И ВЫБОР
        |           КОГДА &СтатьяДоходовЗаполнена Тогда ПоступлениеНаРасчетныйСчет.СтатьяДоходов = &СтатьяДоходов
        |    ИНАЧЕ ИСТИНА
        |    КОНЕЦ    
        |
        |УПОРЯДОЧИТЬ ПО
        |    ПоступлениеНаРасчетныйСчет.Дата";

    Запрос.УстановитьПараметр("НачДат", НачДата);
    Запрос.УстановитьПараметр("КонДат", КонДата);
    Запрос.УстановитьПараметр("ПодразделениеЗаполнено", ЗначениеЗаполнено(ВбрПодразделения));
    Запрос.УстановитьПараметр("СтатьяДоходовЗаполнена", ЗначениеЗаполнено(ВбрСтатьяДоходов));
    Запрос.УстановитьПараметр("Подразделение", ВбрПодразделения);
    Запрос.УстановитьПараметр("СтатьяДоходов", ВбрСтатьяДоходов);
Показать
alex_gus; +1 Ответить
47. alex_gus 3 27.11.15 10:17 Сейчас в теме
Я так понял тут прямо в запросе надо такие условия прописывать как мне подсказали в (43).
51. alex_gus 3 27.11.15 12:04 Сейчас в теме
Всем, спасибо! Этот отчет готов, сделал то что нужно было! На днях начну еще один делать) Это конечно не весть что, но в 7.7 13 лет назад я тоже вот с таких начинал)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот