Проведение оперативно-не-оперативно

02.04.24

Разработка - Механизмы платформы 1С

О режимах проведения документов, что, как, почему.

Скачать исходный код

Наименование Файл Версия Размер
Тестовая конфигурация к статье
.dt 42,84Kb
0
.dt 42,84Kb Скачать

Поводом послужил вопрос на форуме Доработка проведения документа в УТ 11.5

Причиной же - вот это место в "Методической поддержке разработчиков":

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

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

В сети - огромное множество материала. Гугл-запрос "1С оперативное проведение": результатов примерно 424 000.

Но вопрос на форуме остается. Внесем лепту.

Дальше "на пальцах" я попробую объяснить то, что методисты 1С подробно и скрупулёзно  излагают в своей методичке.

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

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

Но, как показало обсуждение в упомянутой ветке форума, не только лишь всем...

---

База.

Есть компьютерная программа, она называется "платформа 1С".

Эта программа имеет два режима запуска, "Конфигуратор" и "Предприятие". Это - не две разных программы, это одна и та же программа. Первый режим, для программистов, дает доступ к настройкам программы. Там программист расставляет галки (флажки) и пишет куски кода на языке "1С". В результате получается "конфигурация", то есть программа 1С + какие-то настройки.

В режиме "Предприятие" работает конечный пользователь, он работает в "конфигурации", то есть, в настроенной "программистом 1С", некоторым образом, "платформе 1С".

Список, который вы видите в первом окне при запуске 1С - это не список разных программ, это список разных баз данных, для работы с каждой из них "платформа 1С" имеет свою настройку (настройка может быть одна и та же для разных баз).

Внутри режима "Предприятие" так же есть свои настройки. Это - другое. Это следствие "универсальности конфигурации". Одна настройка "Бухгалтерия" должна по-разному работать у разных пользователей (в разных организациях). Этот слой настроек нас здесь не интересует.

---

Документы и проводки.

Какой-нибудь конкретный вид документа создается программистом 1С в режиме "Конфигуратор". А конкретные экземпляры данного вида - пользователем в режиме "Предприятие".

Каждый экземпляр какого-либо вида документа заполняется пользователем уникальным набором данных (как минимум уникальность обеспечивается сочетанием даты и номера документа).

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

Использовать или не использовать эту возможность, программист 1С решает с помощью специального флажка в конфигураторе, разрешить или запретить "Проведение"

 

Есть или нет режим проведение

 

Важно: программист 1с может привязать к документу дополнительные данные (проводки) и при "запрещенном" проведении. Но это будет целиком его собственное творчество, "платформа" об этом знать не будет, это будет лежать только в "настройках".

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

---

Оперативное проведение.

Так, при разрешенном проведении у программиста есть выбор, разрешить или запретить "оперативное" проведение. Это одна из дополнительных возможностей, предоставляемых платформой.

 

 

А при запрете проведения флажок "Оперативное проведение" уже недоступен, платформа не задействует свои дополнительные возможности.

 

 

Очень важно: в режиме "Предприятие" при проведении документа при разрешенном "Оперативном проведении" платформа сама решает, в каком режиме, оперативном или не оперативном, ей следует здесь и сейчас выполнить проведение для данного документа. Это - ключевое знание для правильного понимания. И платформа никак не информирует пользователя о том, в каком режиме она выполняет проведение, вопреки тому, что написано в "Методической поддержке...". Кроме одного случая, ради которого и весь этот разбор здесь.

---

Пока не потрогаешь - не узнаешь.

Создадим три вида документов, с разрешенным (1) и запрещенным (2) оперативным проведением, и с запретом проведения вообще.

В модулях документов разместим следующие предопределенные процедуры:


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	Сообщить("1. Перед записью");
	Сообщить(РежимПроведения)
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	Сообщить("2. При записи")
КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	Сообщить("3. Проведение");
	Сообщить(РежимПроведения)
КонецПроцедуры

(да, автор знает, что "сообщить" - устаревший оператор)

Из них "ОбработкаПроведения" - это то, что понимает платформа, если флажок "Проведение" выставлен в "Разрешено".

Больше ничего в этой пустой конфигурации делать не будем.

Документ "Запрещено оперативное проведение", чтобы мы с ним ни делали...

 

Дата Номер
06.03.2024 12:00:00 000000003
01.04.2024 15:19:13 000000001
10.04.2024 0:00:00 000000002

 

 

... сообщает одно и то же:

1. Перед записью

Неоперативный

2. При записи

3. Проведение

Неоперативный

Документ с запрещенным проведением, хотя бы мы и сделали ему точно такой же модуль, с теми же процедурами, не сообщает о третьем пункте, да и кнопки такой, типа "Провести", не имеет. Платформа соответственно флагу запрещения урезала функциональные возможности. Но сообщение о том, что режим проведения - неоперативный, оставила! Несущественно, но можно было бы написать что-то вроде "Неопределено", хотя бы для сохранения стиля.

1. Перед записью

Неоперативный

2. При записи

А вот с документом, у которого разрешено оперативное проведение, вариантов гораздо больше.

Когда мы создаем новый документ, платформа устанавливает ему дату в начало дня текущей. При записи этого документа платформа устанавливает ему текущее время. Но если мы перед записью установим ему прошлую дату, то платформа запишет время 12:00. Это работает во всех режимах, устанавливаемых программистом в конфигураторе.

Впрочем, чтобы не отвлекаться на описание всего того, что платформа делает с этими документами, я прикладываю к статье файл с выгрузкой моей тестовой базы (пароль пустой). Кому интересно посмотреть, тот посмотрит :)

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

 

 

Для удобства я поставил в журналах (списках) документов возможность их непосредственного удаления.

 

---

Варианты режима проведения документа при разрешении оперативного.

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

Если мы вручную установим ему прошлую дату, система проведет его НЕ-оперативно.

И если мы установим будущую дату, система выдаст информацию об ошибке:

 

 

Это тот самый "один случай", анонсированный выше.

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

И совсем другой вопрос, почему это сообщение выскакивает, тогда как коллега konsta2006 утверждает, что оперативный режим запрещен, ведь в этом случае платформе должно быть все равно на дату-время.

 

 

Здесь, как бы надменен и неприятен ни был автор, он может только пожать плечами и ... нет, не перезагрузить компьютер :)))

Почистить кеш - это да, это помогает в большинстве подобных случаев. А сначала вообще убедиться, в одном ли и том же экземпляре базы были сделаны скрины коллегой konsta2006.

---

Проводки и режим проведения.

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

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

Вы помните, что сообщала нам тестовая конфигурация?

Она в тех процедурах уже имеет информацию о режиме проведения, который она выбрала сама (с учетом флажков и даты-времени документа).

И программисты, писавшие конкретную конфигурацию, могли в зависимости от режима по-разному формировать дополнительные данные. Выполнять или не выполнять проверку остатков и все такое.

Тут вспомним о множестве статей в интернете. Вот как, например, об этом пишет коллега Анна Викулина, Руководитель Центра сопровождения 1С (wiseadvice):

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

То есть, как минимум, изменяя настройки, надо глубоко закопаться в код проведения и смотреть, что происходит.

Ладно, допустим, ключевой пользователь, когда вы ему доложили о проблеме (отсутствие контроля остатков, например), говорит: "А, обойдусь, у меня все просто и прозрачно, не надо мне вашего контроля!"

Все, вопрос закрыт? Нет. Есть такая вещь, как "итоги" регистров.

Слово Колесникова Дмитрия (koderline):

Если даже предположить, что пользователь работает с документами в будущем периоде, работа всё же происходит не на всей временной оси, а на некотором отрезке времени. Таким образом, если взять некоторую достаточно отдалённую точку будущего, можно будет хранить остатки на эту точку и быстро получать их.

В качестве такой точки актуальности в Платформе 8.x используется 01 ноября 3999 года 00:00:00. Иными словами, текущие итоги регистров остатков периода имеют именно такую дату. Если принять во внимание, что платформа предоставляет пользователю (и программисту) некоторый набор удобных для работы абстракций, скрывающих происходящие уровнем ниже технические подробности, то становится понятно, что точка актуальности как раз и есть такая техническая деталь, скрываемая от пользователя.

Так, от пользователя скрыты технические детали устройства регистров и используемая в них дата 01 ноября 3999 года, и, в самом деле, при повседневном учёте он не будет работать с такой датой, хотя, теоретически, учёт может вестись и до этой даты. Для пользователя же Платформа предоставляет более удобную абстракцию, называемую актуальные остатки (АО), отражающую остатки именно на текущий момент.

При обращении к системе с запросом остатков Платформе 8.x ... рассчитываются остатки, при этом происходит поиск итога - ближайшего равного или большего (из таблицы итогов регистра накопления), после чего, при необходимости происходят дополнительные расчёты по таблице движений на требуемый момент времени.

Вы поняли, что сказал Дмитрий? Я - как-то не очень. Не раскрыта тема "актуальных остатков", и как они связаны с актуальностью далеко-далеко в будущем (тема очередной статьи "доступно и всерьез"?). Но понятно, что теряются не только проверки при проведении, но и достоверность итогов. Ключевой пользователь рискует получать доверительные остатки из старой доброй ексельной таблички на своем рабочем столе. Это вовсе не криминал. Многие люди так и делают, акцапта там у них или 1С. Проблемы будут из-за того, что в эту табличку данные как-то придется заводить.

---

Резюме? Его есть у меня. Если требуется фиксировать что-то (какое-либо событие или прогноз) будущей датой, следует поискать подходящий механизм в имеющейся программе, и, если его там нет, постараться запрограммировать что-нибудь хорошее. Не надо искать простых путей, запрещая режим оперативного проведения, не вами разрешенный.

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.12.256

изменил описание прилагаемой тестовой конфигурации

См. также

Сервисы интеграции без Шины и интеграции

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

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2749    dsdred    16    

60

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Перенос данных 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    6342    dsdred    59    

86

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    6197    YA_418728146    25    

68

Планы обмена VS История данных

Перенос данных 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    7223    dsdred    36    

114

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    19363    SeiOkami    46    

121

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    13091    human_new    27    

76

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

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

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

28.08.2023    9675    YA_418728146    6    

146

Внешние компоненты Native API на языке Rust - Просто!

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

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

20.08.2023    6630    sebekerga    54    

96
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tango 543 02.04.24 11:30 Сейчас в теме
что-то пошло не так :((
Прикрепленные файлы:
2. tango 543 02.04.24 11:43 Сейчас в теме
(1) под редактированием все выглядит нормально
...
левый тег

<p>И совсем другой вопрос, почему это сообщение выскакивает, тогда как коллега <span class="message-author" data-action="get-user-info" data-uid="1512698" href="https://infostart.ru/profile/1512698/" name="message3059242" rel="nofollow">konsta2006 утверждает, что оперативный режим запрещен, ведь в этом случае платформе должно быть все равно на дату-время.</span></p>
...
убрал, частично помогло
---
на текст ниже картинки размножились теги картинки
<p>И совсем другой вопрос, почему это сообщение выскакивает, тогда как коллега <span class="message-author" data-action="get-user-info" data-uid="1512698" href="https://infostart.ru/profile/1512698/" name="message3059242" rel="nofollow">konsta2006 утверждает, что оперативный режим запрещен, ведь в этом случае платформе должно быть все равно на дату-время.</span></p>
Прикрепленные файлы:
3. tango 543 02.04.24 12:04 Сейчас в теме
(1) проблема решена. как эти теги туда попали... как-то по вставке картинки... воспроизводить ситуацию слишком затратно
---
я бы сказал - проблема кода редактора текста. левые (мусорные) теги, срабатывающие в отображении текста пользователю, не проявляют себя в режиме редактирования
4. tango 543 05.04.24 13:05 Сейчас в теме
(1) к ценообразованию
Прикрепленные файлы:
5. alexander-lubich 26 08.04.24 22:00 Сейчас в теме
Большой труд. благодарю Вас Михаил.
Оставьте свое сообщение