Имя: Пароль:
1C
1С v8
Как модально открыть форму РС "Номенклатура контрагентов" и вернуть записанное значение?
0 Len1vec
 
20.05.20
22:20
Добрый день.
Подскажите, пожалуйста.
Выполняются себе функции на сервере. Одна из них выполняет поиск по РС.НоменклатураКонтрагентовБЭД. Если записи, то надо открыть форму и передать в нее параметры (хотя бы "Владелец", "Идентификатор" и "Артикул").
Как правильно её открыть и передать параметры, а после записи вернуть ссылку на запись этого регистра? Ведь сама форма открывается на клиенте (?), а всё остальное выполняется на сервере.

Часть кода, которая не выполняется. Пишет ошибку: {ВнешняяОбработка.ЗагрузкаДокументовЗаказПоставщику.Форма.Форма.Форма(375,4)}: Процедура или функция с указанным именем не определена (ОткрытьФормуРС)

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

            НоменклатураРС = СоздатьЗаписьНоменклатура(СтрДО, Поставщик);
            Продолжить;
        КонецЕсли;
        
        Стр.Вставить("Номенклатура",         НоменклатураРС.Номенклатура);
        Стр.Вставить("СерияНоменклатуры",     СтрДО.Формат);
        ВозвращаемыеДанные.Добавить(Стр);    
    КонецЦикла;    
    Возврат ВозвращаемыеДанные;
КонецФункции

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

КонецФункции
1 mikecool
 
20.05.20
22:37
нету модально
Оповестить
2 Len1vec
 
20.05.20
23:47
(1) дело в том, что функцию ОткрытьФормуРС() не видно в списке доступных
3 palsergeich
 
21.05.20
01:28
(2) Добавь ее руками, в чем проблема?
4 palsergeich
 
21.05.20
01:30
Ссылки на запись не существует.
У РС есть такое понятие как ключ.
И все равно для того что бы маякнуть владельцу формы в РС тебе скорее всего придется форму в метаданных создавать, минимальная кастомизация, да придется ее делать
5 Ненавижу 1С
 
гуру
21.05.20
01:34
с сервера? клиентскую функцию? вы что-то делаете не так
6 craxx
 
21.05.20
04:50
(0) правильный ответ "никак". Алгоритм надо по человечески придумать
7 Len1vec
 
21.05.20
09:02
(5) (6) Изначально была задумка как регламентного задания без открытия этой формы. Но кому-то не понравилась моя задумка и решили сделать по-другому :)
8 Ненавижу 1С
 
гуру
21.05.20
12:07
можно необработанные данные с сервера вернуть массивом и предложить дообработать вручную
9 D_E_S_131
 
21.05.20
13:27
Функция "ПолучитьДанныеОтвесовДляБД()" откуда вызывается? Вот там нужно получить данные необходимые с сервера, а потом уже использовать их для ОткрытьФорму().
10 craxx
 
21.05.20
18:01
(7) Да и в принципе открытие формы в цикле - такая себе идея. А если будет тысячи таких позиций?
11 Len1vec
 
22.05.20
12:13
(10) Моё мнение ничего не значит)))

Всем спасибо огромное. Разобрался)))
Независимо от того, куда вы едете — это в гору и против ветра!