Редактирование комментариев в закрытом периоде

13.11.14

Разработка - Универсальные функции

Часто уже после закрытия периода пользователям требуется написать комментарий в документе закрытого периода. В тексте описано, как можно это сделать с минимальными изменениями

в процедуре ПередОткрытием добавляем новые строки

ЭлементыФормы.Комментарий.Данные="";
ЭтаФорма.УстановитьДействие("ПередЗакрытием", Новый Действие("ПримерПередЗакрытием"));

добавляем новую процедуру ПримерПередЗакрытием

процедура ПримерПередЗакрытием(Отказ, СтандартнаяОбработка)
если ЭлементыФормы.Комментарий.Значение<>Комментарий тогда
Об=Ссылка.ПолучитьОбъект();
Об.ОбменДанными.Загрузка=Истина;
Об.Комментарий=ЭлементыФормы.Комментарий.Значение;
Об.Записать();
конецесли;
конецпроцедуры


в конце процедуры ПриОткрытии добавляем строки

если НЕ ТолькоПросмотр тогда
ЭлементыФормы.Комментарий.Данные="Комментарий";
иначе
ЭлементыФормы.Комментарий.Значение=Комментарий;
конецесли;
примечание: следует иметь в виду, что при настроенном обмене между базами, измененный таким образом комментарий не будет выгружен из за установленного флага ОбменДанными.Загрузка=Истина, за уточнение спасибо kosmo0

закрытый период редактирование комментарий

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2670    0    John_d    8    

54

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4607    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3961    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8821    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16143    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7243    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Re:аниматор 338 13.11.14 18:19 Сейчас в теме
Нужно руководствоваться правилами (период закрыт, всё, ни каких изменений), а не хотениями тормозных пользователей. ИМХО.

P.S. пусть себе в блокнот пишут комментарии :-)
dav1984; Boudybuilder; shootnik; aximo; Aleks_Antonuk; necropunk; PowerBoy; shalimski; Alissa_Maty; +9 7 Ответить
2. ekaruk 4896 13.11.14 19:53 Сейчас в теме
Бредовое решение.
При каждом открытии сбрасывать комментарий.
При этом пользователю выдастся сообщение, что редактирование запрещено, но документ перезапишется.
3. bds22 20 13.11.14 20:10 Сейчас в теме
(2) ekaruk,
Вы просто не поняли, как работает этот код)))
Затирается перед открытием не комментарий, а источник данных для поля ввода, благодаря чему поле комментария становится доступным для редактирования.
Перед закрытием программа проверяет, изменился ли комментарий.
Никакого сообщения о том, что редактирование запрещено, не будет.
если что-то непонятно, спрашивайте
4. ekaruk 4896 13.11.14 21:21 Сейчас в теме
(3) В Вашем решении комментарий сохранится независимо от того, хочет ли этого пользователь.
Даже если он нажал "закрыть".
А еще, насколько я помню, в типовых факт закрытия периода проверяется перед сохранением документа, т.е. изначально документ будет открыт в режиме корректировки и код вообще не сработает.
Да и вообще нельзя без необходимости перезаписывать документ в закрытом периоде.
Даже в режиме обмена данными. Хотя бы потому, что не все механизмы, вызываемые при сохранении, могут этот режим обрабатывать.
В общем решение плохое.
6. bds22 20 14.11.14 05:01 Сейчас в теме
(4) ekaruk,
В Вашем решении комментарий сохранится независимо от того, хочет ли этого пользователь.
Даже если он нажал "закрыть".

именно так, только кнопка "закрыть" доступна. если для ваших пользователей важно, чтобы не только кнопка Закрыть была доступна, но и ОК, это не проблема сделать
насколько я помню, в типовых факт закрытия периода проверяется перед сохранением документа, т.е. изначально документ будет открыт в режиме корректировки и код вообще не сработает

ошибаетесь - откроется для чтения. да и как код не сработает, если он работает в программе?)))
В общем решение плохое.

в нашем случае это единственный выход, пользователи довольны
5. AlX0id 13.11.14 23:34 Сейчас в теме
Короче, прилепите свойство - и не парьтесь. Его хоть уредактироваться можно..
7. bds22 20 14.11.14 05:07 Сейчас в теме
(5) AlX0id, со свойствами хорошая идея, но в любом случае свойство придется выводить в журнал документов, в ПриПолученииДанных.
кроме комментариев данное решение у нас используется также в документе "Акт сверки"для установки пометки "Сверка согласована". т.е. в документе сверка будет не согласована, в свойствах - согласована, что вызовет путаницу
8. Fox-trot 156 14.11.14 06:35 Сейчас в теме
(7) правильнее было б создать отдельный регистр сведений для ваших комментариев и хоть баллады пишите.
а так судя по коду вы еще там не все грабли пропахали. я гарантирую это
9. bds22 20 14.11.14 06:46 Сейчас в теме
(8) Fox-trot, в данном случае это плохое предложение, даже свойства лучше - это может сделать любой пользователь без программиста. давайте не будем бросаться словами на ветер, сказали А, говорите Б (это я про грабли)
10. vandalsvq 1537 14.11.14 16:07 Сейчас в теме
(9) не бывает "единственно верного решения", как и нет "серебрянной пули" (да простит меня Алексей). Данный вариант мне лично тоже не очень нравится, ни как он сделан, ни зачем он сделан. Конкретно не нравится перезапись документа при изменении одного лишь реквизита. Хотя другого выбора нет, но надо бы гарантировать что в модуле объекта и во всех подписках ОбменДанными.Загрузка контролируется и не произойдет изменений.
Кмк, даже отдельная кнопка для редактирования комментария была бы более оправдана. В форму списка ее (в панель и контекстное меню) и в документ. По нажатию открываешь поле ввода строки, а там уже записываешь или что надо то и делаешь. И храни хоть в свойстве, хоть в реквизите, хоть в регистре.

Прости, но "минус". Это даже хуже перенумераторов.
11. bds22 20 14.11.14 17:37 Сейчас в теме
(10) vandalsvq,
не бывает "единственно верного решения"

я не говорил, наоборот, мне все доказывают, что это единственно неверный результат
Данный вариант мне лично тоже не очень нравится, ни как он сделан, ни зачем он сделан. Конкретно не нравится перезапись документа при изменении одного лишь реквизита

у меня был выбор или перезаписывать документ, или все время операторам будут открывать период
Хотя другого выбора нет, но надо бы гарантировать что в модуле объекта и во всех подписках ОбменДанными.Загрузка контролируется и не произойдет изменений.

в стандартной конфигурации эти проверки везде есть
По нажатию открываешь поле ввода строки, а там уже записываешь или что надо то и делаешь.

это лишнее действие, чем оно лучше? из журнала редактировать тоже комментарий в документе не совсем удобно
Прости, но "минус". Это даже хуже перенумераторов.

да нет проблем. но мне особенно понравился первый вариант твоего комментария (до исправления), я рад, что ты сам разобрался
14. vandalsvq 1537 14.11.14 19:35 Сейчас в теме
(11) первый вариант был покруче, согласен, знатно я там "ляпнул". Стыдно, конечно. С другой стороны вспомнил я быстрее, чем мне пустили пулю в лоб :)

Давай по-порядку:
Про единственный вариант вот - сообщение (6)
в нашем случае это единственный выход

Если ты что другое имел в виду, скажи.

в стандартной конфигурации эти проверки везде есть

Пусть будет по-твоему. Со стандартными работаю, но утверждать бы не стал. Каждому свое.

это лишнее действие, чем оно лучше? из журнала редактировать тоже комментарий в документе не совсем удобно

Давай считать.
Твой вариант:
Открыли журнал документов и нашли документ -> Открыли документ -> Активизировали поле комментарий -> Изменили значение поля -> Нажали "ОК"
Мой вариант:
Открыли журнал документов и нашли документ -> Открыли документ -> Нажали "Редактировать комментарий" -> Изменили значение поля -> Нажали "Записать"
При этом действие №2 не нужно если кнопка доступна и в списке документов. Не прав?

(13) PiccaHut001, я же написал "хотя другого выбора нет". Но здесь я маленько слукавил. Другой выход есть, но надо пересматривать методику работы с реквизитом. Например выносить его за пределы документа, а пользователю отображать в документе считывая из другого места. Варианты всегда есть.

Кстати немного хорошего в сторону автора - на самом деле прикольное решение с обнулением источника данных в элементе формы с целью открытия для изменений. Это действительно забавно придумано.
13. PiccaHut001 14.11.14 18:49 Сейчас в теме
(10) vandalsvq,
Конкретно не нравится перезапись документа при изменении одного лишь реквизита.
- по другому в 1С нельзя, странная претензия. bds22, спасибо, интересное решение, в похожей ситуации я лепил модальную форму, которая вызывалась из меню действия и нереально коряво работала. Знал бы об этом способе, сэкономил бы себе 3 часа времени.
12. bds22 20 14.11.14 17:47 Сейчас в теме
ну и последнее, что я хочу сказать по теме и почему я это разместил
я считал, что нашел интересный способ сделать возможность редактирования поля в документе, который открыт только для чтения и сообществу это будет интересно увидеть. добавить кнопку, которую пользователь должен найти в документе, а не просто в привычном месте ввести комментарий - это тривиально, и если бы я сделал именно так, я бы даже не стал здесь об этом писать.
это решение (с возможностью редактирования реквизита документа) может быть использовано для других целей аккуратного вмешательства в конфигурацию
спасибо за внимание
Азверин; shakmaev; mtv:); ketr; sHkZ; tigory; vandalsvq; PiccaHut001; +8 Ответить
17. AlX0id 17.11.14 12:30 Сейчас в теме
(12) аккуратным вмешательство было бы, если бы вы прикрутили дополнительную внешнюю печатную форму "Изменить комментарий", которая бы содержала ваш код. Точнее сказать, это вообще не было бы вмешательством в конфигурацию.
15. vandalsvq 1537 14.11.14 19:41 Сейчас в теме
(0) кстати, если бы статья была о том как в обычной форме с установленным признаком "ТолькоПросмотр" = Истина сделать доступным реквизит без обхода по элементам, то тут безоговорочный плюс. Но, была выбрана другая подача материала. Может стоит изменить статью? Получается что вместо того чтобы увидеть смекалку автора в одном моменте, все обращают внимание на проблематику и предложенный код (оформление которого вообще за гранью добра и зла) и отсюда негодование.
Что думаешь автор? Может на самом деле сосредоточить мнение сообщества на другом, а "обвязку" либо убрать в тень, либо вообще убрать.
Кстати свой минус я отзову. Пояснение автора в сообщении (12), предложило другую трактовку статьи.
16. bds22 20 14.11.14 20:06 Сейчас в теме
(15) vandalsvq, на самом деле если бы я просто написал, что таким образом можно сделать поле доступным для редактирования, пользы от этого 0. справедливо бы на это последовал вопрос, "ну, редактируется, а зачем?)))"
про единственный выход я написал не в тексте статьи, а в комментарии в ответ на такую фразу "При этом пользователю выдастся сообщение, что редактирование запрещено, но документ перезапишется". единственный способ записать - это установить ОбменДанными.Загрузка в Истину и после этого записать
18. ARL 313 19.11.14 10:19 Сейчас в теме
Плюс за "ЭлементыФормы.Комментарий.Данные="";". Как то не задумывался об этом, теперь возьму на вооружение.
P.S. Статьи всегда рассматриваю с точки зрения новых идей, а не буквальных реализаций.
mtv:); droplet; +2 Ответить
19. Трактор 1246 19.11.14 12:48 Сейчас в теме
Автор напомнил, что я тоже эту задачу когда-то решал.
Порылся у себя в закромах и написал статью на тему этой публикации http://infostart.ru/public/313753/
21. bds22 20 19.11.14 15:09 Сейчас в теме
(19) Трактор, у Вас совсем другое, в закрытом периоде поменять комментарий реквизит в вашем примере нельзя. Система нагружается меньше, это плюс. Обычно пользователь нажимает ОК, редко "Записать". Если же нажимает ОК, надо как-то определить, что же надо в данном случае - записать или провести, и при этом пользователь не должен быть введен в заблуждение. Уверен, что Вы это как-то учитываете, это интересный момент, напишите, как Вы это сделали
22. Трактор 1246 19.11.14 16:31 Сейчас в теме
Обычно пользователь нажимает ОК

(21) именно поэтому я решил, что я умнее пользователя и принял решение перепроводить только в случае, если изменены реквизиты влияющие на перепроведение или не изменены вообще. А если пользователь поменял что-то незначительное, то пусть так записывается. Эта логика описывается в процедуре ПередЗаписью. Я не настаиваю на абсолютной верности своего решения. Но пока неприятностей не было.

Наши с тобой решения похожи. Только ты решаешь на клиенте, а я на сервере и для списка реквизитов.

в закрытом периоде поменять комментарий реквизит в вашем примере нельзя

Отчего ж нельзя? Можно также как у тебя написать ПередЗаписью ОбменДанными.Загрузка = Истина;

Если СписокИзменённыхРеквизитовВызывающихПерепроведение = "" И Проведен И СписокИзменённыхРеквизитов.Количество() > 0 Тогда
РежимЗаписи = РежимЗаписиДокумента.Запись;
ОбменДанными.Загрузка = Истина;
ИначеЕсли НЕ РедактированиеЗаднимЧислом и Дата < НачалоДня(ТекущаяДата()) И Не РольДоступна("ПравоАдминистрирования") Тогда
Сообщить("Недостаточно прав для проведения реализации " + Номер + " " + Строка(Дата) +
" задним числом. Изменены реквизиты: " + СписокИзменённыхРеквизитовВызывающихПерепроведение);
Отказ = Истина;
КонецЕсли;
20. kosmo0 107 19.11.14 14:30 Сейчас в теме
Об.ОбменДанными.Загрузка=Истина;
и в базах данных использующих планы обмена получаете ситуацию, в которой измененные комментарии не уходят по обмену (в стандартном случае). В качестве примечания рекомендовал бы поместить в статью.
26. DimaP 63 23.12.14 11:43 Сейчас в теме
(20) kosmo0, как это не уходят? Уходят, да ещё и изменённые в другой базе будут.
23. mtv:) 1027 20.11.14 08:43 Сейчас в теме
Хочу обратить Ваше внимание, что на Инфостарте есть еще одна публикация о редактировании реквизитов в закрытом периоде - "Есть ли жизнь в закрытом периоде? Или способ заставить работать "Обработку заполнения табличных частей" в закрытом периоде".
В этой публикации рассматриваются два способа:
1. С минимальными изменениями кофигурации (добавляется всего ОДНА строка!);
2. Без внесения изменений в конфигурацию.
24. dyak84 23.12.14 10:09 Сейчас в теме
Конечно комментарий дело нужное, но вызывают вопросы два момента первый, а после внесения комментария нужно перепроводить всю цепочку документов. Второй вопрос а будет ли работать эта схема в типовой УТ 10,3. Зарание спасибо за ответ.
27. bds22 20 23.12.14 12:50 Сейчас в теме
(24) dyak84, если вопрос ко мне - будет работать в типовой. документ записывается но не перепроводится, цепочка не должна измениться
25. dyak84 23.12.14 10:10 Сейчас в теме
28. ketr 125 28.07.15 18:31 Сейчас в теме
Супер! Хитро и красиво!
29. Азверин 3 05.09.19 09:55 Сейчас в теме
Используя приём автора видоизменил под себя: в документе "Счет на оплату" нужно нажимать кнопку, которая меняет реквизит (на форме выведен как текст). Получилось! Респект.
Оставьте свое сообщение