Ошибки типовой ТиС

Автор Злоп, Вчера в 18:31

« назад - далее »

Злоп

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

Злоп

ОТЧЕТ.ОСТАТКИТМЦ: НЕВЕРНОЕ ОТРАЖЕНИЕ ОСТАТКОВ У КОМИССИОНЕРОВ
Релиз 1002, также присутствует и в младших релизах

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

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

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

	ВалютаЦены = 0;
	ПолучитьЦенуТовара(ТЗИтогов, Запрос.Номенклатура, Цена, ВалютаЦены);    
	
	Если ПредставлениеЦены <> "не показывать"  Тогда
		ТЗ.Цена = Цена;
	КонецЕсли;
		
	ПервыйРаз = 1;
	Пока Запрос.Группировка("Склад")=1 Цикл    
		Если ПоказатьКомиссию = 1 Тогда
			Если ПервыйРаз = 1 Тогда
				Пока Запрос.Группировка("Комиссионер") = 1 Цикл
					Если (ПустоеЗначение(Запрос.Комиссионер) = 1) Тогда
						Продолжить;
					КонецЕсли;   
					
					ПечКол = Запрос.КоличествоКонОст;
					Если Показатель.ТекущаяСтрока() = 2 Тогда
					    ПечКол = ПечКол - Запрос.РезервКонОст;
					КонецЕсли;
					ПечКол = ПечКол / ТЗ.ПечЕд.Коэффициент; //[+]progadmin ИСПРАВЛЕНО, отсутствует в типовой
					
					Поз = СписокСкладов.НайтиЗначение(Запрос.Комиссионер);
					Если Поз > 0  Тогда
					    ТЗ.УстановитьЗначение(ТЗ.НомерСтроки, "Количество" + Поз, ПечКол);
						Если (ПредставлениеЦены <> "не показывать") и (ПредставлениеЦены <> "отпускная цена (только розница)") Тогда
							ПечСумма = Цена * ПечКол;
						    ТЗ.УстановитьЗначение(ТЗ.НомерСтроки, "Сумма" + Поз, ПечСумма);
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
				ПервыйРаз = 0;
				Если ПустоеЗначение(Запрос.Склад) = 1 Тогда
					Продолжить;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;

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

Злоп

СПРАВОЧНИК.НОМЕНКЛАТУРА.ФОРМАСПИСКА.ДЛЯПОДБОРА: ДОБАВЛЯЕТСЯ ПУСТАЯ СТРОКА ЕСЛИ В ПОДБОРЕ НИЧЕГО НЕ ВЫБРАНО И НАЖАТЬ ОК
Релиз 1002, также присутствует и в младших релизах

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


Исправляем в СПРАВОЧНИК.НОМЕНКЛАТУРА.ФОРМАСПИСКА.ДЛЯПОДБОРА.Модуль
Процедура ВыполнитьЗапись()
	Перем ПараметрыВыбора;
	
	//[+]progadmin ИСПРАВЛЕНО, отсутствует в типовой	
	Если ТаблицаПодбора.КоличествоСтрок() = 0 Тогда
		Форма.Закрыть();
		Возврат;
	КонецЕсли;
	//[+]_progadmin ИСПРАВЛЕНО, отсутствует в типовой	
	
	ПараметрыВыбора = СоздатьОбъект("СписокЗначений");
	ПараметрыВыбора.ДобавитьЗначение(ЕстьВидТМЦ    , "ЕстьВидТМЦ");
	ПараметрыВыбора.ДобавитьЗначение(ЦенаВподборе  , "ЦенаВподборе");
	ПараметрыВыбора.ДобавитьЗначение(ТипЦен        , "ТипЦен");      
	ПараметрыВыбора.ДобавитьЗначение(ТаблицаПодбора, "ТаблицаПодбора");
	ПараметрыВыбора.ДобавитьЗначение(1             , "ПоКнопкеПодбор");
	
	Форма.ВыполнитьВыбор(ПараметрыВыбора);
	ТаблицаПодбора.УдалитьСтроки();  // иначе при выходе еще раз можем перенести
	
КонецПроцедуры //ВыполнитьЗапись()

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

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

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

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

Злоп

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

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

Иначе
		УдалитьСтроки();
		
		ПолучитьОстатки(СписТоваров, 0, ТаблОстатков, ТаблСуммы);
		
		ТаблОстатков.Свернуть("Номенклатура", "Количество");
		ТаблСуммы.Свернуть("Номенклатура", "Количество, СуммаБезНДС");
		
		ТаблОстатков.ВыбратьСтроки();
		Пока ТаблОстатков.ПолучитьСтроку() = 1 Цикл

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

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