Форум Кладовочки АЛьФ`а

Общие вопросы => 7.7 => Тема начата: Злоп от 25 апреля 2025, 18:31

Название: Ошибки типовой ТиС
Отправлено: Злоп от 25 апреля 2025, 18:31
Сюда пишем найденные/имеющиеся ошибки в типовой ТиС (с указанием релиза).
Пишем сюда именно ошибки/проблемы по коду конфигурации.
Пост с описанием ошибки ОЗАГЛАВЛИВАЕМ КАПСОМ ЖИРНЫМ ШРИФТОМ, обсуждения - обычное оформление
Название: Re: Ошибки типовой ТиС
Отправлено: Злоп от 25 апреля 2025, 19:27
ОТЧЕТ.ОСТАТКИТМЦ: НЕВЕРНОЕ ОТРАЖЕНИЕ ОСТАТКОВ У КОМИССИОНЕРОВ
Релиз 1002, также присутствует и в младших релизах

Остаток у комиссионера (при включенном флажке ПоказатьКомиссию "Показать остатки у комиссионеров") всегда выводится в Базовой единице, независимо от переключателя показа количества "В основных единицах"

Причина:
Процедура ЗаполнитьСтроку(ТЗ, Запрос, СписокСкладов, ВДокумент)

Если ПредставлениеЦены = "отпускная цена (только розница)"  Тогда
Цена = Запрос.ЦенаПрод;
Иначе
    Цена = 0;
КонецЕсли;

ВалютаЦены = 0;
ПолучитьЦенуТовара(ТЗИтогов, Запрос.Номенклатура, Цена, ВалютаЦены);   

Если ПредставлениеЦены <> "не показывать"  Тогда
ТЗ.Цена = Цена;
КонецЕсли;

ПервыйРаз = 1;
Пока Запрос.Группировка("Склад")=1 Цикл   
Если ПоказатьКомиссию = 1 Тогда
Если ПервыйРаз = 1 Тогда
Пока Запрос.Группировка("Комиссионер") = 1 Цикл
Если (ПустоеЗначение(Запрос.Комиссионер) = 1) Тогда
Продолжить;
КонецЕсли;   

ПечКол = Запрос.КоличествоКонОст;
Если Показатель.ТекущаяСтрока() = 2 Тогда
    ПечКол = ПечКол - Запрос.РезервКонОст;
КонецЕсли;
ПечКол = ПечКол / ТЗ.ПечЕд.Коэффициент; //[+]progadmin ИСПРАВЛЕНО, отсутствует в типовой

Поз = СписокСкладов.НайтиЗначение(Запрос.Комиссионер);
Если Поз > 0  Тогда
    ТЗ.УстановитьЗначение(ТЗ.НомерСтроки, "Количество" + Поз, ПечКол);
Если (ПредставлениеЦены <> "не показывать") и (ПредставлениеЦены <> "отпускная цена (только розница)") Тогда
ПечСумма = Цена * ПечКол;
    ТЗ.УстановитьЗначение(ТЗ.НомерСтроки, "Сумма" + Поз, ПечСумма);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПервыйРаз = 0;
Если ПустоеЗначение(Запрос.Склад) = 1 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
КонецЕсли;

ПечКол = Запрос.КоличествоКонОст;
Если Показатель.ТекущаяСтрока() = 2 Тогда
    ПечКол = ПечКол - Запрос.РезервКонОст;
КонецЕсли;                 
ПечКол = ПечКол / ТЗ.ПечЕд.Коэффициент;

Поз = СписокСкладов.НайтиЗначение(Запрос.Склад);
Если Поз > 0  Тогда
Название: Re: Ошибки типовой ТиС
Отправлено: Злоп от 25 апреля 2025, 20:26
СПРАВОЧНИК.НОМЕНКЛАТУРА.ФОРМАСПИСКА.ДЛЯПОДБОРА: ДОБАВЛЯЕТСЯ ПУСТАЯ СТРОКА ЕСЛИ В ПОДБОРЕ НИЧЕГО НЕ ВЫБРАНО И НАЖАТЬ ОК
Релиз 1002, также присутствует и в младших релизах

Если из какого-либо документа по кнопке ПОДБОР открыть форму номенклатуры для подбора, ничего не подбирать и нажать ОК - в документ добавляется одна незаполненная строка.


Исправляем в СПРАВОЧНИК.НОМЕНКЛАТУРА.ФОРМАСПИСКА.ДЛЯПОДБОРА.Модуль
Процедура ВыполнитьЗапись()
Перем ПараметрыВыбора;

//[+]progadmin ИСПРАВЛЕНО, отсутствует в типовой
Если ТаблицаПодбора.КоличествоСтрок() = 0 Тогда
Форма.Закрыть();
Возврат;
КонецЕсли;
//[+]_progadmin ИСПРАВЛЕНО, отсутствует в типовой

ПараметрыВыбора = СоздатьОбъект("СписокЗначений");
ПараметрыВыбора.ДобавитьЗначение(ЕстьВидТМЦ    , "ЕстьВидТМЦ");
ПараметрыВыбора.ДобавитьЗначение(ЦенаВподборе  , "ЦенаВподборе");
ПараметрыВыбора.ДобавитьЗначение(ТипЦен        , "ТипЦен");     
ПараметрыВыбора.ДобавитьЗначение(ТаблицаПодбора, "ТаблицаПодбора");
ПараметрыВыбора.ДобавитьЗначение(1             , "ПоКнопкеПодбор");

Форма.ВыполнитьВыбор(ПараметрыВыбора);
ТаблицаПодбора.УдалитьСтроки();  // иначе при выходе еще раз можем перенести

КонецПроцедуры //ВыполнитьЗапись()

или в Глобальном модуле

Процедура глОбработкаПодбора(Конт, ВыбЗнач, ЕстьНДС, ЕстьНП, ЕстьСкидка)  Экспорт

Перем ТаблЧасть, ТаблицаПодбора;

ТипЗнач = ТипЗначенияСтр(ВыбЗнач);
Если ТипЗнач = "СписокЗначений" Тогда

ЕстьВидТМЦ   = ВыбЗнач.Получить("ЕстьВидТМЦ"); // нужно заполнять при подборе вид ТМЦ

ЦенаВподборе = ВыбЗнач.Получить("ЦенаВподборе");
Если (ЦенаВПодборе = "ИзСправочника") или (ЦенаВподборе = "Розница") Тогда
ЕстьЦена = 1; // нужно заполнять при подборе цену ТМЦ
Иначе

// (ЦенаВподборе = "Нет") или (ПустоеЗначение(ЦенаВподборе) = 1)
ЕстьЦена = 0;
КонецЕсли;
ТипЦен = ВыбЗнач.Получить("ТипЦен");

ТаблицаПодбора = ВыбЗнач.Получить("ТаблицаПодбора");

//[+]progadmin ИСПРАВЛЕНО, отсутствует в типовой
Если ТаблицаПодбора.КоличествоСтрок() = 0 Тогда
Возврат;
КонецЕсли;
//[+]_progadmin ИСПРАВЛЕНО, отсутствует в типовой

Иначе

// если не список ничего не делаем
Возврат;
КонецЕсли;

Название: Re: Ошибки типовой ТиС
Отправлено: Злоп от 26 апреля 2025, 00:50
ДОКУМЕНТ.ИНВЕНТАРИЗАЦИЯТМЦ: МНОГО ЛИШНИХ "НУЛЕВЫХ" СТРОК ПРИ РЕЖИМЕ ИНВЕНТА "ПО СКЛАДУ"
Релиз 1011, также присутствует и в младших релизах.
Как таковой ошибкой можно и не считать, но доставляет неудобства значительные

Запросто может быть ситуация когда по одной аналитике (по фирме1) остаток = +10, а по другой аналитике (по фирме2) остаток = -10. В режиме инвентаризации "По Складу" по кнопке "Заполнить" - действие "Заполнить" учетные остатки заполняется свернуто по Номенклатуре и получается много лишних нулевых строк...

Иначе
УдалитьСтроки();

ПолучитьОстатки(СписТоваров, 0, ТаблОстатков, ТаблСуммы);

ТаблОстатков.Свернуть("Номенклатура", "Количество");
ТаблСуммы.Свернуть("Номенклатура", "Количество, СуммаБезНДС");

ТаблОстатков.ВыбратьСтроки();
Пока ТаблОстатков.ПолучитьСтроку() = 1 Цикл

//[+]progadmin ИСПРАВЛЕНО, в типовой не было
Если ТаблОстатков.Количество = 0 Тогда
Продолжить;
КонецЕсли;
//[+]_progadmin ИСПРАВЛЕНО, в типовой не было

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

Возврат "";

КонецФункции // ЗаполнениеПоСкладу()