Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения.

08.04.11

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

Стандартные доработки.  Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения.

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

Молочников Олег Spb. 2011.

Стандартные доработки.  Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения.

 

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

 

1.       В Общий модуль ”Полные права” добавьте следующую функцию:


Функция ЗаказыПокупателя_СуществуютСсылки(ЗаказПокупателя) Экспорт
    Если 
ЗаказПокупателя =Документы.ЗаказПокупателя.ПустаяСсылка() Тогда
        Возврат Ложь;
    КонецЕсли;

   
Запрос = Новый Запрос();
   
Запрос.УстановитьПараметр("ЗаказПокупателя", ЗаказПокупателя);

   
ТипЗначения = ТипЗнч(Документы.ЗаказПокупателя.ПустаяСсылка());
   
Счетчик=0;
    Для Каждого
РегистрНакопления Из Метаданные.РегистрыНакопления Цикл
        Для Каждого
РеквизитРегистра Из РегистрНакопления.Измерения Цикл
            Если
РеквизитРегистра.Тип.СодержитТип(ТипЗначения) Тогда
                Если
Счетчик>0 Тогда
               
Запрос.Текст = Запрос.Текст + "
                |ОБЪЕДИНИТЬ ВСЕ
                |"
               
КонецЕсли;
               
Запрос.Текст = Запрос.Текст + "
                |ВЫБРАТЬ
                |   ИСТИНА
                |ИЗ
                |   РегистрНакопления."
+ РегистрНакопления.Имя + " КАК " + РегистрНакопления.Имя + "
                |ГДЕ
                |   "
+ РегистрНакопления.Имя + "." + РеквизитРегистра.Имя + " = &ЗаказПокупателя
                | И "
+ РегистрНакопления.Имя + ".Регистратор <> &ЗаказПокупателя
                |"
;
               
Счетчик=Счетчик+1;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    Возврат НЕ
Запрос.Выполнить().Пустой();

КонецФункции

2.      В  модуль  формы документа в текст функции ”ПриОткрытии()” добавьте следующие строки:

  Если ПолныеПрава.ЗаказыПокупателя_СуществуютСсылки(Ссылка) Тогда
       
ЭтаФорма.ТолькоПросмотр=Истина;
    КонецЕсли;

См. также

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

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

21.05.2024    20144    dimanich70    81    

144

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

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

1 стартмани

18.03.2024    4091    3    John_d    11    

57

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

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

12.02.2024    18082    atdonya    24    

56

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

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

30.11.2023    5503    ke.92@mail.ru    16    

65

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

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

28.08.2023    14743    YA_418728146    7    

166

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

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

2 стартмани

22.08.2023    3581    56    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 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    18480    171    sapervodichka    112    

135
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
0. milkers 2879 07.04.11 13:16 Сейчас в теме
Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения.

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


Перейти к публикации

1. пользователь 07.04.11 13:16
Сообщение было скрыто модератором.
...
7. milkers 2879 07.04.11 13:58 Сейчас в теме
(1)(2) Отслеживается не проведение этого документа а наличие ссылок на этот документ в проводках других документов.
(3) Дата запрета редактирования не отменяет необходимость запрета редактирования сегодняшнего заказа, если на основании этого заказа сделаны другие документы, например реализация.
Пусть сначала распроводят реализацию, потом правят заказ.
(4) Есть и другие важные реквизиты, которые м.б. нельзя менять (Например договор). Их состав строго индивидуален. В примере, для простоты, блокируется все.
(5) Наличие программных изменений для меня уже форсмажер. С таким я разбираюсь индивидуально.
8. пользователь 07.04.11 14:04
Сообщение было скрыто модератором.
...
9. milkers 2879 08.04.11 13:06 Сейчас в теме
(8) Ну, несмотря на объяснения, плюс ты все равно зажал. :D
10. пользователь 08.04.11 13:09
Сообщение было скрыто модератором.
...
2. пользователь 07.04.11 13:20
Сообщение было скрыто модератором.
...
3. пользователь 07.04.11 13:22
Сообщение было скрыто модератором.
...
4. пользователь 07.04.11 13:27
Сообщение было скрыто модератором.
...
5. Поручик 4692 07.04.11 13:33 Сейчас в теме
Про программное изменение заказа (какой-нибудь обработкой, например) забыли оба. Надо добавить соответствующий код или в модуль объекта или в подписку на событие.
kuza_87; Androsovych; +2 Ответить
6. пользователь 07.04.11 13:50
Сообщение было скрыто модератором.
...
11. y22-k 254 08.04.11 16:20 Сейчас в теме
Подпиской не судьба сделать?, а по поводу доступности кнопок, Ест дата запрета
влеплю минус.
Корежить типовую там где можно без этого обойтись.
12. milkers 2879 08.04.11 16:41 Сейчас в теме
(11) По поводу подписки. При групповой обработке заказов покупателей это очень сильно замедлит работу системы. Данный дополнительный контроль актуален именно при ручной попытки изменить документ. Так, что забирай минус обратно :D .
По поводу даты запрета: Дата запрета редактирования не отменяет необходимость запрета редактирования сегодняшнего заказа, если на основании этого заказа сделаны другие документы, например реализация. Пусть сначала распроводят реализацию, потом правят заказ.
13. y22-k 254 08.04.11 17:33 Сейчас в теме
(12) Очень Сильно Это сколько?
Можно просто настроить автоматическую синхронизацию ЗАКАЗ - РТУ или в обратную сторону. или использовать Схему ЗАКАЗ - Корректировка -РТУ
14. milkers 2879 08.04.11 17:47 Сейчас в теме
(13) Зависит о количества строк в документе и количества документов сделанных на основании этого заказа или документов имеющих резерв по этому заказу. Но в большой базе даже простейшее групповое изменение всех заказов может занять несколько суток, так как для каждого заказа он будет динамически строить запрос по всем регистрам накопления и время выполнения каждого запроса может достигать нескольких секунд. В совсем огромных базах мой алгоритм (без изменений), возможно, будет излишне замедлять даже открытие одного заказа.
15. milkers 2879 08.04.11 17:49 Сейчас в теме
(13) А на счет автоматической синхронизации, никак не могу понять, что Вы имеете в виду.
16. Sintson 413 13.04.11 09:46 Сейчас в теме
Решали подобную проблему, Ваш вариант очень замедлит работу системы, особенно в части групповой обработки данных, а также, как показывает опыт на больших базах часто возникают коллизии при таком подходе.
Подобным уже откомментировали, оказывается, так что не пинайте.
17. simuljakr 203 14.04.11 09:26 Сейчас в теме
(16) А как Вы решили подобную проблему, если не секрет ?
18. milkers 2879 14.04.11 10:23 Сейчас в теме
(16) Так как вы не указали кому конкретно вы отвечаете, повторюсь что моя реализация ни как не повлияет на групповую обработку, так как реализована в момент интерактивного открытия пользователем формы. Рискну предположить, что и коллизий мой метод вызывать не должен.
19. Sintson 413 14.04.11 17:36 Сейчас в теме
(18) Прошу прощения, я не разобрался в какой момент времени вызывается тотальная проверка на движения документа.

(17) Запретили изменять проведенный документ пользователям без полных прав.
20. milkers 2879 14.04.11 17:54 Сейчас в теме
(18) Этот вариант хуже, так как на этого пользователя сваливается дополнительная нагрузка.
21. wwizard 7 29.02.12 23:26 Сейчас в теме
22. 1c-intelligence 12849 30.08.12 10:32 Сейчас в теме
Способ хорош простотой своей реализации, но есть ряд вопросов/предложений:

1. ЭтаФорма.ТолькоПросмотр = Истина оставляет доступными некоторые кнопки на командных панелях. Например, кнопки заполнения ТЧ. При этом документ удастся записать, т.к. при закрытии форма спросит "Записать?";
2. Если типовое решение используется нормально, то используются также документы "КорректировкаЗаказаПокупателя", "ИзменениеЗаказаПокупателя". С их помощью удастся внести изменения.
3. Часто есть потребность менять какие-то реквизиты документа или его ТЧ, не меняя при этом содержательной части (комментарий, ответственный, напомнить о событии, подразделение, дата оплаты и т.д.). Ваш метод такие изменения тоже запретит.

Я делал подобное для заказов поставщику, там было так:
1. Подписка ПриЗаписи для регистра накопления ЗаказыПоставщикам (ПриЗаписи, потому что записываемый набор уже в БД и читается запросом);
2. В обработчике подписки просто проверяются остатки регистра по этому заказу.
3. Если остатки отрицательные, ставится Отказ.

В чем смысл:
1. Работает от любого документа (сам заказ, корректировка, ПТиУ, и т.д.);
2. Контролирует как обычное превышение, так и расхождение аналитики (как правило - цена или ставка НДС). В заказе цена стоит 100 р., в ПТиУ указали 101 - все, система фиксирует отрицательный остаток, т.к. контроль идет по всем измерениям;
3. Можно менять любые реквизиты документа, запретов нет - но при проведении выполняется контроль. Т.е. пользователь наколбасил что-то, пытается провести, а ему сообщение выходит, типа вот по такому набору полей у тебя превышение.
4. Пользователь может увеличивать объемы в заказе, т.к. превышения при этом не возникает. Но это считается нормальным, т.е. нет смысла это запрещать.

Такое же решение работает для заказа на производство и внутреннего заказа. По заказу покупателя не делал, т.к. потребности не было.
lavash67; Polzavatel; katavy; kuza_87; sergos3331; +5 Ответить
23. Polzavatel 25.03.14 08:46 Сейчас в теме
Подскажите, как запретить в "Реализации товар и услуг" изменение Менеджерами (роль) документа, если в статусе документа кладовщик (роль) установил статус "Отгружен".
Оставьте свое сообщение