УФ. Задать вопрос пользователю при изменение реквизита |
Я |
26.04.18 — 09:37
На форме выведен реквизит.
Нужно при выборе определенного значения выводить пользователю вопрос. «Вы точно уверены. При изменение удалю данные».
Если он согласен — значение реквизита меняется и я выполняю ряд других действий. А если нет — то ничего не делаю.
Событие ОбработкаВыбора я думаю мне нужна. Там видно что я выбрал и видно что я изменяю.
В нем я могу отказаться от изменения написав СтандартнаяОбработка = Ложь.
Но мне там надо задать вопрос. И тогда я выйду из контекста этой процедуры.
Видел пример с событием ПриЗакрытие, где задавалась глобальная переменная и в событие проверялось ее значение, а в обработке события вопроса завалось ее значение и писалось Закрыть() чем вызывало событие ПриЗакрытие еще раз.
Я вроде видел где то в типовых кон-ях подобно, но не помню где чтобы поискать
1 — 26.04.18 — 09:41
Кто тот негодяй, который запрещает тебе присвоить нужное выбраное значение без «контекста это процедуры»?
2 — 26.04.18 — 09:45
3 — 26.04.18 — 09:46
ПоказатьВопрос(Новый ОписаниеОповещения(«ОбработкаВыбораЗавершение», ЭтотОбъект),
«Закрывать форму?», РежимДиалогаВопрос.ДаНет)
И все. в эту процедуру он уже не вернется
4 — 26.04.18 — 09:48
Вижу такое решение.
В обработке ПриИзменение запросом получать значение реквизита из базы и сравнивать, в случае нужного ответа возвращать значение назад.
Но что то мне кажется это не правильно.
5 — 26.04.18 — 09:50
(3) МойВажныйРеквизит = ДополнительныеПараметры.ВыбраноеЗначение;
6 — 26.04.18 — 09:50
В первый раз этот вопрос пользователя напугает, а в последующие он тупо будет жать на автомате. Бесполезняк.
7 — 26.04.18 — 09:51
Вообще да, такое надо перед записью спрашивать, когда все изменения применяются.
8 — 26.04.18 — 09:51
«при выборе определенного значения» // Подробнее
9 — 26.04.18 — 09:51
(4) У конструктора описания оповещения третьим параметром идёт произвольный доп. параметр, он будет передан в обработчик оповещения — ну и передай через него выбранное значение, а в обработчике оповещения результата вопроса в зависимости от ответа пользвоателя присваивай это значение своему реквизиту или нет.
10 — 26.04.18 — 09:52
(8) Вы выбрали торговую точку, проклятую генереальным. Ваша зарплата будет очищена. Продолжить?
11 — 26.04.18 — 09:53
А причина подобных нелепых вопросов, конечно, в кривой архитектуре процесса работы с формой. Нефиг менять какие либо данные в базе пока юзер не нажмет записать.
12 — 26.04.18 — 09:55
А не лучше ли сделать на манер стандартной блокировки редактирования номера документа?
То есть хочешь влезть в опасный реквизит — будь добр нажать кнопку, снимающую с него ридонли.
И регулировать все это дело доступностью полей, безо всяких голимых асинхронных вызовов
13 — 26.04.18 — 09:55
(7) не нужно ничего спрашивать, информации на форме должно быть достаточно чтобы все остальное сделать без вопросов.
14 — 26.04.18 — 10:00
В общем зачем мне все это надо.
Есть реквизит «Вид операции»
Если вид операции №1 то обязательные реквизиты для заполнения одни.
Если другой — другие.
Если они зайдут и выберут первый вид операции, заполнят все. А потом захотят изменить тип, я хочу удалить значения реквизитов которые не участвуют в другом виде операции.
Но считаю что пользователь должен быть предупрежден
15 — 26.04.18 — 10:04
(5) не очень понял.
1.в событие ОбработкаВыбора сразу написать СтандартнаяОбработка = Ложь
2. Передать выбранное значение в вопросе
3. В обработке результата вопроса написать Объект.МойРевизит = ДопПараметры.ВыбранноеЗначение
Правильно?
16 — 26.04.18 — 10:05
(14) Если они у тебя постоянные, значения твоего вида операции, заполни сам. Или просто при изменении Вопрос задай, даНет, и очищай по ответу. Это еще делается доступностью элементов формы, если реквизыты отличаются
17 — 26.04.18 — 10:08
(16) Первую часть не понял. Но в ПриИзменение предыдущее значение уже не доступно через точку, мне кажется получать его из базы, сравнивать и присваивать нужное значение не правильно. Опять заморачиваться с модифицированностью, чтобы если пользователь по факту ничего не менял, то не было признака изменения
18 — 26.04.18 — 10:10
(17) Если ВИДЫОПЕРАЦИИ используют только определенные значения, тогда при изменении ВИДАОПЕРАЦИИ заполняй остальные реквизиты сам, и доступность элементов поставь ЛОЖЬ
19 — 26.04.18 — 10:11
(13) Боже упаси от подобных «проектировщиков».
20 — 26.04.18 — 10:13
«А почему, Галина Ивановна, вы перед записю не заглянули на 15 вкладку, где серенький чекбокс полностью меняет смысл операции?»
21 — 26.04.18 — 10:20
(18) И откуда я возьму эти значение других реквизитов, если их вводит пользователь?
Т.е. для одного вида операции важно чтобы был к примеру указан договор.
А для другого не важен, так зачем записывать его значение если пользователь умудрился его заполнить?
(20) Ну я готов услышать годную версию как это делается.
Есть документ. Им принимается продукция от поставщика, а так же он используется для приемки товара с другого склада внутри производства.
Если от поставщика то нужно знать номер и дату входящего документа.
Если же пользователь выберет вид операции «из другого склада», то у этой операции нет даты и номера входящего документа.
Я делаю эти реквизиты на форме не доступными
Но их же нужно очистить. А для этого я хочу спросить пользователя, что он знает что делает.
22 — 26.04.18 — 10:20
Предложу такое решение.
В палитре свойств элемента формы есть такие свойства:
«ОтображатьПредупреждениеПриРедактированиии» и «ПредупреждениеПриРедактировании» (см. http://joxi.ru/YmEYJjGhZ4Xebm )
Можно установить эти свойства, а при изменении поля уже безусловно выполнять нужный алгоритм.
23 — 26.04.18 — 10:24
(22) Как вариант, но не спасает, если пользователь открыл документ. Начал менять реквизит, согласился с предупреждением. Заполнил все. Опять «случайно» поменял вид операции и он уже не предупреждает о последствиях
24 — 26.04.18 — 10:38
В общем сделал так:
&НаКлиенте
Процедура ВидПриемкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ВыбранноеЗначение <> Объект.ВидПриемки И ВыбранноеЗначение = ПолучитьВидПриемкиШокер() Тогда
ПоказатьВопрос(Новый ОписаниеОповещения(«ПередЗакрытиемЗавершение», ЭтотОбъект,ВыбранноеЗначение),
«Данные о входящем документе будут очищены. Продолжить?», РежимДиалогаВопрос.ДаНет);
СтандартнаяОбработка = ЛОЖЬ;
ИначеЕсли ВыбранноеЗначение <> Объект.ВидПриемки Тогда
Элементы.ВходящийНомерДата.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытиемЗавершение(РезультатВопроса, ПараметрыЗаписи) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Объект.ВидПриемки = ПараметрыЗаписи;
Элементы.ВходящийНомерДата.Доступность = ЛОЖЬ;
Объект.НомерВходящегоДокумента = Неопределено;
Объект.ДатаВходящегоДокумента = Неопределено;
Объект.ДатаПроизводства = Неопределено;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьВидПриемкиШокер()
Возврат Перечисления.КА_ВидыПриемки.ИзШокера;
КонецФункции
25 — 26.04.18 — 11:13
(20) 15 вкладок и галку изменяющую суть операции делают те же люди, которые задают вопросы перед записью.
Mort
26 — 26.04.18 — 11:14
+(25) И для них есть отдельное название.
В этой небольшой статье мы рассмотрим три способа, как в 1С показать пользователю вопрос.
В 1С Предприятие есть возможность средствами встроенного языка показать пользователю окно с вопросом и несколькими вариантами ответа, например “Вы уверены, что хотите уничтожить все документы с начала времен?” и ответы “Да, Нет, Я подумаю, Отмена”.
Метод «Вопрос»
Простейший способ показать вопрос пользователю – метод глобального контекста Вопрос. Этот метод является синхронным и к тому же модальным, и не рекомендуется к использованию, однако все еще встречается как в различных обработках и отчетах, так и в конфигурациях. Использовать его очень просто – мы указываем строку вопроса, варианты ответа, и обрабатываем выбранный пользователем вариант.
&НаКлиенте Процедура КомандаВопрос(Команда) Ответ = Вопрос("Вы видите текст вопроса?", РежимДиалогаВопрос.ДаНет); Сообщить("Ваш ответ "+ Ответ); КонецПроцедуры
Но, как всегда, есть нюансы. У этого метода есть несколько необязательных параметров, такие как таймаут, кнопка по умолчанию, заголовок, и кнопка таймаута (на ней будут отображаться оставшиеся секунды до таймаута). Кроме того, помимо системных режимов диалога (“Да/Нет”, “Ок/Отмена” и других), разработчик может задать свой список значений с вариантами ответа на вопрос.
&НаКлиенте Процедура ВопросИзСписка(Команда) СписокКнопок = Новый СписокЗначений; СписокКнопок.Добавить("Синий", "Синий"); СписокКнопок.Добавить("Зеленый", "Зеленый"); СписокКнопок.Добавить("Красный", "Красный"); Ответ = Вопрос("Какой провод перерезать?", СписокКнопок, 20,,,"Красный"); Сообщить("Вы перерезали "+ Ответ + " провод"); КонецПроцедуры
Ну и вишенка на торте. Мало кто знает, а еще меньше тех кто пользуется – вопрос можно задавать в виде форматированной строки. Попробуйте, вдруг вам понравится:)

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

&НаКлиенте Процедура КомандаВопрос(Команда) Ответ = Неопределено; ПоказатьВопрос(Новый ОписаниеОповещения("КомандаВопросЗавершение", ЭтотОбъект), "Вы видите текст вопроса?", РежимДиалогаВопрос.ДаНет); КонецПроцедуры &НаКлиенте Процедура КомандаВопросЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт Ответ = РезультатВопроса; Сообщить("Ваш ответ "+ Ответ); КонецПроцедуры
Разумеется, получившийся код можно и нужно “причесать” – можно вынести описание оповещения в отдельную переменную, добавить дополнительные параметры, убрать ставший лишним код и т.д.
Метод ВопросАсинх
Начиная с версии 8.3.18 в платформе 1С появились новые асинхронные методы, работа с которыми во многом похожа на asinc / await в JavaScript. Мы объявляем метод с ключевым словом Асинх, и в этом методе становится возможным использовать асинхронные методы. Перед вызовом метода ВопросАсинх мы указываем еще одно ключевое слово “Ждать”. Сам по себе метод ВопросАсинх не останавливает выполнение кода, и если не указать “Ждать”, то весь код ниже будет выполнен, и результат может быть не тот, что ожидался. По большому счету, это синтаксический сахар, призванный упростить код и облегчить жизнь разработчику.
Попробуйте убрать ключевое слово “Ждать” и сравните поведение программы 😉
&НаКлиенте Асинх Процедура КомандаВопросАсинх(Команда) Ответ = Ждать ВопросАсинх("Вы заметили, что это асинхронный вопрос?", РежимДиалогаВопрос.ДаНет,,,"А ведь это асинхронный вопрос!"); Сообщить("Ваш ответ "+ Ответ); КонецПроцедуры
В остальном, этот метод имеет все те же параметры, что и метод “Вопрос”, который мы рассмотрели в самом начале.
Ответы
В зависимости от того, как мы задали параметр “Кнопки”, ответы могут быть самые различные. Если использовать РежимДиалогаВопрос, то у ответа тип значения будет КодВозвратаДиалога. Если же указать кнопки в виде списка значений, то в поле Ответ будет содержаться значение, привязанное к соответствующей кнопке. Типы значений в списке кнопок можно задавать самые различные. А следовательно, и логику обработки ответа можно реализовать самую разную, в зависимости от полученного значения и его типа.
&НаКлиенте Процедура ОтветыРазныхТипов(Команда) СписокКнопок = Новый СписокЗначений; СписокКнопок.Добавить(2, "2"); СписокКнопок.Добавить("Привет", "Привет"); //В конфигурации должен быть справочник Организации с предопределенным элементом ОсновнаяОрганизация СписокКнопок.Добавить(ПредопределенноеЗначение("Справочник.Организации.ОсновнаяОрганизация"), "Справочник"); СписокКнопок.Добавить(ТекущаяДата(), "Сегодня"); СписокКнопок.Добавить(КодВозвратаДиалога.Пропустить, "Пропустить"); Ответ = Вопрос("какой тип значения у выбранного ответа?", СписокКнопок); Если ТипЗнч(Ответ) = Тип("Число") Тогда Ответ = Ответ*2; ИначеЕсли ТипЗнч(Ответ) = Тип("Строка") Тогда Ответ = Ответ + " программист 1С!"; ИначеЕсли ТипЗнч(Ответ) = Тип("СправочникСсылка.Организации") Тогда ОткрытьЗначение(Ответ); ИначеЕсли ТипЗнч(Ответ) = Тип("Дата") Тогда Ответ = НачалоДня(Ответ); Иначе //Код ответа Пропустить, ничего не делаем КонецЕсли; Сообщить("Тип значения " + ТипЗнч(Ответ) + "; значение " + Ответ); КонецПроцедуры
Пользуйтесь асинхронными методами, задавайте пользователям коварные вопросы, и до новых встреч!
Вопросы по налогам, бухгалтерии и трудовому законодательству
Задайте вопрос и получите бесплатную консультацию. Опытные консультанты с опытом работы в налоговой инспекции помогут разобраться в различных нюансах налогообложения, бухгалтерии и трудового законодательства.
-
Latest
- Votes
- Unanswered
декларация 3ндфл
подавала заявление через личный кабинет ФНС ещё в феврале 2023г. в личном кабинете нет результатов проверок! звонила в налоговую инспекцию …
-
0
Ответы
4 часа ago
2
ЭЦП
Ассоциация «Объединение автопроизводителей России» (ИНН 7701336202/771501001) является некоммерческой, общественной организацией. Де-юре руководит Председатель Совета Ассоциации. Де-факто руководство осуществляет Исполнительный директор, …
-
0
Ответы
возврат налогового вычета
Добрый день! 17.03.23 была повторно подана декларация за 2022 года (корректировка суммы на возврат налогового вычета на недвижимость), интересует когда …
-
1
Ответы
Возврат по 2-НДФЛ
Здравствуйте. Подовала на возврат 2НДФЛ 15.03.23. Проверка прошла 03.03.23 без нарушений. Пишут что возвращено на расчетный счёт. Через сколько ждать …
-
1
Ответы
Налоговый вычет
24.04.23 пришёл отказ на возврат налогового вычета по ипотеке за 2020 год на сумму 88359₽. Какие документы мне ещё необходимо …
-
2
Ответы
Пенсионные льготы
Какие документы и куда нужно отправить в налоговую для получения пенсионных льгот?
-
1
Ответы
Налог после продаже квартиры
здравствуйте, в скором времени вступлю в право собственности второй квартиры (после смерти родственника) если я первую квартиру скажем временно подарю …
-
1
Ответы
Вопрос по НДФЛ
Добрый день! У меня есть вопрос по НДФЛ: имею в собственности земельный участок (земли населенных пунктов, для сельскохозяйственного производства): ½ …
-
1
Ответы
По декларации на доходы
Добрый день. В прошлом году мы продали квартиру, находящуюся в общей собственности с мужем. Квартира была в собственности меньше 5 …
-
1
Ответы
Трудовой договор
Здравствуйте, могу ли я оформить сотрудника по трудовому договору за 3 месяца назад?
-
1
Ответы
-
1
Ответы
Встала задача — перед записью документа произвести некоторые проверки и задать вопрос пользователю, в зависимости от ответа — провести документ или нет.
Все бы хорошо, но логика не модальных диалогов приводит нас к тому, что вопрос еще не отвечен, а процедура, вызвавшая ее, уже завершила свою работу.
Есть несколько вариантов решения, один — это замена стандартных команд своими, второй использование дополнительных переменных и повторный вызов процедуры.
В моем случае инициирует все процедура ПередЗаписью() (я делал в расширении, перед):
//Объявляем ряд глобальных переменных в контексте клиента
//Пока переменные не переопределены их значение равно - Неопределено
&НаКлиенте
Перем ОтказатьВПроведении;
&НаКлиенте
Перем глПараметрыЗаписи;
&НаКлиенте
Процедура Расш1_ПередЗаписьюПеред(Отказ, ПараметрыЗаписи)
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
глПараметрыЗаписи=ПараметрыЗаписи;
Если ОтказатьВПроведении=Неопределено Тогда
ДиалогСВопросом();
Отказ=Истина; // завершаем работу процедуры в самом ее зачатке
Иначе
Отказ=ОтказатьВПроведении;
ОтказатьВПроведении=Неопределено;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДиалогСВопросом()
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса",ЭтотОбъект);
ПоказатьВопрос(Оповещение,Строка("Вы уверены что хотите провести отгрузку?"),
РежимДиалогаВопрос.ДаНет,0,КодВозвратаДиалога.Да,"Отгрузить товар?");
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ОтказатьВПроведении=Ложь;
Иначе
ОтказатьВПроведении=Истина;
КонецЕсли;
Записать(глПараметрыЗаписи);
КонецПроцедуры
Вся мысль заключается в следующем:
После нажатия кнопки провести проверяется переменная ОтказатьВПроведении, если она равна неопределено, тогда вопрос еще не задавался запускаем выполнение процедур вопроса и ставим отказ в истину, чтобы документ не провелся. В процедуре после вопроса формируются новые значения переменной ОтказатьВПроведении (на этот момент ПередЗаписью уже завершился), и в конце снова запускаем запись с параметрами проведения. Переменная ОтказатьВПроведении уже имеет значение отличное от Неопределено, значит вопрос задавался, выполняем дальше процедуры/функции сообразуясь с ответом пользователя. Незабываем очистить переменную ОтказатьВПроведении.
UP 21/05/2022
Был много удивлен, увидев свой пост на этот вопрос заданный мной в гугле, но даже при этом я не удовлетворился описанным методом и упростил его использовав ПараметрыЗаписи:
ПередЗаписью (BeforeWrite)
Синтаксис:
ПередЗаписью(<Отказ>, <ПараметрыЗаписи>)
Параметры:
<Отказ>
Тип: Булево.
Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет и будет вызвано исключение.
Значение по умолчанию: Ложь.<ПараметрыЗаписи>
Тип: Структура.
Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
Параметр РежимПроведения может отсутствовать, если режим проведения в документе не определен.
//НЕ Объявляем ряд глобальных переменных в контексте клиента
&НаКлиенте
Процедура Расш1_ПередЗаписьюПеред(Отказ, ПараметрыЗаписи)
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если ПараметрыЗаписи.Свойство("ОтказатьВПроведении") Тогда
ДиалогСВопросом();
Отказ=Истина; // завершаем работу процедуры в самом ее зачатке
Иначе
Отказ=ПараметрыЗаписи.ОтказатьВПроведении;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДиалогСВопросом()
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса",ЭтотОбъект);
ПоказатьВопрос(Оповещение,Строка("Вы уверены что хотите провести отгрузку?"),
РежимДиалогаВопрос.ДаНет,0,КодВозвратаДиалога.Да,"Отгрузить товар?");
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт
ПараметрыЗаписи=Новый Структура;
ПараметрыЗаписи.Вставить("ОтказатьВПроведении",Результат = НЕ КодВозвратаДиалога.Да);
Записать(ПараметрыЗаписи);
КонецПроцедуры
Здесь логика почти такая же, но переменная ОтказатьВПроведнии превращается в свойство стандартной структуры ПараметрыЗаписи, что уменьшает код и улучшает его читаемость.
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Гарантия", ЗначениеРеквизита);
Этот способ подходит для поиска по реквизитам справочника. И он ищет только первый элемент и не годится, если их несколько.
Но, поскольку вы пишете что вам нужно осуществить поиск по дополнительному реквизиту, то вам прийдеться писать запрос, и решение зависит от того, как в вашей конфигурации реализованы дополнительные реквизиты.
Например, в конфигурации УНФ, дополнительные реквизиты, это элементы табличной части справочника Номенклатура. При этом «свойство», т.е. имя реквизита, в вашем случае «Гарантия», это план видов характеристик ДополнительныеРеквизитыИСведения. Запрос будет выглядеть примерно так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| НоменклатураДополнительныеРеквизиты.Ссылка КАК НоменклатураСсылка
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
| И НоменклатураДополнительныеРеквизиты.Значение = &Значение";
Запрос.УстановитьПараметр("Значение", ЗначениеГарантии);
Запрос.УстановитьПараметр("Свойство", СсылкаНаПВХ_Гарантия);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;
