arefaste/1C_Forums huggingface dataset:
Пытаюсь делать простецкий план-факт.
ПланыПродаж - Регистр накопления. Чтобы если что потом суммировать и смотреть план по месяцу или году, например.

Дневной план продаж задается раз в неделю.
Предположим, что в какую-то неделю пропустили выставление плана. Тогда должен работать старый план.
Теперь вопрос, как построить запрос для отчета?
На скриншоте 1 я просто объединил план и продажи. А надо как на скриншоте 2.

```1c
    ВЫБРАТЬ
    ПланПродажОбороты.Период КАК Период,
    ПланПродажОбороты.Сценарий КАК Сценарий,
    ПланПродажОбороты.Подразделение КАК Подразделение,
    ПланПродажОбороты.СуммаОборот КАК План,
    0 КАК Продажи
    ИЗ
    РегистрНакопления.ПланПродаж.Обороты(&НачалоПериода, &КонецПериода, Неделя, Подразделение = &Подразделение) КАК ПланПродажОбороты

    ОБЪЕДИНИТЬ все

    ВЫБРАТЬ
    ПродажиОбороты.Период,
    NULL,
    ПродажиОбороты.Подразделение,
    0,
    ПродажиОбороты.СуммаОборот
    ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Подразделение = &Подразделение) КАК ПродажиОбороты

    УПОРЯДОЧИТЬ ПО
    Период
```
---
Запрос срезапоследних для регистра накопления. Тут на форуме примеров хватает.
---
По сути вам необходимо примерно вот это.
На 1С переписывается без сложностей. "LIMIT 1" = "Первые 1" = "TOP 1". WITH это генерация входных данных и помещение во временную таблицу. У вас уже всё есть в регистрах. Поэтому вас интересует только последний запрос. Там три строчки.
Можно не искать никакие минимумы и максимумы и много раз что-то с чем-то соединять.
В запрос можно добавить ISNULL(t2.c, 0) и ISNULL(t2.s, '<ПЛАН НЕ ЗАДАН>')
---
Лучше каким-нибудь регламентом делать нужные записи в регистр. И отчет не придется переделывать.
---
идея такая в голове проскочила. Показалась костылем каким-то если честно, думаю, есть лучше подход.
---
Ну можете и запрос переписать, там в принципе ничего сложного. Еще одно объединение сделать.
---
а что конкретно за объединение-то? Я чет полдня сижу туплю
---
Запрос срезапоследних для регистра накопления. Тут на форуме примеров хватает.
---
Задача сродни "Курсы валют на дату" - ищется просто.

Суть:
1. получаете ВТ минимальных периодов(начало недели) где есть план
2. Получаете ВТ дат начало недели в интервале
3. Соединяете, получив ВТ планов на любую неделю
4. Далее объединение с фактом
---
По сути вам необходимо примерно вот это.
На 1С переписывается без сложностей. "LIMIT 1" = "Первые 1" = "TOP 1". WITH это генерация входных данных и помещение во временную таблицу. У вас уже всё есть в регистрах. Поэтому вас интересует только последний запрос. Там три строчки.
Можно не искать никакие минимумы и максимумы и много раз что-то с чем-то соединять.
В запрос можно добавить ISNULL(t2.c, 0) и ISNULL(t2.s, '<ПЛАН НЕ ЗАДАН>')
---
(8) вот уж действительно говорят "Утро вечера мудренее". Почитал все те же обсуждения на форумах в понедельник и допер. Всем спасибо!
Требуется программно понять, что к текущему сеансу подключен отладчик.
Это возможно?
---
Как правило, отладчик запускают с параметром "РежимОтладки". В типовых, от разработчиков куча кода с анализом этого параметра при их собственной отладке.
Если параметр включен, но не некоторый типовой функционал неработоспособен.

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

Типа так:

```1c
    Нау = ТекущаяУниварсальнаяДатаВМиллисекундах();
    Для А = 1 По 1кк Цикл
    Т = а * 1.7234567;
    Т = Т * А / 2.3456;
    КонецЦикла;
    ТаймНамберУан = ТекущаяУниварсальнаяДатаВМиллисекундах() - Нау;
    Выпонить("тотжекод...");
    Если ТаймНамберТу > ТаймНамберУан * 2 Тогда
    Сообщить("Отладчик ОН")
    Иначе
    Сообщить("Отладчик ОФФ")
    КонецЕслей
```
---
а-фи-геть.
плюсую за изобретательность
---
Обычно с таких желаний начинается попытка разработки какой-то лютой и бесполезной херни.

Невозможно. Спи спокойно. Не надо увеличивать энтропию и хаос.
---
примерно так

```1c
    if debug() then bugmenow()
```
---
В общем случае никак.
Для своего сеанса можно извернуться.
Например, использовать переменную, проинициировав её одним значением, и сделать в удобном месте точку останова с условием, где и поменять значение переменной.
---
и как обычно, ни кто самый главный вопрос не задает:
- А зачем это вообще нужно?
---
Как правило, отладчик запускают с параметром "РежимОтладки". В типовых, от разработчиков куча кода с анализом этого параметра при их собственной отладке.
Если параметр включен, но не некоторый типовой функционал неработоспособен.

РежимОтладки = ОбщегоНазначения.РежимОтладки();
---
это не сработает, если закрыть дебагер
Добрый день. Подскажите пожалуйста, есть параметры начало и конец периода полученные из &Период.ДатаНачала и &Период.ДатаОкончания и ограниченные для отображения. Два набора данных, первый

```1c
    ВЫБРАТЬ
    ВыручкаИСебестоимостьПродажОбороты.Период КАК ДатаВыручки,
    ВыручкаИСебестоимостьПродажОбороты.Менеджер КАК Менеджер,
    ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиБезНДСОборот КАК СуммаВыручкиБезНДСОборот
    ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты({&НачалоПериода}, {&КонецПериода}, Месяц, {Менеджер В(&Менеджеры)}) КАК ВыручкаИСебестоимостьПродажОборо
```

/////
И второй:

```1c
    ВЫБРАТЬ
    &ДатаСреза КАК ДатаСреза,
    ПланПродажСрезПоследних.Сотрудник КАК Сотрудник,
    ПланПродажСрезПоследних.План КАК План
    ИЗ
    РегистрСведений.ПланПродаж.СрезПоследних(&ДатаСреза, {Сотрудник В (&Менеджеры)}) КАК ПланПродажСрезПоследних
```

При связи данных указываю параметр ДатаСреза но вылетает ошибка не соответствия параметров, если оставить параметры не производными от стандартного параметрf период, то получается сформировать отчет не понимаю почему дата не подходит в случаи когда задается от стандартного параметра Период может кто сталкивался?
---
Нет, точно не это. Где-то перезаполняется параметр и становится границей, моментом времени и т.п.
---
Не надо называть свои параметры НачалоПериода, КонецПериода и Период, т.к. у СКД уже есть свои параметры с такими наваниями и из-за этого происходят всякие глюки.
---
(8)
Спасибо за советы, оказывается создался период по умолчанию родной от скд который не удалить ничего нельзя сделал его ограниченным и добавил еще один и получилось.
---
Картинку покажите, как настроен параметр ДатаСреза.
---
Вот.
---
Да с виду все норм. Попробую у себя смоделировать.
---
Не воспроизводится
---
(5)спасибо возможно это изза того что у меня только дата у регистра без времени.
---
Нет, точно не это. Где-то перезаполняется параметр и становится границей, моментом времени и т.п.
---
Не надо называть свои параметры НачалоПериода, КонецПериода и Период, т.к. у СКД уже есть свои параметры с такими наваниями и из-за этого происходят всякие глюки.
---
(8)
Спасибо за советы, оказывается создался период по умолчанию родной от скд который не удалить ничего нельзя сделал его ограниченным и добавил еще один и получилось.
---
Я бы параметр Период(с типом Стандартный период) переименовал в ПериодОтчета, а у параметра Период, очистил тип/указал бы тип Дата.
Похоже, что мы наступили на грабли №4 :-)
в 1С Бухгалтерия предприятия 8.3 (3.0.143.42), Платформа 8.3.23.1865, есть следующий функционал:
В Справочнике Номенклатуры есть кнопка Загрузить, которая позволяет сделать загрузку из файла excel с предварительным поиском, чтобы не создавать дублирующие записи.
Как сделать так, чтобы эта обработка не делала поиск, а сразу загружала весь список?
Без углубления в бизнес-процессы - бухгалтерия сказала "так надо".

Использование внешней обработки "Загрузка Данных Из Табличного Документа" не удобно для рядового сотрудника.

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

Я не знаю как правильно поменять порядок через макет чтобы было Дата, Приход(Ресурс), Контрагент, Организация, Расход(Ресурс). То есть вот так:

Вот как выглядят настройки в СКД у моих колонок

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

Подскажите, как программно очистить все записи (или с отбором по периоду) независимого периодического регистра сведения.
Я по-разному пробовала, не удаляются записи.

Спасибо.
---
Набор = РегистрыСведений.ВашРегистр.СоздатьНаборЗаписей();
Набор.Записать();
---
Набор = РегистрыСведений.ВашРегистр.СоздатьНаборЗаписей();
Набор.Записать();
---
Это если записей немного.
А вот если много, то все зависнет на порядочное время.
---
С некоторыми регистрами нужно использовать дополнительно
Набор.ОбменДанными.Загрузка = Истина;
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.
---
Спасибо. Всё работает. Просто программа не заходила в модуль удаления.
Записей в регистре немного.
---
Может кому пригодиться опыт моей бессонной ночи. Эффект от этого метода нельзя увидеть пока не закончиться транзакция.
(У меня есть процесс, который обнуляет регистр сведений при записи элемента справочника, во время отладки процедуры ПриЗаиписи(), я запускал параллельно базу и пытался увидеть эффект. )
---
пригодиться
закончиться
Всем привет. В гугле ответа не нашел - м.б., кто-то сталкивался с похожим: в динамическом списке добавил поле (булево), это вычисляемое поле (рассчитывается из общего модуля). Показывает все данные правильно. Но если я хочу наложить отбор, то:
- Отбор в динамическом списке (в настройках) пишет:
Невозможно применить элемент отбора в наборе данных "МойРеквизит Равно ..."
[ОшибкаНастроекКомпоновкиДанных]

- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка... - пишет то же самое.
Может кто-то посоветовать, как побороть проблему?)
---
Отбор на вычисляемые поля, которые рассчитываются из общих модулей, наложить нельзя.
https://partners.v8.1c.ru/forum/t/2160000/m/2160034
---
можно Нельзя. В обработчике ПриПолученииДанныхНаСервере у тебя контекста динамического списка вообще нет.
---
Отбор на вычисляемые поля, которые рассчитываются из общих модулей, наложить нельзя.
https://partners.v8.1c.ru/forum/t/2160000/m/2160034
---
вот блин(
А в СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) - есть Настройки.Отбор - через него можно наложить отбор, предварительно обработав Строки ? Ну, как вариант, вместо вычисляемых полей
---
можно Нельзя. В обработчике ПриПолученииДанныхНаСервере у тебя контекста динамического списка вообще нет.
Добрый день уважаемые форумчане ...
прошу помощи у гуру ...

Розница, редакция 2.3 (2.3.5.35)

Сделал небольшой отчет на СКД - где данные набор данных объект ...
в модуле объекта "при компоновке результата" формирую ТЗ
которую подтягиваю методом

```1c
    СтруктураНабораДанных.Вставить("ТЗНаличныеПоМагазину", ТЗНаличныеПоМагазину);
```

В СКД добавил 2а параметра которые хочу чтобы влияли на параметры запроса которым заполняю ТЗНаличныеПоМагазину.

На форме они появляются - но заполняй не заполняй они не меняются в "при компановке результата" - они никак не подтягиваются ...

Почему ??? объясните пжл ...
Понятно что можно нарисовать форму и передвать эти реквизиты ...
но хотелось бы чтобы Эти параметры (нарисованные на форме платформой) подтягивались в Модуле объекта ...

Почему они не подтягиваются ???

Отчет прикрепил
---
А вы пробовали?
---
Должно применяться, судя по коду.
А что именно не меняется?
---
Понял.
Должно быть не
ЭлементыПараметры = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
а
ЭлементыПараметры = Настройки.ПараметрыДанных.Элементы.
Выше ведь вы получили
Настройки = КомпоновщикНастроек.ПолучитьНастройки(); // Получаем настройки отчета
---
для получения значений выбранных на форме отчета следует использовать ПользовательскиеНастройки:

```1c
    Параметры = Новый Структура;

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

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

    ИначеЕсли ТипЗнч( ЭлементНастроек) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда//отборы
    ИмяОтбора = ИдентификаторыОтборов[ ЭлементНастроек.ИдентификаторПользовательскойНастройки];
    Если ИмяОтбора <> Неопределено Тогда
    Параметры.Вставить( ИмяОтбора, ЭлементНастроек.ПравоеЗначение);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
```
---
для получения значений выбранных на форме отчета следует использовать ПользовательскиеНастройки:

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

Почему это нельзя получить значения параметров из формы сгенерированной платформой ?
---
А вы пробовали?
---
А вы пробовали?
да брат спасибо вы правы !!!
Нужно получить список всех значений наименований справочников. (Банки,Номенклатура, и тд)
---
http://itpath.ru/1cv8-metadata/
---
```1c
    Процедура Кнопка1Нажатие(Элемент)
    // Перебор справочников
    МетаСправочники = Метаданные.Справочники;

    Сообщить("Количество справочников: " + МетаСправочники.Количество());

    // Перебираем все справочники
    Для Каждого МетаОбъект Из МетаСправочники Цикл

    // Выводим полное имя объекта
    Сообщить(МетаОбъект.ПолноеИмя());

    КонецЦикла;

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

 так?
---
http://itpath.ru/1cv8-metadata/
---
```1c
    Процедура Кнопка1Нажатие(Элемент)
    // Перебор справочников
    МетаСправочники = Метаданные.Справочники;

    Сообщить("Количество справочников: " + МетаСправочники.Количество());

    // Перебираем все справочники
    Для Каждого МетаОбъект Из МетаСправочники Цикл

    // Выводим полное имя объекта
    Сообщить(МетаОбъект.ПолноеИмя());

    КонецЦикла;

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

 так?
---
Здравствуйте, не подскажите как выгрузить с указанием использования в подсистеме?
---
твуйте, не подскажите как выгрузить с ука

Не совсем понял вопроса
---
Смотрите, справочник используется в какой-то подсистеме и объекте, нет ли возможности как-то выгрузить с привязкой, чтобы было больше понятно по предметной области.
---
Всё работает. Спасибо
Не могу понять в чём причина, параметры задаю как обычно, но выводит такую ошибку
---
Помог выбор форм отчёта, настроекОтчёта
---
ВЫБРАТЬ
 ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура КАК Номенклатура,
 СУММА(ВЫБОР
   КОГДА ОстаткиТоваровКомпанииОстаткиИОбороты.Период = &НачалоПериода
    ТОГДА ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоКонечныйОстаток
   ИНАЧЕ ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоОборот
  КОНЕЦ * (РАЗНОСТЬДАТ(ОстаткиТоваровКомпанииОстаткиИОбороты.Период, &КонецПериода, ДЕНЬ) + 1)) / (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) + 1) КАК СреднийЗапас,
 ОстаткиТоваровКомпанииОстаткиИОбороты.СкладКомпании КАК СкладКомпании
ПОМЕСТИТЬ ВТ_СрЗапас
ИЗ
 РегистрНакопления.ОстаткиТоваровКомпании.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ОстаткиТоваровКомпанииОстаткиИОбороты

СГРУППИРОВАТЬ ПО
 ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура,
 ОстаткиТоваровКомпанииОстаткиИОбороты.СкладКомпании
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура,
 ПоступлениеТоваровТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
 МАКСИМУМ(ПоступлениеТоваровТовары.Ссылка.Дата) КАК Дата
ПОМЕСТИТЬ ВТПериоды
ИЗ
 Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
ГДЕ
 ПоступлениеТоваровТовары.Ссылка.Дата <= &КонецПериода
 И ПоступлениеТоваровТовары.Ссылка.Проведен
 И НЕ ПоступлениеТоваровТовары.Ссылка.ПометкаУдаления

СГРУППИРОВАТЬ ПО
 ПоступлениеТоваровТовары.Номенклатура,
 ПоступлениеТоваровТовары.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 ВТПериоды.Номенклатура КАК Номенклатура,
 ВТПериоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
 ПоступлениеТоваровТовары.Цена КАК Цена
ПОМЕСТИТЬ ВТПоследняяЦена
ИЗ
 ВТПериоды КАК ВТПериоды
  ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
  ПО ВТПериоды.Номенклатура = ПоступлениеТоваровТовары.Номенклатура
   И ВТПериоды.Дата = ПоступлениеТоваровТовары.Ссылка.Дата
   И ВТПериоды.ХарактеристикаНоменклатуры = ПоступлениеТоваровТовары.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
 ВТ_СрЗапас.Номенклатура КАК Номенклатура,
 ВТ_СрЗапас.СреднийЗапас КАК СреднийЗапас,
 ВТ_СрЗапас.СкладКомпании КАК СкладКомпании,
 ВТПоследняяЦена.Цена КАК Цена,
 ВТ_СрЗапас.СреднийЗапас * ВТПоследняяЦена.Цена КАК Сумма
ИЗ
 ВТ_СрЗапас КАК ВТ_СрЗапас
  ЛЕВОЕ СОЕДИНЕНИЕ ВТПоследняяЦена КАК ВТПоследняяЦена
  ПО ВТ_СрЗапас.Номенклатура = ВТПоследняяЦена.Номенклатура
Сгруппировать ПО
СкладКомпании,
ВТ_СрЗапас.Номенклатура,
СреднийЗапас,
Цена,
ВТ_СрЗапас.СреднийЗапас * ВТПоследняяЦена.Цена
---
После того как я задал стандартные параметры, то отчёт начал формироваться, но только на ту дату, которую я указал в СКД. Если я меняю дату НачалоПериода, то отчёт не меняется
---
Не определяет НачалоПериода и КонецПериода как параметры
---
Помог выбор форм отчёта, настроекОтчёта
Здравствуйте!
Вопрос следующий. Я формирую новый PDF файл, он мне нужен как временный. Для него получаю имя с помощью ПолучитьИмяВременногоФайла("PDF"), каковая функция возвращает весь путь к файлу. А нужно только имя с расширением. Подскажите пожалуйста, как его получить
---
```1c
    ВыбранноеИмяФайла = ПолучитьИмяВременногоФайла("pdf");
    ВыбФайл = Новый Файл(ВыбранноеИмяФайла);
    Сообщить(ВыбФайл.Имя);
```
---
```1c
    ВыбранноеИмяФайла = ПолучитьИмяВременногоФайла("pdf");
    ВыбФайл = Новый Файл(ВыбранноеИмяФайла);
    Сообщить(ВыбФайл.Имя);
```
---
```1c
    ВыбранноеИмяФайла = ПолучитьИмяВременногоФайла("pdf");
    ВыбФайл = Новый Файл(ВыбранноеИмяФайла);
    Сообщить(ВыбФайл.ИмяБезРасширения);
```
---
еще вариант
ИмяФайла = Сред(ПолноеИмяФайла, СтрНайти(ПолноеИмяФайла, "\", НаправлениеПоиска.СКонца) + 1);
---
ругается на направлениепоиска - переменная не определена. У меня 8.3.10.2580, вроде ж должна быть обновленная функция?
---
режим совместимости
---
Для КА 1.1

```1c
    РаботаСФайлами.ПолучитьИмяФайлаИзПолногоПути(ПутьФайла)
```
---
Скажите, а РаботаСФайлами - Это из какого-то общего модуля? У меня вот есть РаботаСФайламиКлиент и РаботаСФайламиВызовСервера но ни там ни там прямо такой процедуры нет...
---
Работа с файлами - это и есть общий модуль. Возможно конфигурации разные.
---
Все предложенные варианты плохи тем, что они формируют имя в пределах каталога временных файлов. А не факт, что в том месте, куда потом сохраним, не будет такого имени...
---
есть пример такой коллизии?
ПоличитьИмяВременногоФайла должно гарантировать уникальность имени во временном каталоге.
---
я обычно для временных файлов имена сам генерирую, а после обработки удаляю

```1c
    ИдФайла = РаботаСФайлами.УдалитьЗапрещенныеСимволыИмени(Новый УникальныйИдентификатор());
    ПолноеИмяФайла =РаботаСФайлами.ПолучитьИмяФайла(КаталогВременныхФайлов(),ИдФайла);
    //расширение проставляю по условию, т.к. могут быть разные типы файлов
    ПолноеИмяФайла = ПолноеИмяФайла + ".pdf";
    //.... Создание и обработка файла
    УдалитьФайлы(ПолноеИмяФайла);
```
---
ИмяФайлаВрем = ПолучитьИмяВременногоФайла("pdf");
СтруктураИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ИмяФайлаВрем);
ИмяФайла = СтруктураИмени.Имя;

Функция возвращает полное имя, путь, имя, расширение, имя без расширения.
---
```1c
    Функция ВыделитьИмяФайла(ПолноеИмя)
    Результат = СтрЗаменить(ПолноеИмя, "\", Символы.ПС);
    Возврат СтрПолучитьСтроку(Результат, СтрЧислоСтрок(Результат));
    КонецФункции
```