Добрый день, есть обработка в ней кроме форм присутствует макет с наименованием организаций и их счетов мне нужно из модуля формы этой обработки осуществить поиск в макете по наименованию организации и получить её счёт, как это можно сделать ?
---
посмотрите здесь

и здесь
---
https://forum.mista.ru/topic.php?id=759615

https://forum.mista.ru/topic.php?id=614246
---
```1c
    Функция ПолучитьМассивИменПараметров(ОбластьТабДокумента) Экспорт
    МассивИменПараметров = Новый Массив;
    Для НомерСтроки = 1 По ОбластьТабДокумента.ВысотаТаблицы Цикл
    Для НомерКолонки = 1 По ОбластьТабДокумента.ШиринаТаблицы Цикл
    Ячейка = ОбластьТабДокумента.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
    Если Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
    //если такого параметра еще нет, то добавим его

    Если МассивИменПараметров.Найти(Ячейка.Параметр) = Неопределено тогда
    МассивИменПараметров.Добавить(Ячейка.Параметр);
    КонецЕсли;
    ИначеЕсли Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон Тогда
    //выделим все параметры в шаблоне в отдельные строки

    ТекстШаблона = Ячейка.Текст;
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "[", Символы.ПС + "[");
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "]", Символы.ПС);
    Для Счетчик = 1 По СтрЧислоСтрок(ТекстШаблона) Цикл
    ТекСтрока = СтрПолучитьСтроку(ТекстШаблона, Счетчик);
    Если Лев(ТекСтрока, 1) = "[" тогда
    ИмяПараметра = Сред(ТекСтрока, 2);
    //если такого параметра еще нет, то добавим его

    Если МассивИменПараметров.Найти(ИмяПараметра) = Неопределено тогда
    МассивИменПараметров.Добавить(ИмяПараметра);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли//конец проверки, что в ячейке - текст, параметр или шаблон

    КонецЦикла//конец обхода по колонкам

    КонецЦикла//конец обхода по строкам

    Возврат МассивИменПараметров;
    КонецФункции
```
---
```1c
    МакетОрг = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
```
---
У вас по сути хардкодинг, так зачем усложнять себе жизнь макетами? Создайте соответствие (Наименование организации – Счет) прямо в коде.
---
Для управляемых форм, такой код набросал:

```1c
    &НаСервере
    Функция ПолучитьМакетНаСервере()
    ОтчетОбъект = РеквизитФормыВЗначение("Объект");
    Макет = ОтчетОбъект.ПолучитьМакет("ПФ");
    ОбластьТабДокумента = Макет.ПолучитьОбласть("Заголовок");

    МассивИменПараметров = Новый Массив;
    Для НомерСтроки = 1 По ОбластьТабДокумента.ВысотаТаблицы Цикл
    Для НомерКолонки = 1 По ОбластьТабДокумента.ШиринаТаблицы Цикл
    Ячейка = ОбластьТабДокумента.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
    Если Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
    //если такого параметра еще нет, то добавим его

    Если МассивИменПараметров.Найти(Ячейка.Параметр) = Неопределено тогда
    МассивИменПараметров.Добавить(Ячейка.Параметр);
    КонецЕсли;
    ИначеЕсли Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон Тогда
    //выделим все параметры в шаблоне в отдельные строки

    ТекстШаблона = Ячейка.Текст;
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "[", Символы.ПС + "[");
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "]", Символы.ПС);
    Для Счетчик = 1 По СтрЧислоСтрок(ТекстШаблона) Цикл
    ТекСтрока = СтрПолучитьСтроку(ТекстШаблона, Счетчик);
    Если Лев(ТекСтрока, 1) = "[" тогда
    ИмяПараметра = Сред(ТекСтрока, 2);
    //если такого параметра еще нет, то добавим его

    Если МассивИменПараметров.Найти(ИмяПараметра) = Неопределено тогда
    МассивИменПараметров.Добавить(ИмяПараметра);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;//конец проверки, что в ячейке - текст, параметр или шаблон

    КонецЦикла;//конец обхода по колонкам

    КонецЦикла;//конец обхода по строкам

    Для Каждого ЭлементМассива из МассивИменПараметров Цикл
    Сообщить(ЭлементМассива);
    КонецЦикла;
    КонецФункции

    &НаКлиенте
    Процедура СписокПараметров(Команда) //назначил на кнопку на форме
    ПолучитьМакетНаСервере();
    КонецПроцедуры
```

на форме кнопка на нее назначена команда. По нажатию на кнопку сообщается список параметров,которые есть в области макета
---
В таком случае порекомендую посмотреть и скопировать себе работу с макетом из Классификатора ТНВЭД. Там тоже некоторые данные лежат в макете. Но поиск все равно не в макете, а в таблице, заполненной из макета.
---
В 1с есть варианты заполнения ячеек- это параметр,шаблон(т.е. не сколько параметров в одной ячейке) и текст. Вот мы их и заполняем в массив. Вот так в ячейках < параметр>. Вот так шаблон [что- то]. У меня выдало все параметры и шаблоны.
---
Вот обработка для управляемых форм получения списка параметров области макета
---
Идти на сервер, получать макет и в нем искать.
---
Так
```1c
    ЭтотОбъект = РеквизитФормыВЗначение("Объект");
    МакетОрг = ЭтотОбъект.ПолучитьМакетНаСервере("Макет");
```
 ?
---
Работает?
---
```1c
    МакетОрг.Найти("ООО Рога и копыта");
```
 так имеете ввиду ?
---
Я ничего не имею ввиду. Но твои телепатические попытки мне нравятся.
---
Ошибку пишет Поле объекта недоступно для записи (ЭтотОбъект)
{ВнешняяОбработка.ПечатьОбезличеныхКвитанций.Форма.ФормаДобровольныеПожертвования.Форма(62)}: ЭтотОбъект = РеквизитФормыВЗначение("Объект");
---
И чо?
---
Ответ на вопрос не работает.
---
Не останавливайся, продолжай!
---
А самой организации в форме обработки нет? Вы в 1с ведете по нескольким организациям? Можно получить основную организацию, а потом её счет
---
В форме пользователь выбирает организацию, я получаю её именование после должен провести поиск и получить её счёт который потом подставить куда нужно так мне кажется проще.
---
С чего вы взяли, что поиск в макете проще чего-либо другого?
---
У меня во внешней обработке макет со всей нужной инфой её нигде нет во всей конфе что предложите ? Было бы можно запихал бы всё в РегСвед и бед незнал бы.
---
У вас по сути хардкодинг, так зачем усложнять себе жизнь макетами? Создайте соответствие (Наименование организации – Счет) прямо в коде.
---
То что надо.
---
В таком случае порекомендую посмотреть и скопировать себе работу с макетом из Классификатора ТНВЭД. Там тоже некоторые данные лежат в макете. Но поиск все равно не в макете, а в таблице, заполненной из макета.
---
а в таблице, заполненной из макета.Вы имеете в виду таблицу значений ?
---
Ничего не искать в макете.

1. Вставить свой фрагмент кода по определению счета, там где уже известна организация.
2. Вывести в табличный документ это значение.
---
Да тут прямо съезд телепатов! Чую, сейчас будет Битва экстрасенсов!
---
Что вам не понятно ?
---
Если бы мне было что-то непонятно - я бы задавал вопросы. Вы где-то видите в моих сообщениях вопросы? Судя по всему опять какие-то телепатические фантазии кое-кого настигли...
---
То что вы мне написали идти на сервер получать и искать в макете это я и без вас знал вопрос какие конструкции для этого использовать ?
---
А я хз - вы же не говорите какого рода у вас макет. Вот какого рода макет используете - под него и конструкции соответствующие подбирайте. Или вы в самом деле решили устроить тут съезд телепатов?
Надеюсь, с получением самого макета на сервере уже справились?
---
вы же не говорите какого рода у вас макет не общий, в виде таблицы.
---
Ну и какие методы у нас есть для работы с табличным документом? Уже почитали данный вопрос в документации?
---
на сервере уже справились?

```1c
    ЭтотОбъект = РеквизитФормыВЗначение("Объект");
    МакетОрг = ЭтотОбъект.ПолучитьМакетНаСервере("Макет");
```
 так не работает
---
Конечно не работает. Почитайте документацию по работе с макетами.
---
```1c
    МакетОрг = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
```
---
А чего так проще? Имея "организацию" можно получить все описание организации и адреса, банк, р/с, коды регистрации и т.д. И потом эти данные подставлять куда надо
---
Хорошо, нужен код добровольных пожертвований где искать зная наименование ?
---
Да? Ну, ок.
---
Мне в табличный документ не чего выводить не надо мне в нём найти нужно.
---
посмотрите здесь

и здесь
---
https://forum.mista.ru/topic.php?id=759615

https://forum.mista.ru/topic.php?id=614246
---
```1c
    Функция ПолучитьМассивИменПараметров(ОбластьТабДокумента) Экспорт
    МассивИменПараметров = Новый Массив;
    Для НомерСтроки = 1 По ОбластьТабДокумента.ВысотаТаблицы Цикл
    Для НомерКолонки = 1 По ОбластьТабДокумента.ШиринаТаблицы Цикл
    Ячейка = ОбластьТабДокумента.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
    Если Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
    //если такого параметра еще нет, то добавим его

    Если МассивИменПараметров.Найти(Ячейка.Параметр) = Неопределено тогда
    МассивИменПараметров.Добавить(Ячейка.Параметр);
    КонецЕсли;
    ИначеЕсли Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон Тогда
    //выделим все параметры в шаблоне в отдельные строки

    ТекстШаблона = Ячейка.Текст;
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "[", Символы.ПС + "[");
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "]", Символы.ПС);
    Для Счетчик = 1 По СтрЧислоСтрок(ТекстШаблона) Цикл
    ТекСтрока = СтрПолучитьСтроку(ТекстШаблона, Счетчик);
    Если Лев(ТекСтрока, 1) = "[" тогда
    ИмяПараметра = Сред(ТекСтрока, 2);
    //если такого параметра еще нет, то добавим его

    Если МассивИменПараметров.Найти(ИмяПараметра) = Неопределено тогда
    МассивИменПараметров.Добавить(ИмяПараметра);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли//конец проверки, что в ячейке - текст, параметр или шаблон

    КонецЦикла//конец обхода по колонкам

    КонецЦикла//конец обхода по строкам

    Возврат МассивИменПараметров;
    КонецФункции
```
---
Объясните пожалуйста
```1c
    ПолучитьМассивИменПараметров(ОбластьТабДокумента)
```
 ОбластьТабДокумента это параметр откуда взять ?
---
ОбластьТабДокумента это область макета в которой искать параметр
---
так у меня макет в виде эксель таблицы без областей.
---
Ох тыж! На 36-й итерации наконец-то появляются какие-то интересные сведения! Телепатам теперь станет полегче!
---
Для управляемых форм, такой код набросал:

```1c
    &НаСервере
    Функция ПолучитьМакетНаСервере()
    ОтчетОбъект = РеквизитФормыВЗначение("Объект");
    Макет = ОтчетОбъект.ПолучитьМакет("ПФ");
    ОбластьТабДокумента = Макет.ПолучитьОбласть("Заголовок");

    МассивИменПараметров = Новый Массив;
    Для НомерСтроки = 1 По ОбластьТабДокумента.ВысотаТаблицы Цикл
    Для НомерКолонки = 1 По ОбластьТабДокумента.ШиринаТаблицы Цикл
    Ячейка = ОбластьТабДокумента.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
    Если Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
    //если такого параметра еще нет, то добавим его

    Если МассивИменПараметров.Найти(Ячейка.Параметр) = Неопределено тогда
    МассивИменПараметров.Добавить(Ячейка.Параметр);
    КонецЕсли;
    ИначеЕсли Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон Тогда
    //выделим все параметры в шаблоне в отдельные строки

    ТекстШаблона = Ячейка.Текст;
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "[", Символы.ПС + "[");
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "]", Символы.ПС);
    Для Счетчик = 1 По СтрЧислоСтрок(ТекстШаблона) Цикл
    ТекСтрока = СтрПолучитьСтроку(ТекстШаблона, Счетчик);
    Если Лев(ТекСтрока, 1) = "[" тогда
    ИмяПараметра = Сред(ТекСтрока, 2);
    //если такого параметра еще нет, то добавим его

    Если МассивИменПараметров.Найти(ИмяПараметра) = Неопределено тогда
    МассивИменПараметров.Добавить(ИмяПараметра);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;//конец проверки, что в ячейке - текст, параметр или шаблон

    КонецЦикла;//конец обхода по колонкам

    КонецЦикла;//конец обхода по строкам

    Для Каждого ЭлементМассива из МассивИменПараметров Цикл
    Сообщить(ЭлементМассива);
    КонецЦикла;
    КонецФункции

    &НаКлиенте
    Процедура СписокПараметров(Команда) //назначил на кнопку на форме
    ПолучитьМакетНаСервере();
    КонецПроцедуры
```

на форме кнопка на нее назначена команда. По нажатию на кнопку сообщается список параметров,которые есть в области макета
---
Ёксель у него оказывается!
---
Разобрался.
---
Всё же вопросы возникают можете пояснить в своём коде ?
---
Что именно?
---
Здесь мы получаем макет и область из него

```1c
    ОтчетОбъект = РеквизитФормыВЗначение("Объект");
    Макет = ОтчетОбъект.ПолучитьМакет("ПФ");
    ОбластьТабДокумента = Макет.ПолучитьОбласть("ОбластьТаблицы");
```

хотя у меня в макете нет области пришлось выделить и присвоить ей имя это правильно ?

Здесь создаём массив и в цикле что мы получаем в цикле ?

```1c
    МассивИменПараметров = Новый Массив;
    Для НомерСтроки = 1 По ОбластьТабДокумента.ВысотаТаблицы Цикл
    Для НомерКолонки = 1 По ОбластьТабДокумента.ШиринаТаблицы Цикл
    Ячейка = ОбластьТабДокумента.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); //Что присваиваем в ячейку ?
    Если Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда // Что за парамет и что заполняем ?
    //если такого параметра еще нет, то добавим его
```

А здесь мы какие ячейки редактируем ?

```1c
    ТекстШаблона = Ячейка.Текст;
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "[", Символы.ПС + "[");
    ТекстШаблона = СтрЗаменить(ТекстШаблона, "]", Символы.ПС);
    Для Счетчик = 1 По СтрЧислоСтрок(ТекстШаблона) Цикл
    ТекСтрока = СтрПолучитьСтроку(ТекстШаблона, Счетчик);
    Если Лев(ТекСтрока, 1) = "[" тогда
    ИмяПараметра = Сред(ТекСтрока, 2);
```

Просто я не разбираясь опробовал его и он мне выдал пустоту на до понять как он работает вроде казалось что понял, но это только казалось.
---
В 1с есть варианты заполнения ячеек- это параметр,шаблон(т.е. не сколько параметров в одной ячейке) и текст. Вот мы их и заполняем в массив. Вот так в ячейках < параметр>. Вот так шаблон [что- то]. У меня выдало все параметры и шаблоны.
---
Вот обработка для управляемых форм получения списка параметров области макета
---
Так у вас параметры в макете используются. А у меня текст.
---
Да! других печатных форм не когда не делал. Просто не пойму что у Вас там? У Вас просто текст получается на печатной форме. Других вариантов у меня нет. Чем смог тем помог
---
Спасибо.