|
Заполнение ТЧ данными из запроса | ☑ | ||
---|---|---|---|---|
0
crueltytanya
12.09.12
✎
11:25
|
Прошу помощи, очень прошу.
В документе есть одна ТЧ. В ТЧ поля: телефон, свойство1, свойство2 и т.д. При изменении поля телефон, необходимо автоматическое заполнение полей свойство1, свойство2 и т.д. Сделала так: 1. При изменении поля телефон вызывается процедура заполнениеТЧ. 2. Процедура заполнениеТЧ прозиводит выборку из справочников данными необходимыми для заполнения полей свойство1, свойство2 и т.д. 3. Как теперь эту выборку затолкать в табличну часть? Выборка производится на сервере, параметр передается, даже в табло идны все значения свойств для ТЧ, все верно. Загвостка в том, что не знаю как передать значения выборки на форму. Прошу помощи, хотя бы подсказку с помощью чего это можно сделать, только учусь. :) Очень благодарна. |
|||
1
Alex S D
12.09.12
✎
11:26
|
слишком сложно, только после фотки
|
|||
2
DrShad
12.09.12
✎
11:26
|
без фото не взлетит
|
|||
3
crueltytanya
12.09.12
✎
11:30
|
(1), (2) Ок, дойду до конфигурации и сделаю скрин и код выложу.
|
|||
4
palpetrovich
12.09.12
✎
11:31
|
(3) тонко :)
|
|||
5
osa1C
12.09.12
✎
11:32
|
(3) Ждём-с
|
|||
6
alextom81
12.09.12
✎
11:33
|
(3) Если в результате запросе у тебя структура колонок таблицы совпадает со структурой табличной части (если это табличная часть) справочника, то необходимо получить объект, его табличную часть, затем (либо добавить, либо найти нужную строку). И просто сделать ЗаполнитьЗначенияСвойств() - если колонок в приёмнике не будет нужных, они будут пустые.
|
|||
7
DrShad
12.09.12
✎
11:33
|
(3) ну мы тебе тоже скрины СП выложим, пойдет?
|
|||
8
DrShad
12.09.12
✎
11:34
|
(6) ты сабж внимательно прочитал? мадам на УФ
|
|||
9
Alex S D
12.09.12
✎
11:34
|
(7) тихо ты, пусть чего-нибудь уже выложит)
|
|||
10
DrShad
12.09.12
✎
11:36
|
(9) нафига мне скрин пофигуратора - у меня своих около сотни есть
|
|||
11
crueltytanya
12.09.12
✎
11:39
|
Так-с.. Опыт работы с 1С: 0 лет, прошу отнестись с пониманием.
|
|||
12
crueltytanya
12.09.12
✎
11:40
|
Вот мой код:
&НаКлиенте Процедура ДвиженияТелефоновТелефонПриИзменении(Элемент) СтрокаТел = Элементы.ДвиженияТелефонов.ТекущиеДанные; ЗаполнениеТЧ(СтрокаТел.Телефон); КонецПроцедуры &НаСервере Процедура ЗаполнениеТЧ(СтрокаТел1) Запрос1 = Новый Запрос; Запрос1.Текст="ВЫБРАТЬ | Телефоны.Наименование, | Телефоны.РасположениеТелефона, | Телефоны.ТипУслугиТелефоны, | Телефоны.ПараллельнаяЛиния, | Телефоны.Межгород, | Телефоны.КаналРН, | Телефоны.ТональныйНабор, | Телефоны.Автонабор, | Телефоны.КаналРНТелефон |ИЗ | Справочник.Телефоны КАК Телефоны |ГДЕ | Телефоны.Наименование = &Тел"; Запрос1.УстановитьПараметр("Тел", СтрокаТел1); Выборка = Запрос1.Выполнить().Выбрать(); Запрос2 = Новый Запрос; Запрос2.Текст="ВЫБРАТЬ | Сотрудники.Наименование, | Сотрудники.ФамилияСотрудника, | Сотрудники.ИмяСотрудника, | Сотрудники.ОтчествоСотрудника |ИЗ | Справочник.Сотрудники КАК Сотрудники |ГДЕ | Сотрудники.ТелефонСотрудника = &Тел"; Запрос2.УстановитьПараметр("Тел", СтрокаТел1); ВыборкаАб = Запрос2.Выполнить().Выбрать(); КонецПроцедуры |
|||
13
Alex S D
12.09.12
✎
11:40
|
понимаем..
|
|||
14
DrShad
12.09.12
✎
11:41
|
(12) красивый код, но ни о чем - весь в топку
|
|||
15
crueltytanya
12.09.12
✎
11:41
|
(6) табличная документа
|
|||
16
DrShad
12.09.12
✎
11:42
|
(15) не отвлекайся, чувак просто не внимательно прочитал
|
|||
17
crueltytanya
12.09.12
✎
11:42
|
по (12) вот получила я выборку Выборка. Как мне ее передать в табличную часть документа?
|
|||
18
Alex S D
12.09.12
✎
11:43
|
наверное через временное хранилище
|
|||
19
DrShad
12.09.12
✎
11:43
|
(17) вообще-то нужно переделать всю процедуру - она не оптимальна
|
|||
20
Aprobator
12.09.12
✎
11:43
|
(12) самописка что ли?
|
|||
21
crueltytanya
12.09.12
✎
11:45
|
(17) блиин.. так тут и переделывать то нечего, просто два запроса. :( что именно не оптимально?
|
|||
22
crueltytanya
12.09.12
✎
11:45
|
(20) пробы, только учусь сижу.
|
|||
23
Aprobator
12.09.12
✎
11:45
|
а вообще, если свойства телефона в тч не редактируются, то делается все прямо на форме. По крайней мере данные по телефону из первого запроса вытаскиваются прям на форме без запроса.
|
|||
24
crueltytanya
12.09.12
✎
11:46
|
(18) результат запроса поместить во временное хранилище? а потом из временного хранилища заполнить ТЧ?
|
|||
25
palpetrovich
12.09.12
✎
11:48
|
(21) а ты их вообще куда-то возвращаешь?
вот тебе примерчик из Радченко (почти) :) &НаКлиенте Процедура ТоварыТоварПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; СтруктураЦенаИЕдиница = ВернутьЦенуИЕдиницу(Объект.Дата, СтрокаТабличнойЧасти.Товар, Объект.КатегорияЦены); СтрокаТабличнойЧасти.Единица = СтруктураЦенаИЕдиница.Единица; СтрокаТабличнойЧасти.Цена = СтруктураЦенаИЕдиница.Цена; КонецПроцедуры &НаСервере Функция ВернутьЦенуИЕдиницу(АктуальнаяДата, НоменклатураСсылка, КатегорияЦенСсылка) Экспорт Отбор = Новый Структура(); Отбор.Вставить("Номенклатура", НоменклатураСсылка); Отбор.Вставить("КатегорияЦены", КатегорияЦенСсылка); ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор); ВозвращаемаяСтруктура = Новый Структура(); ВозвращаемаяСтруктура.Вставить("Цена", ЗначенияРесурсов.Цена); ВозвращаемаяСтруктура.Вставить("Единица", НоменклатураСсылка.Единица); Возврат ВозвращаемаяСтруктура; КонецФункции |
|||
26
crueltytanya
12.09.12
✎
11:48
|
(23) данные редактируются. хочу так сделать, чтоб пользователь сразу видел какие услуги на телефоне и мог тут же менять их если надо. после проводки документа, вносились соответствующие изменения (ну это я научилась делать).
|
|||
27
Aprobator
12.09.12
✎
11:49
|
(26) данные элемента справочника редактируются в тч документа?
|
|||
28
DrShad
12.09.12
✎
11:50
|
(27) +100500
ужас |
|||
29
Aprobator
12.09.12
✎
11:51
|
не то слово.
|
|||
30
crueltytanya
12.09.12
✎
11:51
|
(25) на мой первый неопытный взгляд это может подойти, попробую... доберусь до конфигурации... :)
|
|||
31
crueltytanya
12.09.12
✎
11:53
|
(27) да, после проводки документа, ну и еще идет запись в несколько регистров и изменяется справочник. у меня это получилось. не могу только данные подставить в табличную часть документа.
|
|||
32
Aprobator
12.09.12
✎
11:55
|
(31) дело в получилось, а в решении проблемы методически неверным путем. Вызвать из ТЧ реквизит телефон и отредактировать его - плевое дело. Зачем все это безобразие в ТЧ? А вывести информацию по телефону в форме документа можно и без использования дополнительных реквизитов ТЧ. 8.2. это позволяет делать на раз.
|
|||
33
Aprobator
12.09.12
✎
11:55
|
... не в получилось.
|
|||
34
crueltytanya
12.09.12
✎
11:56
|
(28), (29) почему это ужас? :) объясните чайнику..
|
|||
35
DrShad
12.09.12
✎
11:57
|
(34) при проведении документа кошерно только формирование записей регистров - изменение других объектов кошерно производить непосредственно в самих объектах, а не из ТЧ других
|
|||
36
DrShad
12.09.12
✎
11:58
|
(34) вот смотри, пока ты будешь менять ТЧ, кто-то заблокирует объект элемента справочника и что тогда?
|
|||
37
Aprobator
12.09.12
✎
11:59
|
потому что элемент справочника должен редактироваться в форме элемента справочника. А если есть какие меняющиеся данные связанные с элементом справочника, то их стоит пихать в регистр сведений. И вот его уже менять при проведении документа.
|
|||
38
Aprobator
12.09.12
✎
12:00
|
(34) хм , я решил, что вы кофейница.
|
|||
39
Aprobator
12.09.12
✎
12:01
|
взять даже тут: один пользователь изменил элемент справочника в документе и провел его и через минуту другой пользователь поменял его под себя и, пардон, как в этой тряхомудии потом разбираться?
|
|||
40
crueltytanya
12.09.12
✎
12:03
|
(35), (36) ага, так.. немного конкретизирую задачку, поставленную мной, себе самой.
Вот например, мой справочник содержит различные характеристики телефона, допустим организация хочет изменить свойства нескольких телефонов, соответсвенно необходим документ для этого. Пользователь сел и изменяет, например 10 телефонов в одном документе. И проведением сразу актуализирует справочник и пишет в регистры, скажем так "статистику изменения свойств телефонов". (39) запретить пользователю менять справочник? |
|||
41
Aprobator
12.09.12
✎
12:06
|
документ тут не нужен. Открывается справочник и там все меняется.
|
|||
42
palpetrovich
12.09.12
✎
12:06
|
(40) для таких задач придуман РегистрСведений
|
|||
43
palpetrovich
12.09.12
✎
12:07
|
+42 периодический
|
|||
44
zladenuw
12.09.12
✎
12:08
|
(2) ждем :)
|
|||
45
Aprobator
12.09.12
✎
12:09
|
вообще не представляю себе периодически меняющиеся характеристики телефона. Задача, имхо, просто из пальца высосана. А вообще да, меняющиеся характеристики по производственной необходимости обычно хранятся в регистре сведений.
|
|||
46
palpetrovich
12.09.12
✎
12:10
|
(45) к примеру - владелец (сотрудник)
|
|||
47
osa1C
12.09.12
✎
12:16
|
(46) Ну сказано же что все периодические реквизиты хранятся в РегистеСведений и меняются в Справочнике
|
|||
48
crueltytanya
12.09.12
✎
14:43
|
(45) не из пальца, :) пример рабочий, в месяц много перемещений между пользователями и услугами бывает. Потому и взяла этот пример.
(40) регистр сведений есть периодический (периодичность в течении дня), но пользователь сказал: "Хочется открыть справочник и видеть актуальные данные по конкретному телефону и чтобы больше никуда не лазить". А документ я сделала для того чтобы можно было для кучи телефонов сразу менять услуги, и потом основание для этого документа организовать (пока не придумала как) и там же хочу потом попробовать список абонентов выводить и возможность изменять абонентов. А потом еще хочу сумму затрат рассчитывать на конкретный телефон, чтобы можно было затраты сокращать. (Про затраты точно из пальца, просто очень хочу научиться). (25)Как попробую сразу отпишу. А вот по желанию пользователя видеть в справочнике актуальные данные что посоветуете? Что делать если он хочет? Все таки записывать в справочнике после проведения документа? или как то еще? :) посылать пользователя не советовать. :) |
|||
49
crueltytanya
12.09.12
✎
14:53
|
(40) - типа сама себе ответила... (40) это было на (42)
|
|||
50
Aprobator
12.09.12
✎
14:54
|
(48) данные из регистра сведений можно вывести в форму элемента справочника. В типовых конфигурациях это сплошь и рядом. Взять хотя бы справочника физические лица.
|
|||
51
palpetrovich
12.09.12
✎
14:57
|
(48) на форму справочника текст, в процедуру формы "ОбновлениеОтображения" - запрос к регистру с результатом типа: ЭлементыФормы.ТвояНадпись.Заголовок = ВыборкаДетальныеЗаписи.ВладелецТелефона; к примеру :)
|
|||
52
crueltytanya
12.09.12
✎
15:06
|
Боже! Как же с вами интересно!! Ща все буду пробовать. :) Курсы, курсами, когда со знающими людьми общаешься, то пользы не меньше. :) Так глядишь и чему-нибудь научусь... Спасибо. Что получится напишу.
|
|||
53
Aprobator
12.09.12
✎
15:08
|
(52) курсы дают только направление.
|
|||
54
DrShad
12.09.12
✎
15:09
|
(53) как и пять-шесть лет универа, а опыт не пропьешь и в карты не проиграешь
|
|||
55
crueltytanya
12.09.12
✎
18:04
|
Так. Получилось вот что:
&НаСервере Функция ВернутьСтруктуруТел(АктуальнаяДата, ТелефонСсылка) Экспорт Отбор = Новый Структура(); Отбор.Вставить("Телефон", ТелефонСсылка); ЗначенияРесурсов = РегистрыСведений.ДвиженияТелефонов.ПолучитьПоследнее(АктуальнаяДата,Отбор); ВозвСтр = Новый Структура(); //ВозвСтр.Вставить("Расположение", ЗначенияРесурсов.Расположение); ВозвСтр.Вставить("Тип", ЗначенияРесурсов.Тип); ВозвСтр.Вставить("ПараллельнаяЛиния", ЗначенияРесурсов.ПараллельнаяЛиния); ВозвСтр.Вставить("МежГород", ЗначенияРесурсов.МежГород); ВозвСтр.Вставить("КаналРН", ЗначенияРесурсов.КаналРН); ВозвСтр.Вставить("ТональныйНабор", ЗначенияРесурсов.ТональныйНабор); ВозвСтр.Вставить("АвтоНабор", ЗначенияРесурсов.АвтоНабор); ВозвСтр.Вставить("КаналРНТелефон", ЗначенияРесурсов.КаналРНТелефон); Возврат ЗначенияРесурсов; КонецФункции &НаКлиенте Процедура ДвиженияТелефоновТелефонПриИзменении(Элемент) СтрокаТел = Элементы.ДвиженияТелефонов.ТекущиеДанные; СтрокаАб = Элементы.Абоненты.ТекущиеДанные; СтруктураТел = ВернутьСтруктуруТел(Объект.Дата, СтрокаТел.Телефон); //СтрокаТел.Расположение = СтруктураТел.Расположение; СтрокаТел.ТипУслуги = СтруктураТел.Тип; СтрокаТел.ПараллельнаяЛиния = СтруктураТел.ПараллельнаяЛиния; СтрокаТел.МежГород = СтруктураТел.МежГород; СтрокаТел.КаналРН = СтруктураТел.КаналРН; СтрокаТел.ТональныйНабор = СтруктураТел.ТональныйНабор; СтрокаТел.АвтоНабор = СтруктураТел.АвтоНабор; СтрокаТел.КаналРНТелефон = СтруктураТел.КаналРНТелефон; КонецПроцедуры Заполняется все кроме того, что имеет ссылочный тип. А именно СтруктураТел.Расположение - справочник Расположения и СтруктураТел.Тип - перечисление УслугиТелефонии. Не могу понят как передавать ссылочные типы. Или я вообще что-то не так делаю. А еще где-то читала, что между сервером и клиентом ссылочные типа нельзя передавать. Может это из-за этого? Но. Я делала такую штуку, вызывала функцию и через нее получала значение Расположения сотрудника из того же справочника Расположения: Функция ПолучитьЭлементСправочникаСотудникиРасп(Клиент); СпрСотр = Справочники.Сотрудники.НайтиПоНаименованию(Клиент).ПолучитьОбъект(); Возврат СпрСотр.РасположениеСотрудника; |
|||
56
crueltytanya
12.09.12
✎
18:06
|
Комментирование конечно убрать нужно. :)
|
|||
57
Aprobator
12.09.12
✎
18:15
|
и еще открыть для себя метод ЗаполнитьЗначенияСвойств(Приемник, Источник).
|
|||
58
Aprobator
12.09.12
✎
18:20
|
кстати в последней функции передается не ссылка, а объект.
|
|||
59
crueltytanya
12.09.12
✎
18:39
|
(57) классная штучка. :) спасибо.
(58) ага, в терминах еще плаваю жутко (как собственно и в 1с) :) Так все таки как же мне заполнить поля где у меня получается ссылочный тип. |
|||
60
sanja26
12.09.12
✎
18:48
|
Возврат ВозвСтр;
|
|||
61
sanja26
12.09.12
✎
18:49
|
ЗначенияРесурсов.Тип - скорее всего строка, а не ссылка
|
|||
62
Aprobator
12.09.12
✎
21:42
|
Тип там структура. Пока проблему не вижу. Если только у ссылочных типов не указать явно
.Ссылка |
|||
63
Aprobator
12.09.12
✎
21:49
|
(55) функция бредовая. Сразу упустил. Какой тип у Клиент?
|
|||
64
crueltytanya
13.09.12
✎
04:41
|
(63) ссылочный тип. пользователь заполняет в ТЧ код сотрудника из справочника сотрудники, этот код и передается через Клиент.
Да блин мне короче надо все переделать. Чтоб данные не брались из справочников, а из регистра, и в справочнике тоже из регистра брались, а пользователю запретить редактировать справочник руками. Чтоб не было косяков. А почему бредовая функция? (62) при попытке заполнения выходит сообщение, объект Расположение не найден. (61) ЗначенияРесурсов.Тип - там должно быть перечисление. Разве оно строкой передается? |
|||
65
crueltytanya
13.09.12
✎
04:44
|
(62) таже ошибка при заполнении Тип. остальное все идеально заполняется.
|
|||
66
zladenuw
13.09.12
✎
04:59
|
чатал чатал и не поняф. тип чего ? если объекта то типЗНЧ
|
|||
67
crueltytanya
13.09.12
✎
05:32
|
(66) неудачное название. Тип - это поле в справочнике с ссылкой на перечисление. И Тип это поле в табличной части документа с той же ссылкой на перечисление.
|
|||
68
zladenuw
13.09.12
✎
05:41
|
ну так тип один и тот же в чем проблема.
|
|||
69
zladenuw
13.09.12
✎
05:42
|
на сервере получай ссылку на клиент идет ее представление. не важно какой объект
|
|||
70
crueltytanya
13.09.12
✎
05:49
|
(68),(69) а разве при отборе в (55) (закоментированные строки) из РегистраСведений не получаю ссылку?:
Функция ВернутьСтруктуруТел(АктуальнаяДата, ТелефонСсылка) Экспорт Отбор = Новый Структура(); Отбор.Вставить("Телефон", ТелефонСсылка); ЗначенияРесурсов = РегистрыСведений.ДвиженияТелефонов.ПолучитьПоследнее(АктуальнаяДата,Отбор); ВозвСтр = Новый Структура(); ВозвСтр.Вставить("Расположение", ЗначенияРесурсов.Расположение); //Вот тут разве не получается ссылка? |
|||
71
crueltytanya
13.09.12
✎
05:49
|
(68) проблема в том, что мало знаю и умею. :)
|
|||
72
zladenuw
13.09.12
✎
05:50
|
там ты получаешь значение РС. и это структура
|
|||
73
zladenuw
13.09.12
✎
05:51
|
структура РС покажи
|
|||
74
crueltytanya
13.09.12
✎
05:57
|
||||
75
zladenuw
13.09.12
✎
06:04
|
и что возврашаеть тебе РС ?
|
|||
76
crueltytanya
13.09.12
✎
06:10
|
(75) в табло смотрела, все правильно возвращает, все значения какие должны быть и Расположение и Тип. Только почему то ощибка выскакивает при
ВозвСтр.Вставить("Расположение", ЗначенияРесурсов.Расположение); ВозвСтр.Вставить("Тип", ЗначенияРесурсов.Тип); Не найден объект Расположение, и объект Тип. Комментирую обе строки - все остальное подставляется отлично. |
|||
77
zladenuw
13.09.12
✎
06:11
|
ЗначенияРесурсов["Расположение"].Значение
ЗначенияРесурсов["Тип"].Значение а так :? |
|||
78
crueltytanya
13.09.12
✎
06:11
|
(75) остальные типы текстовые, числовые и булево.
|
|||
79
crueltytanya
13.09.12
✎
06:12
|
(77) щас попробую..
|
|||
80
crueltytanya
13.09.12
✎
06:19
|
(77) тоже самое
http://s54.radikal.ru/i145/1209/2e/7d52e67f7ac9.jpg блин.. да что же я не правильно делаю.. |
|||
81
Гефест
13.09.12
✎
06:19
|
(80) фото не показываешь
|
|||
82
zladenuw
13.09.12
✎
06:21
|
ну ты блин. (81) та да. нуна фото. так уже точно не взлетит
|
|||
83
zladenuw
13.09.12
✎
06:21
|
фото. можно пока не в бикини. и будет тебе подсказка
|
|||
84
zladenuw
13.09.12
✎
06:23
|
в отладчтике что ЗначенияРесурсов ? на момент получение ?
|
|||
85
crueltytanya
13.09.12
✎
06:29
|
(84) опа-на.. а в ЗначенияРесурсов и нет Расположения и Тип... :( Почему их нет? Потому и ошибка. А почему их нет? Что не так делаю?
|
|||
86
crueltytanya
13.09.12
✎
06:30
|
(84) нет.. Уточнение Тип есть.
|
|||
87
crueltytanya
13.09.12
✎
06:30
|
Нет только Расположения.
|
|||
88
zladenuw
13.09.12
✎
06:30
|
ну вот. крябка в записи была. вот и все.
|
|||
89
zladenuw
13.09.12
✎
06:31
|
надо ставить запрет не заполненного у измерения
|
|||
90
zladenuw
13.09.12
✎
06:31
|
и тогда будет щастье
|
|||
91
crueltytanya
13.09.12
✎
06:34
|
(89) все равно
http://s019.radikal.ru/i638/1209/f3/07c222bedc86.jpg |
|||
92
zladenuw
13.09.12
✎
06:36
|
так это структура а не РС. так. фото ... потом . помощь. и так указал где ошибка.
|
|||
93
crueltytanya
13.09.12
✎
06:37
|
(92) придется покупать фотик..
|
|||
94
zladenuw
13.09.12
✎
06:52
|
отмазки. есть вебка и телефон. тут все будут ждать.
|
|||
95
SanGvin
13.09.12
✎
06:54
|
под сотню постов а фотки еще нет(((
|
|||
96
crueltytanya
13.09.12
✎
07:03
|
(94) ой как приятно когда все меня ждут... :)
|
|||
97
crueltytanya
13.09.12
✎
07:03
|
(95) печалька... :)
|
|||
98
zladenuw
13.09.12
✎
07:04
|
печалько в том. что тебе просто так помогают. а так будет фото. увидишь сколько желающих помочь. добавятцо
|
|||
99
crueltytanya
13.09.12
✎
09:42
|
Отличненько, :) все получилось, поняла что нужно было исправить... Спасибо вам.
|
|||
100
Cashtane
13.09.12
✎
09:46
|
Сто!
|
|||
101
zladenuw
13.09.12
✎
13:24
|
не будет фото. не получишь помощи. все будут лицезреть но ждать.
|
|||
102
Aprobator
13.09.12
✎
13:38
|
(101) да купи ты себе журнал соответствующий с картинками. Озабоченный.
|
|||
103
crueltytanya
13.09.12
✎
13:46
|
(102) можно и так в нете попялиться.
|
|||
104
crueltytanya
13.09.12
✎
13:46
|
(101) лицезрейте!
|
|||
105
Cashtane
13.09.12
✎
13:53
|
Модеры сегодня выдают. Один новичка на соседние форумы выгоняет, другой дразнится.
|
|||
106
Aprobator
13.09.12
✎
13:54
|
власть людей портит, что еще сказать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |