Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Дневник провинциального программиста Как ограничить список значений агрегатного типа в 1С 7.7


Как ограничить список выбора значений агрегатного типа в 1С 7.7

В предыдущем сообщении я рассказал о том, как ограничить список выбора значений агрегатного типа в 1С 8. Сегодня рассмотрим, как эта задача решается в 1С 7.7.

Помню, когда 1С 8.0 только появилась, мне часто задавали вопрос, трудно ли после 7.7 перестроиться на новую платформу. Не знаю, кому как, а мне лично было легко. И даже не потому, что встроенный язык программирования восьмой платформы близкий родственник языку программирования 1С 7.7. Скорее потому, что программировать в 1С 8 гораздо удобнее, а язык 1С 8 более логичный, предсказуемый и дает программисту гораздо больше возможностей для управления системой. А сейчас, по прошествии некоторого времени, платформа 1С 7.7 в сравнении с 1С 8 кажется неким полуфабрикатом. И теперь уже гораздо тяжелее возвращаться к программированию в старой версии, несмотря на многолетний опыт программирования в 1С 7.7.

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

Способ 1. Использование отбора.

Использование отбора в «семерке» также работает и используется в типовых конфигурациях от 1С. Но решение задачи в 1С 7.7 выглядит чуть сложнее. Все проблема в ограниченных возможностях взаимодействия между формами. В 1С 7.7 мы не можем из одной формы также свободно управлять другой формой. Максимум, что мы можем себе позволить, это передать в открываемую форму значение любого типа. В открытой форме переданное значение будет доступно в виде атрибута Форма.Параметр.

Пример такого взаимодействия для решения нашей задачи ограничения списка значений подсмотрим в конфигурации «1С:Бухгалтерский учет». В документе «Отпуск материалов на сторону» (Документ.ОтпускМатериаловНаСторону) с видом отпуска материалов «Продажа» при выборе значения реквизита «Статья прочих доходов и расходов» открывается отфильтрованный список. Заглянем в модуль формы документа и посмотрим, как это сделано.

Интересующий нас код находится в предопределенной процедуре ПриНачалеВыбораЗначения:

Процедура ПриНачалеВыбораЗначения(ЭлементДиалога, Флаг)
Если ЭлементДиалога = "СтатьяПрочихДоходовИРасходов" Тогда
ОткрытьФорму("Справочник.ПрочиеДоходыИРасходы", Перечисление.ВидыПрочихДоходовИРасходов.ВыбытиеАктивов);
Флаг = 0;
КонецЕсли;
КонецПроцедуры

При открытии формы справочника «Прочие доходы и расходы», в нее передается значение перечисления Перечисление.ВидыПрочихДоходовИРасходов.ВыбытиеАктивов. Оператор Флаг = 0 отменяет стандартный процесс выбора значения. Но это, как Вы понимаете, только одна часть кода. Вторую часть нужно искать в форме выбора справочника «Прочие доходы и расходы». Форма выбора (она же форма списка) в предопределенной процедуре ПриОткрытии, используя переданное ей значение, устанавливает отбор по реквизиту «Вид прочих доходов и расходов». Читать далее »

Дневник провинциального программиста
Copyright (C) 2009. Все права защищены.


В избранное