К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Как установить тип значения реквизиту документа

Гость
0 - 01.08.2012 - 18:27
Пытаюсь изучать 1С 8.2.
В моем документе ПКО есть реквизит КоррСчет (счет кредита проводки), при выборе которого нужно установить типы значения для реквизитов Субконто1, Субконто2, Субконто3 (аналитика КоррСчета, тип значения "Неопределенный" или как это в восьмерке называется). В семерке это делалось просто:

НазначитьТип("Субконто1",КоррСчет.ВидСубконто(1));

А как это сделать в восьмерке?



1 - 01.08.2012 - 18:59
хм.. я когда у меня давным давно возник такоцй вопрос в клюшках - позырил в документе "бухсправка" как там субконто назначаются - почему бы аналогичным макаром не посмотреть как это сделано в снеговике?
Гость
2 - 01.08.2012 - 19:22
1) Первым делом, так и попытался. Но фирма 1С в типовой бухгалтерии идет другим путем. Не дает такой свободы пользователям в формировании проводок в документах. Там шагг вправо, шаг влево - расстрел. Короче, не нашел я подобного простого примера. Те что нашел, для меня пока сильно сложные.
Вот например есть в док. ПриходныйКассовыйОрдер в модуле формы процедура СчетУчетаПриИзменении(). Она отправляет в глобальный модуль РаботаСДиалогами.ПриВыбореСчетаВТабличномПоле(). А там уже черт ногу сломит. Я так и не разобрался.
Может посоветуете какую нибудь простую конфигурацию, в которой можно было бы смотреть примеры кода?
3 - 01.08.2012 - 19:31
2-Birmingem >Для начала раздели понятия Реквизит и ЭлеметФормы. Затем посмотри в СП какие есть свойства и методы у твоего ЭлементаФормы. И задача очень легко решится.
4 - 01.08.2012 - 19:51
Самый простой способ:
Реквизит = Справочники.НужныйСправочник.ПустаяСсылка();

Если нужно ограничить типы при интерактивном заполнении реквизита, то так:
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.Какойто Справочник"));
МассивТипов.Добавить(Тип("ДокументСсылка.КакойтоДо кумент"));
ЭлементыФормы.ТвойРеквизит.ОграничениеТипа = Новый ОписаниеТипов (МассивТипов);
Гость
5 - 07.08.2012 - 15:01
Наваял такой код. Оцените пожалуйста. Что то сложновато получилось. Больше чем 3 строки на семерке :)
Наверняка можно улучшить, подскажите как?

Для к=1 По 3 Цикл
Если КоррСчет.ВидыСубконто.Количество()>=к Тогда
ТипСубк = КоррСчет.ВидыСубконто[к-1].ВидСубконто.ТипЗначения; ЭлементыФормы.Найти("Субконто"+к).ВыбиратьТип = ложь;
Если ТипСубк.ПривестиЗначение(ЭлементыФормы.Найти("Субк онто"+к).Значение<>ЭлементыФормы.Найти("Субконто"+ к).Значение Тогда ЭлементыФормы.Найти("Субконто"+к).Значение = ТипСубк.ПривестиЗначение(ЭлементыФормы.Найти("Субк онто"+к).Значение);
КонецЕсли;
Иначе ЭлементыФормы.Найти("Субконто"+к).Значение = "";
КонецЕсли;
КонецЦикла;
Гость
6 - 07.08.2012 - 15:51
Для Каждого ВидСубконто Из СчетБ.ВидыСубконто Цикл

СтрТЧ=Субконто.Добавить();
СтрТЧ.ВидСубконто=ВидСубконто.ВидСубконто.ТипЗначе ния.ПривестиЗначение().Метаданные().Имя;
Если Найти(ВидСубконто.ВидСубконто.ТипЗначения,"Справоч ник")>0 тогда
СтрТЧ.Значение=Справочники[ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначен ие().Метаданные().Имя].ПустаяСсылка();
иначе
СтрТЧ.Значение=Перечисления[ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначен ие().Метаданные().Имя].ПустаяСсылка();
КонецЕсли;
СтрТЧ.ТолькоЧтение=Истина;

КонецЦикла;
Гость
7 - 07.08.2012 - 17:36
2-Birmingem > "Не дает такой свободы пользователям в формировании проводок в документах" враки. Нажми на кнопку "Дт/Кт" под полными правами (или правами ГБ) и дивись на флаг "Ручная корректировка". Только особо бухгалтерам не распространяйся :)
Гость
8 - 07.08.2012 - 17:39
6-Zurab > субконто составных типов? не, не слышал...
Гость
9 - 07.08.2012 - 17:43
5-Birmingem >
Для к=1 По 3 Цикл
логичнее заменить на Для Каждого (или предварительно читать максимальное значение количества субконто из метаданных)
+ если тип значения субконто не составной - для поля ввода ВыбиратьТип = Ложь, в противном случае выбирать тип всё же уместно
Гость
10 - 07.08.2012 - 21:21
(8) :))


К списку вопросов






Copyright ©, Все права защищены