|
Как обратиться из модуля объекта к процедуре которая форме документа. | ☑ | ||
---|---|---|---|---|
0
Олеся999
30.06.17
✎
11:03
|
Как обратиться из модуля объекта к процедуре, которая находится в форме документа?
|
|||
1
Lexey_
30.06.17
✎
11:04
|
(0) дописать Экспорт, получить форму, обратиться
|
|||
2
Serg_1960
30.06.17
✎
11:10
|
Попытки реализации такого взаимодействия - конфликт/противоречие с концепцией фирмы 1С.
Выход? Ну, например, перенести "общую" часть алгоритма процедуры в модуль менеджера объекта. |
|||
3
Irbis
30.06.17
✎
11:12
|
(0) А нафейхоа?
|
|||
4
Олеся999
30.06.17
✎
11:13
|
(2) Смысл такой, нужно при групповом проведении выводить сообщения, это можно осуществить только в модуле объекта,
но в модуле объекта заполнение таблиц запросом не срабатывает, т.к не заходит в цикл. На форме документа все работает отлично. вот и хотела вызывать из модуля объекта процедуру которая на форме документа |
|||
5
Lexey_
30.06.17
✎
11:15
|
(4) надо исправить вот это: "но в модуле объекта заполнение таблиц запросом не срабатывает, т.к не заходит в цикл"
|
|||
6
Олеся999
30.06.17
✎
11:19
|
Создаю таблу :
КвалификаторыЧисла = Новый КвалификаторыЧисла(8, 2, ДопустимыйЗнак.Любой); ТЗВирт = Новый ТаблицаЗначений; ТЗВирт.Колонки.Добавить("ОрганизацияОтправитель", Новый ОписаниеТипов("СправочникСсылка.Организации")); ТЗВирт.Колонки.Добавить("Период" , Новый ОписаниеТипов("Дата")); ТЗВирт.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТУТ запрос .................. //потом : РезультатЗапроса = Запрос.Выполнить(); Результат = Запрос.Выполнить().Выгрузить(); // Далее это и в цикл не заходит Для каждого Стр из Результат Цикл ЗаполнитьЗначенияСвойств(ТЗВирт.Добавить(),Стр); ТЗВирт.Свернуть("ОрганизацияОтправитель","Количество"); КонецЦикла; |
|||
7
Lexey_
30.06.17
✎
11:20
|
(6) Результат пустой?
|
|||
8
Олеся999
30.06.17
✎
11:21
|
(7) Выполняя это же на форме документа заполняется, все работает отлично. В модуле объекта не работает!
|
|||
9
Lexey_
30.06.17
✎
11:22
|
(8) Результат пустой?
|
|||
10
mehfk
30.06.17
✎
11:22
|
(0) Этот вопрос задавался на форуме 100500 раз.
|
|||
11
Олеся999
30.06.17
✎
11:29
|
||||
12
SleepyHead
гуру
30.06.17
✎
11:29
|
(4) В этой фразе прекрасно все.
|
|||
13
Serg_1960
30.06.17
✎
11:29
|
(6) Не нужно отдельно создавать таблицуи заполнять её в цикле. Достаточно сделать запрос так, чтобы он возвращал данные с нужными тебе наименованиями колонок. И далее просто:
ТЗВирт = Запрос.Выполнить().Выгрузить(); ТЗВирт.Свернуть("ОрганизацияОтправитель","Количество"); PS: в цикле таблицу не сворачивают. Это "разовая" операция и имеет смысл после заполнения таблицы (после цикла заполнения) |
|||
14
SleepyHead
гуру
30.06.17
✎
11:33
|
(13) Это для солидности. Ну нехорошо, когда программа выдает результат мгновенно. Надо помигать лампочками, подумать.
|
|||
15
Serg_1960
30.06.17
✎
11:34
|
(8) Тема для телепатов (намекаю: текст запроса не озвучен) и потому погадаю: какой-то из параметров запроса имеет значение (и смысл) в форме и не заполнен в модуле.
|
|||
16
Олеся999
30.06.17
✎
11:35
|
(13) Согласна сворачивать можно и не в цикле, но мне все равно нужно, выгружать временную таблицу и перебирать её значения на определенные условия
|
|||
17
SleepyHead
гуру
30.06.17
✎
11:35
|
(15) Типично женская постановка задачи - вот результат 10, а должно быть 12, программа не работает!
|
|||
18
Serg_1960
30.06.17
✎
11:36
|
(11) "Результат.Количество()"
|
|||
19
Lexey_
30.06.17
✎
11:36
|
(11) на вопрос не ответила
|
|||
20
Олеся999
30.06.17
✎
11:39
|
ТЗВирт = Новый ТаблицаЗначений;
ТЗВирт.Колонки.Добавить("ОрганизацияОтправитель", Новый ОписаниеТипов("СправочникСсылка.Организации")); ТЗВирт.Колонки.Добавить("Период" , Новый ОписаниеТипов("Дата")); ТЗВирт.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",КвалификаторыЧисла)); //ТЗВирт = Таблица.Выгрузить(); Для Каждого СтрОбъект из ЭтотОбъект.Затраты Цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | УслугиПодразделениям.ОрганизацияОтправитель, | УслугиПодразделениям.Период, | УслугиПодразделениям.Количество |ИЗ | РегистрНакопления.УслугиПодразделениям КАК v_УслугиСобственнымПодразделениям |ГДЕ | УслугиПодразделениям.Период МЕЖДУ &НачалоПериода И &КонецПериода | И УслугиПодразделениям.ОрганизацияОтправитель = &ОрганизацияОтправитель | И УслугиПодразделениям.ОбъектОС = &ОбъектОС"; Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Дата)); Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("ОрганизацияОтправитель",Организация); РезультатЗапроса = Запрос.Выполнить(); Результат = Запрос.Выполнить().Выгрузить(); Для каждого Стр из Результат Цикл ЗаполнитьЗначенияСвойств(ТЗВирт.Добавить(),Стр); ТЗВирт.Свернуть("ОрганизацияОтправитель","Количество"); КонецЦикла; Для Каждого СтрТЧ из ТЗВирт Цикл Если СтрТЧ.Количество > 1 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "текст"; Сообщение.Сообщить(); КонецЕсли; КонецЦикла; ТЗВирт.Очистить(); КонецЦикла; |
|||
21
Serg_1960
30.06.17
✎
11:40
|
(17) Ахтунг, сексизм :( Такая постановка задачи свойственна неопытным программистам обоего пола.
|
|||
22
SleepyHead
гуру
30.06.17
✎
11:41
|
(21) Ахтунг, навешивание ярлыков. Ну или иди поработай воспитателем в детсад. Ведь у женщин и мужчин одинаковые способности ко всему, правда же?
|
|||
23
Олеся999
30.06.17
✎
11:43
|
(19) А как посмотреть то ?)
|
|||
24
Denis_CFO
30.06.17
✎
11:44
|
(20) А я не понял, для чего поле период выбирать, если оно нигде больше не участвует и в итоге ещё после свертки таблицы удаляется?
|
|||
25
SleepyHead
гуру
30.06.17
✎
11:45
|
(23) Смотрите не в табло. Нажмите Shift+F9, введите выражение Результат, и справа от ввода результата нажмите кнопочку просмотра ТЗ.
|
|||
26
Олеся999
30.06.17
✎
11:46
|
(25) Ну отбирает за месяц потом сворачивает, и получаем количество. Все логично
|
|||
27
SleepyHead
гуру
30.06.17
✎
11:47
|
(26) необязательно для этого период включать в поля выборки запроса, достаточно использовать в условии.
|
|||
28
dezss
30.06.17
✎
11:47
|
(26) период для этого в конструкции ВЫБРАТЬ писать не обязательно
|
|||
29
dezss
30.06.17
✎
11:48
|
(28) + да и свернуть можно было еще в запросе
|
|||
30
Denis_CFO
30.06.17
✎
11:48
|
(26) Уберите его из запроса (не из условия) и получите итого количество по организации за период.
|
|||
31
Serg_1960
30.06.17
✎
11:49
|
(20) Не вижу где присвоение параметра запроса "ОбъектОС"?
|
|||
32
Олеся999
30.06.17
✎
11:50
|
(31) Его не надо, убрать забыла
|
|||
33
Serg_1960
30.06.17
✎
11:52
|
Где проверка что объект не модифицирован и проведён?
|
|||
34
SleepyHead
гуру
30.06.17
✎
11:53
|
(33) Вот ты сейчас окончательно мозг девушки взломаешь. Слишком много базовых вещей за один раз.
|
|||
35
Serg_1960
30.06.17
✎
11:54
|
Упс :) Вопрос снимается :))
|
|||
36
SleepyHead
гуру
30.06.17
✎
11:54
|
(35) :)
|
|||
37
Олеся999
30.06.17
✎
11:55
|
(25) где? я что то не вижу http://img.ipev.ru/2017/06/30/TUTUfb8b6.png
|
|||
38
dezss
30.06.17
✎
11:55
|
Так этот код вообще не имеет никакого отношения к документу. Правильный ответ, похоже, в (31)
|
|||
39
SleepyHead
гуру
30.06.17
✎
11:56
|
(37) Поставьте курсор на результат в нижней части списка (глде слово результат и справа - таблица значений)
Нажмите F2 или появится кнопка для просмотра ТЗ справа, среди кнопок. |
|||
40
Новиков
30.06.17
✎
11:56
|
Зачем нужен цикл по ЭтотОбъект.Затраты? Зачем там запрос внутри, если при обходе этой тч никакие параметры оттуда не берутся?
|
|||
41
Serg_1960
30.06.17
✎
11:56
|
(38) А если документ делает движения в этот регистр - надо ли читает его собственные движения?
|
|||
42
SleepyHead
гуру
30.06.17
✎
11:57
|
(37 Хотя странно, что у вас этой кнопки нет, сейчас выложу, как это выглядит у меня
|
|||
43
dezss
30.06.17
✎
11:57
|
(38) тьфу...пятница...уже в глазах двоится от этих касс %)
|
|||
44
Serg_1960
30.06.17
✎
11:59
|
(40) См. (14) Пятница же :)
|
|||
45
Новиков
30.06.17
✎
12:00
|
А понял. Красивый и логичный код. Написано видимо под утренний мейкап :)
|
|||
46
SleepyHead
гуру
30.06.17
✎
12:00
|
||||
47
Олеся999
30.06.17
✎
12:08
|
(46) у меня такой нет
|
|||
48
Serg_1960
30.06.17
✎
12:08
|
(46) Про платформу спросил бы, свою озвучил бы... "Ну мне, так, для себя, чисто поржать"(с)
|
|||
49
SleepyHead
гуру
30.06.17
✎
12:15
|
(48) Да уже понял, что у Олеси платформа довольно старая. У меня 8.3.10.2252, но кнопка просмотра ТЗ была уже в 8.3.6, если ничего не путаю, а то и раньше.
|
|||
50
Олеся999
30.06.17
✎
12:26
|
У кого-нибудь есть мысли почему в цикл не заходит ?)
|
|||
51
SleepyHead
гуру
30.06.17
✎
12:27
|
(50) Есть, результат запроса дает пустую ТЗ.
|
|||
52
Новиков
30.06.17
✎
12:32
|
(50) ты напиши зачем тебе этот цикл. Ты ничего из него не заполняешь, т.е. обходишь просто по строчно это тз и каждый раз дергаешь независимый от этого_всего запрос. Это бессмысленно, ты явно что-то не так делаешь. Ответь на этот вопрос и тебе подскажут. А сейчас - это красивый код и не более того :)
|
|||
53
Serg_1960
30.06.17
✎
12:33
|
(50) См. (18)
|
|||
54
Олеся999
30.06.17
✎
12:34
|
Для Каждого СтрТЧ из ТЗВирт Цикл
Если СтрТЧ.Количество > 1 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "текст"; Сообщение.Сообщить(); КонецЕсли; КонецЦикла; Если количество больше 1 нужно выводить сообщение |
|||
55
Serg_1960
30.06.17
✎
12:41
|
Поделись секретом: как ты в запросе выбираешь значения из "УслугиПодразделениям", если запрос составлен на таблицу "v_УслугиСобственнымПодразделениям"? Или опять "Его не надо, убрать забыла"(цы)?
|
|||
56
Новиков
30.06.17
✎
12:41
|
А зачем в цикле запрос? Почему его без цикла нельзя сделать, оставить только тело и вывести строку. Зачем ты один и тот же запрос крутишь там и строчки выводишь?
|
|||
57
Serg_1960
30.06.17
✎
12:44
|
(56) До оптимизации не дошли, автор застряла на уровне болванки, шаблона, алгоритма лишённого смысла. Ок?
|
|||
58
Новиков
30.06.17
✎
13:00
|
Понял. И теперь надо понять почему оно в модуле формы работает, а в модуле объекта - нет?
|
|||
59
Олеся999
30.06.17
✎
13:18
|
(55) УслугиПодразделениям я это уже поправила (56) да я уже убрала этот цикл
|
|||
60
Олеся999
30.06.17
✎
13:19
|
(58) именно)
|
|||
61
Олеся999
30.06.17
✎
14:38
|
Запрос кст. выполняется проверила на консоле
|
|||
62
dezss
30.06.17
✎
14:40
|
(61) значит показывай переписанный код
|
|||
63
Олеся999
30.06.17
✎
14:49
|
(62)
Квалификаторы = Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой); ТЗВирт = Новый ТаблицаЗначений; ТЗВирт.Колонки.Добавить("ОрганизацияОтправитель", Новый ОписаниеТипов("СправочникСсылка.Организации")); ТЗВирт.Колонки.Добавить("Период" , Новый ОписаниеТипов("Дата")); ТЗВирт.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",Квалификаторы)); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | УслугиПодразделениям.ОрганизацияОтправитель, | УслугиПодразделениям.Период, | УслугиПодразделениям.Количество |ИЗ | РегистрНакопления.УслугиПодразделениям КАК УслугиПодразделениям |ГДЕ | УслугиПодразделениям.Период МЕЖДУ &НачалоПериода И &КонецПериода | И УслугиПодразделениям.ОрганизацияОтправитель = &ОрганизацияОтправитель"; Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Дата)); Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("ОрганизацияОтправитель",Организация); РезультатЗапроса = Запрос.Выполнить(); Результат = Запрос.Выполнить().Выгрузить(); Для каждого Стр из Результат Цикл ЗаполнитьЗначенияСвойств(ТЗВирт.Добавить(),Стр); КонецЦикла; ТЗВирт.Свернуть("ОрганизацияОтправитель","Количество"); Для Каждого СтрТЧ из ТЗВирт Цикл Если СтрТЧ.Количество > 1 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Просто текст"; Сообщение.Сообщить(); КонецЕсли; КонецЦикла; ТЗВирт.Очистить(); |
|||
64
dezss
30.06.17
✎
15:01
|
(63) да убери ты уже эту ересь
ТЗВирт = Новый ТаблицаЗначений; ТЗВирт.Колонки.Добавить("ОрганизацияОтправитель", Новый ОписаниеТипов("СправочникСсылка.Организации")); ТЗВирт.Колонки.Добавить("Период" , Новый ОписаниеТипов("Дата")); ТЗВирт.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",Квалификаторы)); Для каждого Стр из Результат Цикл ЗаполнитьЗначенияСвойств(ТЗВирт.Добавить(),Стр); КонецЦикла; просто делай вместо Результат = Запрос.Выполнить().Выгрузить(); вот это ТЗВирт = Запрос.Выполнить().Выгрузить(); после ТЗВирт.Свернуть("ОрганизацияОтправитель","Количество"); напиши Сообщить(ТЗВирт.Количество()); и покажи что получилось. |
|||
65
SleepyHead
гуру
30.06.17
✎
17:31
|
(57) Ну, наконец ты понял, что женщина программистом быть не может?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |