8.х Заполнение табличной части данными из регистра сведений.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Семен Сосницкий, 20 апр 2015.

  1. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Господа, подскажите пожалуйста, я уже замучался. Есть табличная часть обработки. В ней три реквизита - дата начала, дата окончания и количество. Есть регистр сведений, в нем два измерения - начало периода, окончание периода и число комплектов. Собственно задача простая - при открытии управляемой формы заполнять табличную часть данными из регистра сведений. Ок, в процедуре при открытии пишу:
    Код:
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
        нашиданные = СерверныеПроцедуры.ЗаполнениеТЧПлановПроизводства();
        Объект.ТабличнаяЧасть1.Загрузить(нашиданные);
    КонецПроцедуры
    
    В общем модуле "СерверныеПроцедуры" пишу:
    Код:
    Функция ЗаполнениеТЧПлановПроизводства() Экспорт
        Запрос = Новый Запрос;
        Запрос.Текст = "Выбрать
        | ПланПроизводства.НачалоПериода КАК ДатаНачала,
        | ПланПроизводства.ОкончаниеПериода КАК ДатаОкончания,
        | ПланПроизводства.ЧислоКомплектов КАК Количество
        | ИЗ
        | РегистрСведений.ПланПроизводства КАК ПланПроизводства";
        РезультатЗапроса = Запрос.Выполнить().Выгрузить();
        Возврат РезультатЗапроса;
    КонецФункции
    
    Получаю ошибку:
    Метод недоступен на клиенте

    Да, посмотрел в синтаксис-помошнике, доступен только на сервере и веб-клиенте (интересно, почему мы с формой работаем на сервере, логика 1с становится все менее понятной). Как тогда это реализовать?
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    А модуль серверные процедуры у Вас какой. Клиент или сервер. я так понимаю что у него только галочка Сервер стоит. Вот он и пишет Вам что вы на клиенте выхываете модуль который только на сервере
  3. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Ох, только заметил, что там стояла галочка "клиент". Поставил там галочки и клиент и сервер. Нет, дело в том, что получается следующее: я обращаюсь на сервере к регистру сведений, получаю из него запросом данные, выгружаю их в таблицу значений. Дальше я передаю таблицу значений назад в клиент и пытаюсь заполнить данными из таблицы значений табличную часть обработки. И вот она ругается, что метод "Загрузить()", который я уже пытаюсь выполнить на клиентской стороне, на клиенте не доступен. Вообще логики не понимаю, если я работаю с табличной частью управляемой формы, то я же должен с ней по-любом работать на клиентской стороне. Но нет, оказывается на сервере. Вот я и не понимаю тогда как это сделать.
  4. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Еще интересно - попробовал передать в качестве аргумента функции саму табличную часть и попробовать выполнить метод Загрузить() на сервере, все равно дает ошибку, что недоступно на клиенте, хотя директива у функции стоит &НаСервере и у общего модуля поставил галочку "сервер". Кто-нибудь может подсказать?
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Я бы Вашу задачу немного по другому решал. Список бы сделал - динамическим списком - там в указал что произвольные данные в СКД к нему накатал бы запрос и затем для списка устанавливал параметры.
  6. Мистер Смит
    Offline

    Мистер Смит Опытный в 1С

    Регистрация:
    29 фев 2012
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Грузите ваши данные в табличную часть в процедуре ПриСозданииНаСервере, ну а вообще, прислушайтесь к мнению выше, возможно вам и табличная часть то вовсе не понадобиться.
  7. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Можно попроще пожалуйста, я начинающий еще. У меня в обработке должна быть табличная часть. К чему сделать привязку табличной части, где лучше хранить данные подобного рода? Мне в соседней теме подсказали, что как раз регистр сведений подходит.

    Мистер Смит, спасибо большое, Ваш совет помог! Действительно, опять выбрал не то событие, которое нужно. В "ПриСозданииНаСервере" все работает как надо!
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Берете Ваш список - ставите у него тип - динамический список. Там в свойствах есть галочка Произвольный запрос. ниже ссылка. отрывается СКД там пишете Ваш запрос.
    в той же процедуре ПРиСоздании На сервере указываете парметры типа
    Список.Параметры.УстановитьЗначениеПараметра("Склад", Параметры.Склад);
  9. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    У меня через эту табличную часть еще должна быть возможность вводить данные. То есть в табличную часть я добавляю записи, а они при следующем открытии формы заполняются в табличную часть.
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Тогда вариант мой - не подходит

Поделиться этой страницей