Исправление ошибки релиза Бухгалтерии 3.0.95.6: при отключенном контроле остатков не проводит документ

11.07.21

Задачи пользователя - Корректировка данных

В программе отключен контроль остатков, но при этом при проведении документов программа выдает ошибку, и документ не проводится. Ошибка в релизе! Как в общем модуле УчетТоваров забыли передать переменную КонтролироватьОстаток, в результате чего документ, например, ОтчетОРозничныхПродажах не проводится. В предыдущем релизе всё было в порядке.

Скачать файлы

Наименование Файл Версия Размер
Исправление ошибки релиза Бухгалтерии 3.0.95.6 при отключенном контроле остатков не проводит документ.:
.cfe 7,49Kb
2
.cfe 7,49Kb 2 Скачать

При проведении документа Отчет о розничных продажах программа выдает ошибку 
 

Некорректно заполнена колонка "Количество" в строке 1 списка "Товары". Указанное количество превышает остаток. Остаток: 0; Не хватает: N.

Далее документ не проводится. Возможно возникает при проведении на других видах документов.

Описание ошибки :

Общий модуль УчетТоваров содержит процедуру

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

 как видно параметр КонтролироватьОстаток присутствует, далее по тексту идет вызов процедуры СписатьОстаткиТоваров

СписатьОстаткиТоваров(ТаблицаСписаниеПоОстаткам, ТаблицаОстатки, ТаблицаСписанныеТовары, ТаблицаВыпущеннаяПродукция, ТаблицаОшибок, ПараметрыСписания);

но при этом параметр КонтролироватьОстаток почему то не передается ! И это приводит к возникновению ошибки. В более ранних релизах передавался.

Для исправления ситуации необходимо внести исправление в процедуру СписатьОстаткиТоваров . 

Текст исправленой процедуры :

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

Чтобы не менять конфигурацию, берем текст процедуры, добавляем в расширение с аннотацией &Вместо("СписатьОстаткиТоваров") и после этого программа работает исправно. 

Готового решения данной проблемы не нашёл, поэтому набросал расширение для исправления данной ситуации.

Все исправления обозначены комментарием // Исправление 3.0.96.35

Ошибка воспроизводится на релизе 3.0.96.5. Надеюсь, в следующем релизе ситуацию исправят.

Ошибка релиз 3.0.96.5 исправление

См. также

Тестирование и исправление ключей аналитики ERP, УТ11, КА

Корректировка данных Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    103863    614    167    

654

QR -кодирование документов БЕЗ изменения печатных форм, с произв. алгоритмами создания QR -кода и обработки (в т.ч прикрепление сканов к документам) для УТ 11 (все), ERP 2, КА 2, Розница 2, УНФ 1.6/3.0, БП 3, ЗУП 3

Корректировка данных Платформа 1С v8.3 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Представьте, что есть система, которая НЕ ТРЕБУЕТ изменения конфигурации, НЕ ТРЕБУЕТ изменения ни одной печатной формы для добавления QR-кода, включая внешние, НЕ ХРАНИТ данные штрихкодов и их связь, от чего база не "пухнет", ИМЕЕТ возможность закодировать в QR-коде произвольные данные параметров для последующей обработки полученных данных, УМЕЕТ прикреплять сканы, УМЕЕТ обработать считанный QR-код как ВЫ захотите. А также ХРАНИТ историю операций в обход базы для каждого пользователя в отдельности и УМЕЕТ работать с 2D - сканерами. А также автоматически распознавать отсканированные печатные формы (картинки или pdf-файлы) и выполнять заданные произвольные алгоритмы, в том числе прикрепление их к документам! Обновление 3.1 от 09.11.2023!

8400 руб.

26.08.2018    49561    12    60    

53

Заполнение документа "Корректировка регистров" произвольными данными

Закрытие периода Корректировка данных Платформа 1С v8.3 Система компоновки данных 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 руб.

13.07.2015    49319    165    29    

116

Исправление ошибки закрытия месяца "Обнаружены ненулевые остатки по суммам при нулевом остатке по количеству в регистре себестоимости по организации". УТ 11.4,УТ 11.5, КА 2.4,КА 2.5, ERP 2.4, ERP 2.5, КА 2 Казахстан, Управление торговлей 3 для Казахстана

Закрытие периода Корректировка данных Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

2400 руб.

27.10.2021    21124    294    35    

65

Помощник исправления порядка расчетов

Взаиморасчеты Корректировка данных Платформа 1С v8.3 Конфигурации 1cv8 Бухгалтерский учет Управленческий учет Платные (руб)

Вы наконец разобрались с закрытием месяцев и пора начать контролировать сроки оплаты поставщикам и задолженности клиентов, но в базе расчеты не идут из-за развернутого сальдо? Не беда, есть решение!

7200 руб.

02.11.2020    6505    4    0    

7

Исправление в 1С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

Корректировка данных Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4320 руб.

06.10.2023    839    3    5    

5

Групповое изменение реквизитов номенклатуры для УТ 11/КА 2

Загрузка и выгрузка в Excel Корректировка данных Платформа 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Обработка для группового редактирования реквизитов номенклатуры. Позволяет редактировать реквизиты (как основные, так и дополнительные реквизиты и сведения) непосредственно в таблице, устанавливать новые значения реквизитов на выбранную номенклатуру, а также загружать новые значения из Excel. Предусмотрена возможность добавления фото к товарам перетаскиванием файла из проводника на строку с товаром (drag'n'drop)

4200 руб.

16.11.2020    16920    11    5    

10

Автоматическая корректировка НДФЛ в ЗКГУ

Корректировка данных Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Налоговый учет НДФЛ Платные (руб)

На этот раз действительно автоматическая корректировка НДФЛ! С помощью данной обработки можно автоматически скорректировать НДФЛ, не тратя целые часы на его ручную корректировку. Можно в считанные минуты изменить НДФЛ по всем сотрудникам в организации. Что бережет деньги на оплату специалиста и время! Обновлена и адаптирована к новым правилам исчисления и удержания НДФЛ с 01.01.2023 г.

4500 руб.

23.06.2022    11076    77    32    

40
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. burgomister 56 12.07.21 04:57 Сейчас в теме
О сколько наш ошибок разных готовят в фирме одинэс...
Оставьте свое сообщение