Имя: Пароль:
1C
 
Открытие формы и заполнение СЗ
,
0 Margo95
 
06.01.21
13:11
Здравствуйте, возникла такая проблема, нужно из обработки открыть отчет и заполнить СЗ сразу (УФ), на сервере сначала получаю данные, после на клиенте открываю форму, но СЗ не заполняется, подскажите в чем проблема?



&НаКлиенте
Процедура ОтчетОстатков(Команда)
    
    МассивСсылок = ПолучитьФилиалРаботы(Сотрудник);
    ФилиалРаботы = Новый Структура("СвисокФилиалов", МассивСсылок);
    ПараметрыФормы  = Новый Структура("ЗначенияЗаполнения" , ФилиалРаботы);
    ОткрытьФорму("Отчет.ОстаткиТовараВСервисе.Форма.ФормаОтчета", ПараметрыФормы,);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьФилиалРаботы(Сотрудник)
    
    Массив = Новый Массив;
    Если ЗначениеЗаполнено(Сотрудник) Тогда
        Массив.Добавить(Сотрудник.ФилиалРаботы.Ссылка);
    КонецЕсли;
    Возврат Массив
    
КонецФункции
1 hhhh
 
06.01.21
13:24
(0) ну вот тут "СвисокФилиалов"

а наверно нужно не Свисок, а список.
2 ДенисЧ
 
06.01.21
13:24
"СвисокФилиалов"
Точно так называется список в отчёте?
3 Margo95
 
06.01.21
13:26
(1) (2) нет, название правильное, не исправлял на форме отчета просто еще
4 Margo95
 
06.01.21
13:31
Сейчас посмотрела через отладчик, у меня по какой-то причине в значение указано - {<Неизвестный модуль>(1,1)}: Переменная не определена (МассивСсылок)    
хотя в функции, если смотреть отладчиком (Возврат Массив), то в "Массив" в значении содержится нужные мне данные
5 Margo95
 
06.01.21
13:38
попробовала сообщить, данные передаются, возможно не правильно объяснила, нужно чтобы данные сразу были заполнены в СЗ, чтобы не было надобности выбирать их
6 Margo95
 
06.01.21
13:59
Проблему всё еще не решила
7 ДедМорроз
 
06.01.21
14:51
Нужно,чтобы в отчёте были заданные значения?
Если так,то нужно отключить восстановление настроек пользователя
Так как,сначала выполняется заполнение формы,а потом получаются настройки пользователя,которые это заполнение затирают.
8 Margo95
 
06.01.21
14:56
(7) да, я когда передаю в отчет данные, они добавляются в СЗ, но их нужно выбирать, а хочется исключить надобность выбора, чтобы в СЗ автоматически выбиралось нужно значение, не совсем поняла,а где их отключить? не так давно работаю с 1с
9 RomanYS
 
06.01.21
14:58
(8) Покажи что ты в открываемой форме делаешь и где у тебя (4) возникает
10 ДедМорроз
 
06.01.21
15:01
Что значит выбрать?
Галочку возле поставить?
11 Margo95
 
06.01.21
15:02
(9) Ошибки уже нет, данные передаются(в открываемой форме у меня нет кода), изначально хотела сделать, чтобы при создании на сервере НазваниеСЗ.Добавить(полученные данные), но после поняла, что если пользователь откроет отчет не из обработки, то получит ошибку, что переменная не определена, но проблема в том, что у меня в открываемой форме в СЗ сразу не выбирается переданное значение, оно просто туда добавляется, и его после нужно в самом СЗ выбирать, а я хочу исключить надобность выбирать полученное значение, если отчет был открыт из обработки
12 Margo95
 
06.01.21
15:05
(10) Если я захожу в отчет, прежде чем пользователь нажмёт кнопку (сформировать), ему нужно заполнить все реквизиты, есть реквизит с типом значения Список значений, если я оставлю как есть, то пользователю нужно будет сначала нажать "выбрать", после добавить, выбрать нужно значение и нажать окей, а я хочу исключить надобность что-то открывать и выбирать, если открывается отчет из обработки, то-есть чтобы полученное значение автоматически подставлялось в реквизит (Список значений)
13 RomanYS
 
06.01.21
15:16
(11) Ничего не понятно.
Что у тебя в открываемой форме есть реквизит (формы или отчета?) с таким именем?
Поэтому ожидается, что он заполнится без кода, так?
Что значит "просто туда добавляется"?

Отчет вероятно на СКД, заполнить реквизит формы может быть не достаточно. Возможно нужно вызвать код, который донесёт данные реквизита формы до СКД.
14 Margo95
 
06.01.21
15:20
(13) отчет не СКД, реквизит на форме находится с типом СЗ, добавляется туда, когда заходишь в выбор из СЗ, нажимаешь добавить, в выпадающем окне есть то значение, которые я передаю, я бы сделала через получить форму и добавила бы так в реквизит значение, но интерактивные методы запрещены, поэтому через клиента пытаюсь передать и не понимаю как мне сразу заполнить реквизит, если нужен код на форме отчета, то не понимаю какой, потому что если при создании написать и полученное значение добавлять, то если отчет не из обработки запускать, то будет ошибка выскакивать
15 Margo95
 
06.01.21
15:38
Как мне тогда написать проверку, чтобы при создании на сервере 1с понимала, отчет запущен через обработку или нет? написала код в форме отчета, если я буду открывать отчет из обработки, тогда у меня всё будет отрабатывать как мне нужно, а вот если я открою отчет не из обработки, то открываться он не будет, потому что поле объекта не обнаружено (Филиал)

Филиал = Параметры.Филиал;
СписокФилиалов.Добавить(Филиал.СписокФилиалов);
16 hhhh
 
06.01.21
16:09
(15) ну у вас же там были параметры СписокФилиалов, а параметра Филиал не было.
17 Margo95
 
06.01.21
18:05
(16) Даже если я верну обратно параметр СписокФилиалов, то все равно при открытии отчета не из Обработки, то 1с будет выдавать ошибку, потому что если открывать не из обработки, то Параметры.Филиал не существует, поэтому будет ошибку, а как сделать проверку, откуда открывается отчет, я не знаю, поэтому и пришла сюда за помощью, до сих пор не нашла решения(
18 RomanYS
 
06.01.21
18:10
(17) >> как сделать проверку
Параметры - это структура, у нее есть метод Свойство для проверки наличия свойства
Если Параметры.Свойство("Филиал") Тогда//есть такой параметр
...
19 RomanYS
 
06.01.21
18:11
(17) но лучше(проще) разобраться с реквизитами и передавать или заполнять нужные. А то пока получается, что есть какой-то список, который не список, а передаёте вообще массив.
20 Margo95
 
06.01.21
18:19
(18) Если в форме отчета при создании на сервере я укажу Параметры.Свойство, то в отладчике у меня выдаёт (Параметры.Свойство    {<Неизвестный модуль>(1)}: Поле объекта не обнаружено (Свойство)    ), вот в чем проблема, уже пыталась так сделать. я пыталась заполнять нужные мне реквизиты, но проблема в том, что реквизит (СписокФилиалов) имеет тип СписокЗначений и он просто у меня не заполняется, то-есть, если я перехожу с обработки в отчет, у меня этот реквизит пустой. вот код, который у меня написан в обработке


&НаКлиенте
Процедура ОтчетОстатков(Команда)
    
    Филиал = ПолучитьФилиалРаботы(Сотрудник);
    ФилиалРаботы = Новый Структура("СписокФилиалов", Филиал);
    ПараметрыФормы  = Новый Структура("СписокФилиалов" , ФилиалРаботы);
    ОткрытьФорму("Отчет.ОстаткиТовараВСервисе.Форма.ФормаОтчета", ПараметрыФормы);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьФилиалРаботы(Сотрудник)
    
    Если ЗначениеЗаполнено(Сотрудник) Тогда
        Возврат Сотрудник.ФилиалРаботы.Ссылка;
    КонецЕсли;
    
КонецФункции
21 Margo95
 
06.01.21
18:23
(19) Все равно спасибо большое за помощь, я реализовала немного по-другому уже то, что хотела

Спасибо всем, кто откликнулся!
22 RomanYS
 
06.01.21
18:23
(20) >>Поле объекта не обнаружено
Это не поле, а метод


    ФилиалРаботы = Новый Структура("СписокФилиалов", Филиал);
    ПараметрыФормы  = Новый Структура("СписокФилиалов" , ФилиалРаботы);
    ОткрытьФорму("Отчет.ОстаткиТовараВСервисе.Форма.ФормаОтчета", ПараметрыФормы);

такое вообще работать без обработки на стороне открываемой формы работать не может. В (0) хотя бы ЗначенияЗаполнения было.
23 Margo95
 
06.01.21
18:31
(22) Спасибо, учту на будущее
24 ДедМорроз
 
06.01.21
20:15
В параметры пихаете структуру ПараметрыОткрытия
В форме отчёта ПриСозданииНаСервере смотрим есть ли в стандартной структуре Параметры наше свойство ПараметрыОткрытия,если есть,то мы можем по его данным что-то там позаполнять
Если нету,то отчёт открыли просто так и ничего заполнять не нужно.
25 ДедМорроз
 
06.01.21
20:17
В принципе,в ПриСоздании можно поставить флаг и в ПриОткрытии уже начать формировать отчёт,если он начинает формироваться клиентским методом,если там сразу серверный код,то можно и в ПриСоздании,тогда у вас не только параметры будут заполнены,но и отчёт уже сформирован.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс