Как установить тип значения реквизиту документа Пытаюсь изучать 1С 8.2. В моем документе ПКО есть реквизит КоррСчет (счет кредита проводки), при выборе которого нужно установить типы значения для реквизитов Субконто1, Субконто2, Субконто3 (аналитика КоррСчета, тип значения "Неопределенный" или как это в восьмерке называется). В семерке это делалось просто: НазначитьТип("Субконто1",КоррСчет.ВидСубконто(1)); А как это сделать в восьмерке? |
хм.. я когда у меня давным давно возник такоцй вопрос в клюшках - позырил в документе "бухсправка" как там субконто назначаются - почему бы аналогичным макаром не посмотреть как это сделано в снеговике? |
1) Первым делом, так и попытался. Но фирма 1С в типовой бухгалтерии идет другим путем. Не дает такой свободы пользователям в формировании проводок в документах. Там шагг вправо, шаг влево - расстрел. Короче, не нашел я подобного простого примера. Те что нашел, для меня пока сильно сложные. Вот например есть в док. ПриходныйКассовыйОрдер в модуле формы процедура СчетУчетаПриИзменении(). Она отправляет в глобальный модуль РаботаСДиалогами.ПриВыбореСчетаВТабличномПоле(). А там уже черт ногу сломит. Я так и не разобрался. Может посоветуете какую нибудь простую конфигурацию, в которой можно было бы смотреть примеры кода? |
2-Birmingem >Для начала раздели понятия Реквизит и ЭлеметФормы. Затем посмотри в СП какие есть свойства и методы у твоего ЭлементаФормы. И задача очень легко решится. |
Самый простой способ: Реквизит = Справочники.НужныйСправочник.ПустаяСсылка(); Если нужно ограничить типы при интерактивном заполнении реквизита, то так: МассивТипов = Новый Массив; МассивТипов.Добавить(Тип("СправочникСсылка.КакойтоСправочник")); МассивТипов.Добавить(Тип("ДокументСсылка.КакойтоДокумент")); ЭлементыФормы.ТвойРеквизит.ОграничениеТипа = Новый ОписаниеТипов (МассивТипов); |
Наваял такой код. Оцените пожалуйста. Что то сложновато получилось. Больше чем 3 строки на семерке :) Наверняка можно улучшить, подскажите как? Для к=1 По 3 Цикл Если КоррСчет.ВидыСубконто.Количество()>=к Тогда ТипСубк = КоррСчет.ВидыСубконто[к-1].ВидСубконто.ТипЗначения; ЭлементыФормы.Найти("Субконто"+к).ВыбиратьТип = ложь; Если ТипСубк.ПривестиЗначение(ЭлементыФормы.Найти("Субконто"+к).Значение<>ЭлементыФормы.Найти("Субконто"+к).Значение Тогда ЭлементыФормы.Найти("Субконто"+к).Значение = ТипСубк.ПривестиЗначение(ЭлементыФормы.Найти("Субконто"+к).Значение); КонецЕсли; Иначе ЭлементыФормы.Найти("Субконто"+к).Значение = ""; КонецЕсли; КонецЦикла; |
Для Каждого ВидСубконто Из СчетБ.ВидыСубконто Цикл СтрТЧ=Субконто.Добавить(); СтрТЧ.ВидСубконто=ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначение().Метаданные().Имя; Если Найти(ВидСубконто.ВидСубконто.ТипЗначения,"Справочник")>0 тогда СтрТЧ.Значение=Справочники[ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначение().Метаданные().Имя].ПустаяСсылка(); иначе СтрТЧ.Значение=Перечисления[ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначение().Метаданные().Имя].ПустаяСсылка(); КонецЕсли; СтрТЧ.ТолькоЧтение=Истина; КонецЦикла; |
2-Birmingem > "[em]Не дает такой свободы пользователям в формировании проводок в документах[/em]" враки. Нажми на кнопку "Дт/Кт" под полными правами (или правами ГБ) и дивись на флаг "Ручная корректировка". Только особо бухгалтерам не распространяйся :) |
6-Zurab > субконто составных типов? не, не слышал... |
5-Birmingem > Для к=1 По 3 Цикл логичнее заменить на Для Каждого (или предварительно читать максимальное значение количества субконто из метаданных) + если тип значения субконто не составной - для поля ввода ВыбиратьТип = Ложь, в противном случае выбирать тип всё же уместно |
(8) :)) |
Текущее время: 17:01. Часовой пояс GMT +3. |