×
×
Закрытая тема
Показано с 1 по 10 из 10
  1. #1
    Покинул этот раздел Аватар для ADSemenov.ru
    Регистрация
    23.01.2004
    Адрес
    199048, СПб, В.О., 15 линия, 70-28. тел. +7 812 321-7591, +7 911-96-301-96
    Сообщений
    891

    Вопрос знатокам-программистам 1С

    Вопрос такой —
    Есть форма (допустим справочника). Необходимо иметь слева список, в котором мы "двигаемся" по вертикали и при этом хочется "ловить" событие факта установки на новую строку списка. Справа по факту отображать реквизиты установленной записи справочника.
    Praemonitus praemunitus

  2. #2
    Модератор Аватар для Aquad
    Регистрация
    04.12.2002
    Адрес
    Москва
    Сообщений
    3,870
    Если двигаться по списку то
    Код:
    Функция СформироватьИнформационнуюСтроку()
    	Перем ИнфСтрока;
     
    	Если ПустоеЗначение(ТекущийЭлемент()) = 1 Тогда
    		// не выбран элемент
    		ИнфСтрока = "";
    	Иначе
     
    		Если ТекущийЭлемент().ЭтоГруппа() = 1 Тогда
    			// текущий элемент - группа
    			ИнфСтрока = ТекущийЭлемент().ПолноеНаименование();
    		Иначе
     
    			ТекЭлем = ТекущийЭлемент();
     
    			ИнфСтрока = СокрЛП(ТекЭлем.ПолнНаименование) +
    			 ?(ПустоеЗначение(ТекЭлем.Артикул) = 0, " Артикул: " + СокрЛП(ТекЭлем.Артикул), "") +
    			 ?(ПустоеЗначение(ТекЭлем.Комментарий) = 0, " Комментарий: " + СокрЛП(ТекЭлем.Комментарий),	"");
     
    		КонецЕсли;
     
    	КонецЕсли;
     
    	Возврат ИнфСтрока;
     
    КонецФункции
    Добавить "Текст" и в поле "формула" добавить вызов функции ...

  3. #3
    Бухгалтер-программист Аватар для azernot
    Регистрация
    16.08.2004
    Адрес
    Москва
    Сообщений
    671
    Обычно делают не слева-справа, а сверху-снизу.
    Например у меня для журнала документов в нижней части отображаются приложения у документу (это реквизиты документа ТипДок1-5, ДатаДок1-5, НомерДок1-5)
    На форме журнала в нижнюю часть помещена ТаблицаЗначений, при открытии создаются колонки Пиктограмма, Документ, Дата, Номер. Также на форме выложено нивидимое текстовое поле, в формулу которого помещен вызов процедурки. В модуле имеется переменная ПредДок (для отслеживания изменений позиционирования)

    Процедура Приложения() //Процедура заполнения таблицы приложений
    Если ТекущийДокумент.Выбран() = 0 Тогда
    ТабПриложений.УдалитьСтроки();
    Возврат;
    КонецЕсли;

    Если ТекущийДокумент = ПредДок Тогда
    Возврат;
    Иначе
    ТабПриложений.УдалитьСтроки();
    ТабПлат.УдалитьСтроки();
    ПредДок = ТекущийДокумент;
    КонецЕсли;

    Для А =1 По 5 Цикл
    Если ПустоеЗначение(ТекущийДокумент.ПолучитьАтрибут("ТипДок"+А)) = 0 Тогда
    ТабПриложений.НоваяСтрока();
    ТабПриложений.Пиктограмма = 1;
    ТабПриложений.Документ = ТекущийДокумент.ПолучитьАтрибут("ТипДок"+А);
    ТабПриложений.Дата = ТекущийДокумент.ПолучитьАтрибут("ДатаДок"+А);
    ТабПриложений.Номер = ?(ПустоеЗначение(ТекущийДокумент.ПолучитьАтрибут("НомерДок"+А))=0,?(Найти(ТекущийДокумент.ПолучитьАтрибут("НомерДок"+А),"№")>0," "," №"),"")+СокрЛП(ТекущийДокумент.ПолучитьАтрибут("НомерДок"+А));
    КонецЕсли;
    КонецЦикла;
    ТабПриложений.Фиксировать(,1);
    КонецПроцедуры

    ТабПриложений.НоваяКолонка("Пиктограмма","Число",2,,"",3);
    ТабПриложений.НоваяКолонка("Документ",,,,,10);
    ТабПриложений.НоваяКолонка("Номер","Строка",10);
    ТабПриложений.НоваяКолонка("Дата","Дата");
    ТабПриложений.ВыводитьПиктограммы("Пиктограмма",1);
    С уважением
    Зернятко А.В.

  4. #4
    Покинул этот раздел Аватар для ADSemenov.ru
    Регистрация
    23.01.2004
    Адрес
    199048, СПб, В.О., 15 линия, 70-28. тел. +7 812 321-7591, +7 911-96-301-96
    Сообщений
    891
    Большое спасибо за внимание!

    Проблем с обработкой события у меня, видимо, не будет, а проблемы с "ловлей" события передвижения по списку есть. —
    Если я в форме списка справочника оставляю в списке только реквизит "Наименование" и двигаюсь по списку (на экране!), то формула, заданная в свойствах реквизита выполняется только при "выборе" (т.е. — enter или двойной щелчок), а просто при движении ничего не происходит.

    azernot, я правильно понял, что невидимое поле должно "ловить" событие перемещения по списку?
    Praemonitus praemunitus

  5. #5
    Fosihas
    Гость
    Можно заглянуть в типовые конфигурации. Для примера.

  6. #6
    Умный Клерк!
    Регистрация
    07.01.2004
    Адрес
    Владимир
    Сообщений
    13,623
    ADSemenov.ru, Оно не будет ничего ловить, просто при перемещении по списку по строкам каждый раз пересчитываются все текстовые поля, соответственно и формула каждый раз выполняется
    1.Открыта новая радиостанция для юзеров под названием RТ FМ. По ней будут транслироваться чтения различных мануалов и ответы на часто задаваемые вопросы.
    2. "Помогая ленивым людям, ты помогаешь им сесть на свою шею" Сян-Цзы

  7. #7
    Покинул этот раздел Аватар для ADSemenov.ru
    Регистрация
    23.01.2004
    Адрес
    199048, СПб, В.О., 15 линия, 70-28. тел. +7 812 321-7591, +7 911-96-301-96
    Сообщений
    891
    Действительно, формула текстового поля отрабатывает при любом переходе со строки на строку в списке элементов справочника, тогда как формула реквизита не работает. Плюс — методом "АктивизироватьОбъект(Элемент);" можно установить позицию в списке принудительно. Полный простор.
    Конечно "формула в текстовом поле" — достаточно искусственный приём, но в 1С к таким вещам не привыкать...

    Большое, большое спасибо всем знатокам!
    Praemonitus praemunitus

  8. #8
    Фырчун Аватар для Dracosha Andrew
    Регистрация
    07.02.2002
    Адрес
    Санкт-Петербург
    Сообщений
    2,259
    Цитата Сообщение от ADSemenov.ru
    Конечно "формула в текстовом поле" — достаточно искусственный приём, но в 1С к таким вещам не привыкать...
    Не согласен с вами!!! Пиём как приём. В других средах и не такое приходится видеть!!!
    Всех благ!!!
    Чувелёв Андрей

    ps: Всё вышеизложенное является моим частным мнением и не может претендовать на полноту изложения.

  9. #9
    Покинул этот раздел Аватар для ADSemenov.ru
    Регистрация
    23.01.2004
    Адрес
    199048, СПб, В.О., 15 линия, 70-28. тел. +7 812 321-7591, +7 911-96-301-96
    Сообщений
    891
    В модуле имеется переменная ПредДок
    azernot, только сейчас оценил полезность такой проверки, когда завёл несколько списков на форме и, соответственно, продекларировал несколько таких переменных. Теперь не делаю лишних усилий по обновлению зависимых от списков полей. Спасибо.
    Praemonitus praemunitus

  10. #10
    Бухгалтер-программист Аватар для azernot
    Регистрация
    16.08.2004
    Адрес
    Москва
    Сообщений
    671
    Всегда найдётся тот, кто уже наступал на эти грабли
    С уважением
    Зернятко А.В.

Закрытая тема

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы можете создавать новые темы
  • Вы можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •