Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 12:11

Общий вопрос от новичка

Автор odity, 10 ноя 2010, 14:58

0 Пользователей и 1 гость просматривают эту тему.

odity

Здравствуйте Уважаемые форумчане. Сейчас прохожу курсы 1С конфигурирование и мало еще понимаю в программирование1С. помогите!? Не нашел на данном форуме ветки для чайников-вот и пишу тут:
1) подскажите что вы читали ,чтобы стать такими асами в этой области (сам програмер и дмин со стажем, но даттая среда меня просто в ступор ставит)
2) понимаю что все познается в опыте. вот вопрос.
Есть справочник машина. в ней есть реквизит (типо что в машине едет водитель и 2 работника) водитель, работник 1, работник 2. Есть справочник служащие у которых есть реквизиты: ФИО , видработы. Вид работы - это перечисление,которое я жестко прописал и поставил на выбор в "Конфигурация. Перечисления". вот теперь мне нужно на форме Машина в строке "водитель" выбрать работников,которые имеют вид работы - водитель
Я пишу что строка водитель имеет ссылку на Справочники.Служащие ...а как из этих служащих вытащить поле видработы? или помогите правильно структурировать мою базу...хотя бы на уровне какие таблицы и справочники нужно создавать и как их привязать.
Заранее большое спасибо

odity

пишу

С = Справочники.Сотрудники.ПолучитьСсылку();//или Выбрать()
Водитель = С.ФИО;

но не правильно. почему нету Справочники.Сотрудники.Текущее(что то там))

Lexius

Потому что надо четко говорить, что хочешь получить. Ибо работа в 1С идет с конкретными "Объектами БД" - т.е. документами, записями справочника, итд...

Как можно найти элемент справочника:

// Методом "НайтиПоКоду("<типа код искомого эл-та справочника>")"
например: Сотрудник = Справочники.Сотрудники.НайтиПоКоду("000001");
Водитель = Сотрудник.Фио;
..............
// Методом "НайтиПоНаименованию("<Наименование искомого эл-та справочника>")"
например: Сотрудник = Справочники.Сотрудники.НайтиПоНаименованию("Казюлькин Вася Сигизмундович");
Водитель = Сотрудник.Фио;
..............

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

odity

Хм...уяснил. А еще один глупый вопрос:
Вот я привязал что текстовое поле по Объекту будет Справочники.Сотрудники. а у сотрудника есть реквизит какой то определенный. и как,вот я кликаю по полю и мне выдает список всех сотрудников. а как сразу отсеять этот список вот по этому реквизит определенному? почитал по запросам - более-менее понятно, но не ясно как выпадаемое поле вывести уже отсортированное

odity

И все равно:


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


Поле после перебора остается пустым,хотя в отладчике видно что на "С" в поле ФИО есть имена. на поле лежит у меня поле Водитель...почему не присваивается ему ничего?:(((( либо пристваиваются просто "<>"

progmikon

Вам нужно, чтобы в форме выбора был отбор по реквизиту?

Lexius

"Текстовое поле"
Поле/реквизит у справочника/документа/итп может быть либо текстовым(простой тип данных), т.е. иметь тип "Строка"("Число", "Булево"), либо(сложным) ссылочным, т.е. иметь тип "Документ","Справочник", итд.

Понятно: Надо выбрать из списка сотр-ов тех, которые являются водителями.

ФормаВыбора = Справочник.Служащие.ПолучитьФормуВыбора(,Форма,); //Получаем форму выбора
ФормаВыбора.СправочникСписок.Отбор.ВидРаботы.Установить(Перечисления.ВидыРабот.Водила); //Ставим критерий отбора

ВыбранныйВодитель = ФормаВыбора.Открыть(); // открываем форму выбора

odity

Цитата: progmikon от 10 ноя 2010, 22:04
Вам нужно, чтобы в форме выбора был отбор по реквизиту?
Да, конечно! По реквизиту...и,если вам не сложно то и по табличной части тоже приведите пример

odity

Ну что такое. я не понимаю различий между (когда пишу код):
1)Справочники (почему я через них не могу напрямую дойти до реквизита как в С++???)
2)СправочникОБъект - что с ним делать и что я от него могу получить?

У меня есть справочники:
сотрудник:
   -ФИО
   -Профессия(ссылка на перечисление (работник, пассажир))
Машина:
   -НомерМашины
   -Водитель (привязан по типу к справочнику сотрудник. нужно при открытии отсортировать справочник и показать только водителей и потом в это поле вписать ФИО)
   -Пассажир(тоже самое как с водителем)

Я путаюсь во всех этив методах и типах...почему по Справочники.Сотрудник.(ТекущееПоложение - почему такого нету тут?)
или мне нужно не в реквизиты а в табличную часть записывать поле Водитель и Пассажир?

Slin

Цитата: odity от 10 ноя 2010, 20:28
И все равно:


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


Поле после перебора остается пустым,хотя в отладчике видно что на "С" в поле ФИО есть имена. на поле лежит у меня поле Водитель...почему не присваивается ему ничего?:(((( либо пристваиваются просто "<>"

С помощью метода Выбрать() создается объект типа СправочникВыборка. Он доступен только для чтения.
skype: slin-dev

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск