Имя: Пароль:
1C
1С v8
Установить параметр ЗАПРОС
, ,
0 Rengo
 
28.01.15
09:23
Есть форма документа на форме есть реквизит - комментарий он заполняется пользователем произвольно. Сделал запрос в запросе указал параметр комментарий "не доступен" как в конце запроса описать параметр? Не как не могу сообразить
78 palladyi
 
28.01.15
10:17
(77) Значит в цикл не входит. Или ты входишь в 1с не через отладку (F5)
79 Rengo
 
28.01.15
10:17
Он открывает макет а точку останова не показывает игнорирует ее
80 palladyi
 
28.01.15
10:18
+ (78) в цикл может не входить только если выборка пустая
81 palladyi
 
28.01.15
10:19
(79) ты через f5 запускаешь 1с?
82 igork1966
 
28.01.15
10:19
А вот кто нибудь сказал бы.... нафига для подобных целей используется текстовое поле?
Костыль натуральный...
83 Rengo
 
28.01.15
10:19
У меня есть отдельная консоль запросов я туда запрос пихаю он мне показывает что выбрались документы Опрос с комментарием не доступен 1с запускаю через F5
84 Rengo
 
28.01.15
10:20
igork1966 Табличный документ
85 palladyi
 
28.01.15
10:21
(82) Костыль работает) Мы проблему ищем) Вот заработает все можно и костыль убрать)
86 palladyi
 
28.01.15
10:21
(84) он про поле комментарий
87 Rengo
 
28.01.15
10:23
Внешняя печатная форма - сделал так - новый документ -> внешняя обработка -> форму не создавал только макет
88 palladyi
 
28.01.15
10:23
(83) Поставь точку останова до цикла, на строчке Пока Выборка.Следующий() Цикл и посмотри значение Выборка.Количество()
89 palladyi
 
28.01.15
10:23
а, так это внешняя форма?
90 igork1966
 
28.01.15
10:24
(84) И что?
Это явный пример либо лени (не хочется переделывать), отсутствия ТЗ и т.п.

Подобное кодирование потенциально ненадежное. Когда-нибудь количество таких костылей передет в "качество" и сопровождать это будет невозможно...
91 palladyi
 
28.01.15
10:24
там останавливаться не будет
92 Rengo
 
28.01.15
10:25
Да внешняя
93 palladyi
 
28.01.15
10:25
(90) это не лень а незнание, человек только начинает постигать премудрости 1с)
94 palladyi
 
28.01.15
10:26
(92) добавь строчку Сообщить("Мы в цикле"); в цикл, и проверь, выводится ли сообщение. Если выводится - все ок тут.
95 igork1966
 
28.01.15
10:26
(93) Скорее человек учиться как нельзя программировать.
96 palladyi
 
28.01.15
10:27
(95) все через это проходят. Но я это к тому, что нужно не только порицать его метод, а еще и предлагать варианты решения. Например добавить булево в реквизиты.
97 Rengo
 
28.01.15
10:28
Вот про булево я тоже думаю об этом
98 igork1966
 
28.01.15
10:28
(96) "Например добавить булево в реквизиты"
скорее всего так... чтобы точно сказать нужно понимать цель
99 palladyi
 
28.01.15
10:29
(97) Если тебе можно менять документ - так и сделай, добавь галочку "недоступен" на документ и отбирай по ней.
100 igork1966
 
28.01.15
10:30
(98) + а то количество булевых реквизитов может сильно увеличиться :-)))
101 palladyi
 
28.01.15
10:31
(100) =)))
102 Rengo
 
28.01.15
10:31
В цикле сообщить поставил сообщение не выводит
103 Napalmmm
 
28.01.15
10:32
(92)
1) Создай форму и вытащи на неё реквизит "СсылкаНаОбъект" (он ведь у тебя есть в реквизитах с типом "ДокументСсылка.Опрос"???).
2) На любую кнопку формы повесь вызов процедуры "Печать()" из модуля объекта.
3) Отлаживай.
104 palladyi
 
28.01.15
10:32
(102) Значит косяк в запросе. Покажи запрос из консоли.
105 palladyi
 
28.01.15
10:33
(103) Там не конкретный документ нужен, а выборка из запроса.
106 Napalmmm
 
28.01.15
10:33
(103) *Функции Печать()
107 Napalmmm
 
28.01.15
10:34
(105) Отладить можно для одного документа, а уже после подправить запрос на выборку документов
108 Rengo
 
28.01.15
10:35
ЫБРАТЬ
    Опрос.Дата КАК Дата,
    Опрос.Менеджер КАК Менеджер,
    Опрос.ОпрашиваемоеЛицо КАК Клиент,
    Опрос.Комментарий,
    Опрос.Ссылка
ИЗ
    Документ.Опрос КАК Опрос
ГДЕ
    Опрос.Комментарий ПОДОБНО &Недоступен
109 Rengo
 
28.01.15
10:36
Запрос показывает дату менеджер клиент и коментарий все верно
110 palladyi
 
28.01.15
10:36
(109) Сколько строк попадает в запрос?
111 palladyi
 
28.01.15
10:36
*в выборку
112 Rengo
 
28.01.15
10:36
Одна
113 palladyi
 
28.01.15
10:37
(107) Можно, ты прав.
114 Rengo
 
28.01.15
10:37
Ставлю точку останова на строке ОбластьШапка  = Макет.ПолучитьОбласть("Шапка"); он все равно не переходит к ней к точке
115 palladyi
 
28.01.15
10:37
(112) Проверь имена переменных в макете
116 palladyi
 
28.01.15
10:37
(114) на внешних обработках не работает точки останова
117 palladyi
 
28.01.15
10:38
+ (115) они должны звучать как Дата Менеджер Клиент Комментарий и Ссылка.
118 Rengo
 
28.01.15
10:39
макет выглядит так менеджер это шапка ниже строчка данные под менеджером параметр <Менеджер>
119 Napalmmm
 
28.01.15
10:39
(114) В твоей внешней печатной форме есть реквизит "СсылкаНаОбъект"? Если да, то его тип "ДокументСсылка.Опрос"?
120 Rengo
 
28.01.15
10:42
нету такого реквизита ссылка я в консоле запросов он там появляется
121 palladyi
 
28.01.15
10:43
(120) Как ты запускаешь внешнюю обработку? Это самостоятельный отчет?
122 Rengo
 
28.01.15
10:44
Я думаю так если шапку выводит и данные значит все работает до запроса запрос через консоль проверил работает в цикле надо указать какие параметры он должен заполнять так как они не указаны там
123 Rengo
 
28.01.15
10:45
Я ее запихиваю во внешние печатные формы и она появляется по нажатию кнопки печать
124 Napalmmm
 
28.01.15
10:45
(121) Правильный вопрос. Меня понесло в сторону внешних печатных форм, подключаемых к объекту, хотя тут выборка документов.
125 palladyi
 
28.01.15
10:45
(122) у тебя там есть ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры, Выборка);
126 palladyi
 
28.01.15
10:45
(124) и ты оказался прав)
127 palladyi
 
28.01.15
10:46
(123) а почему у тебя из документа печатается выборка по другим документам?
128 Rengo
 
28.01.15
10:48
Попросили так сделать можно было конечно через отчет сделать по проще но я хочу вот с этим разобраться как это делается так как далее мне надо будет сделать именно через внешнию печатную форму
129 Rengo
 
28.01.15
10:50
Дак а как мне указать в цикле эти параметры чтобы они заполнялись из-за проса ТабДокумент.Вывести(ОбластьДанные. параметры, Менеджер) так?
130 palladyi
 
28.01.15
10:50
(129) Вообще - областьДанные.Параметры.Менеджер = Выборка.Менеджер;
131 Rengo
 
28.01.15
10:51
Да и к стате в цикл не попадает сообщение не выдает
132 palladyi
 
28.01.15
10:52
(131) а попробуй ка сделать так: перед циклом, но после запроса вставь Сообщить(Выборка.Количество()) и скажи что выдаст
133 palladyi
 
28.01.15
10:53
а вообще можно сделать как в (103), так будет проще отладкой заниматься.
134 Rengo
 
28.01.15
10:54
Написал выдал 0
135 Rengo
 
28.01.15
10:55
А должен 1 так как там всего 1 документ
136 Rengo
 
28.01.15
10:56
Скорее всего в этих строках Запрос.УстановитьПараметр("Недоступен", "Недоступен");    
    Выборка = Запрос.Выполнить().Выбрать(); что-то не правильно
137 palladyi
 
28.01.15
10:56
(135) А в консоли у тебя в параметре что написано?
138 Rengo
 
28.01.15
10:58
Выборка = Запрос.Выполнить().Выбрать(); переписал написал так Выборка = Запрос.Выполнить().Выгрузить(); выдал ошибку "При печати Опрос ААН0000001 от 28.01.2015 12:27:01 обнаружены ошибки :
Обработчик печатной формы 123 (внешняя): {ВнешняяОбработка.Продажи.МодульОбъекта(24)}: Метод объекта не обнаружен (Следующий)"
139 Rengo
 
28.01.15
10:59
Выбрать() - это надо в массив поместить значение а от туда брать и заполнять
140 Rengo
 
28.01.15
10:59
Массива же нет
141 hhhh
 
28.01.15
11:00
(138) напиши Выборка = Запрос.Выполнить().Выбрать()

в массив помещать не надо. и брать оттуда не надо.
142 palladyi
 
28.01.15
11:00
(140) Выгрузка - твой массив.
а при выгрузить выгрузка становится таблицей значения, для нее нет метода Следующий() Там Для Каждлго Стр ИЗ ТЗ Цикл
143 palladyi
 
28.01.15
11:01
(142) *Выборка - твой массив
144 Rengo
 
28.01.15
11:01
написал
145 Rengo
 
28.01.15
11:01
опять выдал 0
146 palladyi
 
28.01.15
11:02
(145) Попробуй написать Запрос.УстановитьПараметр("Недоступен", "Недоступен%");
147 Rengo
 
28.01.15
11:05
Написал выдал 0. Я вот акцентировал внимание на конструктор запроса с обработкой результата он не выдает значение
148 palladyi
 
28.01.15
11:06
(147) В смысле?
149 Napalmmm
 
28.01.15
11:13
(0)
По-видимому функция печать должна выглядеть следующим образом:
[code]
Функция Печать() Экспорт

    ТабДок = Новый ТабличныйДокумент;

    Макет = ПолучитьМакет("Макет");

    ОбластьШапка  = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(ОбластьШапка);

    ОбластьДанные = Макет.ПолучитьОбласть("Данные");        

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Опрос.Дата КАК Дата,
                   |    Опрос.Менеджер КАК Менеджер,
                   |    Опрос.ОпрашиваемоеЛицо КАК Клиент,
                   |    Опрос.Комментарий,
                   |    Опрос.Ссылка
                   |ИЗ
                   |    Документ.Опрос КАК Опрос
                   |ГДЕ
                   |    Опрос.Комментарий ПОДОБНО ""%Недоступен%""";

    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
        ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры, Выборка);
        ТабДок.Вывести(ОбластьДанные);
    КонецЦикла;
    
    Возврат ТабДок;


КонецФункции
[/code]

От себя бы еще добавил условие в запрос как минимум на дату документа.

Если не отработает и этот код, то, как мне кажется, необходимо копать в сторону макета. Или параметры не принадлежат области, или не являются параметрами и т.д.
150 Rengo
 
28.01.15
11:17
Щас попробую
151 Rengo
 
28.01.15
11:23
ри печати Опрос ААН0000001 от 28.01.2015 12:27:01 обнаружены ошибки :
Обработчик печатной формы 123 (внешняя): {Справочник.ВнешниеПечатныеФормы.МодульОбъекта(105)}: Слишком много фактических параметров
с тем кодом
152 Rengo
 
28.01.15
11:25
В макете область Данные в ней параметры менеджер дата и т.д
153 palladyi
 
28.01.15
11:27
(151) 105 строчка - это что?
154 Rengo
 
28.01.15
11:30
У меня ее вообще нету 105 сделал так
//Функция Печать(ДокументОбъект, ТабДокумент) Экспорт
//        
//    //ТабДок = Новый ТабличныйДокумент;
//    Макет = ПолучитьМакет("Макет");
//    ОбластьШапка  = Макет.ПолучитьОбласть("Шапка");
//    ОбластьДанные = Макет.ПолучитьОбласть("Данные");
//    ТабДокумент.Вывести(ОбластьШапка);
//    //ТабДокумент.Вывести(ОбластьДанные);
//    ТабДокумент.Очистить();
//    Запрос = Новый Запрос;
//    Запрос.Текст = "ВЫБРАТЬ
//                   |    Опрос.Дата КАК Дата,
//                   |    Опрос.Менеджер КАК Менеджер,
//                   |    Опрос.ОпрашиваемоеЛицо КАК Клиент,
//                   |    Опрос.Комментарий,
//                   |    Опрос.Ссылка
//                   |ИЗ
//                   |    Документ.Опрос КАК Опрос
//                   |ГДЕ
//                   |    Опрос.Комментарий ПОДОБНО &Недоступен";
//    Запрос.УстановитьПараметр("Недоступен", "Недоступен%");    
//    Выборка = Запрос.Выполнить().Выбрать();
// Сообщить(Выборка.Количество());    
//    Пока Выборка.Следующий() Цикл
//        ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры, Выборка);
//        ТабДокумент.Вывести(ОбластьДанные);
//        Сообщить("Все хорошо");
//    КонецЦикла;
//    
//    ТабДокумент.Вывести(Макет);
//    Возврат ТабДокумент;

//КонецФункции
//
Функция Печать() Экспорт

    ТабДок = Новый ТабличныйДокумент;

    Макет = ПолучитьМакет("Макет");

    ОбластьШапка  = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(ОбластьШапка);

    ОбластьДанные = Макет.ПолучитьОбласть("Данные");        

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Опрос.Дата КАК Дата,
                   |    Опрос.Менеджер КАК Менеджер,
                   |    Опрос.ОпрашиваемоеЛицо КАК Клиент,
                   |    Опрос.Комментарий,
                   |    Опрос.Ссылка
                   |ИЗ
                   |    Документ.Опрос КАК Опрос
                   |ГДЕ
                   |    Опрос.Комментарий ПОДОБНО ""%Недоступен%""";

    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
        ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры, Выборка);
        ТабДок.Вывести(ОбластьДанные);
    КонецЦикла;
    
    Возврат ТабДок;


КонецФункции
155 palladyi
 
28.01.15
11:32
(154) у тебя передается в функцию печать 2 параметра
156 palladyi
 
28.01.15
11:33
(154) сделай так: Печать(ДокументОбъект, ТабДокумент) Экспорт
157 Rengo
 
28.01.15
11:38
Сделал с этого кода выводит только шапку ошибок не выдает
158 palladyi
 
28.01.15
11:38
(157) Значит проблема в запросе.
159 palladyi
 
28.01.15
11:43
(158) а у тебя в комментарии точно написано "Недоступен" без ошибок и с большой буквы?
160 Rengo
 
28.01.15
11:45
Написано так Не доступен через пробел
161 1976vas
 
28.01.15
11:45
)
162 Napalmmm
 
28.01.15
11:46
(160) в запросе %Недоступен% исправить на %Не доступен%
163 palladyi
 
28.01.15
11:47
=)))))
164 palladyi
 
28.01.15
11:47
то есть мы два часа тут ... из-за пробела?))
165 Rengo
 
28.01.15
11:48
точно
166 palladyi
 
28.01.15
11:48
(160) Все-таки делай через булево, будет проще))
167 Rengo
 
28.01.15
11:48
Пробел поставил все заработало =)))
168 palladyi
 
28.01.15
11:48
(167) Поздравляю))
169 1976vas
 
28.01.15
11:48
И как это в консоли работало интересно )
170 Rengo
 
28.01.15
11:49
Фу... Спасибо огромное. Через булево попробую
171 palladyi
 
28.01.15
11:50
(170) Пожалуйста) Вообще отбирать что-то по строке - дурной тон, используется только в крайнем случае.
172 Rengo
 
28.01.15
11:50
Спасибо всем за помощь. При много благодарен всем
173 Rengo
 
28.01.15
11:50
Да точно не обратил внимание в консоли тоже пробел
174 Rengo
 
28.01.15
11:51
Извиняюсь
175 Rengo
 
28.01.15
11:51
Это еще раз говорит что нужно быть внимательным
176 palladyi
 
28.01.15
11:52
(175) Нормально все, из-за мелочей всегда куча проблем)
177 Rengo
 
28.01.15
11:55
=)
Закон Брукера: Даже маленькая практика стоит большой теории.