arefaste/1C_Forums huggingface dataset:
Здравствуйте. Имеется таблица данных, которая генерируется каждый раз динамически. В ней меняется количество и наименование столбцов. Каким образом ее отобразить на форме проще всего?
База 1С 8.2.УТ 11.1
---
Читайте в интернете про управляемые формы. Примеров - масса.
Например: https://infostart.ru/public/203445/
Вот, кратко и решает Вашу проблему
---
программно и нужно на форме создавать столбцы.

А что за таблица данных ? Это отчет, или таблица значений, в которую пользователь что-то вводить еще должен ?
---
Каким способом? У меня есть реквизит Формы - СводнаяТаблицаАренды, я не нашел там метода которым можно это сделать.
---
реквизит Формы - СводнаяТаблицаАренды
тип-то какой ?
---
ТаблицаЗначений
---
ТаблицаЗначений
тебе надо сначала в таблице значений на форме добавить нужные реквизиты таблицы значений.
потом на самой форме, создать элементы формы, и связать с созданными реквизитами
//пример создания колонок

```1c
    ТаблицаПараметры = РеквизитФормыВЗначение("ПараметрыСвязи");

    МассивРеквизитов = Новый Массив;

    Если ТаблицаПараметры.Колонки.Найти(ИмяКолонки) = Неопределено Тогда

    ТаблицаПараметры.Колонки.Добавить(ИмяКолонки, Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки()));
    МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяКолонки, Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки()), "ПараметрыСвязи", ИмяКолонки));
    КонецЕсли;
    ИзменитьРеквизиты(МассивРеквизитов);
```

элементы создаются примерно так

```1c
    ИмяТаблицы = "ПараметрыСвязи"+ИмяКолонки;
    Если Элементы.Найти(ИмяТаблицы) = Неопределено тогда
    Если ИмяГруппы<>неопределено тогда
    // Передали имя группы, то пендюрим в нее
    ИмяГруппировки = "ПараметрыСвязи"+ИмяГруппы;
    Если Элементы.Найти(ИмяГруппировки) = неопределено тогда
    НовыйЭлементГруппа = Элементы.Добавить(ИмяГруппировки, Тип("ГруппаФормы"), Элементы.ПараметрыСвязи);
    НовыйЭлементГруппа = ВидГруппыФормы.ГруппаКолонок;
    КонецЕсли;
    НовыйЭлемент = Элементы.Добавить(ИмяТаблицы, Тип("ПолеФормы"), Элементы[ИмяГруппировки]);//Элементы.ПараметрыСвязи);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
    НовыйЭлемент.ПутьКДанным = "ПараметрыСвязи." + ИмяКолонки;
    Иначе
    НовыйЭлемент = Элементы.Добавить(ИмяТаблицы, Тип("ПолеФормы"), Элементы.ПараметрыСвязи);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
    НовыйЭлемент.ПутьКДанным = "ПараметрыСвязи." + ИмяКолонки;
    КонецЕсли;

    КонецЕсли;
```
---
Взять любую консоль запросов и подсмотреть идею.
---
Какое отношение консоль имеет к моей задаче? Во всех консолях, что у меня есть столбцы уже сгенерированны при открытии, они статичные. Результат запроса - табличный документ, а у меня данные не в результате запроса собираются.
---
Во всех консолях, что у меня есть столбцы уже сгенерированны при открытии, они статичные.Это в какой же консоли они статичные? Для произвольного запроса? Точно-точно?
---
Выше уже написал, что сам результат запроса выводится через тип - табличный документ. У меня тип данных совсем другой.
---
Читайте в интернете про управляемые формы. Примеров - масса.
Например: https://infostart.ru/public/203445/
Вот, кратко и решает Вашу проблему
Здравствуйте!
Есть обработка, в которой через почтовый клиент формируются и отправляются эл.письма. Требуется факт отправки письма фиксировать в журнале регистрации. Пишу:
ЗаписьЖурналаРегистрации(
    "Отправка по эл. почте",
    УровеньЖурналаРегистрации.Предупреждение,
    ,
    ,
    "Счет успешно отправлен по адресу: "+Кому,
    );
Результат: письмо отправлено, отладчик через ЗаписьЖурналаРегистрации прошел, в журнале запись:
Статус Транзакции - Нет транзакции
Комментарий - "Для состава плана обмена Полный не указана регистрация объекта РегистрСведений.ПрисоединенныеФайлы"
Присоединяю ли я файл или нет - все одно и то же. Помогите пожалуйста разобраться
---
попробуй в дереве конфигурации в плане обмена полный в свойство состав добавить регистр сведений присоединенные файлы
---
попробуй в дереве конфигурации в плане обмена полный в свойство состав добавить регистр сведений присоединенные файлы
---
Да, это помогло, спасибо. Но вылезла новая ошибка:
"{ОбщийМодуль._ОбщегоНазначенияКлиент.Модуль(7,17)}: Тип не определен (Запрос)"
И по-прежнему - Нет транзакции
При этом письмо отправлено. Как это может быть?
---
Извиняюсь, теперь никаких ошибок. Просто отсутствие записи в журнале - при наличии отправленных писем.
---
Ой, я все поняла! В конфигураторе в настройках журнала регистрации стояло "Регистрировать только ошибки". Переставила на регистрацию всего, теперь работает
Здравствуйте.
Хочу кое-что поменять на форме, при этом плодить в конфигураторе новую форму не хочу.
Хотел в подписке получить управляемую форму и программно ее поднастроить

Но не работает - на сервере форма не открывается

Вопрос: что делать?
Можно как-то без создания в конфигураторе "руками" и без ковыряния модуля формы добиться нужного результата через подписку?
---
В ПриСозданииНаСервере наверняка есть какая-то процедура по типу ПодключаемыеКоманды, откуда можно вызвать нужный вам общий модуль, и там уже поиздеваться над формой
---
Откройте для себя Расширения конфигурации. Они как раз для этого очень хорошо подходят.
---
нельзя((
---
Откройте для себя Расширения конфигурации. Они как раз для этого очень хорошо подходят.
---
, (3), (4) Ясно. Спасибо.
---
В ПриСозданииНаСервере наверняка есть какая-то процедура по типу ПодключаемыеКоманды, откуда можно вызвать нужный вам общий модуль, и там уже поиздеваться над формой
---
Хотелось бы именно так.
Конфа на БСП. Есть общий модуль Подключаемые команды.
Не подскажете, как это внедрить, или покопаться в яндексе?
---
да хоть в конце той процедуры вызываете свой модуль, в котором проверяете имя формы и динамически создаете элементы

```1c
    Если Форма.ИмяФормы = "Документ.ВашДок.Форма.ФормаЭлемента" Тогда
    //какие-то действия , напр. добавим надпись
    НовыйЭлемент = Форма.Элементы.Добавить("ИнфоНадпись", Тип("ПолеФормы"), ГруппаКакаяТо);
    Элемент.ПутьКДанным = "ИнфоНадпись";
    Элемент.Вид = ВидПоляФормы.ПолеНадписи;
```
---
Вы имеете в виду в модуле документа? Пока так и сделал.
Просто надо подцепить эту процедуру к нескольким документом.
Удобнее бы было 1 раз подцепиться.

Хотелось бы через ПодключаемыеКоманды.
Попробую поковыряться в модуле ПодключаемыеКомандыПереопределяемый

Есть готовое решение?
---
ПодключаемыеКоманды внутри ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); в конце процедуры добавляете вызов своего модуля и в него передаете форму и там уже то, что я написал выше

```1c
    Процедура ПриСозданииНаСервере(Форма, ПараметрыРазмещения = Неопределено) Экспорт
    ...
    //тут типовой код
    Команды = КэшФормы.Команды.Скопировать();
    ВывестиКоманды(Форма, Команды, ПараметрыРазмещения);

    //тут ваш вызов
    МойОбщийМодуль.ПроцедураПриСоздании(Форма);
    КонецПроцедуры
```
---
Ясно, спасибо, но он не вызывается, точка останова в нем не срабатывает.
Нашел модули (не из БСП), к-е всегда работают.
А этот не работает, а м.б. надо где-то указать, чтобы начал работать (в каком-нибуль переоперделяемом модуле)
---
Не подключена отладка на сервере ? В ПриСозданииНаСервере внутри документа тоже не останавливается ? А если останавливается то пошагово проходя (F10) то просто пропускает его ?
---
нельзя((
---
В некоторых типовых разработчиками предусмотрено вмешательство в форму: есть модули "СобытияФорм" и "МодификацияКОнфигурации", в которые передается форма в момент создания на сервере, там ее и можно модифицировать.

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

выб=Запрос.Выполнить().Выбрать();
если выб.следующий() тогда
    сообщить(выб.Ответственный);
конецесли;
---
Не смотря на то, что в конфигурации нет ссылки на данные этого реквизита, ответственное лицо подставляется из РС "Ответственные лица организации". Просто в пользовательском режиме заполните это поле через кнопку "История"... При изменении ответственного лица добавляете следующего с даты назначения...
---
Сделал так! Не отработало ((((

```1c
    Запрос = Новый Запрос;

    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтветственныеЛицаСрезПоследних.ФизическоеЛицо.Наименование КАК Ответственный
    |ИЗ
    | Документ.ЗаказПокупателя КАК ЗаказПокупателя
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтветственныеЛица.СрезПоследних(&ДатаСреза, СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК ОтветственныеЛицаСрезПоследних
    | ПО ЗаказПокупателя.СкладГруппа = ОтветственныеЛицаСрезПоследних.СтруктурнаяЕдиница
    |ГДЕ
    | ЗаказПокупателя.Ссылка = &ТекущийДокумент";
    Запрос.УстановитьПараметр("ДатаСреза", Документ.Дата);
    Запрос.УстановитьПараметр("СтруктурнаяЕдиница", Документ.СкладГруппа);
    Запрос.УстановитьПараметр("ТекущийДокумент", Документ);
    Шапка = Запрос.Выполнить().Выбрать();

    Если ТипЗнч(Документ) = Тип("ДокументСсылка.ЗаказПокупателя")Тогда
    Секция = мМакет.ПолучитьОбласть("ЗаказПринял");
    Секция.Параметры.ОтветственноеЛицо = Шапка.Ответственный;

    мТабДок.Вывести(Секция);
    КонецЕсли;
```
---
после выбрать() нужно еще следующий() чтобы встать на первую запись в выборке

выб=Запрос.Выполнить().Выбрать();
если выб.следующий() тогда
    сообщить(выб.Ответственный);
конецесли;
---
Что то пошло не так! :-)

{Обработка.ПечатьРаскладкиНоменклатурыПоМестамХранения.МодульОбъекта(877)}: Значение не является значением объектного типа (Ответственный)
  Секция.Параметры.ОтветственноеЛицо = Шапка.Ответственный;
---
Но в сообщении выдало ФИО ответственного
---
Я заменил твою "шапка" на общераспространенное "выб" (выборка).
Секция.Параметры.ОтветственноеЛицо = выб.Ответственный;
---
Теперь работает :-)
---
Спасибо Михаил!
---
Вообще "ответственное лицо" по складу заполнить. Берется из регистра сведений. Заполняется по кнопке "История". И пойдет само
---
Запросом отобрать данные из регистра и заполнить параметры из печатной формы
Как программно установить отбор по владельцу двух справочников (Спецификация номенклатуры & Номенклатура) Таким образом что бы при выборе "номенклатуры" в реквизите "спецификация" отображалась лишь только та спецификация, которая относиться к выбранной номенклатуре.
А у меня получается что Я выбрал номенклатуру, а при выборе спецификации отображается вся спецификация 790 шт. См. рис.
---
Разобрался :-) Сделал так!

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

    Если Не Номенклатура.Пустая() Тогда
    Спецификация = Номенклатура.ОсновнаяСпецификацияНоменклатуры;
    КонецЕсли;

    КонецПроцедуры
```
---
пробовал сделать так! См. рис. - бред получается...((((
---
У справочника "Спецификации" есть владелец?
---
Да. Номенклатура.
---
Должно работать, если форма выбора стандартная. См. поле "форма выбора".
---
Разобрался :-) Сделал так!

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

    Если Не Номенклатура.Пустая() Тогда
    Спецификация = Номенклатура.ОсновнаяСпецификацияНоменклатуры;
    КонецЕсли;

    КонецПроцедуры
```
Есть таблица с колонками Аналитика1, Аналитика2, Аналитика3, СуммаПлан. Данные в ней сгруппированы по всем аналитикам. В запросе делаю полное соединение с таблицей Аналитика1, Аналитика2, Аналитика3, Документ, СуммаФакт. Итоговую таблицу подаю на вход СКД и хочу получить отчет с тремя уровнями группировок Аналитика1, Аналитика2, Аналитика3 без детальных записей, но имея возможность расшифровать СуммаФакт по документам. Как нужно объявить в ресурсах СуммаПлан, чтобы она выводилась корректно, т.е. не увеличивалась от каждого соединения несколькими строками таблицы факта, но при этом суммировалась в группировках по аналитикам?
---
```1c
    Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаПлан)", "Аналитика1, Аналитика2, Аналитика3"))
```

Но гораздо проще и вернее будет ОБЪЕДИНИТЬ таблицы плана и факта, вместо соединения. Тогда не понадобится таких извратов.
---
можно сделать расчет ресурса по нужным строкам, но тогда Итоги тоже надо будет проверить или вынести в Пользовательские поля.
* трудновато без картинки/таблицы понять что вы хотите увидеть =)
---
```1c
    Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаПлан)", "Аналитика1, Аналитика2, Аналитика3"))
```

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

- заполнять реквизиты допформы в процедуре при создании на сервере
---
у меня так и есть. Во второй форме такой код:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере()
    Если Параметры.Свойство("Результат") Тогда
    Поле1 = Параметры.Результат;
    КонецЕсли;
    КонецПроцедуры
```
---
"старые" данные могут попасть в форму как?

1. Если новые не установлены в ПриСозданииНаСервере(),
    например, условия там не всегда работают;
2. Как автосохраненные;
3. Прописаны вручную после создания формы.

еще варианты или над предложенными подумать?
---
не старые попадают, а новые не попадают. Т.е. я вижу это так. Программно открыли вторую форму, передали через параметр текст, текст отобразился на форме. Все формы открыты. Потом из первой формы опять открываем вторую форму и что то через параметр передаем, но т.к. форма уже открыта, то отображается старый текст. Понятно или подробнее написать?
---
ПриПовторномОткрытии()

и

ОбновитьОтображениеДанных()

в СП прочесть
---
ПриПовторномОткрытии
Это нужно во второй форме? У меня так не работает. Сначала срабатывает присоздании на сервере, а потом уже ПриПовторномОткрытии() и все равно старый текст.
Коллеги, помогите пожалуйста в следующем (заранее огромное спасибо всем участвующим)
Имеется 1с77 самописная (корни из ТиС растут). Некоторое время назад начала проявляться такая проблема - элементы в списке справочника отображаются не сразу (как буд-то их попросту нет). начинаешь щелкать мышкой или прокручивать, то они сразу появляются.
Последняя ВК (возможно после нее) была "Приоритет"(я ее убрал до обнаружения данной проблемы)

Смотрите gif-видео по самой проблеме
http://i.imgur.com/5gBTn35.gif
http://i.imgur.com/UbCboYj.gif

Очень прошу помощи!

Установлено:
1с 7.70.027
Windows server 2008 R2
MS SQL 2008
---
Я вижу раскрашенные строки.
У меня такое было при раскрашивании с помощью ВК FormEx.dll
---
Игорь, огромное спасибо!
Почти 100% попадание.
Сравнил версии FormEx старой базы и новой.
в старой 2.0.5.101
в новой 2.0.5.108

Закинул старую версию в рабочую базу, и о счастье, все работает!
Получается такой глюк на 108 версии.
---
Я вижу раскрашенные строки.
У меня такое было при раскрашивании с помощью ВК FormEx.dll
---
Игорь, огромное спасибо!
Почти 100% попадание.
Сравнил версии FormEx старой базы и новой.
в старой 2.0.5.101
в новой 2.0.5.108

Закинул старую версию в рабочую базу, и о счастье, все работает!
Получается такой глюк на 108 версии.
---
воткнуть куда-нибудь (например при открытии формы) вызов метода обновить форму, или что-то подобное для ВК FormEx
---
Спасибо откликнувшимся!
Самое интересное, что есть база (ей год), которая была скопирована и обрезана по документам и эта самая база текущая (в которой данный глюк)
Т.е. есть старая данная база и новая, в новой есть проблема, в старой нет.
Раскрашивание в обоих есть(не менялось)
При выполнении запроса выдается ошибка:
Error converting data type varchar to numeric.

Запрос:

```1c
    a_id_1c = "2";
    a_id_enum = "2 387";
    ТекстЗапроса = "INS ERT IN TO "+ТаблицаSQL_Link+"(f_1c, f_enum) VALUES(cast('"+a_id_1c+"' as numeric(18,0)), cast('"+a_id_enum+"' as numeric(18,0)))";
```

Подскажите, пожалуйста, в чем проблема?
---
"2 387" это должно быть так "2387"
---
Без кавычек попробуй

a_id_1c = 2;
a_id_enum = 2387;
---
"2 387" это должно быть так "2387"
---
Убрал пробел.

Ошибка:
Ошибка при получении значения атрибута контекста (BOF): Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.
Собственно сам вопрос: Как программно определить 86 или x64?
---
Во, нашел прошлую ветку.
---
Предлагаю попробовать через: Система = Новый СистемнаяИнформация. Ну и далее, Система.ВерсияОС. Думаю там должна быть указана разрядность, В синтаксис помощнике указан синтаксис и методы.
---
Платформа или система?
---
Платформа
---
Во, нашел прошлую ветку.
---
Мне надо получить разрядность клиента 1С. Хочу попытаться менять настройки выполнения запросов к другим базам, что бы быстрее работало.
---
Спасибо нашел про СистемнаяИнформация.ТипПлатформы
Почему реквизиты в дереве конфигурации отличаются от реквизитов в запросе? Где прописываются эти параметры?
---
Выбранный реквизит "Значение" является составным. Нужно посмотреть на "Тип" его свойствах.
---
Выбранный реквизит "Значение" является составным. Нужно посмотреть на "Тип" его свойствах.
Или, понадеешься, думаешь будет лучше, а выходит как обычно)
---
Если релиз конфы не требует обновления платформы, то лучше пока повременить с обновлением платформы. По своему опыту - обновляю платформу спустя 1,5-2 месяца, обычно за это время разработчики платформы выпускают 1-2 релиза.
---
Ну, IMHO, всё, что в 1С 8.3.11 есть нового, всё равно - не для нас. Там всё красиво и вкусно, но требует полностью переписать конфигурацию. Я, скорее всего, буду ждать 1С:ERP 3 и соответствующих УТ и КА. Пока же - золотое правило админа: работает - не трожь!
---
зависит от конфигурации счс последние обновления требуют обновление и платформы
если таких требований нет и все работает и не требует дальнейшей разработки то лучше пусть так и работает
т.к. в каждом обновлении платформы скрываются нет нет баги
---
Если релиз конфы не требует обновления платформы, то лучше пока повременить с обновлением платформы. По своему опыту - обновляю платформу спустя 1,5-2 месяца, обычно за это время разработчики платформы выпускают 1-2 релиза.
---
Я обычно смотрю, что нового прикрутили в платформе. Если интересно это пощупать, то качаю. Например в 8.3.11 доработали механизм расширений. Но это я. Если вам не интересно смотреть новые фишки от 1с и если у вас все работает и нет никаких сбоев, то не вижу смысла.
---
Общее мнение понятно)) я и сама так думаю: пока работает, лучше не трогать😂😂
Здравствуйте.
Данные строки таблицы Начисления в форме добавляются командой в цикле.
ЗаполнитьЗначенияСвойств(Начисления.Добавить(), ВыборкаДетальныеЗаписи);

После добавления записи в цикле сразу надо изменить значение Поля1. Как сделать?
---
```1c
    ЗаполнитьЗначенияСвойств(Начисления.Добавить(), ВыборкаДетальныеЗаписи);
```
 заменить на:

```1c
    НоваяСтрока = Начисления.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
    НоваяСтрока.Поле1 = ВашеЗначение
```
---
```1c
    ЗаполнитьЗначенияСвойств(Начисления.Добавить(), ВыборкаДетальныеЗаписи);
```
 заменить на:

```1c
    НоваяСтрока = Начисления.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
    НоваяСтрока.Поле1 = ВашеЗначение
```
---
А Начисления.ТекущаяСтрока.Поле1 = ВашеЗначение не подойдет?
---
Поле объекта не обнаружено (ТекущаяСтрока)
---
(4 Все правильно, потому что её там и не существует.