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

08.04.11

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

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

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

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

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

 

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

 

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


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

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

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

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

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

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

См. также

Вставляем картинку из буфера обмена (платформа 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    4606    atdonya    22    

45

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

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

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

30.11.2023    3960    ke.92@mail.ru    16    

61

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

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

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

28.08.2023    8818    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
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
0. milkers 2859 07.04.11 13:16 Сейчас в теме
Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения.

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


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

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

(17) Запретили изменять проведенный документ пользователям без полных прав.
20. milkers 2859 14.04.11 17:54 Сейчас в теме
(18) Этот вариант хуже, так как на этого пользователя сваливается дополнительная нагрузка.
21. wwizard 7 29.02.12 23:26 Сейчас в теме
22. 1c-intelligence 12771 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 Сейчас в теме
Подскажите, как запретить в "Реализации товар и услуг" изменение Менеджерами (роль) документа, если в статусе документа кладовщик (роль) установил статус "Отгружен".
Оставьте свое сообщение