При работе в программе «1С:Розница» (версий 2.2 и 2.3) пользователи часто сталкиваются с ситуацией, когда после проведения документа Поступление товаров (ПТУ) требуется заменить карточку номенклатуры или отредактировать количество в табличной части. Однако система намертво блокирует любые изменения, выдавая предупреждения или просто не позволяя активировать ячейки для редактирования. Особенно остро эта проблема встает при розничной торговле алкогольной продукцией, жестко контролируемой через систему ЕГАИС.
В этой статье мы подробно разберем, почему программа ведет себя подобным образом, проанализируем внутренние механизмы платформы и рассмотрим четыре практических способа решения этой проблемы: от простых пользовательских манипуляций до доработки системы с помощью расширений конфигурации.
---
Перед тем как переходить к активным действиям, давайте разберемся в логике работы конфигурации. Разработчики фирмы «1С» заложили в программный код жесткие ограничения для предотвращения расхождений между остатками в ЕГАИС и данными в вашей локальной базе данных.
Когда в систему поступает входящая ТТН ЕГАИС, на ее основании создается документ Поступление товаров. В этот момент между документами устанавливается строгая связь. В коде формы ПТУ срабатывает проверка: если в строке табличной части заполнено служебное поле АлкогольнаяПродукция, а в самом документе не зафиксирован факт расхождения с ЕГАИС (то есть признак ЕстьРасхождения имеет значение Ложь), система переводит форму в режим «только чтение» для этих строк. При попытке изменить или удалить строку срабатывает отказ в стандартных процедурах ТоварыПередУдалением или ТоварыПередНачаломИзменения.
Изменение номенклатуры «напрямую» в проведенном документе может привести к тому, что в системе ЕГАИС за вами числится один алкогольный код (алкокод), а на вашем внутреннем складе в 1С будет числиться совершенно другой товар. Тем не менее, ситуации, когда корректировка жизненно необходима (например, ошиблись при первоначальном сопоставлении номенклатуры), возникают регулярно. Рассмотрим способы обхода этого ограничения.
---
Этот способ является наиболее быстрым и не требует снятия документа с проведения или изменения программного кода. Мы воспользуемся штатной обработкой для временного очищения связи строки поступления с алкогольной продукцией ЕГАИС.
Разберем этот процесс по шагам:
Поступление товаров.Ссылка Равно [Ваш документ поступления] (выбираем конкретный документ по дате и номеру).После выполнения обработки связь между строками документа поступления и номенклатурой ЕГАИС будет временно разорвана на уровне базы данных. Теперь мы можем зайти в документ Поступление товаров и свободно заменить ошибочную карточку номенклатуры на правильную. После проведения документа связь с ЕГАИС можно восстановить аналогичным способом, вернув нужное сопоставление в групповой обработке, либо оставить как есть, если дальнейший автоматический учет этой связки в данном документе не требуется.
---
Часто необходимость редактирования документов возникает из-за того, что при первом приеме накладной оператор ошибочно сопоставил присланный поставщиком алкокод с неверной карточкой номенклатуры в локальной базе 1С. Если мы просто отредактируем один документ, при следующем поступлении этого товара ошибка повторится. Нам нужно исправить первопричину.
Рассмотрим, как правильно пересопоставить продукцию:
Важное предупреждение: начиная с версий «1С:Розница» 2.2.8, разработчики внедрили жесткий контроль по принципу «один товар — одно сопоставление». Избегайте ситуаций, когда к одной карточке номенклатуры 1С привязывается несколько разных алкокодов от разных производителей. Это гарантированно вызовет хаос при формировании деклараций и партионном учете остатков.
---
Если вы хотите, чтобы вся цепочка документов в системе была абсолютно «чистой» и согласованной с точки зрения методологии 1С, лучше всего переоформить документы через ЕГАИС. Этот способ исключает ручное вмешательство в базу данных.
Посмотрим на алгоритм действий:
ТТН ЕГАИС, связанную с нашим проблемным поступлением.Поступление товаров на удаление. Это освободит связанные регистры.Поступление товаров, в котором строки заполнятся уже правильной, вновь сопоставленной номенклатурой 1С.Этот метод гарантирует отсутствие скрытых ошибок в регистрах накопления и регистрах сведений ЕГАИС, которые могут "вылезти" при последующей инвентаризации или сдаче алкодекларации.
---
Если специфика вашего бизнес-процесса требует регулярного ручного вмешательства в проведенные документы, и вы устали каждый раз использовать групповые обработки, блокировку можно отключить на программном уровне. Делать это путем изменения типовой конфигурации крайне не рекомендуется, так как это усложнит последующие обновления программы. Правильное решение — использовать механизм расширений конфигурации.
Проанализируем пример кода, который программист может внедрить в расширение для формы документа Поступление товаров. Нам нужно перехватить события, блокирующие редактирование строк.
Ниже представлен пример реализации в расширении для процедуры ТоварыПередНачаломИзменения:
&НаКлиенте
Процедура Расш_ТоварыПередНачаломИзмененияПеред(Элемент, Отказ)
// Отключаем стандартный отказ системы при редактировании строк с алкоголем
Отказ = Ложь;
КонецПроцедуры
Также может потребоваться переопределить поведение формы при открытии или чтении на сервере, чтобы элементы формы не блокировались (свойство ТолькоЧтение для табличной части):
&НаСервере
Процедура Расш_ПриЧтенииНаСервереПосле(ТекущийОбъект)
// Разрешаем доступность табличной части "Товары" даже при наличии связи с ЕГАИС
ЭтаФорма.Элементы.Товары.ТолькоЧтение = Ложь;
КонецПроцедуры
Использование расширения позволит сохранить вашу конфигурацию «1С:Розница» на стандартной поддержке, при этом пользователи получат возможность оперативно корректировать документы без лишних административных барьеров. Однако помните, что при этом вся ответственность за соответствие данных ЕГАИС и локальной базы ложится непосредственно на оператора.