Здравствуйте, пишу внешнюю обработку. В модуле объекта этой обработки есть функция, и нужно это функцию вызвать из модуля формы этой же обработки, как это сделать? Процедура экспортная, тут всё впорядке. Пробовал много вариантов, и вот такой на форуме увидел, но он не помог, так же пишет что функция ОформлениеСтроки не найдена.

```1c
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ОбработкаОбъект.ОформлениеСтроки(МассивКодов);
```
---
Никогда не называй процедуры и функции зарезервированными системными литералами.
Вот переименуй её в ОформлениеСтроки1, и посмотри...

Кстати, реквизит Объект - точно основной реквизит обработки?
---
Твой код должен быть в серверной функции.
И проверить поиском что имя функции совпадает.
Нет ли директив каких нибудь в модуле объекта, типа

```1c
    #Если Клиент Тогда
    #КонецЕсли
```
---
понял, проверил, вроде всё верно. Вот код в модуле формы.

```1c
    &НаСервере
    Процедура ЗаполнитьТаблицуНаСервере(КоличествоГенераций)
    //Объект.ТаблицаДанных.Очистить();
    //
    //Генератор = Новый ГенераторСлучайныхЧисел;
    //Таблица = Объект.ТаблицаДанных;
    //
    //
    //МассивКодов = Новый Массив;
    //
    //Для Число = 0 По КоличествоГенераций Цикл
    // ЧислоГенератора = Генератор.СлучайноеЧисло(100, 999);
    //
    // Запрос = Новый Запрос;
    // Запрос.Текст =
    // "ВЫБРАТЬ ПЕРВЫЕ 1
    // | Платформы.Код КАК Код,
    // | Платформы.Ключевая КАК Ключевая,
    // | Платформы.Ссылка КАК Ссылка
    // |ИЗ
    // | Справочник.Платформы КАК Платформы
    // |ГДЕ
    // | Платформы.Код <= &ЧислоГенератора
    // |
    // |УПОРЯДОЧИТЬ ПО
    // | Код УБЫВ";
    //
    // Запрос.УстановитьПараметр("ЧислоГенератора", ЧислоГенератора);
    //
    // РезультатЗапроса = Запрос.Выполнить();
    // Выборка = РезультатЗапроса.Выбрать();
    //
    // Пока Выборка.Следующий() Цикл
    // НоваяСтрока = Таблица.Добавить();
    // НоваяСтрока.СлучайноеЧисло = ЧислоГенератора;
    // НоваяСтрока.Платформа = Выборка.Ссылка;
    // НоваяСтрока.ЧисловойКод = Выборка.Код;
    //
    // МассивКодов.Добавить(Выборка.Код);
    // КонецЦикла;
    //КонецЦикла;

    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ОбработкаОбъект.ОформлениеСтроки(МассивКодов);

    КонецПроцедуры
```
 А вот в модуле объекта

```1c
    Процедура ОформлениеСтроки(МассивКодов) Экспорт

    Если МассивКодов.Количество() > 0 Тогда
    МинимальныйКод = МассивКодов[0];
    МаксимальныйКод = МассивКодов[0];

    Для Индекс = 1 По МассивКодов.Количество() - 1 Цикл
    Если МассивКодов[Индекс] < МинимальныйКод Тогда
    МинимальныйКод = МассивКодов[Индекс];
    КонецЕсли;
    Если МассивКодов[Индекс] > МаксимальныйКод Тогда
    МаксимальныйКод = МассивКодов[Индекс];
    КонецЕсли;
    КонецЦикла;

    КонецЕсли;

    Для Каждого Строка Из ЭтотОбъект.ТаблицаДанных Цикл

    Если Строка.ЧисловойКод = МинимальныйКод Тогда

    Строка.Цвет = "Красный";
    КонецЕсли;

    Если Строка.ЧисловойКод = МаксимальныйКод Тогда

    Строка.Цвет = "Зелёный";
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры
```
---
Никогда не называй процедуры и функции зарезервированными системными литералами.
Вот переименуй её в ОформлениеСтроки1, и посмотри...

Кстати, реквизит Объект - точно основной реквизит обработки?
---
Спасибо за совет. Поменял названице процедуры, заработало, но когда вернул прежнее название - ничего не поменялось, магия какая-то. Короче ничего не понятно, спасибо за помощь) А по поводу реквизит Объект, да, основной реквизит. Ну то есть открываю форму обработки и там вот в блоке "реквизиты" в самом верху жирным выделен "Объект".