Имя: Пароль:
1C
1С v8
Заполнение ТЧ данными из запроса
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
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
власть людей портит, что еще сказать.