Имя: Пароль:
1C
1С v8
Движения по "Операции с прослеживаемыми товарами" при проведении Корректировка реализации?
0 lexushka
 
12.03.23
14:22
Добрый день
Странный вопрос

Есть КА 2.5.7.336
Есть документ Корректировка реализации
Функциональная опция "ИспользоватьУчетПрослеживаемыхИмпортныхТоваров" отключена

При проведении документа корректировка она лезет писать в регистр "Операции с прослеживаемыми товарами"

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

Но это там будет ЕДИНСТВЕННАЯ запись…

на номенклатуру посмотрел какого-то флажка прослеживаемый товар в карточке номенклатуры не рассмотрел

Стал анализировать откуда возникает желание двигать этот регистр увидел что движения по нему норовят произойти без учета функциональной опции "ИспользоватьУчетПрослеживаемыхИмпортныхТоваров"

При выполнении движения по разделу запасы и регл учет (по этми разделам двигает Корректировка реализации)

Пользователи клянутся что в старое добрео время раньше такого не было (но там и версия КА могла быть иная)

И как-то я в недоумении от происходящего

Не сталкивались?
1 Garykom
 
гуру
12.03.23
14:59
(0) вид номенклатуры глянь еще
2 Garykom
 
гуру
12.03.23
14:59
ну или очередная бага в ERP/КА/УТ11
3 Garykom
 
гуру
12.03.23
15:01
Там особенность устройства движений (и проводок) что запрос который формирует таблицу движений о ФО нифига не знает (и не может знать)
Все идет на основе данных в документах, их ТЧ и справочниках/регистрах связанных
И вот или ошибка или почему то цепляет ибо что то есть
Смотри как запрос строится
4 Garykom
 
гуру
12.03.23
15:03
(3)+ точней параметр используется или нет функциональная опция конечно может быть передан в запрос, надо изучать
5 lexushka
 
12.03.23
15:03
запрос там строится в лучших традициях ЗУП 3 — но это почему 2 записи в регистр…
однако больше смущает то что она в любом случае норовит выполнить движение по этому регистру
6 Garykom
 
гуру
12.03.23
15:10
Функция ТекстЗапросаТаблицаОперацииСПрослеживаемымиТоварами(Запрос, ТекстыЗапроса, Регистры)
    
    ИмяРегистра = "ОперацииСПрослеживаемымиТоварами";
    Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
        Возврат "";
    КонецЕсли;

    Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасовКорректировкаВыручки", ТекстыЗапроса) Тогда
        Документы.КорректировкаРеализации.ТекстЗапросаВтВидыЗапасовКорректировкаВыручки(Запрос, ТекстыЗапроса);
    КонецЕсли;
    
    ТекстЗапроса =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    &Период КАК Период,
    |    &Организация КАК Организация,
    |    &Контрагент КАК Контрагент,
    |    ЗНАЧЕНИЕ(Справочник.ТипыДокументов.Накладная) КАК ТипДокументаВПрослеживаемости,
    |    ВЫБОР
    |        КОГДА &ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеОшибок)
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ПорядокОтраженияВОтчетностиПоПрослеживаемости.КнигаПродаж)
    |        КОГДА ВтВидыЗапасовКорректировкаВыручки.СуммаВзаиморасчетов < 0
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ПорядокОтраженияВОтчетностиПоПрослеживаемости.КнигаПокупок)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ПорядокОтраженияВОтчетностиПоПрослеживаемости.КнигаПродаж)
    |    КОНЕЦ КАК ОтражениеВОтчетности,
    |    ВЫБОР
    |        КОГДА ВтВидыЗапасовКорректировкаВыручки.СуммаВзаиморасчетов < 0
    |            ТОГДА ЗНАЧЕНИЕ(Справочник.КодыОперацийПрослеживаемости.УКДНаУменьшениеВыданный)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.КодыОперацийПрослеживаемости.УКДНаУвеличениеВыданный)
    |    КОНЕЦ КАК КодОперации,
    |    ВтВидыЗапасовКорректировкаВыручки.ВидЗапасов.ТипЗапасов КАК ТипЗапасов
    |ИЗ
    |    ВтВидыЗапасовКорректировкаВыручки КАК ВтВидыЗапасовКорректировкаВыручки
    |ГДЕ
    |    ВтВидыЗапасовКорректировкаВыручки.НомерГТД.ТипНомераГТД В(ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТ),
    |                                                                ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТКомплекта))";
    
    ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
    
    Возврат ТекстЗапроса;
    
КонецФункции
7 Garykom
 
гуру
12.03.23
15:12
проверяй НомерГТД.ТипНомераГТД
8 lexushka
 
12.03.23
15:17
у обеих номенклатур в корректировке скинут флажок вести учет по ГТД

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

причем глянул последнюю версию КАК 2.5.11 код в принятии решения двигать этот регистр такой же…
9 Garykom
 
гуру
12.03.23
15:18
(8) дык пофиг на твой флажок у номенклатуры
если у НомерГТД тип подпадающий под РНПТ
10 Garykom
 
гуру
12.03.23
15:18
(9)+ и вот вопрос почему в ТЧ НомерГТД с таким типом?
ранее было включена прослеживаемость а потом отключили?
11 lexushka
 
12.03.23
15:19
как-то я полагал если у номенклатуры нет учета по ГТД то номеру ГТД взяться неоткуда
на самом деле устроено иначе?
12 Garykom
 
гуру
12.03.23
15:22
(11) ха
что угодно может быть

устройство ERP (как и получаемых из нее КА/УТ11) нарушает все принципы реляционности баз данных
там при отключении опции понятно дело не происходят все требуемые изменения во всех других таблицах

в итоге любая работа задним числом или отключение опций, когда уже были ранее забиты данные с учетом опций и упс
13 lexushka
 
12.03.23
15:23
понял
спасибо

буду думать
если найду что интересное — отпишусь
14 lexushka
 
12.03.23
18:39
Все было проще

Вот запрос из КА 2.5.7

Функция ТекстЗапросаТаблицаОперацииСПрослеживаемымиТоварами(Запрос, ТекстыЗапроса, Регистры)
    
    ИмяРегистра = "ОперацииСПрослеживаемымиТоварами";
    Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
        Возврат "";
    КонецЕсли;

    Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасовКорректировкаВыручки", ТекстыЗапроса) Тогда
        ТекстЗапросаВтВидыЗапасовКорректировкаВыручки(Запрос, ТекстыЗапроса);
    КонецЕсли;
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    ВтВидыЗапасовКорректировкаВыручки.НомерСтроки КАК НомерСтроки,
    |    &Период КАК Период,
    |    &Организация КАК Организация,
    |    &Контрагент КАК Контрагент,
    |    ЗНАЧЕНИЕ(Справочник.ТипыДокументов.Накладная) КАК ТипДокументаВПрослеживаемости,
    |    ВЫБОР
    |        КОГДА &ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеОшибок)
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ПорядокОтраженияВОтчетностиПоПрослеживаемости.КнигаПродаж)
    |        КОГДА ВтВидыЗапасовКорректировкаВыручки.СуммаВзаиморасчетов < 0
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ПорядокОтраженияВОтчетностиПоПрослеживаемости.КнигаПокупок)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ПорядокОтраженияВОтчетностиПоПрослеживаемости.КнигаПродаж)
    |    КОНЕЦ КАК ОтражениеВОтчетности,
    |    ВЫБОР
    |        КОГДА ВтВидыЗапасовКорректировкаВыручки.СуммаВзаиморасчетов < 0
    |            ТОГДА ЗНАЧЕНИЕ(Справочник.КодыОперацийПрослеживаемости.УКДНаУменьшениеВыданный)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.КодыОперацийПрослеживаемости.УКДНаУвеличениеВыданный)
    |    КОНЕЦ КАК КодОперации,
    |    ВтВидыЗапасовКорректировкаВыручки.ВидЗапасов.ТипЗапасов КАК ТипЗапасов,
    |    ВтВидыЗапасовКорректировкаВыручки.НомерГТД КАК НомерГТД
    |ИЗ
    |    ВтВидыЗапасовКорректировкаВыручки КАК ВтВидыЗапасовКорректировкаВыручки";


Отбора по ГТД как в более новых версиях нет вообще :)

При этом новый код нельзя просто так взять, поскольку версия больно старая

Пришлось написать

    |ГДЕ
    |    ВтВидыЗапасовКорректировкаВыручки.НомерГТД.РНПТ = ИСТИНА";



Короче надо донести до клиента неизбывное желание обновиться …

Спасибо
15 Garykom
 
гуру
12.03.23
18:48
(14) для старых конф вероятно есть патчи
16 lexushka
 
12.03.23
19:00
тоже верно
полюбопытствую как они решили
Закон Брукера: Даже маленькая практика стоит большой теории.