arefaste/1C_Forums huggingface dataset:
Всем привет! Хочу выбрать документы, где в табличной части количество расхода больше количества дохода.
Пишу такое:

```1c
    "ВЫБРАТЬ
    | ВЫБОР
    | КОГДА НарядНаВыполнениеРаботРаботы.КоличествоРасход > НарядНаВыполнениеРаботРаботы.КоличествоДоход
    | И НарядНаВыполнениеРаботРаботы.ЕдиницаИзмеренияРасход = НарядНаВыполнениеРаботРаботы.ЕдиницаИзмеренияДоход
    | ТОГДА НарядНаВыполнениеРаботРаботы.Ссылка
    | КОНЕЦ КАК Ссылка
    |ИЗ
    | Документ.НарядНаВыполнениеРабот.Работы КАК НарядНаВыполнениеРаботРаботы";
```

Результат выдает, но выдает и все пустые строки тоже. Как лучше сделать такой запрос?
---
примерно так

```1c
    ВЫБРАТЬ различные
    Наряд.ссылка
    |ИЗ
    | Документ.НарядНаВыполнениеРабот.Работы КАК Наряд
    где
    Наряд.КоличествоРасход > Наряд.КоличествоДоход
    И Наряд.ЕдиницаИзмеренияРасход = Наряд.ЕдиницаИзмеренияДоход
```
---
условие перенести из секции ВЫБРАТЬ в секцию ГДЕ
---
примерно так

```1c
    ВЫБРАТЬ различные
    Наряд.ссылка
    |ИЗ
    | Документ.НарядНаВыполнениеРабот.Работы КАК Наряд
    где
    Наряд.КоличествоРасход > Наряд.КоличествоДоход
    И Наряд.ЕдиницаИзмеренияРасход = Наряд.ЕдиницаИзмеренияДоход
```
---
Так можно? Думал, что в где только параметр подставляется. Попробую, спасибо!
1. есть расширение формы, на форме добавлены элементы.
2. До текущего момента обращения из основной конфигурации з формы к элементу расширения работало.

Сегодня после обновления (форма не обновлялась) свзяь пропала - появилась ошибка - элемент не найден.

Кто то сталкивался?
---
если нет ролей в расширении, то они не проверяются.
При добавлении роли в расширение, включается проверка ролей.
Аналогично работает и основная конфигурация.
---
права на объекты расширения устанавливаются для конкретных ролей.
Нет ролей - нет установок прав.
Нет установок прав - нечего проверять. Автоматом все доступно, иначе ничего не работало бы без ролей.
Когда добавляется первая же роль, то права активизируются, так как уже есть что проверять.
---
проверить, не отвалилось ли расширение. Оно должно быть активно.
---
Активно. Выяснил в чем причина - почему то когда роль в расширение добавляешь - перестает работать. но почему так хз!
---
если нет ролей в расширении, то они не проверяются.
При добавлении роли в расширение, включается проверка ролей.
Аналогично работает и основная конфигурация.
---
Ого, а можете пожалуйста чуть подробнее объяснить я просто не понял.

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

Спасибо большое)
Добрый день! Поделитесь опытом. Есть обработка заполнения макет ворд, active document, параметры заполняю через execute. Есть поле Работы в котором больше 1500 знаков с переносами строк. Как в ворд передать эти переносы?
Сейчас делаю вот так и весь текст пишется подряд, а на местах переноса строк ворд ставит квадрат со знаком вопроса

```1c
    лкВсяДлина = СтрДлина(Объект.Работы);
    лкТекущаяПозиция = 1;
    Пока лкТекущаяПозиция < лкВсяДлина Цикл
    лкЧасть = Сред(Объект.Работы, лкТекущаяПозиция, 2) + "[Работы]";
    Замена.Execute("[Работы]",,,,,,,,,лкЧасть,2);
    лкТекущаяПозиция = лкТекущаяПозиция + 2;
    КонецЦикла;
```
---
В итоге написал так и сработало

```1c
    лкВсяДлина = СтрДлина(Объект.Работы);
    лкТекущаяПозиция = 1;
    Пока лкТекущаяПозиция < лкВсяДлина Цикл
    лкЧасть = Сред(Объект.Работы, лкТекущаяПозиция, 2) + "[Работы]";
    Замена.Execute("[Работы]",,,,,,,,,СтрЗаменить(лкЧасть, Символы.ПС, символ(94) + символ(112),2);
    лкТекущаяПозиция = лкТекущаяПозиция + 2;
    КонецЦикла;
```
---
Если текст разбиваете из-за ограничения в замене word на длину слова, то решение примерно такое:
```1c
    ТекстРаботы = Строка(Объект.Работы);

    Поиск = ОбластьДокумента.Find;
    Поиск.Text = "[Работы]";
    Поиск.Forward = Истина;

    Пока Замена.Execute() Цикл
    ОбластьДокумента.Select();
    ОбъектВорд.Selection.TypeText(ТекстРаботы);
    КонецЦикла;
```
---
в вашем примере используются закладки, верно понимаю?
---
Нет, это как раз ваш случай.
---
```1c
    Текст = Новый ТекстовыйДокумент;
    Текст.УстановитьТекст(Объект.Работы);
    Текст.ПолучитьТекст();
```

Так переносы останутся
---
так ворд не дает сформировать документ, потому что длина превышает 250 символов
---
В итоге написал так и сработало

```1c
    лкВсяДлина = СтрДлина(Объект.Работы);
    лкТекущаяПозиция = 1;
    Пока лкТекущаяПозиция < лкВсяДлина Цикл
    лкЧасть = Сред(Объект.Работы, лкТекущаяПозиция, 2) + "[Работы]";
    Замена.Execute("[Работы]",,,,,,,,,СтрЗаменить(лкЧасть, Символы.ПС, символ(94) + символ(112),2);
    лкТекущаяПозиция = лкТекущаяПозиция + 2;
    КонецЦикла;
```
Подскажите как настроить отправку и получение push уведомлений, причем не столько реализацию в 1С (эти описания вроде есть), а именно с регистрацией на сервисе (те описания, что нашел вообще не совпадают с текущим видом)
---
Нашел неплохое видео youtube.com

по нему все получилось
---
Нашел неплохое видео youtube.com

по нему все получилось
Всем добрый день.
Имеется конфигурация Управление автотранспортом Проф, редакция 2.2.

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

Подскажите пожалуйста, может кто сталкивался с такой проблемой? Как настроить, чтобы считался расход ГСМ для прицепа в Путевом листе?
---
Разобрался. Для прицепа - рефрижератора необходимо указать вид ТС "Оборудование" и для модели поставить признак Моточасы. После этого всё считает.
Всем спасибо.
---
Управление автотранспортом
Посмотрите документацию, раздел 6.10 Инвентаризация ГСМ
https://its.1c.ru/db/uattle#content:5880:hdoc

Возможно, там найдете ответ.
---
К сожалению на текущий момент нет действующей подписки ИТС под УАТ.
---
И желтых книжек с дисками УАТ нет?
---
Норма прицепа одометр или счетчик моточасов?
---
Линейная норма.
---
Вопрос актуален.
---
попробовать поставить счетчик моточасов, он точно должен работать. Если и он не работает тогда проблемы в релизе
---
подскажите пожалуйста, а где его поставить нужно?
---
Установил для модели п/прицепа признак Счетчик моточасов. Расход ГСМ для п/прицепа всё равно не считается...(
---
Разобрался. Для прицепа - рефрижератора необходимо указать вид ТС "Оборудование" и для модели поставить признак Моточасы. После этого всё считает.
Всем спасибо.
---
В моделе прицепа поставили признак Счетчик мото часов и что это Оборудование, начал считать по норме но не считает Остаток возврата....Т.е. остаток выезда из ввод остатков ГСМ взял, заправку взял, рассчитал по норме правильно но считает Остаток возврата. Может кто подсказать что еще надо указать?
---
вопрос снят :-) не правильно указали норму ГСМ
В запросе выбираю штрихкоды по номенклатуре, подскажите как сделать так, чтобы они выводились в одной ячейке
---
Разобрался
https://www.softmaker.kz/otchety-1s/primer-ispolzovaniya-funkcij-skd-massiv-array-i-soedinitstroki-joinstrings-v-otchyote-1s-8.html
Нужно все выводить в группировке, а не детальных записях
---
это нужно сделать в ресурсах, а не в вычисляемых полях.
---
Или СоединитьСтроки или Массив - что-нибудь одно используйте, работают они (почти) одинаково.
---
Если я делаю в "Вычисляемых полях", тогда не работает, если делаю в "Ресурсах" работает, но не так
---
Нужно делать в ресурсах через "ВычислитьВыражениеСГруппировкойМассив", получите то что нужно
---
вычисляемое поле совсем не нужно.
---
Разобрался
https://www.softmaker.kz/otchety-1s/primer-ispolzovaniya-funkcij-skd-massiv-array-i-soedinitstroki-joinstrings-v-otchyote-1s-8.html
Нужно все выводить в группировке, а не детальных записях
Всех приветствую. Простите за наивный вопрос, но вот как-то раньше в голову не приходило. Я привык после работы с конфигурацией закрывать ее. Соответственно, перед работой открываю дерево вновь. Но с каждым новым релизом ожидание открытия затягивается (субъективно). Вот и назрел вопрос: а надо ли ее закрывать? На что это влияет? Для чего вообще сделана эта опция?
---
При открытии заново строится кеш-метаданных. Закрывать не надо.
---
При открытии заново строится кеш-метаданных. Закрывать не надо.
---
Вот так. Век живи - век учись. А зачем вообще это сделано тогда? Я изначально связывал это с производительностью, но попробовал и так, и эдак - разницы не ощутил.
---
Я использую когда между сохранением конфигурацией и обновлением базы, нужно закрывать конфигуратор. В таком случае кеш тоже будет строится, поэтому на бочонок жму до открытия конфигурации, что бы время зря не тратить.
---
не закрывай...)
Парни, добрый день, подскажите пожалуйста, переношу через КД из УПП в Бух справочник спецификации номенклатуры, сам справочник переносится и табличная часть его тоже перелетает, но нет привязки к самой номенклатуры, т.е. в бух у справочника спецификации есть владелец со ссылкой на номенклатуру, а в УПП нет владельца, как владельцу передать данные из УПП?
---
```1c
    Значение = Источник.ВыходныеИзделия[0].Номенклатура;
```
---
В УПП отдельная табличная часть ВыходныеИзделия - оттуда нужно выгружать
---
Да, но как. я отбирал запросом
       Запрос = Новый Запрос;
 Запрос.Текст =
  "ВЫБРАТЬ
  | СпецификацииНоменклатурыВыходныеИзделия.Номенклатура.Ссылка КАК Номенклатура
  |ИЗ
  | Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия";

 РезультатЗапроса = Запрос.Выполнить();

 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

```1c
    СтрокаТаблицы = ВыходныеИзделия.Получить(0);
    Номенклатура = СтрокаТаблицы.Номенклатура;
    ХарактеристикаНоменклатуры = СтрокаТаблицы.ХарактеристикаНоменклатуры;
    Количество = СтрокаТаблицы.Количество;
    ЕдиницаИзмерения = СтрокаТаблицы.ЕдиницаИзмерения;
    НомерОперацииМаршрута = СтрокаТаблицы.НомерОперацииМаршрута;
    МинимальнаяПартия = СтрокаТаблицы.МинимальнаяПартия;
    Кратность = СтрокаТаблицы.Кратность;
    ТочкаМаршрута = СтрокаТаблицы.ТочкаМаршрута;
```

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

```1c
    Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    Поля.Добавить("НаименованиеПолное");

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

    Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    Представление = Данные.НаименованиеПолное;

    КонецПроцедуры
```
---
Не настроено представление или что-то есть в обработке получения представления?
---
Представление не заполнены ни у справочника ни у документа. У Вас на скрине значок поиска есть, у меня это обычное текстовое поле, которое только для заголовков используется, поэтому не стал пока заполнять
---
Тьфу! Основное представление же. Видимо, оно у вас в виде кода, длина у которого 0.
---
Разобрался. Добавил процедуру которая меняет стандартное представление

```1c
    Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    Поля.Добавить("НаименованиеПолное");

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

    Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    Представление = Данные.НаименованиеПолное;

    КонецПроцедуры
```
Всем привет! Подскажите может кто сталкивался, обновили КА2 на 2.5.8.191 с 2.5.7.351 и при закрытии месяца в расчёте себестоимости пишет "обнаружены остатки в регистре партий и прочих расходов по организации" и ругается начиная с октября 2020 года на документы "приобретение товаров и услуг", везде в них статья расходов "транспортные расходы по закупкам товаров".

В описание проверки пишет "Остатки по регистру "Партии прочих расходов" должны соответствовать остаткам по регистру "Прочие расходы":
- не должно быть остатков в регистре партий прочих расходов при отсутствии остатков по в регистре прочих расходов".
Подкорректировать никак их не даёт.
За ранее спасибо.
---
ответ в другой теме - https://forum.infostart.ru/forum67/topic284201/#message2845663
---
ответ в другой теме - https://forum.infostart.ru/forum67/topic284201/#message2845663
Здравствуйте. Разрабатываю внешний отчет. Отчет берет данные из регистра сведений, который находится в расширении. Я добавил регистр сведений в основную конфигурацию, в СКД прописал этот регистр, но программа выдает ошибку Таблица не найдена РегистрСведений. Как это исправить?
---
по итогу остается непонятным, в чем же проблема и есть ли она вообще. Проблема была в том, что программа выдавала ошибку когда я прописал в консоли запросов данные. Просто я забыл обновить конфигурацию базы данных.
---
Отчет берет данные из регистра сведений, который находится в расширении. Я добавил регистр сведений в основную конфигурацию
надо, наверное, сначала все же определить, где же этот регистр и есть ли он вообще. Потом проверить, что у него имя именно такое, как в запросе. Консоль запросов может из него прочитать данные?
---
Я не мог выбрать в конструкторе запросов нужный регистр, когда писал запрос руками программа выдавала ошибку, поэтому добавил в основную конфигурацию. Я обновил конфигурацию и программа ошибку перестала выдавать. Я подключил отчет в предприятии, но 1с зависает, долго не выдает отчет.
---
Был задан вопрос Консоль запросов может из него прочитать данные?
Где ответ?
---
Ответ я дал. Не может.
---
Я не мог выбрать в конструкторе запросов нужный регистр
объекты из расширений конструктор запросов не умеет видеть.

(3) когда писал запрос руками программа выдавала ошибку
может название не так написал. Что насчет консоли запросов?

(3) но 1с зависает, долго не выдает отчет
то есть в итоге отчет работает? Но медленно. Надо что-то оптимизировать, может там запрос не очень удачный или отчет в принципе такой?

по итогу остается непонятным, в чем же проблема и есть ли она вообще. Мы уже видели три варианта. Формулировка задачи = 80% решения, здесь ее нет, поэтому нет решения и быть не может... интересно, на курсах 1с не учат формулировать задачи? это ведь один из ключевых навыков...
---
интересно, на курсах 1с не учат формулировать задачи? это ведь один из ключевых навыков... К сожалению - нет. Обучение происходит только получением люлей от более опытных коллег (которых потом на инфостарте постоянно банят).
Но на курсах учат хотя бы терминологии (чтобы опытные коллеги могли понять, о чем речь), но здесь на неё тоже все забивают. Ведут себя как последние пользюки.
---
когда писал запрос руками
Дык сейчас советуют создавать запрос в конструкторе
---
Согласен в конструкторе быстрее да и ошибок меньше.
---
по итогу остается непонятным, в чем же проблема и есть ли она вообще. Проблема была в том, что программа выдавала ошибку когда я прописал в консоли запросов данные. Просто я забыл обновить конфигурацию базы данных.
---
А ларчик просто открывался :) , пометьте ваш ответ решением вопроса
Товарищи, вечер добрый, стоит задача о доработке отчёта, но сам отчёт был очень сильно переработан пользователем, хотел бы узнать, можно ли сохранить как-то вариант отчёта во внешнюю обработку для его дальнейшего изменения?
---
не там загружаете.
Нужно на закладке Настройки.
---
открыть нужный вариант. Выбрать "Изменить вариант". Сохранить настройки.
Выгрузить отчет в файл в конфигураторе. Создать новый вариант. Выбрать его и загрузить настройки из сохраненного ранее файла.
---
Может я что-то делаю не так, но не получается так отчёт подгрузить
---
не там загружаете.
Нужно на закладке Настройки.
---
Огромное спасибо!
---
Сохранить пользовательские настройки в xml и загрузить их в конфигураторе.
Добрый день, помогите, пожалуйста, разобраться, необходимо между БП 3.0 базовая (одинаковые релизы) одна организация в той и другой базе (с одинаковым ИНН и наименованием) перенести документы, при использовании обработки Выгрузка и загрузка данных XML 8.3.epf при загрузке выходит ошибка:
ограничение по базовой версии в информационной базе может быть введена только одна организация.
Подскажите, пожалуйста, есть ли обработки для обмена между идентичными конфигурациями базовой версии.
---
Можно, но не совсем штатными.
1. Временный апгрейд до ПРОФ
2. Перенос документов через обработку обмена между идентичными. Организация раздвоится.
3. Схлопнуть организацию через поиск и удаление дублей.
4. Переделка обратно в базовую.
---
Проверьте есть ли регистр сведений СоответствияОбъектовИнформационныхБаз (просто не помню в базовой он есть или нет) и установите соответствие организаций.
---
Потому что GUIDы разные у организаций...
---
Спасибо большое за помощь, можно ли штатными средствами это исправить.
---
Нет
---
Нет Наугад: а если в XML-файле выгрузки редактором заменить GUID на "правильный"?
---
Конечно. Но чел спрашивал про штатные средства, а не про промежуточное шаманство с данными ;-)
---
Но чел спрашивал про штатные средства, а не про промежуточное шаманство с данными Да ладно, Блокнот - это уже шаманский бубен?

Хотя, для нынешнего (или следующего) поколения свайперов... "могобыть, могобыть" (с)
---
Конечно. Это не штатное средство 1С ))) Опять же, при кривых руках может слететь кодировка...
---
Можно, но не совсем штатными.
1. Временный апгрейд до ПРОФ
2. Перенос документов через обработку обмена между идентичными. Организация раздвоится.
3. Схлопнуть организацию через поиск и удаление дублей.
4. Переделка обратно в базовую.
---
Полностью согласен, ток там заморочек с удалением много времени, запасайтесь обработкой принудительного удаления. Затем не забудьте протестить и после обратного возвращения в базовую тоже лучше тестить.
---
Нужна обработка обмена по правилам и сами правила, в которых организация будет сопоставляться не по гуиду, а по инн+кпп.
---
Без шаманских плясок со стрельбой по своим коленям жить скучно и не интересно)
---
Без шаманских плясок со стрельбой по своим коленям Это необязательно: "Шаман за скверную погоду недавно в бубен получил." (с)
---
Лучше всего поступить так как посоветовал collider. Тут есть нюансы пример номенклатура может искать не по наименованию а по коду нашла заменила если не нашла по наименованию и.т.д. На профку переводите и свои правила в кд создаете и пробуете через универсальный обмен. В кд сами задаете по каким реквизитам будет поиск.
Всех приветствую! Изучаю программирование 1C, в частности, БГУ. Решаю задачку по разработке внешней обработки для Документа Поступление услуг, работ: пользователь выбирает период, клиентов, по этим данным выводятся документы. В полученных документах можно менять договор. Один пунктов задачи: обработка должна менять аналитику Договор в проводках (без перепроведения документа) на всех счетах, где есть аналитика данного типа. Никак не могу понять, как скорректировать проводки без перепроведения.
Подскажите, пожалуйста, в какую сторону двигаться. Спасибо!
---
НаборЗаписей.Прочитать() и НаборЗаписей.Записать(), а между ними выполняете в этом наборе исправления.
---
НаборЗаписей.Прочитать() и НаборЗаписей.Записать(), а между ними выполняете в этом наборе исправления.
Народ, в обработчике события элемента справочника

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

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

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

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

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

Изменить логику прикладного решения так, чтобы не было диалога с пользователем в этом обработчике. Это не всегда возможно;
В обработке оповещения с помощью собственной блокирующей формы задавать пользователю развернутый вопрос, предполагающий точное описание дальнейших действий: Отказаться?, Только записать?, Записать и закрыть? Это может выглядеть не очень красиво, ведь пользователь уже нажал "Записать и закрыть", а его опять об этом спрашивают;
Не использовать стандартные команды формы Записать, "Записать и закрыть". Вместо них создать собственные команды, в которых и выполнять необходимые алгоритмы. Создание собственных команд потребует дополнительных трудозатрат.