Имя: Пароль:
1C
1C 7.7
v7: Почему не работает код?
0 zak555
 
18.02.14
09:02
такой
    |ТД = Справочник.Договоры.ТекущийЭлемент;
    |Наименование = Справочник.Договоры.Наименование;
    |Код = Справочник.Договоры.Код;
    |Владелец = Справочник.Договоры.Владелец;
    |Группировка ТД;
    |Условие(Владелец = ВыбВладелец);
1 XLife
 
18.02.14
09:03
это не код
2 Voronve
 
18.02.14
09:04
|ТД = Справочник.Договоры.ТекущийЭлемент;
    |Наименование = Справочник.Договоры.Наименование;
    |Код = Справочник.Договоры.Код;
    |Контрагент = Справочник.Договоры.Владелец;
    |Группировка Контрагент;
    |Группировка ТД;
    |Условие(Контрагент = ВыбВладелец);
3 ДенисЧ
 
18.02.14
09:05
Что есть ВыбВладелец?
4 dk
 
18.02.14
09:05
а если группировку убрать?
5 Chai Nic
 
18.02.14
09:06
Выкинь бяку и не связывайся с ней. Я про черные запросы.
6 Guk
 
18.02.14
09:06
(5) не надо вводить новичка в заблуждение...
7 zak555
 
18.02.14
09:07
(2) мне не нужна группировка по контрагенту
8 zulu_mix
 
18.02.14
09:07
а где проверка на группу?
9 zak555
 
18.02.14
09:07
(3) контрагент
10 zak555
 
18.02.14
09:08
(4) ничего
11 Рэйв
 
18.02.14
09:08
(7)А ты пробовал перебрать подчиненнвый справочник без .ИспользоватьВладельца() или предварительного цикла по владельцам?  Та же хрень только впрофиль
12 dk
 
18.02.14
09:08
(9) убери условие и проверь
13 Рэйв
 
18.02.14
09:08
получишь фигу с маслом
14 v4442
 
18.02.14
09:08
(18) сделай конструктором
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |ТекущийЭлемент = Справочник.Договоры.ТекущийЭлемент;
    |Код = Справочник.Договоры.Код;
    |Наименование = Справочник.Договоры.Наименование;
    |Владелец = Справочник.Договоры.Владелец;
    |Группировка ТекущийЭлемент;
    |Условие(Владелец = ВыбВладелец);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей ТекущийЭлемент
        Таб.ВывестиСекцию("ТекущийЭлемент");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры
15 zak555
 
18.02.14
09:09
(6) иван, твои ответы на мисте были все не правильные по это вопросу
16 zak555
 
18.02.14
09:09
(8) нах?
17 v4442
 
18.02.14
09:09
+ 14 РАБОТАЕТ
18 zak555
 
18.02.14
09:09
(12) без условия работает
19 zulu_mix
 
18.02.14
09:09
(16) у группы есть владелец?
20 zak555
 
18.02.14
09:10
(11) думаешь нельзя перебрать без ИспользоватьВладельца ?
21 dk
 
18.02.14
09:11
(18) значит что=то не то в выбвладелец
может реквизит формы такой есть или переменная переопределяется где-то
22 zak555
 
18.02.14
09:12
так тоже не работает

    |ТД = Справочник.Договоры.ТекущийЭлемент;
    |Наименование = Справочник.Договоры.Наименование;
    |Код = Справочник.Договоры.Код;
    |Владелец = Справочник.Договоры.Владелец;
    |Группировка Владелец;
    |Группировка ТД;
    |Условие(Владелец = ВыбВладелец);
23 v4442
 
18.02.14
09:14
(22) вроде сегодня не пятница ))))
24 zak555
 
18.02.14
09:16
(19) нет

(21) точно контрагент

    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |ТД = Справочник.Договоры.ТекущийЭлемент;
    |Наименование = Справочник.Договоры.Наименование;
    |Код = Справочник.Договоры.Код;
    |Владелец = Справочник.Договоры.Владелец;
    //|Группировка Владелец;
    |Группировка ТД;
    |Условие(Владелец = ВыбВладелец);
    |";
    
    Если ТипЗначенияСтр(ВыбВладелец)= "Справочник" Тогда
        Если ВыбВладелец.Вид() = "Контрагенты" Тогда
            Сообщить("Это же контрагент");
        КонецЕсли;
    КонецЕсли;
25 dk
 
18.02.14
09:17
ну значит нет у этого контры договоров
26 zak555
 
18.02.14
09:17
(23) что тут не так ?
27 v4442
 
18.02.14
09:18
проверь на другом контрагенте или на другой базе
28 dk
 
18.02.14
09:23
(25) + либо выбран не элемент, а группа контров
29 Builder
 
18.02.14
09:26
ВыбВладелец - элемент формы?
Если это просто переменная, то были такие глюки.
Сделай элементом формы и проверь.
30 ЧеловекДуши
 
18.02.14
09:32
"Ложки не существует" (нео) :)
31 Chai Nic
 
18.02.14
09:34
Черный запрос - хуже перебора
32 ДенисЧ
 
18.02.14
09:34
(31) Бред непроснувшегося - хуже бреда пьяного.
33 Guk
 
18.02.14
09:34
(15) по этому вопросу у меня не было ни одного ответа...
34 Guk
 
18.02.14
09:35
(31) чушь и непонимание работы платформы...
35 Builder
 
18.02.14
09:35
(31) Вы не любите кошек? Вы их просто не умеете готовить...
36 Drac0
 
18.02.14
09:37
(0) База на скуле?
37 dk
 
18.02.14
09:37
шо та автор пропал
38 aka AMIGO
 
18.02.14
09:41
СПД = СоздатьОбъект("Справочник.Договоры");
    СПД.ИспользоватьВладельца("ВыбВладелец");
    СПД.ВыбратьЭлементы();
    Пока СПД.ПолучитьЭлемент() = 1 Цикл
        Сообщить(СПД.ТекущийЭлемент());
    КонецЦикла;
39 Chai Nic
 
18.02.14
09:42
(34) Ну как-то за 12 лет поддержки переписанной наполовину бухгалтерии ни разу не возникало потребности в черных запросах. Один спец из франча написал несколько отчетов на черных запросах - они дичайше тормозили. Пришлось переписать на выборки. Впоследствии многое было переделано под прямые запросы. Но черные запросы сразу считаю для себя неприемлемым, убогим и корявым решением.

Как увидел, как на них выполняются отборы.. Черный запрос качивает всю исходную таблицу с sql-сервера на клиента в виде dbf-файла в каталог временных файлов, потом последовательным перебором фильтрует, сортирует и тому подобное. Кошмар.
40 Guk
 
18.02.14
09:44
(39) переносить процесс выборки из базы с сервера на клиента, это технологически неправильно...
41 Chai Nic
 
18.02.14
09:45
(35) Еще будучи на курсах по семерке много-много лет назад, услышал от преподавателя (из сертифицированного учебного центра 1с) мнение о том, что "я не рекомендую использовать стандартные запросы", и опыт это мнение подтверждает.
(40) Черные запросы большей частью выполняются на клиенте, а не на сервере. При этом с сервера перекачивается офигенное количество лишней информации.
42 Guk
 
18.02.14
09:47
(41) "Черные запросы большей частью выполняются на клиенте"

это каким образом?...
43 Guk
 
18.02.14
09:47
+(42) вроде на клиенте только обработка выборки идет...
44 ДенисЧ
 
18.02.14
09:50
(41) "Черные запросы большей частью выполняются на клиенте, а не на сервере. "
Если ту не умеешь писать ччёрные запросы, которые выполняются на сервере - это твоя и только твоя проблема.
45 Builder
 
18.02.14
09:50
(39) Ну да, в бухгалтерии черные запросы действительно не особо нужны :)
Но переписывать запросы на выборки - бред...
46 Chai Nic
 
18.02.14
10:07
(43) Этого мало? Дрючить каталог временных файлов чтением-записью дбфок, вместо того, чтобы без шума и пыли обработать открытый курсор базы по установленному индексу.
47 Chai Nic
 
18.02.14
10:08
(44) Нахрена? Есть же нормальные прямые запросы через 1c++.
48 Fedor-1971
 
18.02.14
10:15
(24) попробуй использовать: "Условие(Владелец В ВыбВладелец)".
49 ДенисЧ
 
18.02.14
10:16
(47) Есть компании, где ВК запрещены.
50 Chai Nic
 
18.02.14
10:19
(49) Я про такие не слышал, но возможно они и есть.. психов в принципе хватает среди руководителей, есть и параноики)
51 aka AMIGO
 
18.02.14
10:25
(24)-й точно работает!!..
даже странно © :)
52 1Сергей
 
18.02.14
10:25
//    |Условие(Владелец = ВыбВладелец);
    |Условие(ТД в ВыбВладелец);
53 1Сергей
 
18.02.14
10:26
(52) сторно. С родителем попутал
54 aka AMIGO
 
18.02.14
10:27
Запрос =  СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)

    |ТД = Справочник.Договоры.ТекущийЭлемент;
    |Наименование = Справочник.Договоры.Наименование;
    |Код = Справочник.Договоры.Код;
    |Владелец = Справочник.Договоры.Владелец;
    //|Группировка Владелец;
    |Группировка ТД;
    |Условие(Владелец = ВыбВладелец);
    |";
       // Если ошибка в запросе, то выход из процедуры

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
        
    Пока Запрос.Группировка(1) = 1 Цикл
        Сообщить(Запрос.ТД);
    КонецЦикла;

вот проверенный код
результат:
Основной договор" - т.к. других у приятеля нет.. ну не вводит он их, за ненадобностью :)
результат абсолютно корректный
проверено в ТиС
55 aka AMIGO
 
18.02.14
10:29
56 aka AMIGO
 
18.02.14
10:31
(52) ИМХО в случае ТС не суть важно, "в" или "=", но с "в" тоже работает
57 zak555
 
18.02.14
10:50
(25) есть

(27) аналогично
58 zak555
 
18.02.14
10:51
(29) эелемент формы
59 zak555
 
18.02.14
10:51
*эелемент
60 zak555
 
18.02.14
10:51
**элемент = )
61 aka AMIGO
 
18.02.14
10:52
(57) выложи файлик, интересно..
62 zak555
 
18.02.14
10:52
63 v4442
 
18.02.14
10:52
(60) Выложи обработку, очень интересно поглазеть
64 zak555
 
18.02.14
10:53
(36) файловая
65 zak555
 
18.02.14
10:56
обработка
http://yadi.sk/d/-SeHY_wwJ6fmz
66 viktor_vv
 
18.02.14
10:57
(39) "наполовину бухгалтерии" как бы черные запросы по бухгалтерским итогам очень не кошерные, и с этим никто особо не спорит. Но это не значит, что они для всего не кошерные. Хотя сам уже практически не пользуюсь.
67 viktor_vv
 
18.02.14
10:59
(39) "Черный запрос качивает всю исходную таблицу с sql-сервера" ты вроде на Odavid не похож, а фигню такую же пишешь.
68 aka AMIGO
 
18.02.14
10:59
(65) http://gyazo.com/04ee92c6d08f1c6b54214c023e30781f

без проблем вроде..
69 v4442
 
18.02.14
11:00
(65) 1.ert работает,
что за ПОФИГУРАЦИЯ у тебя?
70 zulu_mix
 
18.02.14
11:02
(65) проверь может индексы в базе слетели
71 oslokot
 
18.02.14
11:04
(65) 1.ert работает, КА
72 zak555
 
18.02.14
11:05
(68) (71) странно

(69) самопальная

(70) снёс, переидексирую
73 aka AMIGO
 
18.02.14
11:06
(72) БУ - работает
74 zak555
 
18.02.14
11:08
убийство индексов не помогло
75 aka AMIGO
 
18.02.14
11:09
(72) у тебя справочник "Договоры" - подчинен контрагентам?
76 zak555
 
18.02.14
11:09
(75) естественно
77 aka AMIGO
 
18.02.14
11:15
(76) приведи вот такой скрин: http://gyazo.com/42efe5a8b19407a71bdd0856828f3ed9
78 Fedor-1971
 
18.02.14
11:15
(74) Тестирование и исправление БД?
(76) проверил или уверен?
79 Chai Nic
 
18.02.14
11:16
(66) Практически для всего, за исключением регистров. Там их убожество на фоне стандартных методов работы с итогами выглядит совершенством)
80 zak555
 
18.02.14
11:18
проблема отпала =)
81 aka AMIGO
 
18.02.14
11:18
(80) колись тогда :)
82 zak555
 
18.02.14
11:20
на самом деле у контра не была подчинённых договоров
визуально в справочнике договора отражались элементы без владельца
83 aka AMIGO
 
18.02.14
11:21
(82) ййэххх!! :)
84 oslokot
 
18.02.14
11:21
опять чуда не произошло :(
85 ДенисЧ
 
18.02.14
11:22
такой большой мальчик и так лоханулся...
86 aka AMIGO
 
18.02.14
11:24
(82) тогда запрос измени, чтоб из карточки контрагента выбирался этот элемент-договор
87 aka AMIGO
 
18.02.14
11:24
+86 и условие убери
88 aka AMIGO
 
18.02.14
11:26
конфу не переделывай, укажешь договоры "Подчиненным" - устроишь базе падучую
89 zak555
 
18.02.14
11:29
(85) затупил =)
90 aka AMIGO
 
18.02.14
11:30
(89) да ладно.. если база чужая - ошибка неизбежна
во всех типовых-то - подчиненный..
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn