1С:Торговля и Склад — ошибка во всех релизах, При использовании нескольких фирм и префиксов номеров документов.

Собственно сегодня обнаружил ошибку, которая присутствует во всех релизах конфигурации Торговля и Склад 7.7 вплоть до текущего 7.70.969, при использовании нескольких фирм и префиксов документов для некоторых из них.

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

1. Торговый дом «Комплексный» (Магазин) — Префикс «СТ»
2. Торговый дом «Новый» (Офис) — Префикс «ТН»

По-умолчанию для них выставлены префиксы документов СТ и ТН соответственно. Допустим для первой фирмы (Комплексный) нам не требуется использовать префикс номеров документов. Заходим в справочник фирмы и убираем его. Т.о. получаем, для ТД Комплексный префикс фирмы не используется, а для ТД Новый — префикс ТН. Далее создаем документ реализации от фирмы ТД «Новый». При выборе фирмы префикс документа автоматически меняется на ТН, как и должно быть. Сохраняем документ (табличную часть и прочие реквизиты можно не заполнять). Затем оформляем документ «Продажа собственной фирме» от ТД Комплексный к ТД Новый и заполняем чем-нибудь табличную часть, шапка документа должна выглядеть вот так:

После нажатия кнопки «Выполнить» должно быть создано два документа:

1. Реализация товара ТД Комплексный -> ТД Новый.
2. Поступление товара ТД Комплексный -> ТД Новый.

Причем согласно установленным нами префиксам первый документ (реализация, оформленный фирмой ТД Комплексный) должен быть без префикса, а второй документ (оформленной фирмой ТД Новый) должен иметь префикс ТН. Нажимаем кнопку выполнить и наблюдаем следующее:

Оба документа оформились с префиксом ТН, хотя первый из них принадлежит абсолютно другой (!) фирме и должен быть без префикса. Ошибка кроется в процедуре СкопироватьРеквизитыШапки модуля формы документа быстрая продажа, а именно в строке:

 

ДокКуда.УстановитьНовыйНомер(СокрЛП(Константа.ПрефиксИБ) + СокрЛП(Фирма.ЮрЛицо.ПрефиксНомеровДокументов));

 

Вместо этого там должно быть:

 

ДокКуда.УстановитьНовыйНомер(СокрЛП(Константа.ПрефиксИБ) + ?(СокрЛП(Фирма.ЮрЛицо.ПрефиксНомеровДокументов)=«»,«0»,СокрЛП(Фирма.ЮрЛицо.ПрефиксНомеровДокументов)));

Аналогичная ситуация возможна и в других местах конфигурации (документ «Продажа собственной фирме», вернее «Быстрая продажа» был рассмотрен в качестве примера), т.е. во всех процедурах где используется установка нового номера документа с использованием префикса через метод УстановитьНовыйНомер, а таких мест в конфигурации около 30. Их можно найти поиском по всем текстам по шаблону:

.ПрефиксНомеровДокументов

 

 

7 Comments

  1. 1с2с

    (0) эта «особенность» известна давно…

    самое простое решение:

    не оставлять значение префикса пустым, а устанавливать в качестве него тот самый «0»…,

    что есть идентично по результату вашему варианту…

    Reply
  2. TrinitronOTV

    спасибо за информацию

    Reply
  3. Масянечка

    (1) и (2) спасибо, вот я об этой особенности узнала, к сожалению, недавно(((

    Reply
  4. warenic

    Ну, в (1), собсно, уже ответили… Это не ошибка, это бага такая. УстановитьНовыйНомер() не поддерживает пустое значение.

    Reply
  5. legioner

    Да. Сталкивался с этой «особенностью» не раз. Если несколько фирм — префикс не должен оставаться пустым

    Reply
  6. ninch

    Да уж. Это действительно особенность 1с. Причем даже и в восьмерке. Если уже начали использовать префиксы то они должны быть определены для всех и каждого. Тоже самое и в обменах с распределенными базами:)

    Reply
  7. Иваныч

    Спасибо автору, я честно говоря, ни разу не делал Продажу собст. фирме, посему и не замечал такого. Еще раз спасибо. Плюс поставил

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *