Имя: Пароль:
1C
 
УТ 11 Акт о расхождении после поступления
,
0 Zombi
 
06.02.24
12:41
В УТ 11 оформляем акт о расхождении после поступления. В документе 2 строки на уменьшение количества и одна строка на увеличение. При проведении документа вопрос по регистру "ТоварыНаСкладах". По товарам уменьшаемым вроде все адекватно, вид движения "Расход" и количество списываемого товара. По товару с увеличением почему то движение с видом "Приход" и отрицательным количеством. Есть тут логика? Или какой то косяк?
1 Кондер
 
06.02.24
14:58
косяк
2 Zombi
 
06.02.24
16:12
Ок, покопаю в сторону косяка. Отпишусь потом.
3 Волшебник
 
06.02.24
20:20
Ждём, чё...
4 Zombi
 
08.02.24
09:13
Не стал сильно глубоко копать. Решил проблему, основываясь на том что это все таки косяк. Конфигурацию обновил на свежую, проблема не ушла. Добавил через расширение такой костыль:

общий модуль СкладыСервер

&После("ОформитьПоступлениеТоваровПоОдноходовкеВнутренний")
Процедура Расш1_ОформитьПоступлениеТоваровПоОдноходовкеВнутренний(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента, ОбъектМетаданных, ПараметрыМетода)
    
    Если ОбъектМетаданных = Метаданные.Документы.АктОРасхожденияхПослеПриемки Тогда
        
        Для Каждого ЭлементСписка Из ТекстыЗапроса Цикл
        
            Если ЭлементСписка.Представление = "ВТСерииОформитьПоступлениеТоваровПоОдноходовке" Тогда
                
                ЭлементСписка.Значение = СтрЗаменить(ЭлементСписка.Значение, "ДанныеСерий.КоличествоПоДокументу - ДанныеСерий.Количество", "ВЫБОР  КОГДА ДанныеСерий.КоличествоПоДокументу - ДанныеСерий.Количество > 0 ТОГДА ДанныеСерий.КоличествоПоДокументу - ДанныеСерий.Количество ИНАЧЕ ДанныеСерий.Количество - ДанныеСерий.КоличествоПоДокументу КОНЕЦ");
                
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцедуры

Не стал разбираться что за схемы оформления товаров, одноходовка, двухходовка... Конкретно в нашем случае проблема решилась. Если кто то подскажет другое решение, буду признателен.
5 Гена
 
гуру
08.02.24
10:57
(4) Что-то не то. По картинке видно, что в движение Приход по нашему РН алгоритм заходит только когда текущее количество больше ранешнего поступления, ведь движение Расход нормально отрабатывается в противном случае.
Вывод: надо изначально в том месте, где алгоритм ветвится на Приход/Расход просто поменять знак в модуле, т.е. вместо отрицательного  
ДанныеСерий.КоличествоПоДокументу - ДанныеСерий.Количество
сделать положительное
ДанныеСерий.Количество - ДанныеСерий.КоличествоПоДокументу

а Вы же просто сделали ABS и то только в одном запросе.
6 Гена
 
гуру
08.02.24
11:09
Я к чему. Конечно же, если после определения в Акте "-" по количествам алгоритм единственно потом идёт на указанную процедуру, то Ваша правка сработает. А если нет? Если сейчас уже есть выбор между процедурами поступления по разным "ходовкам" или появится в будущем - будете в каждой из них ABSить?
Согласитесь, что проще изначально знак поменять.
7 Zombi
 
08.02.24
11:28
(5) Нет, условие если текущее количество больше ранешного это я уже дописал. Типовой запрос вот:

ВЫБРАТЬ
    ТаблицаТовары.Ссылка                    КАК Ссылка,
    ТаблицаТовары.Дата                    КАК Дата,
    ТаблицаТовары.Номенклатура            КАК Номенклатура,
    ТаблицаТовары.Характеристика            КАК Характеристика,
        ВЫБОР
        КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
            ТОГДА ТаблицаТовары.Назначение
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
    КОНЕЦ                                КАК Назначение,
    МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) КАК СтатусУказанияСерий,
        ВЫБОР
        КОГДА НЕ ТаблицаТовары.Серия ЕСТЬ NULL
            И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
        ТОГДА ТаблицаТовары.Серия
        КОГДА НЕ ДанныеСерий.Серия ЕСТЬ NULL
            И ДанныеСерий.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
        ТОГДА ДанныеСерий.Серия
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
    КОНЕЦ                                    КАК Серия,
    ТаблицаТовары.Серия                    КАК СерияТЧТовары,
    ТаблицаТовары.Склад                    КАК Склад,
    МАКСИМУМ(    ВЫБОР
        КОГДА НЕ ДанныеСерий.Серия ЕСТЬ NULL
            И ДанныеСерий.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
        ТОГДА ДанныеСерий.КоличествоПоДокументу - ДанныеСерий.Количество
        ИНАЧЕ ТаблицаТовары.Количество
    КОНЕЦ)                    КАК Количество,
    МАКСИМУМ(ТаблицаТовары.ЭтоКорректировкаВнутриНакладной) КАК ЭтоКорректировкаВнутриНакладной
ПОМЕСТИТЬ ВТСерииОформитьПоступлениеТоваровПоОдноходовке
ИЗ
    ВТТоварыБезЗаказаОформитьПоступлениеТоваровПоОдноходовке КАК ТаблицаТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АктОРасхожденияхПослеПриемки.Серии КАК ДанныеСерий
        ПО ТаблицаТовары.Ссылка = ДанныеСерий.Ссылка
            И ТаблицаТовары.Номенклатура = ДанныеСерий.Номенклатура
            И ТаблицаТовары.Характеристика = ДанныеСерий.Характеристика
            И ТаблицаТовары.Назначение = ДанныеСерий.Назначение
            И ТаблицаТовары.Склад = ДанныеСерий.Склад
            И ТаблицаТовары.ДокументОснование = ДанныеСерий.ДокументОснование
            И ТаблицаТовары.ЗаполненоПоОснованию = ДанныеСерий.ЗаполненоПоОснованию
            И ТаблицаТовары.Действие = ДанныеСерий.Действие

ГДЕ
        ВЫБОР
        КОГДА НЕ ДанныеСерий.Серия ЕСТЬ NULL
            И ДанныеСерий.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
        ТОГДА ДанныеСерий.КоличествоПоДокументу - ДанныеСерий.Количество
        ИНАЧЕ ТаблицаТовары.Количество
    КОНЕЦ <> 0

СГРУППИРОВАТЬ ПО
    ТаблицаТовары.Ссылка,
    ТаблицаТовары.Дата,
    ДанныеСерий.НомерСтроки,
    ТаблицаТовары.Номенклатура,
    ТаблицаТовары.Характеристика,
        ВЫБОР
        КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
            ТОГДА ТаблицаТовары.Назначение
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
    КОНЕЦ,
        ВЫБОР
        КОГДА НЕ ТаблицаТовары.Серия ЕСТЬ NULL
            И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
        ТОГДА ТаблицаТовары.Серия
        КОГДА НЕ ДанныеСерий.Серия ЕСТЬ NULL
            И ДанныеСерий.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
        ТОГДА ДанныеСерий.Серия
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
    КОНЕЦ,
    ТаблицаТовары.Серия,
     ТаблицаТовары.ЗаполненоПоОснованию
, ТаблицаТовары.ДокументОснование
, ТаблицаТовары.Действие
, ТаблицаТовары.Назначение
,
    ТаблицаТовары.Склад

В этом запросе я изменил поле количество.
8 Волшебник
 
08.02.24
11:30
(7) У Вас усы отклеились запятые съехали
9 Zombi
 
08.02.24
11:34
(6) Само собой за этим костылем нужно будет следить при обновлениях. Благо это УТ и обновляется не так часто. Можно было копнуть в сторону разных схем двухходовки и одноходовки. Может по другой схеме нормально отработет. Я нашел только что схема определяется исходя из договора и зависит от его реквизитов, а у нас договоры не используются. Дальше копать не стал. Там же еще список разных запросов и только для регистров товары на складах 4 разных запроса для разных схем и прочих условий. Вот по излишку в акте отрабатывает один запрос, по недостачам другой запрос. 2 других пустые результаты возвращают. Пошел по пути меньшего сопротивления, подправил запрос, который в нашем случае отрабатывает на излишки.
10 Zombi
 
08.02.24
11:36
Так в типовых собираются программно запросы. Ничего не поделать.
11 Гена
 
гуру
08.02.24
12:23
(10) А... тут серийные заморочки, которые сразу не видны в Акте.
Тогда Вы правильно поменяли знак внутри процедуры.

Если только не получится штык, когда по одной серии +, а по другой -, а в целом общий излишек.
А у Вас ABS стоит )

Ладно, практика покажет.