arefaste/1C_Forums huggingface dataset:
Есть регистр сведений
Измерения: Склад, Номенклатура
Ресурс: Количество
загружаю с файла остатки с 3х разных складов. Но почему-то остаются записи только для одного Склада(на всех складах одинаковые товары)
---
После строки

```1c
    НаборЗаписей = РегистрыСведений.НаличиеНаСкладеКонтрагента.СоздатьНаборЗаписей();
```

забываете
```1c
    НаборЗаписей.Прочитать();
```

Поэтому каждый раз перезаписываете весь регистр.
---
показывайте код - в нем где-то ошибка
---
```1c
    Для Счетчик = 1 По 3 Цикл

    Если Счетчик = 1 Тогда

    НаименованиеФайла = "Контрагент1.xml";
    Контрагент = Справочники.Контрагенты.НайтиПоКоду("Контрагент1");
    ПолучениеФайловПоFTP(НаименованиеФайла);
    ТЗ = ПрочитатьФайл(НаименованиеФайла);
    ЗаписатьКоличествоВРегистр(ТЗ, Контрагент);

    ИначеЕсли Счетчик = 2 Тогда
    НаименованиеФайла = "Контрагент2.xml";
    Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Контрагент2");
    ПолучениеФайловПоFTP(НаименованиеФайла);
    ТЗ = ПрочитатьФайл(НаименованиеФайла);
    ЗаписатьКоличествоВРегистр(ТЗ, Контрагент);

    ИначеЕсли Счетчик = 3 Тогда

    НаименованиеФайла = "Контрагент3.xml";
    Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Контрагент3");
    ПолучениеФайловПоFTP(НаименованиеФайла);
    ТЗ = ПрочитатьФайл(НаименованиеФайла);
    ЗаписатьКоличествоВРегистр(ТЗ, Контрагент);

    КонецЕсли;

    КонецЦикла;
```
---
Ответ в 8.

И код можно лаконичнее написать же:

```1c
    Для Счетчик = 1 По 3 Цикл

    НаименованиеФайла = "Контрагент" + Строка(Счетчик) + ".xml";
    Контрагент = Справочники.Контрагенты.НайтиПоКоду("Контрагент" + Строка(Счетчик));
    ПолучениеФайловПоFTP(НаименованиеФайла);
    ТЗ = ПрочитатьФайл(НаименованиеФайла);
    ЗаписатьКоличествоВРегистр(ТЗ, Контрагент);

    КонецЦикла;
```

У вас же меняется только цифра в наименовании файла и контрагента
---
там не только цифра меняется, я для примера написал
---
```1c
    Функция ЗаписатьКоличествоВРегистр(ТЗ, Контрагент)

    НаборЗаписей = РегистрыСведений.НаличиеНаСкладеКонтрагента.СоздатьНаборЗаписей();

    Для Каждого Строка Из ТЗ Цикл

    Если НЕ Строка.Номенклатура.Пустая() Тогда

    НоваяЗапись = НаборЗаписей.Добавить();

    НоваяЗапись.Контрагент = Контрагент;
    НоваяЗапись.Номенклатура = Строка.Номенклатура;
    НоваяЗапись.Количество = Строка.Остаток;

    Если НоваяЗапись.Количество > 0 Тогда
    НоваяЗапись.ЕстьНаСкладе = Истина;
    Иначе
    НоваяЗапись.ЕстьНаСкладе = Ложь;
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;

    НаборЗаписей.Записать();

    КонецФункции
```
---
После строки

```1c
    НаборЗаписей = РегистрыСведений.НаличиеНаСкладеКонтрагента.СоздатьНаборЗаписей();
```

забываете
```1c
    НаборЗаписей.Прочитать();
```

Поэтому каждый раз перезаписываете весь регистр.
---
Запись с такими ключевыми полями существует! : НаличиеНаСкладеКонтрагента: Контрагент1, 008 (Регистр сведений: Наличие на складе контрагента; Номер строки: 6449)

Тогда такая ошибка
---
Подсказка:
Склад последний из 3-х???
---
Да
---
Думаю, ошибка не в коде
А в построении регистра
Измерения:
Контрагент - Ведущее, основной отбор
Номенклатура- НЕ Ведущее, НЕ основной отбор
---
Ошибку понял, всем спасибо!
Добрый день!
Как сделать чтобы кнопка на форме была не на командной панели, а во Все действия на командной панели?
---
Ответ найден. Надо в свойствах выбрать - В дополнительном подменю
---
Ответ найден. Надо в свойствах выбрать - В дополнительном подменю
Всем привет. Есть следующая задача: имеется конфигурация на БСП. Контактная информация хранится в соответствующей табличной части. Заполнена правильно (данные внесены в соответствующие поля), но не по классификатору. Значения полей адреса хранятся в виде JSON в поле "Значение" ТЧ Контактная информация.
Адресные данные (улица, дом, квартира) нужно выводить на форму динамического списка и в отчетах на СКД. Также должна быть возможность отборов по номерам квартир, домов, улиц.

Каким образом это лучше реализовать? Знаю, что можно прикрутить вычисляемые поля к СКД и вызывать из них процедуры общих модулей, но насколько это проблематично реализовать? И насколько это производительно?
---
Нет. нельзя выполнять поиск, отборы и сортировку по полям, выводимым по событию ПриПолученииДанныхНаСервере. Проблему решил тем, что добавил в ТЧ КонтактнаяИнформация поля Улица, Здание, Помещение и выполняю их вывод на форму динамического списка. При изменении контактной информации заполняю эти поля из структуры JSON.
---
Есть функция БСП
СтруктураАдреса = РаботаСАдресами.СведенияОбАдресе(Адрес, ДополнительныеПараметры)

Где Адрес строка в Json.
Возвращает структуру. тоесть сможете обращаться СтруктураАдреса.Улица, СтруктураАдреса.Здание.Номер
---
Возвращает структуру. тоесть сможете обращаться СтруктураАдреса.Улица, СтруктураАдреса.Здание.Номер

Знаю, что есть такая штука. Как её прикрутить к динамическому списку и насколько это будет производительно.
---
Прикрутить в событии при получении данных динамического списка. А вот поиск видимо реализовать по всей строке на подобно в запросе
---
Погуглил. Вроде, можно передать параметры отбора через Настройки компоновщика. Буду пробовать
---
Нет. нельзя выполнять поиск, отборы и сортировку по полям, выводимым по событию ПриПолученииДанныхНаСервере. Проблему решил тем, что добавил в ТЧ КонтактнаяИнформация поля Улица, Здание, Помещение и выполняю их вывод на форму динамического списка. При изменении контактной информации заполняю эти поля из структуры JSON.
Нужно организовать двусторонний обмен между УТ 10 (обычные формы) и 1с CRM 3 (управляемые формы), а так же 1с Бухгалтерия предприятия 3 (управляемые формы) с 1с CRM 3 (управляемые формы).

Вопрос: можно ли реализовать такие обмены при помощи 1с Конвертация данных 2.1 ?
---
возьмите встроенную обработку из БП называется универсальный обмен - это и есть В8Эксч83

в новых версиях этот код выглядит СтрокаДерева.Представление = "РегистрыСведений";

```1c
    Для каждого ОбъектМД Из Метаданные.РегистрыСведений Цикл

    Если Не ПравоДоступа("Изменение", ОбъектМД) Тогда
    Продолжить;
    КонецЕсли;
```

и не вызывает ошибки
---
конвертация данных - это всего лишь специализированная конфигурация, для создания правил обмена, которые физически представляют собой XML файлик определенного формата.
А уж в каких конфигурациях вы эту систему будете применять - неважно. Хоть на обычных, хоть на управляемых.

Сама по себе конвертация - на обычных формах. Обработки по анализу метаданных конфигураций, в приложении к программе, - есть и для обычных и для управляемых, и даже для 7.7.

Вопрос: можно ли реализовать такие обмены при помощи 1с Конвертация данных 2.1 ?
да
---
MD83Exp - это выгрузка метаданных?
V8Exchan83 - это выгрузка-загрузка данных?
---
угадали
---
При открытии в 1c CRM обработки V8Exchan83 выдается ошибка:

{ВнешняяОбработка.УниверсальныйОбменДаннымиXML.Форма.УправляемаяФорма.Форма(864)}: Ошибка при вызове метода контекста (ПравоДоступа)
  Если Не ПравоДоступа("Удаление", ОбъектМД) Тогда
по причине:
Право Удаление неприменимо к РегистрСведений.ABCXYZКлассификацияКлиентов
---
возьмите встроенную обработку из БП называется универсальный обмен - это и есть В8Эксч83

в новых версиях этот код выглядит СтрокаДерева.Представление = "РегистрыСведений";

```1c
    Для каждого ОбъектМД Из Метаданные.РегистрыСведений Цикл

    Если Не ПравоДоступа("Изменение", ОбъектМД) Тогда
    Продолжить;
    КонецЕсли;
```

и не вызывает ошибки
---
В Бухгалтерии 3 есть только Обработка.УниверсальныйОбменДаннымиXML
Но эта обработка выгружает данные, а не методанные. Подскажи где взять рабочую обработку выгрузки методанных?
---
Извини перепутал, спасибо.
---
Добавлю, что эта ошибка с вызовом метода ПравоДоступа позникает на платформе версии 8.3.9 и выше (при отключенном режиме совместимости с более ранними версиями платформы) и связано с изменением логики работы этого метода.
Про изменения в методе ПравоДоступа написано в файле V8Update.htm.
---
спасибо, менять надо в модуле объекта и в модуле УФ
---
Использую данный обмен для переноса данных между 1С Альфа-Авто 5.1(толстый клиент) и УТ 11.4(тонкий клиент). Условие с ПравоДоступа пришлось загонять в Попытка ... Исключение Продолжить КонецПопытки; Иначе вылетала обработка при попытке ее открыть.
Косяк выплыл после перехода на последнюю версию УТ 11.4.6.188.
Здравствуйте!

Имеется самописная конфигурация на управляемых формах. Обновили платформу с версии 8.3.15.1656 на версию 8.3.17.1386 и в макетах появилась странность, при чем в режиме конфигуратора, вся правая часть текста как бы обрезается, если выбрано горизонтальное выравнивание "По ширине".
Если выбирать "По левому краю", то вроде все нормально, но во-первых это очень трудоемкий процесс исправлять все макеты (их очень много, с текстом, печатаются различные договоры), а во-вторых, выглядит такое выравнивание очень некрасиво.

Подскажите, как исправить данную проблему?

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

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

В общем с проблемой разобрались, это ошибка платформы, которая исправлена в версии 8.3.17.1496.
---
В итоге обновились платформу? На какую? Тоже возникла такая проблема у клиента, но обновлять не хотят, т.к. их сисадмин говорит что "8.3.17.1496 и 8.3.17.1549 с еще большими багами".
---
Да обновили, полет нормальный, проблемы конечно есть, но пока только касающиеся расширения. Из того, что помню, у документа различаются формы в расширении и в основной конфигурации, периодически появляется ошибка, связанная с цветом (в этих формах разного цвета оформление), а так вроде нормально все.
Всем привет!
Есть форма списка, из него я открываю по кнопке другую форму в которой пользователь выбирает период. И этот период должен передаться в первую форму. Могу это сделать только через модальную открываемую форму. А можно без модальной? Все формы управляемые.
---
Можно. ОписаниеОповещение.

пример:

```1c
    &НаКлиенте
    Процедура КакНемодальноВвестиДату(Команда)

    Оповещение = Новый ОписаниеОповещения("ПослеВводаСтроки", ЭтотОбъект);

    ПоказатьВводДаты(Оповещение,,"Введите дату");

    КонецПроцедуры

    &НаКлиенте
    Процедура ПослеВводаСтроки(Результат, Параметры) Экспорт

    Если Не Результат = Неопределено Тогда
    Сообщить(Результат);
    КонецЕсли;

    КонецПроцедуры
```
---
Можно. ОписаниеОповещение.

пример:

```1c
    &НаКлиенте
    Процедура КакНемодальноВвестиДату(Команда)

    Оповещение = Новый ОписаниеОповещения("ПослеВводаСтроки", ЭтотОбъект);

    ПоказатьВводДаты(Оповещение,,"Введите дату");

    КонецПроцедуры

    &НаКлиенте
    Процедура ПослеВводаСтроки(Результат, Параметры) Экспорт

    Если Не Результат = Неопределено Тогда
    Сообщить(Результат);
    КонецЕсли;

    КонецПроцедуры
```
---
Да, спасибо!
Подскажете почему лучше не использовать модальные окна?
---
Использовать можно, Не рекомендуется )
Модальные окна вели себя некорректно в мобильных приложениях и веб клиентах
---
Оповещением и его последующей обработкой...
Колонка одной таблицы является строковым ключом для другой. При изменении пользователем этого ключа в первой таблице нужно поменять его во второй. Но сначала во второй таблице надо найти строки с этим ключом. В процедуре "при изменении" старого ключа уже нет, в процедуре "перед началом изменения" ещё нет нового.
Подскажите, как выйти из этой ситуации?
---
Создаете переменную формы.
В процедуре перед изменением запоминаете значение ключа в эту переменную.
В процедуре при изменение сравнивает и если изменилось, выполняете нужные Вам действия.
Сравнение делаете так

```1c
    Если Ключ <> мКлюч и Не мКлюч <> Неопределено Тогда
```
---
Как вариант можно после изменения строки в первой таблице выбрать все строки из второй, у которых нет соответствия по ключу с первой таблицей - это и будут интересующие тебя строки, которые раньше были привязаны к редактируемой строке первой таблицы
---
Интересно.
А как выбрать такие строки?
Циклом или запросом как-то можно?
---
я бы скорей всего запросом сделал
---
Методом "НайтиСтроки(СтруктураОтбора)" запрос это к ссылке можно построить, а загонять таблицу в запрос нет смысла в данном случае.
---
Что вы в структуру поиска вставите чтобы найти строки с ключом, которого больше нет?
---
Что значит больше нет? Вот прям, во всех строках его не стало?
А так читайте как я писал в (3).
Это типовая ситуация, если нужно сравнить с тем что было или вернуть/изменить что то, но при изменение, то перед изменением это значение запоминается.
---
Загнать обе тч в тз, добавить суммирующуюся колонку, свернуть по ключу. Запросом это оверкилл, конечно.
---
после свертки надо будет еще циклом по ТЗ пройтись или структурой поиска чтобы отобрать только необходимые
---
Загнать обе тч в тз, добавить суммирующуюся колонку, свернуть по ключу.
в этом случае во второй таблице я тоже нужные строки не нахожу. Так как соответствующих старому ключу произвольное количество строк и ключ у них одинаковый, они тоже сворачиваются в произвольное число.
---
Добавить скрытую колонку "Старый ключ".

При изменении:
1. Найти по старому ключу данные во второй таблице.
2. Записать значение нового ключа в скрытую колонку старый ключ.
---
Создаете переменную формы.
В процедуре перед изменением запоминаете значение ключа в эту переменную.
В процедуре при изменение сравнивает и если изменилось, выполняете нужные Вам действия.
Сравнение делаете так

```1c
    Если Ключ <> мКлюч и Не мКлюч <> Неопределено Тогда
```
---
https://infostart.ru/1c/articles/186522/
Обновили платформу на 8.3.15 в самописной конфигурации. Ранее была платформа 8.3.11.

При снятии режима совместимости в "Не использовать" - конфигурация начинает вести себя неккоректно. Ошибки с присоединенными файлами, с пользователями, динамическими списками.

Есть ли кого нибудь ссылки на хорошие статьи, которые описывают алгоритм снятия режима совместимости?
---
Процедура проста, но кропотлива.
Нужно исключить использование методов, которые больше не используются или адаптировать, если изменилось поведение.
А вообще на ИТС есть инструкция https://its.1c.ru/db/metod8dev/content/5293/hdoc
---
Процедура проста, но кропотлива.
Нужно исключить использование методов, которые больше не используются или адаптировать, если изменилось поведение.
А вообще на ИТС есть инструкция https://its.1c.ru/db/metod8dev/content/5293/hdoc
---
Спасибо а сами изменения уже в документации к платформе?
файл v8_update?
---
Да, все изменения по платформе есть в документации. Но в статье есть описание критических изменений. По крайне мере по аналогичной статье снимал режим совместимости для УТ 10.3
---
Спасибо большое, у нас 8.3.15 и 8.3.11 разница небольшая.

Буду изучать статью.
Добрый день.

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

Буду благодарен за ссылку на статью по настройке или пример подобного отчета.
---
Я такое делал через объединение наборов и отборами на группировки. Т.е. в СКД есть 1 набор объединение - состоит из наборов остатки на начало, приход, расход и остатки на конец. Поля наборов такие, какие нужны в отчёте. В каждом наборе есть поле ВидСтроки (к примеру 1 - остатки на начало, 2 - приход, 3 - расход, 4 - остатки на конец). В структуру отчета выводим группировки (приложил картинку) и на каждую выводимую группировку накладывал отбор по виду строки (тоже приложил картинку). В настройках группировок отключаем вывод отборов и отключаем вывод итогов. Должно получиться то, что надо.
---
Я такое делал через объединение наборов и отборами на группировки. Т.е. в СКД есть 1 набор объединение - состоит из наборов остатки на начало, приход, расход и остатки на конец. Поля наборов такие, какие нужны в отчёте. В каждом наборе есть поле ВидСтроки (к примеру 1 - остатки на начало, 2 - приход, 3 - расход, 4 - остатки на конец). В структуру отчета выводим группировки (приложил картинку) и на каждую выводимую группировку накладывал отбор по виду строки (тоже приложил картинку). В настройках группировок отключаем вывод отборов и отключаем вывод итогов. Должно получиться то, что надо.
---
Спасибо. Танцами с бубнами кое-как получилось вашим методом. Неужели нет способа проще?
---
Можно и объединением в запрос. Вид движения - начальный остаток, приход, расход, конечный остаток. Не сложно же собрать из 4х частей такой запрос собрать? Дальше элементарно.
---
Не совсем корректно может получиться, если, например, в результате запроса нет остатков на начало. Целая секция отчета в таком случае выпадет.
Добрый день!
Как сделать чтоб каждое значение строки ТаблицаТовары не перезаписывалась последней строкой ВыборкаДетальныеЗаписи? Получается все строки заполняются последним значением из ВыборкаДетальныеЗаписи

```1c
    Для Каждого Строка Из ТаблицаТовары Цикл

    Для Каждого Элемент Из ВыборкаДетальныеЗаписи Цикл

    ЗаполнитьЗначенияСвойств(Строка, Элемент);

    КонецЦикла;

    КонецЦикла;
```
---
```1c
    Для Каждого Элемент Из ВыборкаДетальныеЗаписи Цикл
    нСтрока = ТаблицаТовары.Найти(Элемент.Номенклатура, "Номенклатура");
    Если нСтрока = Неопределено Тогда
    нСтрока = ТаблицаТовары.Добавить()
    КонецЕсли;
    ЗаполнитьЗначенияСвойств(нСтрока, Элемент)
    КонецЦикла;
```
---
На самом деле у вас каждая строка из ТаблицаТовары заполняется не последней строкой ВыборкиДетальныеЗаписи, а всеми. Каждый раз перезаписывается одна и таже строка.

Как правильно сделать - это зависит от структуры таблиц и от вашей задачи. Если стоит задача просто заполнить таблицуТовары, то имеет смысл ее перед циклом очистить и заполнить данными выборки. Например так:

```1c
    ТаблицаТовары.Очистить()
    Для Каждого Элемент Из ВыборкаДетальныеЗаписи Цикл

    Строка = ТаблицаТовары.Добавить();
    ЗаполнитьЗначенияСвойств(Строка, Элемент);

    КонецЦикла;
```

Если очищать нельзя, то нужно в выборке иметь какой-либо уникальный идентификатор строки из ТаблицаТовары, по которому можно однозначно найти нужную строку. Например, это может быть номер строки.

Тогда код будет такой:

```1c
    Для Каждого Элемент Из ВыборкаДетальныеЗаписи Цикл

    Строка = ТаблицаТовары[Элемент.НомерСтроки-1];
    ЗаполнитьЗначенияСвойств(Строка, Элемент);

    КонецЦикла;
```
---
вы хотите заполнить ТаблицаТовары из ВыборкаДетальныеЗаписи ?

Тогда
```1c
    ТаблицаТовары = ВыборкаДетальныеЗаписи.выгрузить()
```

или
```1c
    ТаблицаТовары = ВыборкаДетальныеЗаписи.Скопировать()
```

А с помощью цикла

```1c
    Для Каждого Элемент Из ВыборкаДетальныеЗаписи Цикл

    НовСтр = ТаблицаТовары.Добавить();
    ЗаполнитьЗначенияСвойств(НовСтр, Элемент);

    КонецЦикла;

    КонецЦикла;
```
---
Перетирается все данные которые до этого хранила ТЗ "ТаблицаТовары"
---
У меня есть ТЗ "ТаблицаТовары", где не хватает нужных колонок, я их добавляю:
ТаблицаТовары.Колонки.Добавить(...)
...
Теперь в эти колонки надо записать данными из запроса, они в ТЗ "ВыборкаДетальныеЗаписи". Количество строк в ТЗ "ТаблицаТовары" как и в ТЗ "ВыборкаДетальныеЗаписи" может быть от одной до "бесконечности". Связать их можно только ссылке Номенклатура
---
```1c
    Для Каждого Элемент Из ВыборкаДетальныеЗаписи Цикл
    нСтрока = ТаблицаТовары.Найти(Элемент.Номенклатура, "Номенклатура");
    Если нСтрока = Неопределено Тогда
    нСтрока = ТаблицаТовары.Добавить()
    КонецЕсли;
    ЗаполнитьЗначенияСвойств(нСтрока, Элемент)
    КонецЦикла;
```
---
Для Каждого Элемент Из ВыборкаДетальныеЗаписи Цикл
    нСтрока = ТаблицаТовары.Найти(Элемент.Номенклатура, "Номенклатура");
    Если нСтрока = Неопределено Тогда
        нСтрока = ТаблицаТовары.Добавить()
    КонецЕсли;
    ЗаполнитьЗначенияСвойств(нСтрока, Элемент)
КонецЦикла;

Спасибо!!!!!!
---
Учиться, учиться и учиться. С самых азов.
ясно что не так

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

и не так

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

А как?
---
СтруктураКатегорийПайщиков = Новый Структура;
Сч = 1;
Для каждого Категория Из ТЗКатегорийПайщиков Цикл
   Ключ = "Строка" + Строка(Сч);
   СтруктураКатегорийПайщиков.Вставить(Ключ , Категория.ИмяКатегории);
   Сч = Сч + 1;
КонецЦикла;

А чем не устраивает это вариант?
---
В первом варианте каждый раз создается новая структура.
Не понятно что такое категория. Справочник?

```1c
    СтруктураКатегорийПайщиков = Новый Структура;
    Для каждого Категория Из ТЗКатегорийПайщиков Цикл
    СтруктураКатегорийПайщиков.Вставить(Категория.ИмяКатегории.Наименование, Категория.ИмяКатегории.);
    КонецЦикла;
```

Структура имеет ключ (первый параметр метода вставить). Ключ должен быть уникальным.Какова цель сего действия?
---
в текущем контексте Категория это просто элемент коллекции - строка таблицы значений
---
приведите описание вашей структуры из каких элементов она должна в итоге состоять? (т.к. в тексте вопроса вообще ерунда написана)
---
Задача такая. Есть таблица значений из одного столбца - надо заполнить её значениями структуру.
Пока пишу сам начинаю понимать, что проблема не в том, как заполнить в цикле структуру, а в том что так делать не надо
---
как вариант ключ структуры можно формировать

```1c
    "Строка"+Строка(НомерСтроки)
```
---
В том что бы заполнять структуру в цикле ничего такого нет, как посоветовали в (7) это хороший пример этому. Другой вопрос для чего эта структура нужна в таком виде? Если просто задача, так сделать, то она выполнена.
---
СтруктураКатегорийПайщиков = Новый Структура;
Сч = 1;
Для каждого Категория Из ТЗКатегорийПайщиков Цикл
   Ключ = "Строка" + Строка(Сч);
   СтруктураКатегорийПайщиков.Вставить(Ключ , Категория.ИмяКатегории);
   Сч = Сч + 1;
КонецЦикла;

А чем не устраивает это вариант?
---
```1c
    СтруктураКатегорийПайщиков = Новый Структура;
    Для К = 0 По ТЗКатегорийПайщиков.Количество() - 1 Цикл
    СтруктураКатегорийПайщиков .Вставить("СтруктураКатегорийПайщиков" + К, Новый Структура(ТЗКатегорийПайщиков[К].Имя, Категория));
    КонецЦикла;
```

честно, ответил, как понял вопрос.
---
Какое-то костыльное решение.
Для таких случаев используется массив.
Например, массив структур, что очень хорошо ложится на всякие обмены с помощью JSON.

```1c
    МассивКатегорий = Новый Массив;

    Для каждого Категория Из ТЗКатегорийПайщиков Цикл

    СтруктураКатегорийПайщиков = Новый Структура;

    СтруктураКатегорийПайщиков.Вставить("ИмяКатегории", Категория.ИмяКатегории);

    МассивКатегорий.Добавить(СтруктураКатегорийПайщиков );

    КонецЦикла;
```
---
Плюсанул. Кстати, в БСП вроде есть готовые методы для конвертации ТЗ в массив структур.