Открытие управляемой формы 1С записи регистра сведений
Своё знакомство с управляемым приложением 1С как разработчик я начал достаточно давно, но некоторые примеры разработки управляемого приложения повергают меня в шок до сих пор. Один из таких примеров — программное открытие управляемой формы записи регистра сведений.
Рассмотрим пример программного открытия управляемой формы уже существующей записи регистра сведений.
Открытие управляемой формы 1С записи регистра сведений
Стояла достаточно простая задача — открыть запись регистра сведений 1С «Счета учета» по значениям измерений. Данная процедура вызывалась из таблицы значений, где хранились значения этих измерений.
Процедура в итоге выглядела следующим образом:
&НаКлиенте
Процедура СчетаУчетаНоменклатурыПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
СтрокаТабличнойЧасти = Элементы.СчетаУчетаНоменклатуры.ТекущиеДанные;
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
ПередаваемыеПараметры = Новый Структура; //формируем структуру полей измерений
ПередаваемыеПараметры.Вставить(«Номенклатура»,СтрокаТабличнойЧасти.Номенклатура);
ПередаваемыеПараметры.Вставить(«Организация»,СтрокаТабличнойЧасти.Организация);
ПередаваемыеПараметры.Вставить(«Склад»,СтрокаТабличнойЧасти.Склад);
ПередаваемыеПараметры.Вставить(«ТипСклада»,СтрокаТабличнойЧасти.ТипСклада);
ПараметрыМассив = Новый Массив;
ПараметрыМассив.Добавить(ПередаваемыеПараметры); // помещаем структуру в массив
КлючЗаписиРегистра = Новый(«РегистрСведенийКлючЗаписи.СчетаУчетаНоменклатуры», ПараметрыМассив); //с помощью массива со структурой создаем ключ записи
ОткрытьФормуМодально(«РегистрСведений.СчетаУчетаНоменклатуры.ФормаЗаписи», Новый Структура(«Ключ», КлючЗаписиРегистра)); // передаем в форму ключ записи и открываем её
КонецПроцедуры
Что мы сделали?
- занесли в структуру значения измерений;
- поместили структуру в массив;
- с помощью массива создали ключ записи;
- с помощью ключа записи открыли форму.
Почему так сложно?
Этот способ я подсмотрел в типовой конфигурации. Я не очень понимаю, зачем в итоге такая длинная цепочка, если кто-то видел более простой способ. Просьба, напишите, как, в комментариях, буду очень Вам благодарен. Спасибо!
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Coffeeholic:
Отличная наводка! Спасибо!
AlexF:
Заработало! Спасибо! Пол дня убил на поиск решения…
Аноним:
&НаКлиенте
Процедура ПредложенияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка=ложь;
струк=новый Структура(«Период,Комплектация,Продавец»,Элементы.Предложения.ТекущиеДанные.Период,Элементы.Предложения.ТекущиеДанные.Комплектация,Элементы.Предложения.ТекущиеДанные.Продавец);
кз=создатькз(струк);
ОткрытьФорму(«РегистрСведений.Предложения.ФормаЗаписи»,новый Структура(«Ключ»,кз),ЭтаФорма,истина);
КонецПроцедуры
&НаСервере
Функция создатькз(струк)
кз=РегистрыСведений.Предложения.СоздатьКлючЗаписи(струк);
Возврат кз;
КонецФункции
Пвв:
Это лишний серверный вызов (к тому же у Вас он с передачей контекста формы)
Аноним:
СоздатьКлючЗаписи только на сервере
Аноним:
Тут в принципе есть серверный вызов
Который, к тому же, с контекстом
&НаСервереБезКонтекста
&НаСервере
Есть разница?)
Аноним:
Конечно есть. Представим ситуацию. Вы пошли в лес на пикник вас 500 чел. пришли на поляну разложились надо разжечь костер. нужны спички. Если НаСервере — Вы все 500 человек собираетесь и всеми идете в магазин за спичками. НаСервереБезКонтекста — кто-то один из 500 идет за спичками.