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

Вопросы начинающего программиста

Автор SatiS77, 14 июн 2013, 21:14

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

SatiS77

Всем привет!
Начал недавно изучать 1С, делаю задания, разбираюсь. В некоторых моментах получается, в некоторых (порой очень простых) происходит какой-то затуп.
Здесь буду писать некоторые глупые вопросы. Просьба не ругать, т.к. опыта в программировании до сели не имею.
Буду благодарен за помощь.

Вопрос:
В Отчете создаю Табличное поле (тип Таблица Значений), куда вывожу одну колонку с Ф.И.О. из справочника Сотрудники (там помимо Ф.И.О. есть еще должность и оклад человека) плюс еще несколько пустых колонок для своих отметок.
Нужно сделать, чтобы при выделении строки человека с Ф.И.О. снизу в поле Надпись появлялась его должность из справочника Сотрудники.

Надписи на форме я сделал, использую процедуру "При активизации строки". Собственно, дальше затуп :)

Dethmontt

Давай ты начнешь с того что напишешь какую платформу используешь? Какое приложение (Управляемое или обычное)???
И если есть то укажи что за конфигурация? (Если пишешь с нуля - свою конфигурацию, то указывать не обязательно)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

SatiS77

Цитата: Dethmontt от 14 июн 2013, 22:36
Давай ты начнешь с того что напишешь какую платформу используешь? Какое приложение (Управляемое или обычное)???
И если есть то укажи что за конфигурация? (Если пишешь с нуля - свою конфигурацию, то указывать не обязательно)
Платформа 8.2, приложение обычное (наверное). Я просто делаю различные задания по разным темам на новой конфигурации.

Dethmontt

Процедура ПриАктивизацииСтроки()
   ТекущаяСтрока = ЭлементыФормы.ИмяТабличногоПоляКакЗаданоВконфигураторе.ТекущиеДанные;
   ЭлементыФормы.ИмяНадписиНаФорме.Заголовок = ТекущаяСтрока.ФИО.Должность; //тест
КонецПроцедуры

//Для того что бы вытащить должность нужно понимать как сотрудник связан с должностью
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

SatiS77

Цитата: Dethmontt от 14 июн 2013, 23:04
Процедура ПриАктивизацииСтроки()
   ТекущаяСтрока = ЭлементыФормы.ИмяТабличногоПоляКакЗаданоВконфигураторе.ТекущиеДанные;
   ЭлементыФормы.ИмяНадписиНаФорме.Заголовок = ТекущаяСтрока.ФИО.Должность; //тест
КонецПроцедуры

//Для того что бы вытащить должность нужно понимать как сотрудник связан с должностью


Ошибка лезет: Значение не является значением объектного типа (Должность).
В справочнике есть 3 реквизита: ФИО, Должность и Оклад. Т.е. в таблицу значений мы добавляем реквизит ФИО, и надо чтобы при активизации строки с ФИО показывалась должность этого ФИО.

GRADUS

Цитата: SatiS77 от 15 июн 2013, 10:00
Цитата: Dethmontt от 14 июн 2013, 23:04
Процедура ПриАктивизацииСтроки()
   ТекущаяСтрока = ЭлементыФормы.ИмяТабличногоПоляКакЗаданоВконфигураторе.ТекущиеДанные;
   ЭлементыФормы.ИмяНадписиНаФорме.Заголовок = ТекущаяСтрока.ФИО.Должность; //тест
КонецПроцедуры

//Для того что бы вытащить должность нужно понимать как сотрудник связан с должностью


Ошибка лезет: Значение не является значением объектного типа (Должность).
В справочнике есть 3 реквизита: ФИО, Должность и Оклад. Т.е. в таблицу значений мы добавляем реквизит ФИО, и надо чтобы при активизации строки с ФИО показывалась должность этого ФИО.

Скриншот, ты пишешь одно, а говоришь другое.
Вариант 1: Управляемое приложение и тебе за должностью надо идти на сервер
Вариант 2: Ты в таб поле ФИО записал информацию с типом "строка", а не ссылку "СправочникСсылка.Сотрудники ".

Решение: Зайди отладчиком, при попытке обратиться к полю "Должность" и посмотри.

SatiS77

Цитата: GRADUS от 15 июн 2013, 19:53
Цитата: SatiS77 от 15 июн 2013, 10:00
Цитата: Dethmontt от 14 июн 2013, 23:04
Процедура ПриАктивизацииСтроки()
   ТекущаяСтрока = ЭлементыФормы.ИмяТабличногоПоляКакЗаданоВконфигураторе.ТекущиеДанные;
   ЭлементыФормы.ИмяНадписиНаФорме.Заголовок = ТекущаяСтрока.ФИО.Должность; //тест
КонецПроцедуры

//Для того что бы вытащить должность нужно понимать как сотрудник связан с должностью


Ошибка лезет: Значение не является значением объектного типа (Должность).
В справочнике есть 3 реквизита: ФИО, Должность и Оклад. Т.е. в таблицу значений мы добавляем реквизит ФИО, и надо чтобы при активизации строки с ФИО показывалась должность этого ФИО.

Скриншот, ты пишешь одно, а говоришь другое.
Вариант 1: Управляемое приложение и тебе за должностью надо идти на сервер
Вариант 2: Ты в таб поле ФИО записал информацию с типом "строка", а не ссылку "СправочникСсылка.Сотрудники ".

Решение: Зайди отладчиком, при попытке обратиться к полю "Должность" и посмотри.

Да, ребят, спасибо.
Записал в строку ссылку вида:

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

И все заработало!

GRADUS

Цитата: SatiS77 от 15 июн 2013, 20:16
Цитата: GRADUS от 15 июн 2013, 19:53
Цитата: SatiS77 от 15 июн 2013, 10:00
Цитата: Dethmontt от 14 июн 2013, 23:04
Процедура ПриАктивизацииСтроки()
   ТекущаяСтрока = ЭлементыФормы.ИмяТабличногоПоляКакЗаданоВконфигураторе.ТекущиеДанные;
   ЭлементыФормы.ИмяНадписиНаФорме.Заголовок = ТекущаяСтрока.ФИО.Должность; //тест
КонецПроцедуры

//Для того что бы вытащить должность нужно понимать как сотрудник связан с должностью


Ошибка лезет: Значение не является значением объектного типа (Должность).
В справочнике есть 3 реквизита: ФИО, Должность и Оклад. Т.е. в таблицу значений мы добавляем реквизит ФИО, и надо чтобы при активизации строки с ФИО показывалась должность этого ФИО.

Скриншот, ты пишешь одно, а говоришь другое.
Вариант 1: Управляемое приложение и тебе за должностью надо идти на сервер
Вариант 2: Ты в таб поле ФИО записал информацию с типом "строка", а не ссылку "СправочникСсылка.Сотрудники ".

Решение: Зайди отладчиком, при попытке обратиться к полю "Должность" и посмотри.

Да, ребят, спасибо.
Записал в строку ссылку вида:

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

И все заработало!

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


Попробуй, получать не надо!

SatiS77

Да, спасибо. Со ссылкой тоже работает :)

Еще вопрос. Я вывожу в табличное поле на форму Таблицу значений. Первая колонка ФИО, далее пустые колонки по количеству дней в месяце.

Процедура ПриОткрытии()

тпСотрудники.Колонки.Добавить("ФИО");

Дата1 = НачалоМесяца(ТекущаяДата());

Для Кол = 0 по 29 Цикл
Дата2 = Дата1+Кол*24*60*60;
НоваяКолонка = тпСотрудники.Колонки.Добавить(,,,9);
НоваяКолонка.Заголовок = " "+Формат(Дата2, "ДФ=ддММММ")+Символы.ПС+Формат(Дата2, "ДФ=ддд");
КонецЦикла;

Выборка = Справочники.Сотрудники.Выбрать();

Пока Выборка.Следующий() Цикл

Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;

НоваяСтрока = тпСотрудники.Добавить();
НоваяСтрока.ФИО = Выборка.Ссылка;

КонецЦикла;


ЭлементыФормы.тпСотрудники.СоздатьКолонки();
КонецПроцедуры


Далее, хочу вставлять в пустые поля плюсики.

Процедура тпСотрудникиПередНачаломИзменения(Элемент, Отказ)

    Отказ = Истина;
ТС = ЭлементыФормы.тпСотрудники.ТекущаяСтрока;
ТК = ЭлементыФормы.тпСотрудники.ТекущаяКолонка;

ТС[ТК.Имя] = "+";

КонецПроцедуры


Но тут при попытке добавить плюсик вылетает ошибка: "Поле объекта не обнаружено".
В каком месте я ошибся?

GRADUS

А зачем? xDDD

Для Каждого Строка Из ТабЧасть Цикл
    Для Каждого Колонка Из ТабЧасть.Колонки Цикл
        Если Строка[Колонка.Имя] = "" Тогда
            Строка[Колонка.Имя] = "+"
        КонецЕсли;
    КонецЦикла;
КонецЦикла;

Теги:

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

Рейтинг@Mail.ru

Поиск