arefaste/1C_Forums huggingface dataset:
Добрый день!

Подскажите пожалуйста способ как можно реализовать следующее:

Необходимо сделать возможность создания нескольких элементов справочника параллельно из одного сеанса. Т.е. что бы при нажатии кнопки создать на форме списка, каждый раз открывалась новая форма элемента справочника (типовым механизмом открывается либо уже открытая, либо новая если нет открытой).

Я знаю что можно в коде можно это легко сделать, при открытии присвоив формам разные уникальные идентификаторы. Но как это можно сделать на уровне платформы? Ведь при нажатии кнопки "Создать" форма уже создается платформой со своим уникальным идентификатором.

Конфигурация: Розница 2.2.13.12

P.S. Пытался при открытии присвоить форме уникальный идентификатор. Но на форме уникальный идентификатор уже доступен только для чтения.
---
в форме списка

```1c
    &НаКлиенте
    Процедура ДинамическийСписок_ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
    Отказ=Истина;
    ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента",Новый Структура("РазрешитьОткрытие", Истина),,Новый УникальныйИдентификатор);
    КонецПроцедуры
```

в форме элемента

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если НЕ Параметры.Свойство("РазрешитьОткрытие") Тогда
    Отказ=Истина; Возврат;
    КонецЕсли;
    КонецПроцедуры
```

p.s. Правда не понимаю кому и зачем это вообще могло понадобиться...
---
в форме списка

```1c
    &НаКлиенте
    Процедура ДинамическийСписок_ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
    Отказ=Истина;
    ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента",Новый Структура("РазрешитьОткрытие", Истина),,Новый УникальныйИдентификатор);
    КонецПроцедуры
```

в форме элемента

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если НЕ Параметры.Свойство("РазрешитьОткрытие") Тогда
    Отказ=Истина; Возврат;
    КонецЕсли;
    КонецПроцедуры
```

p.s. Правда не понимаю кому и зачем это вообще могло понадобиться...
---
Спасибо! Способ помогает.

P.S. Такие есть прихоти у клиента
База 1С + MS SQL

В журнале регистраций 1С включена запись только ошибок (и информативных сообщений о входе там нет)

Можно ли как-то еще посмотреть логи, кто логинился к базе?
Пытался посмотреть средствами MS SQL (Управление->Журналы SQL Server)
но не понимаю можно ли там такое найти, какие фильтры ставить и т.д.
---
Для того, что бы в MS SQL посмотреть кто логинился к базе, нужно в свойствах сервера SQL в вкладке "Безопасность" в разделе "Аудит входа" поставить галочку "Все попытки входа", либо "И неудачные и успешные логины" (зависит от версии SQL сервера).По умолчанию на SQL сервере аудит входа либо отключен, либо отслеживаются только неуспешные попытки входа. Соответственно, при настройках "по умолчанию" предыдущие успешные подключения не отслеживаются.

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

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

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

Метод Очистить() как понимаю очищает только данные, но число строк сохраняет.

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

    //что-то там

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

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

...я уже сегодня говорил, что новолунее прошло и момент для гадания упущен.
мне предложили ждать полнолуния.

давайте ждать.
Добрый день! Есть самописная конфа. При работе в файловом или серверном (postrege) варианте в формах списка поиск/полнотекстовый работает. При работе той же самой базы на MS работает в странном режиме: либо вообще ничего не находит, либо находит часть информации. В чем может быть причина?
---
postrege? это что? имелось ввиду postgreSQL? А что такое MS? Имелось ввиду MS SQL?
Самописная конфа? Насколько самописная? Сами с нуля? Или какая-то типовая снята с поддержки и доработана? Или может на БСП писали? А формы какие управляемые или обычные? Как много вопросов и как мало ответов.
Перестройте индексы, обновите индекс полнотекстового поиска. Если мой программисткий бубен верно вас понял, то вы меняете СУБД, как бы логично, что индексы надо перестраивать.
---
postrege? это что? имелось ввиду postgreSQL? А что такое MS? Имелось ввиду MS SQL?
Самописная конфа? Насколько самописная? Сами с нуля? Или какая-то типовая снята с поддержки и доработана? Или может на БСП писали? А формы какие управляемые или обычные? Как много вопросов и как мало ответов.
Перестройте индексы, обновите индекс полнотекстового поиска. Если мой программисткий бубен верно вас понял, то вы меняете СУБД, как бы логично, что индексы надо перестраивать.
---
имелось ввиду postgreSQL? - да,
Имелось ввиду MS SQL? - Да,
Самописная конфа? Насколько самописная? Сами с нуля? на БСП.
А формы какие управляемые - Да
обновите индекс полнотекстового поиска - Не помогло.
Перестройте индексы можно поподробнее.
---
Подробнее вот здесь: https://its.1c.ru/db/metod8dev#content:5837:hdoc
Добрый день. Комплексная автоматизация, редакция 1.1
Делаю печатную форму, в параметр табличного документа загоняю строку неограниченной длины. В данных есть строка не знаю сколько символов, но много, может тысяч 10. Полностью строку не выводит. В коде в параметр попадает вся строка, а экран выводится только часть. Может есть какие то ограничения на вывод строк в печатных формах или в чем может быть дело?
---
тут речь идет о том что текст находится в одной ячейке и конечно он будет обрезаться, т.к. на две страницы одну ячейку табличного документа не вывести.
а количество доступных символов вывода на странице зависит от размера и типа шрифта ну и параметров страницы
---
ограничения там стандартные как и для таблицы Excel 32767 символов.
Если обрезается меньшее количество, значит это происходит раньше. Смотрите код. Может там по ограничению реквизита режется.
---
тут речь идет о том что текст находится в одной ячейке и конечно он будет обрезаться, т.к. на две страницы одну ячейку табличного документа не вывести.
а количество доступных символов вывода на странице зависит от размера и типа шрифта ну и параметров страницы
---
Напишите ваше сообщение
(6) А, ну вот это скорее всего так и есть, что то не подумал об этом
---
В макете печатной формы параметр Размещение текста стоит в положении "Переносить"? Высота строки этой ячейки стоит в Авто?
---
Да, переносить и высота строки авто
---
Написал тестовую обработочку со строкой неограниченной длины. Знаете, прекрасно выводится и переносится по словам.
У вас там в тексте пробелы есть? Есть что переносить?
---
При выводе на экран, появляется бегунок, строка выводится полностью, если нажать на предварительный просмотр, обрезает. Почему то ставит 1 страницу и обрезает текст. Тестил на вашей обработке.
---
Ну вот смотрите, если предположить, что в одной строке М печатных символов, а строк на печатный лист влезает N штук, то больше, чем M x N символов нам никак не вывести в ячейку, которая должна уместиться на один лист.
Тут надо какие-то ограничения накладывать... При выводе проверить количество выводимых строк, лишнее обрезать и вывести второй порцией на следующем листе.
---
Спасибо всем
Кусок кода

```1c
    &НаСервере
    Процедура ЗагрузитьНаСервере()
    ОбъектЗаполнения = Документы.ПоступлениеТоваров.СоздатьДокумент();
    …….
    ОбъектЗаполнения.Записать(РежимЗаписиДокумента.Проведение);
    Приход = ОбъектЗаполнения.Ссылка;

    ОбъектЦена = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    …….
    ОбъектЦена.Заполнить(Приход);
    Для каждого СтрокаДанных Из Объект.ДанныеЗагрузки Цикл
    ……..
    КонецЦикла;
    ОбъектЦена.Записать(РежимЗаписиДокумента.Запись);

    ОбъектЗаполнения.Записать(РежимЗаписиДокумента.ОтменаПроведения);
```

Ошибка:

 Ошибка при вызове метода контекста (Записать)
 ОбъектЗаполнения.Записать(РежимЗаписиДокумента.ОтменаПроведения);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаУдаленияПроведения'
по причине:
{ОбщийМодуль.ПроведениеСервер.Модуль(172)}: Ошибка при вызове метода контекста (Записать)
 Объект.Движения.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'

Как правильно отменить проведение?
---
Вариант
Очистить все регистры (сведений и накопления) по этому регистратору ОбъектЗаполнения.Ссылка
у документа
ОбъектЗаполнения.Проведен = Ложь;
ОбъектЗаполнения.Записать(РежимЗаписиДокумента.Запись);
---
Это тоже случайность )
---
Вернее так. В обработчике "ПередЗаписью" модуля набора записей одного из регистров происходит отказ и валится строка 172
---
У вас в обработке удаления проведения есть строка Объект.Движения.Записать();?
---
Эмм.. не совсем понял. В этой обработке нет процедуры ОбработкаУдаленияПроведения. В модуле объекта Поступление товаров такой строки нет. Есть только в общем модуле.
---
А если провалится в ОбъектЗаполнения.Записать(РежимЗаписиДокумента.ОтменаПроведения); то в каком месте будет ошибка?
---
Следующее
---
Вариант
Очистить все регистры (сведений и накопления) по этому регистратору ОбъектЗаполнения.Ссылка
у документа
ОбъектЗаполнения.Проведен = Ложь;
ОбъектЗаполнения.Записать(РежимЗаписиДокумента.Запись);
---
Спасибище!!! Так работает.
---
Еще попутно вопрос - на основании поступления док установки цен заполняется, но как рассчитать программно зависимые цены согласно настроенному правилу ценообразования?
---
Увы не знаю.
Разбираем на курсе механизм вывода разных печатных форм из журнала документов.
Там забавно устроено: стоишь на конкретном документе - видишь все его команды печати. Если выбрать несколько строк с разными типами документов, то список доступных команд печати сокращается до тех универсальных команд, которые прописаны во всех выбранных документах (если таких нет, то список превращается в <Нет>).
Отвечает за это дело процедура ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект), которая триггерится по событию ПриАктивизацииСтроки.
Вот только когда выбираешь не 3-5-10 документов в списке, кликая по строкам с нажатым шифтом, а ВСЕ документы нажатием Ctrl+A, это событие не срабатывает, т.к. фактически активной остается текущая строка. Результат - для кучи разнородных документов как бы доступен перечень команд печати, совпадающий с перечнем команд для типа документа в текущей строке.
Вопрос: какое-то событие можно использовать, чтобы поймать мультивыбор через нажатие Ctrl+A?

P.S. Пробовал вешать в командную панель невидимую кнопку с командой и назначенным сочетанием клавиш - эффекта нет. Может, Ctrl+A вообще нельзя обработать программно (нагуглил, что прикладному уровню доступны только команды с Shift и Alt)?
---
У элемента формы типа список есть свойство ".ВыделенныеСтроки". А у него "Количество()"
Следовательно, процедура, создающая список команд должна проверить Элемент.ВыделенныеСтроки.Количество().
Понятно, что она при Ctrl+A не вызовется. Поэтому разве что создать проц-ру Ожидание(), которая будет проверять это количество и при внезапном изменении пересчитывать.
---
Да. На кнопку Ctrl+A не повесишь. В точности как и F1, F2, Ctrl+F4
Система сначала считает нужным отреагировать на "свои" клавиши, только потом передает управление запрограммированным.
---
Так и пусть бы она отреагировала, мне не нужно отключать функционал выделения всех документов в списке по Ctrl+A. Мне нужно ПОТОМ это событие как-то отследить и обработать. Как?
---
У элемента формы типа список есть свойство ".ВыделенныеСтроки". А у него "Количество()"
Следовательно, процедура, создающая список команд должна проверить Элемент.ВыделенныеСтроки.Количество().
Понятно, что она при Ctrl+A не вызовется. Поэтому разве что создать проц-ру Ожидание(), которая будет проверять это количество и при внезапном изменении пересчитывать.
Управляемые формы.
Создал расширение, в нём общий модуль с процедурами и функциями.

Основная конфигурация. В ней в коде ссылки на процедуру из расширения. Всё работает!
Отвлекают сообщения об ошибке, типа "Переменная не определена" (проверка кода в конфигураторе),
при обращении из основной конфигурации в модуль объекта расширения.

Как-то можно настроить Конфигуратор, чтобы он видел из основной конфигурации - основной модуль расширения
т.е. чтобы по F12 можно было переходить в расширение?
---
О Аллах! Зачем вы так, зачем вы делаете основную конфигурацию зависимой от расширения? Расширение решите удалить или оно временно отвалится - ваша основная конфа работать не будет.
Зачем вы делаете основную конфу не типовой (ссылаясь на процедуру из расширения), когда вам ничего уже не мешает эту процедуру написать в основной конфе (раз она уже не на поддержке)?
Зачем нужно Расширение, как таковое? Для удобства обновления, для расширения функционала без вреда основной конфе. Для исправления, дополнения и адаптации. А вы?! Взяли механизм удобства и создали себе двойные трудности, талант.

Советую перенести процедуру в основную конфу (раз она уже не типовая, а добавленные вещи - не мешают при обновление).
Переходить по f12 нынешние платформы не позволят.
+ книга https://its.1c.ru/db/pubextensions
---
Если уж так хочется, то включайте возможность редактирования у конфы. Если типовые объекты трогать не будете, то обновления усложняются всего на пару кликов.
---
О Аллах! Зачем вы так, зачем вы делаете основную конфигурацию зависимой от расширения? Расширение решите удалить или оно временно отвалится - ваша основная конфа работать не будет.
Зачем вы делаете основную конфу не типовой (ссылаясь на процедуру из расширения), когда вам ничего уже не мешает эту процедуру написать в основной конфе (раз она уже не на поддержке)?
Зачем нужно Расширение, как таковое? Для удобства обновления, для расширения функционала без вреда основной конфе. Для исправления, дополнения и адаптации. А вы?! Взяли механизм удобства и создали себе двойные трудности, талант.

Советую перенести процедуру в основную конфу (раз она уже не типовая, а добавленные вещи - не мешают при обновление).
Переходить по f12 нынешние платформы не позволят.
+ книга https://its.1c.ru/db/pubextensions
---
та нее... ТС хочет и рыбку и все остальное. Т.е. чтобы во внешних обработках юзать из расширения свои общие модули. было бы не плохо в принципе...
(1) а так да - это платформенное. может быть когда-нибудь?
---
Спасибо за ссылку и интересный комментарий!
---
....заливная рыба
Господа!
Как достучаться из модуля формы внешнего отчета до макета в этом отчете

вот так вот не проходит

```1c
    Макет = ЭтотОбъект.ПолучитьМакет("МакетВнешнегоОтчета");
```
---
РеквищитФормыВЗначение("Объект").ПолучитьМакет(...)
---
РеквищитФормыВЗначение("Объект").ПолучитьМакет(...)
---
Я так добирался... В данном случае без разницы?
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
Схема = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
---
А какая разница, кроме количества строк?
---
у внешнего отчета основной реквизит не Объект, а Отчет.
---
Да пофиг. Я дал удочку. А рыбные места уже сами...
---
Так работает только вместо "Объект" "Отчет"
---
РеквизитФормыВЗначение("Объект") и РеквизитФормыВЗначение("Отчет")
это одно и тоже потому что в данном случае Объектом является Отчет? Будет работать и так и так?
---
нет. По умолчанию тебе нужен Отчет
---
Спасибо
---
Можно еще прям в модуле объекта назначать какому-то реквизиту макет )
---
Можно посмотреть здесь https://infofront.su/1c-poluchit-maket-vneshney-obrabotki/
Всем привет.

Есть КА 2.2 и её копия, которые крутятся на SQL. При формировании отчёта "Задолженность клиентов по срокам" в копии колонка "Количество дней" заполняется, в рабочей версии -- не заполняется. Отчёты идентичны. Сохранил отчёт из копии как внешний и запускаю в обеих конфигурациях с разным результатом. Данные берутся из набора. В наборе эта колонка заполняется как в копии, так и в рабочей конфе, но в последней СКД не выводит эту информацию, хотя отчёт один и тот же -- внешний. Чистил локальный кэш -- безрезультатно. В чём может быть причина пустой колонки?
---
В СКД колонка с количеством дней была в вычисляемых выражениях без выражения. Не хотел трогать т.к. насколько мне известно эту часть отчёта никто не редактировал и это вычисляемое выражение было там всегда. Убрал его и колонка стала заполняться. Боюсь, теперь в каком-нибудь другом варианте отчёта что-нибудь сломается. Посмотрю что скажут пользователи.
---
Посмотрите как эта колонка попадает в набор в коде. Где хранятся эти "количество дней"? Может набор их тянет из другой базы. Если регистр, возможно в базах разные права на чтение.
---
Пользователь один и тот же с полными правами. Набор это просто таблица значений, полученная выгрузкой результата запроса к РС ДанныеПроизводственногоКалендаря.
---
а настроены периоды сроков? там в самом отчете вроде есть гиперссылка на настройки периодов.
---
Если вы про вариант классификации задолженности, то да, они идентичны.
---
Почистил серверный кэш. Ничего не изменилось.
---
В СКД колонка с количеством дней была в вычисляемых выражениях без выражения. Не хотел трогать т.к. насколько мне известно эту часть отчёта никто не редактировал и это вычисляемое выражение было там всегда. Убрал его и колонка стала заполняться. Боюсь, теперь в каком-нибудь другом варианте отчёта что-нибудь сломается. Посмотрю что скажут пользователи.
Здравствуйте.

На форме есть поле связанное с реквизитом объекта. Нужно настроить условное оформление программно, таким образом, чтобы примеченный на удаление объект отображался красным.
Пытаюсь сделать вот так, но 0 реакции, можно ли вообще подобное сделать?

Если попробовать сделать условное оформление вручную, в настройках формы, то дочерние реквизиты недоступны.

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