Как провести документ в 1с если закрыт период
У документов в закрытом периоде, пункты меню "Заполнить" становятся недоступны. Нашел способ побороть это.
Попутно два решения, которые дают возможность обычным пользователям изменять некритичные реквизиты документов в закрытом периоде.
Руководство поставило задачу: дать пользователям возможность изменять в закрытом периоде реквизиты, которые не влияют на движения регистров. Это, к примеру, такие реквизиты как Комментарий, Дата и Номер входящего документа, Ответственный и т.д. В итоге получилось два решения, которые и представляю Вам. Может кому-то и пригодится.
Разрабатывалось для УПП. Проверено для "Комплексной автоматизации".
ВАРИАНТ ПЕРВЫЙ. Внешняя подключаемая обработка заполнения табличных частей.
Собственно, задание было реализовать функционал через меню "Заполнить", которое присутствует во всех табличных частях. Поэтому написал внешнюю "Обработку заполнения табличных частей".
Но не тут-то было. В закрытом периоде пункты меню "Заполнить" оказались недоступны.
Пришлось разбираться. Оказывается, что для формы, открытой в режиме "Только чтение", элементы, с установленным свойством "ИзменяетДанные" в значение "Истина", становятся недоступными.
Обойти эту "фичу" без изменения конфигурации, к сожалению, не получилось. Но изменения получились минимальными. Нужно добавить всего одну строчку кода.
Способ заставить работать "Обработку заполнения табличных частей" в закрытом периоде.
Для этого надо выполнить два пункта:
1. В общий модуль УниверсальныеМеханизмы, в функцию ПолучитьДеревоКнопокЗаполненияТабличныхЧастей,
ПОСЛЕ строки :
ДобавитьСтрокуВДеревоКнопок ( СтрокаПодменю , "ЗаполнениеТЧ" + НомерКнопки , ТипКнопкиКоманднойПанели . Действие , ВыборкаДействий . Наименование , Действие , СтруктураРасшифровки , , , , , Истина);
ДОБАВИТЬ одну строку :
СтрокаПодменю . Строки [ СтрокаПодменю . Строки . Количество ()- 1 ]. ИзменяетДанные = Найти ( СокрЛ ( ВыборкаДействий . Наименование ), "*" ) <> 1 ; // ДОБАВЛЕНА 1стр. (MTV 31.03.2012)
Можно выбрать и другой символ, при условии соответствующего изменения в добавляемой строке кода (пункт 1).
ВАРИАНТ ВТОРОЙ. Внешняя подключаемая печатная форма. (Без изменения конфигурации.)
Если нет желания вносить изменение в конфигурацию, то для реализации заданного функционала можно подключить предлагаемую внешнюю печатную форму "Изменение реквизитов в закрытом периоде". В этом случае изменять конфигурацию не нужно.
Выкладываю оба варианта - выбирайте, какой больше понравится. В архиве находятся обе обработки (обработка заполнения табличных частей и внешняя печатная форма). А так же текстовый файл с описанием вносимого изменения.
В представленных обработках, при записи изменений используется следующая конструкция:
Объект . ОбменДанными . Загрузка = Истина;
Объект . Записать ( РежимЗаписиДокумента . Запись );
Таким образом происходит только запись документа без перепроведения. То есть движения документа (записи в регистрах) не изменяются .
Доброе утро! Возник такой вроде бы простенький вопрос, но который решить никак не удается. Вообщем перейдем к сути: В форме списка документа я добавил кнопку которая вызывает форму изменения комментария, я получаю нужное мне значения, но записать этот документ я никак не могу, программа ругается: "Редактирование данных этого периода запрещено. Изменения не могут быть записаны. ". как обойти эту ошибку?
Дарю рабочий код:
УстановитьПривилегированныйРежим(истина); вот решение проблемы и границы все как надо устанавливаются!
Вот сам код:
ТекСтрока = ЭтаФорма.ЭлементыФормы.ДокументСписок.ТекущаяСтрока;
ТекОбъект = ТекСтрока.ПолучитьОбъект();
ТекОбъект.ОбменДанными.Загрузка = Истина;
ТекОбъект.Записать(РежимЗаписиДокумента.Запись);
Режим ОбменДанными.Загрузка ничего не даст, так как проверка вынесена в подписку на событие "ПриЗаписи" и в процедуре подписки режим обмена данными не проверяется.
Как вариант решения: перед записью документа сдвигать дату запрета для текущего пользователя , а потом возвращать обратно. Для текущего пользователя границы даты запрета лежат в параметрах сеанса.
(7) Это точно так происходит?? Потому что я в бухгалтерии 3.0 так делал у меня прокатило!
А вот в УТ 10.3 нифига!
Дарю рабочий код:
(18) "Не прокатывает" означает, что комментарий не меняется у документа или что по-прежнему ругается на период?
(25) Говорили, что ругается на период, теперь про права говорите. Покажите, текст, который дает программа.
Столкнулся с такой проблемой в УТ 10.3. платформа 8.1.
Привилегированный режим установить по "УстановитьПривилегированныйРежим(истина); " не получается. Не поддерживает платформа данный метод.
Привилегированный режим можно установить только на общем модуле конфигурации. Каким и является модуль "ПолныеПрава". Повторюсь, делаю на УТ 10.3 платформа 8.1.
Благодаря разработчикам этой конфигурации, они добавили пару строк в процедуру установки даты запрета, а именно:
Написал обработку содержащую следующий код, который выполнил отмену проведения документа в закрытом периоде:
Суть алгоритма тот же. Скинуть дату запрета в параметре сеанса, после сделать манипуляции с документом и обратно восстановить дату запрета в параметре сеанса.
Добрый день, друзья!
Подскажите, пожалуйста, как мне разрулить такую ситуацию.
Бухгалтеру, у которого права далеко не полные, периодически надо ставить определенную отметку в документе. Случается, - что и в документе в закрытом периоде.
Изменения этой отметки никак не влияют на режим проведения документа.
Поэтому я смело, на время установки этой отметки, включаю Привилегированный режим. Но это - не помогает - система, все одно - ругается на то, что период закрыт и документ не проводит.
Как можно выкрутиться из столь щекотливой ситуации?
(0) у тебя система пытается провести документ, а это влечет результат, который может тебя не порадовать. сделай механизм этой отметки отдельно, например через обработку, чтобы самому управлять режимом записи.
(3) Так о том и речь - что сам пытаюсь управлять, а не получается.
Вот и помощи у сообщества прошу.
Что делаю: перехватываю установку именно этой отметки, только в этом случае - пытаюсь провести даже в том случае, если период закрыт.
(0) Обработчик флажка на форме документа:
(7) ОК, спасибо, это вообще было бы то, что надо.
Но у меня комплексная конфа (КА), там, вроде, такого не встречал. НО - посмотрю
(8) Правда, возможно тут у меня ошибка - обратно ОбменДанными.Загрузка не сбрасывается. Надо проверить будет.
(17) Ну, например, такие, о которых шла речь в (0).
Проверка даты запрета в том случае, когда она (дата запрета) только мешает.
(20) выполняется. Просто во всех проверках условие, типа:
Если обменДанными тогда возврат; конецЕсли;
(22) "Например, такое свойство, как Загрузка, может определять необходимость проведения (непроведения) каких-либо проверок в момент записи объекта (при записи в режиме загрузки можно отказаться от проверки номеров, кодов объектов, наличия каких-либо связанных с загружаемыми объектами данных и т. п., так как эти данные могут быть загружены после). Следует обратить внимание на тот факт, что значение данного свойства не хранится в базе данных. В соответствии с этим все изменения (определения различных коллекций, свойств), которые выполняются через данное свойство, «работают» только в течение существования объекта." (с) Букварь
Насколько я помню в режиме загрузки не срабатывает вообще ни один встроенный механизм контроля. Только то, что ты сам определишь в обработчиках ПередЗаписью и ПриЗаписи.
У документов в закрытом периоде, пункты меню "Заполнить" становятся недоступны. Нашел способ побороть это.
Попутно два решения, которые дают возможность обычным пользователям изменять некритичные реквизиты документов в закрытом периоде.
Руководство поставило задачу: дать пользователям возможность изменять в закрытом периоде реквизиты, которые не влияют на движения регистров. Это, к примеру, такие реквизиты как Комментарий, Дата и Номер входящего документа, Ответственный и т.д. В итоге получилось два решения, которые и представляю Вам. Может кому-то и пригодится.
Разрабатывалось для УПП. Проверено для "Комплексной автоматизации".
ВАРИАНТ ПЕРВЫЙ. Внешняя подключаемая обработка заполнения табличных частей.
Собственно, задание было реализовать функционал через меню "Заполнить", которое присутствует во всех табличных частях. Поэтому написал внешнюю "Обработку заполнения табличных частей".
Но не тут-то было. В закрытом периоде пункты меню "Заполнить" оказались недоступны.
Пришлось разбираться. Оказывается, что для формы, открытой в режиме "Только чтение", элементы, с установленным свойством "ИзменяетДанные" в значение "Истина", становятся недоступными.
Обойти эту "фичу" без изменения конфигурации, к сожалению, не получилось. Но изменения получились минимальными. Нужно добавить всего одну строчку кода.
Способ заставить работать "Обработку заполнения табличных частей" в закрытом периоде.
Для этого надо выполнить два пункта:
1. В общий модуль УниверсальныеМеханизмы, в функцию ПолучитьДеревоКнопокЗаполненияТабличныхЧастей,
ПОСЛЕ строки :
ДобавитьСтрокуВДеревоКнопок ( СтрокаПодменю , "ЗаполнениеТЧ" + НомерКнопки , ТипКнопкиКоманднойПанели . Действие , ВыборкаДействий . Наименование , Действие , СтруктураРасшифровки , , , , , Истина);
ДОБАВИТЬ одну строку :
СтрокаПодменю . Строки [ СтрокаПодменю . Строки . Количество ()- 1 ]. ИзменяетДанные = Найти ( СокрЛ ( ВыборкаДействий . Наименование ), "*" ) <> 1 ; // ДОБАВЛЕНА 1стр. (MTV 31.03.2012)
Можно выбрать и другой символ, при условии соответствующего изменения в добавляемой строке кода (пункт 1).
ВАРИАНТ ВТОРОЙ. Внешняя подключаемая печатная форма. (Без изменения конфигурации.)
Если нет желания вносить изменение в конфигурацию, то для реализации заданного функционала можно подключить предлагаемую внешнюю печатную форму "Изменение реквизитов в закрытом периоде". В этом случае изменять конфигурацию не нужно.
Выкладываю оба варианта - выбирайте, какой больше понравится. В архиве находятся обе обработки (обработка заполнения табличных частей и внешняя печатная форма). А так же текстовый файл с описанием вносимого изменения.
В представленных обработках, при записи изменений используется следующая конструкция:
Объект . ОбменДанными . Загрузка = Истина;
Объект . Записать ( РежимЗаписиДокумента . Запись );
Таким образом происходит только запись документа без перепроведения. То есть движения документа (записи в регистрах) не изменяются .
Закрывать месяц, конечно, в 98% случаев, нужно правильно, и исправив все ошибки.
Но бывает ты уверен, что исправлять не нужно или хочешь помоделировать ситуации.
Тогда, в конфигурации Бухгалтерия предприятия 3.0, есть возможность без доработок отключить проверки контролей
- Откройте Главного меню - Все функции.
- В списке регистров найдите пункт Неактуальные регламентные операции. Откройте его.
- Удалите все элементы из этого окна.
- В окне Закрытия месяца отмените необходимость перепроведения документов в пункте Перепроведение документов
Но "яжпрограммист (а не консультант)", поэтому смотрю код, и нахожу другой вариант отключения запретов, более радикальный!
Вижу, что во многих местах закрытия месяца и регламентных операциях прописан метод
но его код на удивление не инициализирован (для меня оставили наверное), и это видно на рисунке ниже:
Далее, если перетащить данную процедуру в расширение, то можно получить эффективную "отключалку" ошибок прошлых периодов закрытия, препятствующих текущему закрытию.
Расширение подключается через Главное меню - Все функции - Стандартные - Управление расширениями конфигурации - [Подключаем и перезаходим в программу]
Если нужно вернуть типовые запреты, то просто отключаем активность расширения.
По итогу ранее запрещенную операцию можно выполнить через документ Регламентная операция [Ещё] - [Выполнить и закрыть], запреты при этом не сработают.
Расширение проверялось на:
Обработка выгрузки и загрузки данных через XML между идентичными конфигурациями с возможностью установки произвольных отборов на выгружаемые объекты.
Подключаемый отчет на системе компоновки данных по типам объектов 1С показывает: 1) Совокупности таблиц SQL для хранения объекта 1С и их предназначение; 2) Число объектов данного типа; 3) Размеры хранения данных и индексов в MB (мегабайтах); 4) Сравнение данных двух баз
Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен).
Если пользователю не хватает прав на объект, то на практике в 90 % случаев, недостающую роль можно найти через типовой регистр сведений Права ролей. Также с помощью дополнительного отчета или небольшого расширения можно ускорить описанный процесс.
Онлайн диаграмма доступных лицензий 1С и показателей ресурсов сервера 1С в различных измерениях и отборах.
Обработка ищет все объекты базы, в которых одновременно присутствуют перечисленные элементы. Построена на базе типовой обработки Все функции - Стандартные - Поиск ссылок на объект, но позволяет накладывать отбор не по одному объекту, а по нескольким, что позволяет настраивать поиск по комбинациям условий
Часто не хватает визуализации хронологии документов в структуре подчиненности и кнопок проведения. Это расширение конфигурации, с функционалом структуры подчиненности документов, отображающее хронологическую последовательность документов во времени и дающее доступ к проведению, отмене проведения, пометке на удаление документов непосредственно в форме подчиненности.
Обработка для массовой проверки доработок конфигурации: Открытие форм, Печать, Формирование отчетов, Проведение документов, Запись справочников, ПВХ, ПВР. Выдает список обнаруженных ошибок. Рекомендуется применять для тестирования обновленной конфигурации, перед установкой пользователям. В коде используются универсальные методы поэтому подходит для большинства конфигураций, построенных на базе библиотеки стандартных подсистем.
Групповая обработка ссылок вида Объект не найден (502:37855254002e11eb11e73b8f36150d9e) заполняется максимально просто копированием и вставкой из буфера: 1) Выделяет уникальные идентификаторы (далее УИ); 2) Ищет ссылки на объекты базы по УИ; 3) Создаёт пустые объекты с указанным УИ; 4) Регистрирует найденные ссылки для обмена данными. Работает на любых продуктах 8.3
Обработка на управляемых формах для работы с календарями google, событиями календарей и контактами.
Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет.
Выполнил 3 разных теста для проверки серверного оборудования (тест 1С, тесты gilev) на возможное число 1С онлайн-пользователей одновременно работающих на нем и интерпретировал результаты тестов через легких, средних и тяжелых пользователей с помощью таблицы с профилями реальных пользователей.
Перед началом проекта требуется определить параметры серверного и клиентского оборудования, необходимые для работы внедряемой программы 1С:Предприятие, и учесть будущую нагрузку, которая ляжет на систему в реальной рабочей обстановке. Мощность оборудования должна быть достаточной для нормальной работы пользователей. Но как подобрать сервер простым способом?
На время сеанса отключаем контроль остатков и проверку документов в ERP, КА, УТ типовыми средствами и простым расширением.
Часто при моделировании примеров бизнес-процессов, на запуске в эксплуатацию или закрытии требуется несколько раз прогнать ситуацию с разными настройками, а для этого изменить, удалить ранее введенную цепочку документов. Дается все это с трудом. Ты уверен, что не навредишь своими действиями системе, но документы цепляют друг друга и ругаются контролями остатков, не разрешая тебе менять их в произвольном порядке.
Есть несколько удобных опций для облегчения внесения изменений.
Для уведомления пользователей программных продуктов 1С о разных событиях, в них включена подсистема «Новостной центр». Это довольно удобная штука, т.к. новостные ленты сообщают о выходе обновлений, о новостях и событиях в сфере учёта. Но можно увеличить пользу от новостной подсистемы используя её локально в рамках 1С базы. Например, внутренняя служба техподдержки или внедряющая компания может через новостную ленту оповещать пользователей информационной базы об изменениях в программе, совещаниях, проведении тестирований, заполнения нужных документов или сдача отчетов к определенной дате и т.п.
Пример технического задания для практического понимания основных разделов.
Кратко описаны основополагающие моменты при старте групповой разработки конфигурации несколькими программистами. Полезно для проектной документации как требование к разработчикам или сопровождающей компании
Ссылка на компетенции по 1С:ERP - команда со знаниями, умениями и успешными проектами.
Читайте также: