При разработке или внедрении новых объектов метаданных в типовые конфигурации на базе БСП (Библиотеки Стандартных Подсистем), такие как БП 3.0, разработчики нередко сталкиваются с ошибкой при попытке записи или открытия нового документа. Сообщение «При проверке запрета изменения не найдены источники данных для таблицы» указывает на то, что подсистема «Даты запрета изменения» не получила необходимых сведений о новом объекте.
Давайте разберем, почему это происходит и как исправить ситуацию, обеспечив корректную работу механизма контроля дат.
Система «Даты запрета изменения» в 1С — это сложный механизм, который проверяет, не была ли изменена дата документа, попадающая в период, закрытый для редактирования. Чтобы эта проверка работала для любого документа, платформа должна «знать» о нем: какие реквизиты отвечают за дату документа и организацию, и к какому разделу учета он относится.
Когда мы добавляем собственный документ, система автоматически не регистрирует его в подсистеме дат запрета. В момент обращения к объекту алгоритм проверки запрашивает список доступных источников, и, не находя там нашего нового документа, выбрасывает исключение. Рассмотрим, как именно нужно зарегистрировать наш документ, чтобы система «увидела» его и начала корректно обрабатывать.
Для решения проблемы нам необходимо внести изменения в общий модуль, отвечающий за логику дат запрета. Чаще всего это модуль ДатыЗапретаИзмененияПереопределяемый. Выполним настройку по шагам:
ДатыЗапретаИзмененияПереопределяемый.ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения. Именно в этой процедуре происходит регистрация всех объектов, для которых допустима проверка даты запрета.Чтобы зарегистрировать новый документ, например, АвансовыйОтчетСписок, добавьте строку по аналогии с типовым кодом. Рассмотрим структуру вызова:
// В процедуре ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения
// добавляем строку регистрации:
ДатыЗапретаИзменения.ДобавитьСтроку(
ИсточникиДанных,
"Документ.АвансовыйОтчетСписок",
"Дата",
"ВашРазделУчета",
"Организация"
);
Разберем параметры этого вызова подробно:
ИсточникиДанных — коллекция, которую мы заполняем."Документ.АвансовыйОтчетСписок" — полное имя метаданного вашего нового документа."Дата" — имя реквизита, по которому будет осуществляться контроль запрета."ВашРазделУчета" — раздел, в котором пользователь будет видеть настройки для этого документа (можно выбрать существующий из БСП или создать свой)."Организация" — имя реквизита организации, если учет ведется в разрезе нескольких организаций.Рассмотрим, на что еще стоит обратить внимание после внесения кода:
Во-первых, после изменения кода обязательно протестируйте поведение документа. Откройте уже записанный документ и убедитесь, что ошибка исчезла. Проверьте, корректно ли работает блокировка, если установить дату запрета в разделе «Настройки пользователей и прав».
Во-вторых, помните о поддержке конфигурации. Поскольку вы меняете общий модуль, который является частью типового решения, при обновлении на новый релиз важно проверять актуальность ваших изменений. Используйте инструменты сравнения и объединения, чтобы ваши правки не были случайно затерты обновлением от 1С.
В-третьих, если ваш документ не использует классическую схему (например, имеет сложную логику определения даты или организации), возможно, потребуется более глубокое переопределение функций в модуле ДатыЗапретаИзмененияПереопределяемый. Однако в 90% случаев для БП 3.0 достаточно простой регистрации, описанной выше.
Проанализировав данный процесс, мы видим, что решение носит чисто технический характер и заключается в явном указании системе, что новый объект метаданных является полноценным участником процесса контроля данных. Теперь ваша система будет корректно работать с запретом изменения даже для добавленных вами документов.