arefaste/1C_Forums huggingface dataset:
Здравствуйте.
Подскажите пожалуйста. Условно в документе реализация есть поле ВидПродажи: услуга, материал, продукция. Как сделать запрос чтобы получить количество каждой реализации в промежутках времени по 15 минут?
---
хотелось бы вот так

ВЫБОР
 КОГДА МИНУТА(Чеки.Дата) >= 0
   И МИНУТА(Чеки.Дата) < 15
  ТОГДА ЧАС(Чеки.Дата) и ":15"
 КОГДА МИНУТА(Чеки.Дата) >= 15
   И МИНУТА(Чеки.Дата) < 30
  ТОГДА ":30"
 КОГДА МИНУТА(Чеки.Дата) >= 30
   И МИНУТА(Чеки.Дата) < 45
  ТОГДА ":45"
 КОГДА МИНУТА(Чеки.Дата) >= 45
   И МИНУТА(Чеки.Дата) < 60
  ТОГДА ":60"
КОНЕЦ
Но, нельзя "ЧАС(Чеки.Дата) и"
---
Навскидку, берем дату документа, получаем число минут, делим его на 15, результат округляем до целого через функцию ВЫРАЗИТЬ, округленный результат умножаем на 15, получаем 0, 15, 30 или 45. Берем начало часа даты документа и прибавляем полученный результат в минутах. По итогу имеем дату документа, огрубленную до 15 минут. Дальше, думаю, понятно.
---
да вычислила я 0,15,30,45
не складывает, мне то надо разбить 9:0, 9:15, 9:30, 9:45

мне надо диаграмму потом построить. сколько документов в таком промежутке или другом
---
я бы динамически сгенерил пакет запросов во временную таблицу

```1c
    ДАТАВРЕМЯ(2018, 10, 30, 8, 15, 0) КАК Период,
    ....
    ....
    Обороты(ДАТАВРЕМЯ(2018, 10, 30, 8, 0, 0), ДАТАВРЕМЯ(2018, 10, 30, 8, 15, 0).... - стартовый подзапрос
    .
    ОБЪЕДИНИТЬ ВСЕ

    ДАТАВРЕМЯ(2018, 10, 30, 8, 30, 0),
    ....
    Обороты(ДАТАВРЕМЯ(2018, 10, 30, 8, 15, 0), ДАТАВРЕМЯ(2018, 10, 30, 8, 30, 0)..... - очередной подзапрос
    ....
    ОБЪЕДИНИТЬ ВСЕ

    ДАТАВРЕМЯ(2018, 10, 30, 19, 00, 0),
    ....
    Обороты(ДАТАВРЕМЯ(2018, 10, 30, 18, 45, 0), ДАТАВРЕМЯ(2018, 10, 30, 19, 0, 0).... - финальный подзапрос
```

и не парил бы мозг с особыми извращениями.
---
не понятно(
---
Вот еще такой вариант.
```1c
    ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), МИНУТА, (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1, 1, 1), МойДокумент.Дата, МИНУТА) / 15 КАК ЧИСЛО(15, 0))) * 15)
```
---
хотелось бы вот так

ВЫБОР
 КОГДА МИНУТА(Чеки.Дата) >= 0
   И МИНУТА(Чеки.Дата) < 15
  ТОГДА ЧАС(Чеки.Дата) и ":15"
 КОГДА МИНУТА(Чеки.Дата) >= 15
   И МИНУТА(Чеки.Дата) < 30
  ТОГДА ":30"
 КОГДА МИНУТА(Чеки.Дата) >= 30
   И МИНУТА(Чеки.Дата) < 45
  ТОГДА ":45"
 КОГДА МИНУТА(Чеки.Дата) >= 45
   И МИНУТА(Чеки.Дата) < 60
  ТОГДА ":60"
КОНЕЦ
Но, нельзя "ЧАС(Чеки.Дата) и"
Собственно вопрос.
Делаю обход выделенных ячеек табличного документа:

```1c
    Для Каждого ОбластьЯчейка Из Элемент.ВыделенныеОбласти Цикл
    ДопСписок.Добавить(ОбластьЯчейка.Расшифровка, ОбластьЯчейка.Текст);
    КонецЦикла;// Цикл по строкам выделенной области
```

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

```1c
    ВыделенныеЯчейки = Новый Соответствие;
    Для Каждого ВыделеннаяОбласть Из ТабДок.ВыделенныеОбласти Цикл
    Для Строка = ВыделеннаяОбласть.Верх По ВыделеннаяОбласть.Низ Цикл
    АдресСтроки = "R" + Формат(Строка, "ЧГ=") + "C";
    Для Столбец = ВыделеннаяОбласть.Лево По ВыделеннаяОбласть.Право Цикл
    АдресЯчейки = АдресСтроки + Формат(Столбец, "ЧГ=");
    ВыделенныеЯчейки.Вставить(АдресЯчейки, ТабДок.Область(АдресЯчейки));
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
```
---
Выделенные области - это просто выделенные прямоугольные области, каждая из которых состоит из множества ячеек.
Коллекцию лучше формировать через Соответствие, где ключ - адрес ячейки, так как прямоугольные области могут пересекаться.

```1c
    ВыделенныеЯчейки = Новый Соответствие;
    Для Каждого ВыделеннаяОбласть Из ТабДок.ВыделенныеОбласти Цикл
    Для Строка = ВыделеннаяОбласть.Верх По ВыделеннаяОбласть.Низ Цикл
    АдресСтроки = "R" + Формат(Строка, "ЧГ=") + "C";
    Для Столбец = ВыделеннаяОбласть.Лево По ВыделеннаяОбласть.Право Цикл
    АдресЯчейки = АдресСтроки + Формат(Столбец, "ЧГ=");
    ВыделенныеЯчейки.Вставить(АдресЯчейки, ТабДок.Область(АдресЯчейки));
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
```
---
Сделал так:

```1c
    ВыделенныеЯчейки = Новый Соответствие;

    Для Каждого Область Из Элемент.ВыделенныеОбласти Цикл
    Для Row = Область.Верх По Область.Низ Цикл
    Для Col = Область.Лево По Область.Право Цикл
    ОбластьЯчейка = Элемент.Область(Row, Col);
    ВыделенныеЯчейки.Вставить(ОбластьЯчейка, Истина);
    КонецЦикла;
    КонецЦикла;// Цикл по строкам выделенной области
    КонецЦикла;

    // Преобразуем соответствие в список значений
    Для Каждого КлючИЗначение Из ВыделенныеЯчейки Цикл
    ДопСписок.Добавить(КлючИЗначение.Ключ.Расшифровка, КлючИЗначение.Ключ.Текст);
    КонецЦикла;
```

Нет смысла формировать строковый адрес ячейки, так проще ТабличныйДокумент.Область(Row, Col)
Конфа Альфа-авто. Необходимо ограничить доступ к справочнику Сотрудники по подразделению. Сделала шаблон:
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица

ГДЕ ТекущаяТаблица.Подразделение В (ВЫБРАТЬ
 ПользователиДоступныеПодразделения.Подразделение
ИЗ
 Справочник.Пользователи.ДоступныеПодразделения КАК ПользователиДоступныеПодразделения
ГДЕ
 ПользователиДоступныеПодразделения.Ссылка В
   (ВЫБРАТЬ
    ВЫБОР
     КОГДА Пользователи.ШаблонПрав <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
       И Пользователи.ШаблонПрав.ЯвляетсяШаблоном
      ТОГДА Пользователи.ШаблонПрав
     ИНАЧЕ Пользователи.Ссылка
    КОНЕЦ КАК ТекущийПользователь
   ИЗ
    Справочник.Пользователи КАК Пользователи
   ГДЕ
    Пользователи.Ссылка = &Пользователь)) Но при этом пользователь не видит группу, в которой находится сотрудник. Можно ли настроить так, чтоб иерархия была доступна? Пробовала назначать шаблон для полей - не сработал.
---
ГДЕ ТекущаяТаблица.Подразделение В (ВЫБРАТЬ ................. )ИЛИ ТекущаяТаблица.ЭтоГруппа

Видимо так
---
ИЛИ ТекущаяТаблица.ЭтоГруппа Так надо попробовать. Напишу, как проверю.
---
ГДЕ ТекущаяТаблица.Подразделение В (ВЫБРАТЬ ................. )ИЛИ ТекущаяТаблица.ЭтоГруппа

Видимо так
---
ИЛИ ТекущаяТаблица.ЭтоГруппа Так надо попробовать. Напишу, как проверю.
---
Я в модуле сеанса формировал параметр сеанса типа "фиксированный массив" который заполнял нужными мне группами, и передавал его в запрос RLS
---
Самый эффективный способ. Но нужно учесть, что после изменения списка в базе данных пользователю необходимо перезапустить базу.
Однако RLS-запросы значительно упрощаются.
---
Спасибо всем, решение с написанием условия в ограничении ТекущаяТаблица.ЭтоГруппа - сработало :)
Есть таблица значения у неё есть данные, мне необходимо найти данные и удалить из ТЗ всё просто. Но возникает непонятная проблема.
удалял 2мя способами.

1 -й :

СуммаДооценки = 0;
Отбор = Новый Структура;
Отбор.Вставить("ОС", СтрокаТЧ.ОС.НаименованиеПолное);
Строки = мТзДооценка.НайтиСтроки(Отбор);

Для каждого СтрокаДооценки из Строки Цикл

 СуммаДооценки = СуммаДооценки + СтрокаДооценки.СуммаК - СтрокаДооценки.СуммаД;
 мТзДооценка.Удалить(СтрокаДооценки);
КонецЦикла;

В итоге, у меня выходит + 20 грн.

2 - й способ

Сч = 0;
  Пока Сч <= мТзДооценка.Количество() Цикл
   СтрокаТЗ = мТзДооценка.Получить(Сч);
   Если СтрокаТЧ.ОС.НаименованиеПолное = СтрокаТЗ.ОС Тогда
    Индекс = мТзДооценка.Индекс(СтрокаТЗ);
    мТзДооценка.Удалить(Индекс);
   КонецЕсли;
   Сч = Сч + 1;
  КонецЦикла;

Выходит -100грн.

Когда перебираю всю ТЗ без удаления, всё суммы совпадают
---
пример по второму способу

```1c
    Счетчик = 0;
    Пока Счетчик < ТаблицаУвеличениеДолга.Количество() Цикл

    СтрокаТаблицы = ТаблицаУвеличениеДолга.Получить(Счетчик);
    Если не СтрокаТаблицы.ВидЗадолженности = ВидЗадолженностиДляОтбораВТаблицуУвеличенияДолга
    ИЛИ СтрокаТаблицы.ВзаиморасчетыЗакрыты Тогда
    ТаблицаУвеличениеДолга.Удалить(СтрокаТаблицы);
    Иначе
    Счетчик = Счетчик + 1;
    КонецЕсли;

    КонецЦикла;
```
---
пример по второму способу

```1c
    Счетчик = 0;
    Пока Счетчик < ТаблицаУвеличениеДолга.Количество() Цикл

    СтрокаТаблицы = ТаблицаУвеличениеДолга.Получить(Счетчик);
    Если не СтрокаТаблицы.ВидЗадолженности = ВидЗадолженностиДляОтбораВТаблицуУвеличенияДолга
    ИЛИ СтрокаТаблицы.ВзаиморасчетыЗакрыты Тогда
    ТаблицаУвеличениеДолга.Удалить(СтрокаТаблицы);
    Иначе
    Счетчик = Счетчик + 1;
    КонецЕсли;

    КонецЦикла;
```
---
а во втором способе я не вижу расчета сумм ? Откуда -100.
Да и вообще, оно точно работает у вас ?
мне кажется там не совсем корректно по алгоритму.
Вот дошло оно до 6той строки, условие совпало, удалило ее.
Далее счетчик встал на номер 7, а с учетом смещения удаленной - следующая строка должна быть тоже 6. Значит строчка у вас оказывается пропущенной.
---
Вы правы, проблема оказалось совершенно в другом.

Переносил до оценку, и была позиция где дебит был больше кредита, и при вводе документа ОС оно минусовое значение фигачило в +, вот и была неточность, а я думал ошибка в переборе ТЗ
---
счетчик строк надо увеличивать только когда НЕ удаляете строку
---
Спасибо, затупил. Я так и хотел)
---
Самый лаконичный вариант обхода и удаления строк в ТЗ такой (на примере):

```1c
    Для Индекс = -Объект.Товары.Количество() + 1 По 0 Цикл
    Если Объект.Товары[-Индекс].Количество = 0 Тогда
    Объект.Товары.Удалить(-Индекс);
    КонецЕсли;
    КонецЦикла;
```
Привет Ребята! Помогите пожалуйста
Бух 8.3
Как из обработки из тч вернуть реквизит счет (тип строка) в форму владельца в тч в реквизит счет (тип ПланСчетовСсылка.Хозрасчетный)

```1c
    &НаКлиенте
    Процедура НоменклатураДляПодбораВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтруктураВозврата = Новый Структура("Номенклатура,ДокументОприходования, Счет");

    СтруктураВозврата.Номенклатура = Элементы.НоменклатураДляПодбора.ТекущиеДанные.Номенклатура;
    СтруктураВозврата.ДокументОприходования = Элементы.НоменклатураДляПодбора.ТекущиеДанные.ДокументОприходования;
    СтруктураВозврата.Счет = Элементы.НоменклатураДляПодбора.ТекущиеДанные.Счет;

    НоваяСтрока = ЭтаФорма.ВладелецФормы.объект.материалы.добавить();
    НоваяСтрока.ДокументОприходования = Элементы.НоменклатураДляПодбора.ТекущиеДанные.ДокументОприходования ;
    НоваяСтрока.Номенклатура = Элементы.НоменклатураДляПодбора.ТекущиеДанные.Номенклатура;
    НоваяСтрока.Счет = Элементы.НоменклатураДляПодбора.ТекущиеДанные.Счет;
    КонецПроцедуры
```

Вот надо как то вот так прописать, но не пойму как на клиенте обратиться

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

На форме владельца Событие формы оповещение выбора
Есть обработка для ЗУП и она работала во всех релизахЗУП 3.1 включая 3.1.7,

а вот в релизе 3.1.8 при закрытии стала выдавать ошибку (см вложение)

а если щелкнуть на информации для техподдержку то выходит:

25.10.2018 14:22:35
LC: Критичная: Значение контролируемого свойства РежимСовместимости у объекта не совпадает со значением в расширяемой конфигурации

Не подскажите, как ее победить?
---
обычно такого рода ошибки возникают при открытии одной и той же обработки из меню "Файл" и по команде как добавленную внешнюю

если возникла по другой причине, то универсальный ответ:
1. почистить кеши,
2. открыть приложение
3. установить стандартные настройки формы,
4. закрыть приложение,
5. открыть приложение
6. убедиться, что все ок.
---
открыть конфигуратор и выполнить (4)
---
обычно такого рода ошибки возникают при открытии одной и той же обработки из меню "Файл" и по команде как добавленную внешнюю

если возникла по другой причине, то универсальный ответ:
1. почистить кеши,
2. открыть приложение
3. установить стандартные настройки формы,
4. закрыть приложение,
5. открыть приложение
6. убедиться, что все ок.
---
обычно такого рода ошибки возникают при открытии одной и той же обработки из меню "Файл" и по команде как добавленную внешнюю

Ну да. Так наверное и было.
---
А лучше пока на 3.1.8 не переходить...
Выждем немного ;-))
---
похоже, что у подключенного расширения нужно отключить режим совместимости.
первая ссылка из поиска.. https://infostart.ru/public/537441/ скорее всего достаточно будет выполнить 1 пункт.
Добрый день. В справочнике номенклатуры в пользовательском режиме можно ввести реквизиты вес и объем. Не могу найти где хранятся эти данные. На форме в конфигураторе этих реквизитов нет, глобальный поиск тоже не помогает.
---
и на форме в конфигураторе они есть
---
как нет, в справочнике же номенклатура, есть реквизиты ОбъемИспользовать, ОбъемЧислитель,ОбъемЗнаменатель,ОбъемЕдиницаИзмерения, ОбъемМожноУказыватьВДокументах. То же самое вес
---
и на форме в конфигураторе они есть
---
Извините вопрос закрыт. Тяжелый рабочий день, открыл конфигуратор бухгалтерии.
Доброе время суток. Имею три ключа лицензий (2 по 50 и 1 на 100). Стоят на разных серверах. Иногда случается так, что на одном из ключей заканчиваются лицензии и ИТшники на местах в nethasp перебивают IP на сервер с другим ключом. На следующий день уже на втором сервере заканчиваются лицензии и ИТшники на местах снова перебивают адрес. Как сделать так, что-бы 1С на рабочем месте искала ключ со свободной лицензией автоматически и не приходилось перебивать вручную? Нужно три IP забить или как?
---
Вот тут: https://infostart.ru/public/808181/ писал про лицензии и там скан прикреплен настройки hasp от Разработчиков 1С, там по-моему можно прописать несколько IP и менеджер сам должен искать.
---
Вот тут: https://infostart.ru/public/808181/ писал про лицензии и там скан прикреплен настройки hasp от Разработчиков 1С, там по-моему можно прописать несколько IP и менеджер сам должен искать.
---
Получается надо на всех трех серверах в файле nhsrv прописать имена, а потом прописать на станциях имена в NH_SERVER_NAME и адреса в NH_SERVER_ADDR? Или достаточно прописать через запятую все три IP?
---
Ну на картинке же видно и все имена и все адреса через запятую.
Но если на серверах не пропишешь ничего - то и получишь ничего...
Добрейшего времени суток!

Как удалить строку, если известен её номер?

```1c
    тДерево = РеквизитФормыВЗначение("Дерево");
    тДерево.Строки.Удалить(Номер);
    ЗначениеВРеквизитФормы(тДерево, "Дерево");
```

Позволяет удалить только родителя. А как удалить потомка?

Принцип отбора примерно такой:

```1c
    Для Каждого тСтр Из Дерево.Строки Цикл

    тДерево = РеквизитФормыВЗначение("Дерево");
    тДерево.Строки.Удалить(Номер);
    ЗначениеВРеквизитФормы(тДерево, "Дерево");

    Если тСтр.Строки.Количество()>0 Тогда
    ОбходДерева(тСтр);
    КонецЕсли;
    КонецЦикла;
```
---
Ответа не дождался, пришлось самому

На клиенте:

```1c
    ИД = Элементы.Дерево.ТекущаяСтрока;
    ТекущаяСтрока = Дерево.НайтиПоИдентификатору(ИД);
    Родитель = ТекущаяСтрока.ПолучитьРодителя();

    Если Родитель = Неопределено Тогда
    Дерево.ПолучитьЭлементы().Удалить(ТекущаяСтрока);
    Иначе
    Родитель.ПолучитьЭлементы().Удалить(ТекущаяСтрока);
    КонецЕсли;
```

Всё оказалось как всегда просто
---
Смотря какой уровень вложенности. Вообще искать лучше по идентификатору
---
Родитель + потомок (больше нет)

А как удалять по идентификатору?
---
Откуда номер строки? как его получили?
---
Заранее на клиенте получаю значение, потом делаю так:

```1c
    Для Каждого тСтр Из Дерево.Строки Цикл

    Если тСтр.НомерСтроки = ПолученноеЗначение Тогда
    тДерево = РеквизитФормыВЗначение("Дерево");
    тДерево.Строки.Удалить(ПолученноеЗначение);
    ЗначениеВРеквизитФормы(тДерево, "Дерево");
    КонецЕсли;

    ....
```
---
Отвлекли немного......

ДанныеФормыКоллекцияЭлементовДерева (FormDataTreeItemCollection)
Удалить (Delete)
Вариант синтаксиса: По индексу

Синтаксис:

Удалить(<Индекс>)
Параметры:

<Индекс> (обязательный)

Тип: Число.
Индекс элемента в коллекции.
Вариант синтаксиса: По элементу

Синтаксис:

Удалить(<Элемент>)
Параметры:

<Элемент> (обязательный)

Тип: ДанныеФормыЭлементДерева.
Удаляемый элемент.
Описание:

Удаляет элемент из коллекции.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).

Да можно:

ИдентификаторСтроки = Элементы.Дерево.ТекущаяСтрока;
ТекущаяСтрока = Дерево.НайтиПоИдентификатору(ИдентификаторСтроки);
СтрокаРодитель = ТекущаяСтрока.ПолучитьРодителя();

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

На клиенте:

```1c
    ИД = Элементы.Дерево.ТекущаяСтрока;
    ТекущаяСтрока = Дерево.НайтиПоИдентификатору(ИД);
    Родитель = ТекущаяСтрока.ПолучитьРодителя();

    Если Родитель = Неопределено Тогда
    Дерево.ПолучитьЭлементы().Удалить(ТекущаяСтрока);
    Иначе
    Родитель.ПолучитьЭлементы().Удалить(ТекущаяСтрока);
    КонецЕсли;
```

Всё оказалось как всегда просто
---
http://qa.erpstat.ru/public/00052.html

Отсюда своровано когда-то

http://qa.erpstat.ru/public/00052.html
---
Да, да. Искал, но раньше ничего. Залез поглубже и вот оно самое. Спасибо все равно
Подскажите пожалуйста, как передать массив с сервера на клиент в управляемых формах. Вроде массив должен передаваться, но выдает ошибку

```1c
    &НаСервере
    Функция НоменклатураПриИзмененииНаСервере(Реквизит)

    Ссылка = Справочники.Спецификация.НайтиПоРеквизиту("Изделие",Реквизит);

    СоставИзделия = Новый Массив;
    // Заполним массив комплектующими
    Для Каждого Стр из Ссылка.Комплектующие Цикл
    СоставИзделия.Добавить(Стр);
    КонецЦикла;

    // Заполним массив операциями
    Для Каждого Стр из Ссылка.Операции Цикл
    СоставИзделия.Добавить(Стр);
    КонецЦикла;

    Возврат СоставИзделия;

    КонецФункции

    &НаКлиенте
    Процедура НоменклатураПриИзменении(Элемент)

    Изделие = Объект.Изделие;

    СоставИзделия = НоменклатураПриИзмененииНаСервере(Изделие);

    Объект.СписокНоменклатуры.Очистить();

    //Запишем комплектующие и операции в тч СписокНоменклатуры для собираемого изделия
    Для Каждого Строка из СоставИзделия Цикл
    Стр = Объект.СписокНоменклатуры.Добавить();
    Стр.Номенклатура = Строка.Номенклатура;
    Стр.Количество = Строка.Количество;
    КонецЦикла;
    КонецЦикла;

    КонецПроцедуры
```
---
Либо сразу на сервере заполнять Объект.СписокНоменклатуры, либо, если есть настоятельная необходимость получать с сервера сложную структуру данных типа таблицы значений - эмулировать ее через вложенные Массив/Структура/Соответствие (в которых будут только примитивные и ссылочные типы данных ну и те, которые гарантированно сериализуемые и немутабельные).
---
Ошибка то какая?
---
Сообщение было скрыто модератором.
---
Вот что пишет:
{Документ.Сборка.Форма.ФормаДокумента.Форма(40)}: Ошибка при вызове метода контекста (НоменклатураПриИзмененииНаСервере)
 СоставИзделия = НоменклатураПриИзмененииНаСервере(Изделие);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
 форма: Элемент
 имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'Value':
 форма: Элемент
 имя: {http://v8.1c.ru/8.1/data/core}Value
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'СправочникТабличнаяЧастьСтрока.Спецификация.Комплектующие'
---
Массив можно. Но содержимое массива тоже должно сериализоваться и не быть мутабельным.
Вы заполняете массив ссылками на строки временного объекта на сервере (который создается при обращении к табличной части через ссылку)
---
И как в этом случае лучше поступить? Действовать через РеквизитФормыВЗначение()?
---
Либо сразу на сервере заполнять Объект.СписокНоменклатуры, либо, если есть настоятельная необходимость получать с сервера сложную структуру данных типа таблицы значений - эмулировать ее через вложенные Массив/Структура/Соответствие (в которых будут только примитивные и ссылочные типы данных ну и те, которые гарантированно сериализуемые и немутабельные).
---
Спасибо, я так и сделал, заполнил ТЧ на сервере и все сработало как нужно.
---
Так на сервере и нужно сделать заполнение ТЧ.
РеквизитФормыВЗначение() вроде бы и не потребуется.
Делая отчет в СКД столкнулся с одной проблемой - не выводятся суммовые ресурсы (например, СуммаОборотДт и СуммаОборотКт) виртуальной таблицы при отборе по субконто, у которых отсутствует суммовой признак учета. Каким образом это можно обойти?
---
Считать пропорционально количеству.
Например, всего по счету 01 у тебя 100.00 руб в суммовом учете и 10 шт. в количественном учете. У тебя есть субконто, где не установлен признак суммового учета. Считаешь сумму на единицу количественного учета (100.000 / 10 = 10.000). А теперь для каждого значения субконто умножаешь количество по этому субконто на сумму на единицу количества.
Через СКД это можно сделать.
---
Считать пропорционально количеству.
Например, всего по счету 01 у тебя 100.00 руб в суммовом учете и 10 шт. в количественном учете. У тебя есть субконто, где не установлен признак суммового учета. Считаешь сумму на единицу количественного учета (100.000 / 10 = 10.000). А теперь для каждого значения субконто умножаешь количество по этому субконто на сумму на единицу количества.
Через СКД это можно сделать.
---
Спасибо за ответ. Можно так сделать, да, в стандартном отчёте в самой конфигурации подобным же способом воспользовались, но не всё так просто, как казалось бы, проще "повесится"))).

Приведу пример:

Есть счёт "материалы" у которого два субконто:
    - номенклатура с суммовым и количественным признаком учёта;
    - центр материальной ответственности с количественным признаком учёта.

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

Хочу добавить его не существующую форму списка, но его нету в в форме реквизитов "Список"

Если создать новую форму списка, то этот реквизит отображается в списке реквиитов и его можна вынести.

Как добавить на старую форму списка?
---
Все разобрался. Стоял отбор в настройке списка в произвольном запросе
---
Все разобрался. Стоял отбор в настройке списка в произвольном запросе