Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Открытие управляемой формы 1С записи регистра сведений

Своё знакомство с управляемым приложением 1С как разработчик я начал достаточно давно, но некоторые примеры разработки управляемого приложения повергают меня в шок до сих пор. Один из таких примеров — программное открытие управляемой формы записи регистра сведений.

Рассмотрим пример программного открытия управляемой формы уже существующей записи регистра сведений.

регистр сведений

Открытие управляемой формы 1С записи регистра сведений

Стояла достаточно простая задача — открыть запись регистра сведений 1С «Счета учета» по значениям измерений. Данная процедура вызывалась из таблицы значений, где хранились значения этих измерений.

Процедура в итоге выглядела следующим образом:

&НаКлиенте
Процедура СчетаУчетаНоменклатурыПередНачаломИзменения(Элемент, Отказ)

Отказ = Истина;

СтрокаТабличнойЧасти = Элементы.СчетаУчетаНоменклатуры.ТекущиеДанные;

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

ПередаваемыеПараметры = Новый Структура; //формируем структуру полей измерений

ПередаваемыеПараметры.Вставить(«Номенклатура»,СтрокаТабличнойЧасти.Номенклатура);
ПередаваемыеПараметры.Вставить(«Организация»,СтрокаТабличнойЧасти.Организация);
ПередаваемыеПараметры.Вставить(«Склад»,СтрокаТабличнойЧасти.Склад);
ПередаваемыеПараметры.Вставить(«ТипСклада»,СтрокаТабличнойЧасти.ТипСклада);

ПараметрыМассив = Новый Массив;
ПараметрыМассив.Добавить(ПередаваемыеПараметры); // помещаем структуру в массив
КлючЗаписиРегистра = Новый(«РегистрСведенийКлючЗаписи.СчетаУчетаНоменклатуры», ПараметрыМассив); //с помощью массива со структурой создаем ключ записи
ОткрытьФормуМодально(«РегистрСведений.СчетаУчетаНоменклатуры.ФормаЗаписи», Новый Структура(«Ключ», КлючЗаписиРегистра)); // передаем в форму ключ записи и открываем её

КонецПроцедуры

Что мы сделали?

  1. занесли в структуру значения измерений;
  2. поместили структуру в массив;
  3. с помощью массива создали ключ записи;
  4. с помощью ключа записи открыли форму.

Почему так сложно?

Этот способ я подсмотрел в типовой конфигурации. Я не очень понимаю, зачем в итоге такая длинная цепочка, если кто-то видел более простой способ. Просьба, напишите, как, в комментариях, буду очень Вам благодарен. Спасибо!

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 7 на “Открытие управляемой формы 1С записи регистра сведений
  1. Отличная наводка! Спасибо!

    Ответить

  2. Заработало! Спасибо! Пол дня убил на поиск решения…

    Ответить

  3. &НаКлиенте
    Процедура ПредложенияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка=ложь;
    струк=новый Структура(«Период,Комплектация,Продавец»,Элементы.Предложения.ТекущиеДанные.Период,Элементы.Предложения.ТекущиеДанные.Комплектация,Элементы.Предложения.ТекущиеДанные.Продавец);
    кз=создатькз(струк);
    ОткрытьФорму(«РегистрСведений.Предложения.ФормаЗаписи»,новый Структура(«Ключ»,кз),ЭтаФорма,истина);
    КонецПроцедуры

    &НаСервере
    Функция создатькз(струк)
    кз=РегистрыСведений.Предложения.СоздатьКлючЗаписи(струк);
    Возврат кз;
    КонецФункции

    Ответить

    • Это лишний серверный вызов (к тому же у Вас он с передачей контекста формы)

      Ответить

      • СоздатьКлючЗаписи только на сервере

        Ответить

        • Тут в принципе есть серверный вызов
          Который, к тому же, с контекстом
          &НаСервереБезКонтекста
          &НаСервере
          Есть разница?)

          Ответить

          • Конечно есть. Представим ситуацию. Вы пошли в лес на пикник вас 500 чел. пришли на поляну разложились надо разжечь костер. нужны спички. Если НаСервере — Вы все 500 человек собираетесь и всеми идете в магазин за спичками. НаСервереБезКонтекста — кто-то один из 500 идет за спичками.

            Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.