Имя: Пароль:
1C
1C 7.7
v7: 7.7 еще сырая, ошибка в Документ.ИнвентаризацияТМЦ.Форма, ТиС
,
0 Злопчинский
 
03.12.21
01:10
стукнулся тут клиент, трабл нарисовался, стал смотреть... блин, хня какая...
итого, начиная с какого то релиза (наиболее ранний который мне доступен
где ошибка уже есть - 973, наиболее ранний где ошибки еще нет который мне доступен - 935).

кто-то из умников (разрабов 1С!) заремил строку установки фактического количества
в значение равное учетному количеству(см. код ниже) при выборе/перевыборе номенклатуры в строке,
(и я даже вангую зачем),  но при этом не пересчитал фактическую сумму, а приравнял ее
к сумме учетного количества. Итого получилось что возможна ситуация что есть отклонение по количеству,
но нет отклонения по сумме. О чем клиент и заявился. При штатной работе такая ситуация возникает редко,
только при определенных действиях (причем нелогичных) пользователя (воспроизвести удалось,
хотя чуток пришлось мозги напрячь ;-). Может я нихрена не понял, и несу пургу, но что есть, то есть...
.
Поправить код типа как приведено ниже
.
Процедура ЗаполнитьРеквСтрокиПоСкладу()
    
    Перем ТаблСуммы, ТаблОстатков;
    Перем СписТоваров;
    
    СписТоваров    = СоздатьОбъект("СписокЗначений");
    СписТоваров.ДобавитьЗначение(Номенклатура);
    
    ПолучитьОстатки(СписТоваров, 0, ТаблОстатков, ТаблСуммы);
    ТаблОстатков.Свернуть("Номенклатура", "Количество");
    ТаблСуммы.Свернуть("Номенклатура","Количество,СуммаБезНДС");
    
    Если ТаблОстатков.КоличествоСтрок() > 0 Тогда
        ТаблОстатков.ПолучитьСтрокуПоНомеру(1);
        Единица            = Номенклатура.БазоваяЕдиница;
        Коэффициент        = Единица.Коэффициент;
        КоличествоУчет     = ТаблОстатков.Количество;
        //Количество         = ТаблОстатков.Количество; // ЗЛОП тут собака порылась какая-то сука
                                                      
        НомСтр = 0;
        Если ТаблСуммы.НайтиЗначение(Номенклатура,НомСтр,"Номенклатура") = 1 Тогда
            ТаблСуммы.ПолучитьСтрокуПоНомеру(НомСтр);
            Если ТаблСуммы.Количество <> 0 Тогда
                ВремСумма    = ТаблСуммы.СуммаБезНДС * КоличествоУчет / ТаблСуммы.Количество;
                СуммаУчет    = глПересчет(ВремСумма, глРубли, ДатаДок, Валюта, Курс,, Кратность);
            Иначе
                СуммаУчет    = 0;
            КонецЕсли;
        Иначе
            СуммаУчет = 0;
        КонецЕсли;                  

        // ЗЛОП было        
        //Сумма        = СуммаУчет;
        //Цена         = ?(КоличествоУчет = 0,0, СуммаУчет / КоличествоУчет);
        
        // ЗЛОП стало
        Цена         = ?(КоличествоУчет = 0,0, СуммаУчет / КоличествоУчет);
        Сумма         = ?(Количество = КоличествоУчет, СуммаУчет, Цена * Количество);        
        
    КонецЕсли;
    
КонецПроцедуры // ЗаполнитьРеквСтрокиПоСкладу()
1 kubik_live
 
03.12.21
01:49
(0) Вроде там задумка такая:
1. Количество (факт) первоначально заполняется по Количество (учет). И суммы тоже.
2. А по факту инвентаризации Количество (факт) просто редактируется. И все норм. пересчитывается.
2 Ёпрст
 
03.12.21
01:50
(0) Теперь просто ошибка, ибо переменная количество не определена в коде
3 Злопчинский
 
03.12.21
02:13
(1) все правильно, но это не всё...
4 Злопчинский
 
03.12.21
02:14
(2) Количество - Реквизит ТЧ документа
5 Злопчинский
 
03.12.21
02:18
(1) заполни документ.
в строке1: Товар1, КолвоУчет=10,КолвоФакт=12
в строке2: Товар2, КолвоУчет=5,КолвоФакт=5
.
теперь удали строка2, а в строка1 вместо Товара1 выбери Товар2 - поучится
в строке1: Товар2, КолвоУчет=5,КолвоФакт=12, СуммаУчет(от 5шт), СуммаФакт (та же самая от 5шт). и пока не передернешь в строке1 колвофакт или цену - там ошибка и повиснет.
.
если в строке1 перевыбрать Товар, который есть в других строках - система не пустит так сделать, все будет НОРМ. Трабл именно вот в таком сценарии как я описал.
6 Харлампий Дымба
 
03.12.21
14:26
Релиз 7.70.938 от 15.04.2005 г.
=================================================================
Список изменений релиза 7.70.938 по сравнению с релизом 7.70.937
=================================================================
Документ ИнвентаризацияТМЦ ("Инвентаризация ТМЦ")
-----------------------------------------------------------------
...
Исправлено:
При выполнении действия по кнопке "Заполнить", теперь заполняется
только колонка "Количество (учетное)". Добавлен вариант заполнения
"Заполнить фактическое количество по учетному".

Внесены изменения в диалог формы документа.
Внесены изменения в модуль формы документа.
...

А ты на текущей типовой проверял? А то вряд ли у клиента типовая - может при ручном обновлении забыли изменить в Кол(факт) - глПересчетТаблЧасти() на ПриИзмененииКоличества() или ещё что.
7 Злопчинский
 
03.12.21
14:30
код приведен из типовой 1002
8 Злопчинский
 
03.12.21
14:31
проверял на 974 или 975, блок инвента - штатный
9 Злопчинский
 
03.12.21
14:32
в 973 и дальше код такой же как в 1002
10 Харлампий Дымба
 
03.12.21
15:20
5) Ну да увидел, есть ошибка. Но чтобы её получить, надо постараться, ты прав.