Имя: Пароль:
1C
 
Автоматическое заполнение табличной части документа при изменении
0 oqjawa
 
15.05.17
09:24
есть документ "Выхода_на_практику" с табличной частью Студенты

реквизиты табличной части "Студенты":
ФИО_студенты
Договор
Место_прохождения_практики
База_классов
Основа_обучения


ФИО_студента ссылается на справочник "Студенты"

в справочники "Студенты" указаны реквизиты:
Наименование - в котором пишется ФИО студента
База
Форма_обучения

база и форма_обучения ссылаются на объект перечисления
ПеречислениеСсылка.База_классов
ПеречислениеСсылка.Основа_обучения
1 oqjawa
 
15.05.17
09:25
правильно ли у меня построена структура? где я должен писать процедуру и функциию? в модуле объекта??
2 oqjawa
 
15.05.17
11:15
наведите на мысль
3 catena
 
15.05.17
11:16
(2)На какую мысль? Ни одной мысли тут не вижу. Заполнение чем? При изменении чего?
4 oqjawa
 
15.05.17
11:19
в документе в табличной части "Студенты"
при изменении ФИО_студента

чтобы автоматически подставлялись База и основа_обучения
5 oqjawa
 
15.05.17
11:21
например Петров - 9 классов - бюджетник

меняю фамилию  на Иванов -           подставляются значения из справоника студенты 11 классов - платник
6 Numerus Mikhail
 
15.05.17
11:24
(2) Обработчик "При изменении" колонки ФИО_Студенты табличной части
7 catena
 
15.05.17
11:25
(4)Встаньте на ячейку "ФИО_студента" и найдите в событиях "При изменении". Оно само направит, куда нужно.
8 FIXXXL
 
15.05.17
11:25
УпрФормы? получай НаСервереБезКонтекста нужные реквизиты от студента и заполняй на форме
9 oqjawa
 
15.05.17
11:26
как на неё встать? в форме документа?? или при создании документа на вкладке данные?

где писать обработчик в модуле документа?
10 catena
 
15.05.17
11:27
(8)Он пока еще не определился процедура это или функция. Там до получения данных еще копать и копать))
11 Numerus Mikhail
 
15.05.17
11:28
(9) в смысле как
в конфигураторе открываешь форму
тыкаешь на нужную колонку
и там в свойствах выбираешь "При имзенении"
12 oqjawa
 
15.05.17
11:28
а как определится?
13 oqjawa
 
15.05.17
11:30
ладно, наверное я вас замучал.. просто никогда с этим не сталкивался.. если есть что почитать по этому вопросу.. скиньте ссылки, буду благодарен вам)
14 Dmitrii
 
гуру
15.05.17
11:32
(0) Какая-то явная кривизна в структуре построения данных. Плюс избыточность. Если избыточность в некоторых случаях допустима, то вот кривизна...

Если "База" и "Форма" - это реквизиты справочника "Студенты", то нафига они нужны в табличной части "Студенты" твоего документа? Это явная избыточность.

А какова логика, если в справочнике у студента Пупкина указана база "9 классов", а в документе вручную в строке со студентом Пупкиным поставят в поле База - "11 классов"?
15 lodger
 
15.05.17
11:33
(13) ваши посты звучат так, будто школьник полистал учебник для ВТУЗов и просто подряд говорит термины.
может стоит заняться изучением с систематическим подходом?
загуглить курсы, например "Курс начинающего программиста"?
16 lodger
 
15.05.17
11:34
(14) эти избыточные поля могут быть реквизитами ТЧ на форме и заполняться\изменяться по открытии формы\изменении строки тч, будучи недоступными для редактирования, а потом забываться как страшный сон.
17 oqjawa
 
15.05.17
11:38
Справочник "Студенты" предназначен для хранения данных о Пупкине о его базе классов и формы обучения
18 oqjawa
 
15.05.17
11:39
В документе "ВЫхода на практику" идёт перечисление Пупкиных и их бзы классов и форме обучения и ещё множество реквизитов

данный документ формирует приказ ( печатную форму) выхода на практику студентов
19 dezss
 
15.05.17
11:40
Если УФ, то просто создай элемент таблицы формы и сделай ссылку на эти реквизиты студента (если че, это ПутьКДанным).
20 oqjawa
 
15.05.17
11:40
мне нужно что бы при указании Пупкина в табличную часть попали его реквизиты из справочника в котором они уже указаны
как это сделать, можно по подробней если не трудно
21 dezss
 
15.05.17
11:40
(19) Но тогда эти данные не будут сохраняться, будет сохраняться только сам студент.
22 oqjawa
 
15.05.17
11:41
и они автоматически подставятся или придётся их вручную выбирать из выплавающего списка??
23 dezss
 
15.05.17
11:42
автоматически. они вообще будут физически связаны, но если открыть этот документ когда эти данные в справочнике студенты поменяются, то они поменяются и в этом документе.
24 oqjawa
 
15.05.17
11:43
ладно они не будут сохранятся но при написании запроса на вывод информации в печатную форму я могу их учитывать?
25 catena
 
15.05.17
11:44
(21)Будет грустно, если выхода на практику оформят в мае, в июне переведут студентов на следующий курс и в сентябре будут задним числом перепечатывать приказы...
26 dezss
 
15.05.17
11:44
(24) при написании запроса они и так у тебя всегда под рукой, так хранятся в справочнике студенты.
27 dezss
 
15.05.17
11:45
(25) ну так я про этот момент написал.
28 oqjawa
 
15.05.17
11:45
да очень грустно.. значит не то
29 dezss
 
15.05.17
11:46
(25) да и вообще такую инфу хранить в справочнике - ахинея...так что бреда больше не станет, но он будет более систематизирован))))
30 oqjawa
 
15.05.17
11:46
инфу о студентах хранить в справочнике ахинея?
31 dezss
 
15.05.17
11:46
(28) тогда обрабатывать событие приизменении.
32 oqjawa
 
15.05.17
11:46
а в чём её хранить
33 dezss
 
15.05.17
11:47
(30) периодически изменяющуюся - да.
34 dezss
 
15.05.17
11:47
(32) очевидно в периодическом регистре сведений.
35 oqjawa
 
15.05.17
11:48
с какой переодичность создать этот регистр? каждый день может уйти в академ студент и выйти с него
36 catena
 
15.05.17
11:49
(30)А как вы из справочника узнаете, что Петров два раза оставался на второй год, а на Иванова отсутствует выхода на практику именно на 3 курсе два года назад? Учитывая, что он экстерном сдавал второй и четвертый?
37 Dmitrii
 
гуру
15.05.17
11:49
(16) >> избыточные поля могут быть реквизитами ТЧ на форме

В (0) нам представлена иная концепция.
38 dezss
 
15.05.17
11:50
(35) если в один день и уйти и выйти - то секунды, если нет, то день....все зависит от возможной частоты такого события от одного студента.
39 h-sp
 
15.05.17
11:52
(35) тогда с периодичностью день
40 oqjawa
 
15.05.17
11:54
что такое избыточные поля Дмитрий?
41 oqjawa
 
15.05.17
12:01
Для чего нужен документ? в документе заполняются реквизиты со всех объектов конфигурации если сказать грубо.. на все реквизиты документа указанны ссылки на Объект.Реквизит где уже имеются данные...
что вы называете избыточными полями??? документ форсирует записи в регистр сведений на основе которых создаются отчёты.. на основе документа формируется печатная форма приказа о выходе студентов на практику.. какие избыточные поля?
не понимаю вас..

я просто хочу поинтересоваться у вас и других профессионалов и мастеров, и просто талантливых людей как создать Автоматическое заполнение табличной части документа При Изменении Реквизита функцией или процедурой
42 h-sp
 
15.05.17
12:03
(40) ну если например есть в табличной части поле Студент, То мы элементарно имеем у него реквизит база, просто пишем Студент.База.

а ты завел в табличной части отдельно Студент и отдельно База.

Теперь прикинь, вы создали 100 документов Выход_на_практику, и там записано это поло Форма.

И тут вы в справочнике Студенты меняенте поле Форма у каких-то студентов.

Тогда получается, что в документах Выход_на_практику у вас полная белиберда, где правильно форма стоит, где неправильно. А всему виной идиотская программа, которую написал некий Окиява.
43 oqjawa
 
15.05.17
12:03
ПриИзмененииФИО_студента(Элемент).. как то так вроде..
44 h-sp
 
15.05.17
12:04
(43) почему ФИО? У вас разе не справочник студенты?
45 oqjawa
 
15.05.17
12:06
справочник студенты:
Наименование;
БазаКлассов
ФормаОбучение
46 oqjawa
 
15.05.17
12:08
Документ выхода на практику:
НомерПриказа
ДатаИзданияПриказа
Группа
Курс
Дата_начала_практики
Дата_конца_практики
Вид_практики
Спекиальность
Форма_обучения
ТАБЛИЧНЫЕ ЧАСТИ
"Студенты"
ФИО_студента
Место_прохождения_практики
Договор
БазаКлассов
ОсноваОбучения
47 oqjawa
 
15.05.17
12:09
из справочника студенты при выборе в табличной части документа Реквизит ФИО_студента хочу подставить автоматически его базу классов и его форму обучения

и занести эти данные в регистр сведений
48 oqjawa
 
15.05.17
12:10
справочник студенты:
Наименование;
БазаКлассов
ОсноваОбучения ******
49 dezss
 
15.05.17
12:11
(44) да что ты к названиям привязался. Ну назвали так поле и фиг с ним. Главное же, какой тип у реквизита тч объекта, а не название колонки таблицы на форме.
(41) избыточность - это когда одни и те же данные есть в разных местах. В общем случае, этого желательно избегать.
(47) не так и делай это при изменении. Единственное, что тебе нужно будет побороть - это найти нужную строку по элементу.
50 dezss
 
15.05.17
12:11
(49) не так -> ну так
51 h-sp
 
15.05.17
12:17
(47) слева у тебя элементы формы, находишь ФИО_студента щелкаешь, справа возникает колонка свойства. Там находишь ПриИзменении, щелкаешь по нему, оно тебя выкидывает в процедуру. В этой процедуре пишешь текст программы.
52 oqjawa
 
15.05.17
12:22
избыточности данных у меня нет.. единственное где повторяются данные это в документе что вполне логично тип данных тч объекта указан в виде ссылок на реквизиты где хранятся эти данные.. э
например в тч. Место_прохождения_практики тип данных СправочникСсылка.Место_прохождения_практики

h-sp.. сейчас попробую
53 h-sp
 
15.05.17
12:29
(52) но ведь просто можно везде в запросах написать ФИО_студента.Место_прохождения_практики

а колонку в ТЧ Место_прохождения_практики выкинуть. Она не нужна. Зачем она, если эта инормация уже есть.
54 dezss
 
15.05.17
12:31
(52) в тч.место_прохождения_практики будет ссылка на справочник, которую другим способом получить нельзя и избыточность обоснована. А вот в случае с База_классов и Основа_обучения избыточность не обоснована, так как эти данные и так хранятся в студенте, ссылка на которого УЖЕ есть в этом документе, но это лирика и связано с тем, что изначально было не до конца продумана схема хранения изменяемых данных в конфигурации.
55 oqjawa
 
15.05.17
12:32
эм.. где она уже есть??
есть отдельный справочник МестаПрохожденияПрактики
там хранится условно наименование, адрес, контактное лицо, инн и тд...

Пользователь должен присвоить в документе Студенту его место прозождения практики
56 oqjawa
 
15.05.17
12:33
я хочу компенсировать избыточность База_классов и Основа_обучения автоподстановкой данных приИзменении
так можно сделать?
57 h-sp
 
15.05.17
12:34
(55) оно есть в справочнике Студенты
58 oqjawa
 
15.05.17
12:36
из этого справочника как подставить в тч документа автоматически
59 oqjawa
 
15.05.17
12:36
обработчик события на чём делать?
60 oqjawa
 
15.05.17
12:37
&НаКлиенте
Процедура ФИО_студентаПриИзменении(Элемент)
    ФИО_студентаПриИзмененииНаСервере();
КонецПроцедуры


&НаСервереБезКонтекста
Процедура ФИО_студентаПриИзмененииНаСервере()
    // Вставить содержимое обработчика.
КонецПроцедуры
61 h-sp
 
15.05.17
12:37
то есть в запросе если нужно пишете

ФИО_студента.Место_прохождения_практики.Контактное лицо
62 h-sp
 
15.05.17
12:38
(60) пишете на языке 1с. где написано // Вставить содержимое обработчика
63 oqjawa
 
15.05.17
12:42
infostar.ru/public/103398/
64 oqjawa
 
15.05.17
12:44
65 dezss
 
15.05.17
12:47
(61) прочитай еще раз (0) Место_прохождения_практики - это реквизит документа, а не справочника студенты.
66 dezss
 
15.05.17
12:48
(64) да-да, что-то вроде этого.
67 oqjawa
 
15.05.17
12:50
Всёверно это реквизит документа
68 oqjawa
 
15.05.17
12:51
и тип этого реквизита в виде ссылки на отдельный справочник "Места_прохождения_практики"
69 oqjawa
 
27.05.17
17:44
Есть документ             Выхода_на_практику
в нём есть                      ТЧ Студенты
в ней есть реквизиты       ФИО_студента, База, Основа_обучения                        реквизиты указаны в виде ссылок на справочник "Студенты"
                                                                                                                                                             в нём есть реквизиты "Наименование" в котором хранится ФИО студента
                                                                                                                                                                                             "База"
                                                                                                                                                                                              "Основа_обучения"
как реализовать автоматическое заполнения тч документа при изменении реквизита документа "ФИО_студента"





&НаКлиенте
Процедура ФИО_студентаПриИзменении(Элемент)
ФИО_студентаПриИзмененииНаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ФИО_студентаПриИзмененииНаСервере()
// Вставить содержимое обработчика.КонецПроцедуры
КонецПроцедуры
70 oqjawa
 
29.05.17
12:45
я разместил в Модуле следующий код:

Функция ПолучитьПараметрыСтудента(Студент) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Студенты.Наименование,
    |    Студенты.База,
    |    Студенты.Основа_обучения
    |ИЗ
    |    Справочник.Студенты КАК Студенты";

    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    СписокПараметров = Новый Структура;
    СписокПараметров.Вставить("База");
    СписокПараметров.Вставить("Основа_обучения");
              
    
    Если ВыборкаДетальныеЗаписи.Следующий() Тогда        
        СписокПараметров.База = ВыборкаДетальныеЗаписи.База;
        СписокПараметров.Основа_обучения = ВыборкаДетальныеЗаписи.Основа_обучения;
    
    КонецЕсли;

    Возврат СписокПараметров;    

КонецФункции


и в обработчике события При изменении создал процедуру:
&НаКлиенте
Процедура ФИО_студентаПриИзменении(Элемент)
    Парам = ПолучитьПараметрыСтудента(Объект.Студенты);
    Объект.База = Парам.База;
    Объект.Основа_обучения = Парам.Основа_обучения;
КонецПроцедуры
    
возникает ошибка:
{Документ.Выхода_на_практику.Форма.ФормаДокумента.Форма(46)}: Ошибка при установке значения атрибута контекста (Студенты)
    Парам = ПолучитьПараметрыСтудента(Объект.Студенты);
по причине:
Нельзя изменять поле, содержащее объект данных формы

Что сделал не правильно и как это исправить не понимаю
71 h-sp
 
29.05.17
16:15
как-то был один студент

Функция ПолучитьПараметрыСтудента(Студент) Экспорт


и вдруг стало много.


Парам = ПолучитьПараметрыСтудента(Объект.Студенты);


они размножаются похоже в процессе написания запроса.
72 oqjawa
 
29.05.17
17:16
{Документ.Выхода_на_практику.Форма.ФормаДокумента.Форма(38)}: Поле объекта не обнаружено (Студент)
    Парам = ПолучитьПараметрыСтудента(Объект.Студент);
73 oqjawa
 
29.05.17
17:25
я уже не один день сижу пытаюсь организовать автозаполнение документа, смотрю тысячи сложных примеров, пытаюсь реализовать точ в точ уже готовые решения в ранее созданных темах, но что-то всё не выходит и не выходит, я уже незнаю что делать.. кокие документы я сегодня не создавал.. про водителей и автотранспорт, про контрагентов и их контакты, про товары и их спецификации.. хоть бы один заполнился... какой момент я упускаю где у меня косяки..
74 oqjawa
 
29.05.17
17:26
Ребят умоляю, приведите мне элементарный пример с очень коротким автозаполнением одного реквизита, что бы я просто понял как это работает
75 h-sp
 
29.05.17
17:26
(72)

Функция ПолучитьПараметрыСтудента(Студент) Экспорт
    
    
    СписокПараметров = Новый Структура;
    СписокПараметров.Вставить("База", Студент.База);
    СписокПараметров.Вставить("Основа_обучения", Студент.ОсноваОбучения);
              
     Возврат СписокПараметров;    

КонецФункции

&НаКлиенте

Процедура ФИО_студентаПриИзменении(Элемент)
    Парам = ПолучитьПараметрыСтудента(Элементы.Студенты.ТекущиеДанные.Объект.ФИО_студенты);
    Элементы.Студенты.ТекущиеДанные.База = Парам.База;
    Элементы.Студенты.ТекущиеДанные.Основа_обучения = Парам.Основа_обучения;
КонецПроцедуры
76 h-sp
 
29.05.17
17:27
Парам = ПолучитьПараметрыСтудента(Элементы.Студенты.ТекущиеДанные.ФИО_студенты);
77 h-sp
 
29.05.17
17:27
Парам = ПолучитьПараметрыСтудента(Элементы.Студенты.ТекущиеДанные.ФИО_студента);

видимо
78 oqjawa
 
29.05.17
17:39
Функция ПолучитьПараметрыСтудента(Студент) Экспорт
    
    
    СписокПараметров = Новый Структура;
    СписокПараметров.Вставить("База", Студент.База);
    СписокПараметров.Вставить("Основа_обучения", Студент.Основа_обучения);
              
     Возврат СписокПараметров;    

КонецФункции

&НаКлиенте
Процедура ФИО_студентаПриИзменении(Элемент)
   Парам = ПолучитьПараметрыСтудента(Элементы.Студенты.ТекущиеДанные.ФИО_студента);
    Элементы.Студенты.ТекущиеДанные.База = Парам.База;
    Элементы.Студенты.ТекущиеДанные.Основа_обучения = Парам.Основа_обучения;
КонецПроцедуры
79 oqjawa
 
29.05.17
17:39
Вот так всё хорошо)) только не подставляет База
80 oqjawa
 
29.05.17
17:40
но подставляет основу обучения)) это офигеть!)
81 oqjawa
 
29.05.17
17:40
спасибо вам большое)