http://wiki.kint.ru/index.php?title=%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D0%BC%D0%B8_(1Cv8)&feed=atom&action=historyОсобенности работы с формами (1Cv8) - История изменений2024-03-29T11:25:20ZИстория изменений этой страницы в викиMediaWiki 1.31.15http://wiki.kint.ru/index.php?title=%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D0%BC%D0%B8_(1Cv8)&diff=31687&oldid=prevДмитрий Малюгин в 12:31, 7 июля 20162016-07-07T12:31:18Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Предыдущая</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Версия 12:31, 7 июля 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Строка 1:</td>
<td colspan="2" class="diff-lineno">Строка 1:</td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[Категория:<del class="diffchange diffchange-inline">Программирование в </del>1Cv8]]</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[Категория:<ins class="diffchange diffchange-inline">Формы </ins>1Cv8]]</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">{| align="right"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">| __TOC__</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">|}</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Как назначить конкретный тип элементу управления, который связан с реквизитом формы, имеющим составной тип?==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Как назначить конкретный тип элементу управления, который связан с реквизитом формы, имеющим составной тип?==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>Дмитрий Малюгинhttp://wiki.kint.ru/index.php?title=%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D0%BC%D0%B8_(1Cv8)&diff=31651&oldid=prevДмитрий Малюгин в 12:06, 7 июля 20162016-07-07T12:06:31Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Предыдущая</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Версия 12:06, 7 июля 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Строка 1:</td>
<td colspan="2" class="diff-lineno">Строка 1:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Категория:Программирование в 1Cv8]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Категория:Программирование в 1Cv8]]</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">[[Категория:Программирование в 1Cv82]]</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Как назначить конкретный тип элементу управления, который связан с реквизитом формы, имеющим составной тип?==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Как назначить конкретный тип элементу управления, который связан с реквизитом формы, имеющим составной тип?==</div></td></tr>
</table>Дмитрий Малюгинhttp://wiki.kint.ru/index.php?title=%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D0%BC%D0%B8_(1Cv8)&diff=21495&oldid=prevПавел Лазарев: Новая страница: «Категория:Программирование в 1Cv8 Категория:Программирование в 1Cv82 ==Как назначить кон...»2010-10-06T13:18:10Z<p>Новая страница: «<a href="/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2_1Cv8" title="Категория:Программирование в 1Cv8">Категория:Программирование в 1Cv8</a> <a href="/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2_1Cv82&action=edit&redlink=1" class="new" title="Категория:Программирование в 1Cv82 (страница не существует)">Категория:Программирование в 1Cv82</a> ==Как назначить кон...»</p>
<p><b>Новая страница</b></p><div>[[Категория:Программирование в 1Cv8]]<br />
[[Категория:Программирование в 1Cv82]]<br />
<br />
<br />
==Как назначить конкретный тип элементу управления, который связан с реквизитом формы, имеющим составной тип?==<br />
<br />
Источник: http://v8.1c.ru/predpriyatie/typical_problems_Form.htm#18<br />
<br />
Для этого можно присвоить реквизиту формы значение пустой ссылки нужного типа. Например, для поля ввода, связанного с реквизитом, который может принимать значение ссылки на справочники физических и юридических лиц, назначение нужного типа может выглядеть следующим образом:<br />
<br />
<source lang=1c><br />
ПолеВвода1 = Справочники.ФизическиеЛица.ПустаяСсылка();<br />
</source><br />
<br />
Однако если в этом случае в поле ввода нажать кнопку очистки, снова будет предложен выбор типа значения из двух возможных типов. Избежать этого можно двумя способами:<br />
<br />
Во-первых, можно запретить выбор типа в поле ввода (свойство ВыбиратьТип). В этом случае нажатие на кнопку очистки не будет приводить к сбросу типа в поле ввода.<br />
<br />
Во-вторых, можно использовать свойство поля ввода ОграничениеТипа, задающее возможные типы данных, которые могут быть введены в поле ввода, и приводить значение соответствующего реквизита к нужному типу:<br />
<br />
<source lang=1c><br />
Массив = Новый Массив();<br />
Массив.Добавить(Тип("СправочникСсылка.ФизическиеЛица"));<br />
НашеОписание = Новый ОписаниеТипов(Массив);<br />
<br />
ЭлементыФормы.ПолеВвода1.ОграничениеТипа = НашеОписание;<br />
ПолеВвода1 = НашеОписание.ПривестиЗначение(ПолеВвода1); <br />
</source><br />
<br />
<br />
== Какие существуют особенности работы с составными типами данных?==<br />
Источник: http://itland.ru/forum/index.php?showtopic=2577<br />
<br />
Вопрос: Какие существуют особенности работы с составными типами данных?<br />
<br />
Ответ<br />
<br />
Этот вопрос имеет два стороны:<br />
<br />
===1) Сторона элемента формы.===<br />
<br />
Для элемента формы мы можем установить только ограничение на типы которые можно выбрать.<br />
<br />
Т.е. с помощью кода:<br />
<source lang=1c><br />
МассивТипов=Новый Массив();<br />
МассивТипов.Добавить(Тип("СправочникСсылка.Контрагенты"));<br />
ЭлементыФормы.ПолеВвода1.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);<br />
</source><br />
<br />
Мы ограничиваем возможный типы только одним "СправочникСсылка.Контрагенты".<br />
<br />
НО это не действует на значение которое хранится в источнике данных.<br />
<br />
Поэтому если реквизит который связан с "ПолеВвода1" имеет "составной" тип, например Любая ссылка,<br />
он будет неопределенного типа даже после "ЭлементыФормы.ПолеВвода1.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);"<br />
<br />
===2) Сторона источника данных.===<br />
<br />
Здесь ограничение на тип накладывается либо в конфигураторе, либо в момент создания этого элемента из языка.<br />
<br />
Но если у реквизита установлен "составной" тип значение реквизита будет неопределенно до тех пор, пока ему не будет присвоено значение конкретного типа.<br />
<br />
Присвоить конкретное значение можно либо из языка, либо выбрав это значение в форме.<br />
<br />
Из выше описанного можно сделать вывод:<br />
*Если у реквизита установлен "Составной" тип данных, то даже при ограничении возможных типов у элемента формы до одного возможного, у пользователя будет запрошен тип который нужно будет присвоить реквизиту.<br />
*Если мы хотим оградить пользователя от лишних движений, т.е. выбора единственно возможного типа, нам нужно предварительно установить тип реквизита.<br />
<br />
Сделать это можно следующим образом:<br />
<source lang=1c><br />
//"Значение1" это реквизит связанный с "ПолеВвода1".<br />
Значение1 = ЭлементыФормы.ПолеВвода1.ОграничениеТипа.ПривестиЗначение(Значение1);<br />
</source><br />
<br />
<br />
===Добавление от ezh (особенности при работе с элементами в табличном поле):===<br />
<br />
1.<br />
<br />
Вместо этого:<br />
<source lang=1c><br />
ЭлементыФормы.ПолеВвода1.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);<br />
</source><br />
<br />
Пишем это:<br />
<source lang=1c><br />
ЭлементыФормы.ИмяТабличнойЧасти.Колонки.ИмяКолонки.ЭлементУправления.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);<br />
</source><br />
<br />
2.<br />
<br />
Вместо этого:<br />
<source lang=1c><br />
Значение1 = ЭлементыФормы.ПолеВвода1.ОграничениеТипа.ПривестиЗначение(Значение1);<br />
</source><br />
<br />
Пишем это:<br />
<source lang=1c><br />
ЭлементыФормы.ИмяТабличнойЧасти.ТекущаяСтрока.ИмяКолонки = ПривестиЗначение(ЭлементыФормы.ИмяТабличнойЧасти.ТекущаяСтрока.ИмяКолонки);<br />
<br />
// можно так, а можно как в примере ниже...<br />
</source><br />
<br />
Вот работающий пример:<br />
<br />
<source lang=1c><br />
<br />
МассивТипов = Новый Массив();<br />
МассивТипов.Добавить(Тип("ПеречислениеСсылка."+Элемент.Значение));<br />
ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);<br />
<br />
ЭлементыФормы.ТабличнаяЧасть1.Колонки.ЗначениеПеречисления.ЭлементУправления.ОграничениеТипа = ОписаниеТипов;<br />
// ЭлементыФормы.ТабличнаяЧасть1.ТекущаяСтрока.ЗначениеПеречисления = ОписаниеТипов.ПривестиЗначение(ЭлементыФормы.ТабличнаяЧасть1.ТекущаяСтрока.ЗначениеПеречисления);<br />
ЭлементыФормы.ТабличнаяЧасть1.Колонки.ЗначениеПеречисления.ЭлементУправления.Значение = ОписаниеТипов.ПривестиЗначение(ЭлементыФормы.ТабличнаяЧасть1.Колонки.ЗначениеПеречисления.ЭлементУправления.Значение);<br />
</source><br />
<br />
==Как организовать выбор значений из списка, открывающегося под элементом формы?==<br />
<br />
Источник: http://v8.1c.ru/predpriyatie/typical_problems_Form.htm#19<br />
<br />
Для этого следует использовать методы формы ВыбратьИзСписка() или ВыбратьИзМеню().<br />
<br />
Метод ВыбратьИзСписка() позволяет открыть выпадающий список для интерактивного выбора одного из элементов, причем список будет расположен около переданного элемента формы или около активной области формы (если элемент формы не передан).<br />
<br />
Например, следующий код позволяет открыть выпадающий список под полем ввода «ПолеВводаКонтрагент» для выбора одного из контрагентов:<br />
<br />
<source lang=1c><br />
СписокВыбора = Новый СписокЗначений; <br />
<br />
СписокВыбора.Добавить(Справочники.Контрагенты.НайтиПоКоду("Ю0039")); <br />
СписокВыбора.Добавить(Справочники.Контрагенты.НайтиПоКоду("Ю0040")); <br />
<br />
ВыбранноеЗначение = ВыбратьИзСписка(СписокВыбора, ЭлементыФормы.ПолеВводаКонтрагент); <br />
<br />
Если ВыбранноеЗначение <> Неопределено Тогда <br />
ПолеВводаКонтрагент = ВыбранноеЗначение.Значение; <br />
КонецЕсли; <br />
</source><br />
<br />
Метод ВыбратьИзМеню() работает аналогично методу ВыбратьИзСписка() за исключением того, что для выбора открывается не выпадающий список, а меню.<br />
<br />
Например, следующий код позволяет открыть меню для интерактивного выбора одного из действий, которые необходимо выполнить для контрагента, выбранного в поле ввода «ПолеВводаКонтрагент»:<br />
<br />
<source lang=1c><br />
СписокВыбора = Новый СписокЗначений; <br />
<br />
СписокВыбора.Добавить("Загрузка", "Загрузить информацию"); <br />
СписокВыбора.Добавить("Выгрузка", "Выгрузить данные"); <br />
<br />
ВыбранноеЗначение = ВыбратьИзМеню(СписокВыбора, ЭлементыФормы.ПолеВводаКонтрагент); <br />
<br />
Если ВыбранноеЗначение.Значение = "Загрузка" Тогда <br />
ЗагрузитьИнформациюКонтрагента(ПолеВводаКонтрагент); <br />
<br />
ИначеЕсли ВыбранноеЗначение.Значение = "Выгрузка" Тогда <br />
ВыгрузитьДанныеКонтрагента(ПолеВводаКонтрагент); <br />
КонецЕсли; <br />
<br />
</source><br />
<br />
==Как открыть форму элемента справочника?==<br />
<source lang=1c><br />
ссЭлемент = ...<br />
форма = ссЭлемент.ПолучитьФорму();<br />
форма.Открыть();<br />
</source><br />
<br />
<br />
==Как редактировать записи списка в диалоге и в списке и переключаться между этими способами?== <br />
<br />
Оказывается, надо<br />
* в свойствах (alt-enter) объекта метаданных установить "Способ редактирования"="Обоими способами"<br />
* после этого в в свойствах табличного поля списка появляется флаг "Использование/ИзменятьСпособРедактирования" и выбор "Способ редактирования = В списке/В диалоге"<br />
* в свойствах табличного поля списка установить появившийся флаг "Использование/ИзменятьСпособРедактирования"<br />
* после этого появляется команда "Редактировать в диалоге" и ее можно вставить в командную панель<br />
* если включено автозаполнение командной панели, эта кнопка появится автоматически</div>Павел Лазарев