"При изменении" процедура, вопрос по азам программирования.

1. ProGG3R 08.08.17 03:44 Сейчас в теме
Всем здравствуйте ребята, вообщем вопрос такого характера: разработал форму и макет документа, теперь пытаюсь программно сделать автозаполнение полей как в табличной части, так и на самой форме (скрин 1 "Форма документа"), итак нужно чтобы при изменении физического лица заполнялись поля на основании справочника ФизическиеЛица, Табличная часть на основании Регистра Сведений "ЦеныНоменклатуры" (как я думаю), а поля Товаровед, на основании пользователя, который сейчас работает в системе, т.е. если зашел Администратор ( то Администратор), Из того, что получилось, это в табличной части заполнить из справочника пробу и шифр:
&НаКлиенте
Процедура ЦенностиНаименованиеИОписаниеЦенностейПриИзменении(Элемент)
СтрокаТЧ = Элементы.Ценности.ТекущиеДанные;
Проба=ПодставитьПробу(СтрокаТЧ.НаименованиеИОписаниеЦенностей);
СтрокаТЧ.ШифрИлиПроба = Проба;
КонецПроцедуры
&НаСервере
Функция ПодставитьПробу(НаименованиеИОписаниеЦенностей)
Спр = Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеИОписаниеЦенностей);
Возврат Спр.ювПроба;
КонецФункции
После того, как получилось заполнить поле из справочника, я начал пробовать заполнить все поля на основании Регистра Сведений в Табличном поле, и для примера пытался заполнить цену номенклатуры из Регистра Сведений:
Функция ПолучитьЦену(НаименованиеИОписаниеЦенностей)
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних";

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

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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

Поле цена начала заполнятся, но некорректными данными.
А на самом документе формы, пробовал сделать при изменении ФизЛица, заполнить дата рождения из справочника, но что-то тоже не выходит. Понимаю, что многие сейчас могут написать "учи матчасть итд" но я пытаюсь разбираться и не пишу сразу, чтобы вы за меня решили этот вопрос. Но может кто, что дельного подскажет по поводу автоматического заполнения полей.
Поля формы: При изменение ФизЛица
Поля таблицы: При изменении Номенклатуры в таблицы
Поле товаровед: При открытии формы, как то так должно работать, на мой взгляд, всем спасибо за советы!
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Артано 765 08.08.17 04:51 Сейчас в теме
Вместо тысячи слов: http://www.ozon.ru/context/detail/id/19155982/

Настоятельно рекомендую ознакомиться с платформой, до того как начнете писать что-то для работающих предприятий. Вопросы, конечно, останутся, но они будут более осмысленными и будут лежать на стыке возможностей платформы и творческих озарений.

Для бедных или жадных в свободном доступе есть много материалов по платформе. На ИС есть возможность приобрести учебные курсы.
Вам самому не стыдно на форуме задавать вопросы из разряда "как добавить кнопку на форму"?

И по традиции, чтобы не повторяться: https://forum.infostart.ru/forum33/topic173259/#message1807130
3. alxarz 32 08.08.17 06:44 Сейчас в теме
метод научного тыка тоже иногда выручает, но в данном случае это метод просто тыка, и то с натяжкой. Лучше всё же почитать книги, как посоветовали в (2), так либо быстрее научитесь, либо быстрее поймете что оно Вам не надо.
4. pm74 202 08.08.17 08:17 Сейчас в теме
(1)
изменении физического лица заполнялись поля на основании справочника ФизическиеЛица


&Наклиенте
ФизЛицоПриИзменении(..
ЗаполнитьДанныеФлНаСервере();

&НаСервере
Процедура ЗаполнитьДанныеФлНаСервере()
....
"ВЫБРАТЬ Первые 1 ФЛ.ДатаРождения ... бла бла бла
Из Справочник.ФизическиеЛица Как ФЛ
.. где ФЛ.Сылка= &ФизЛицо.. "
Запрос.УстановитьПараметр("ФизЛицо",Объект.ФизЛицо)
Результат=Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка=Результат.Выбрать().Следующий();
ЗаполнитьЗначенияСвойств(Объект,Выборка);
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот