УТ 11.2 проблемы с сериями

1. deman_ru 19 11.05.17 18:59 Сейчас в теме
Всем привет!
Конфигурация: 1С: Управление торговлей алкогольной продукцией 8, редакция 11.2 (11.2.3.267)

После перехода с 11.1 на 11.2, возникли проблемы с сериями, а именно в стандартном механизме подбора серий, не совпадают данные общего остатка номенклатуры с учетом серий и остатки по сериям.
Пример на скриншете.
Причем цифры расходятся непонятным образом, может быть остаток по сериям больше фактического наличия и наоборот.
Может кто сталкивался, как исправить эту проблему?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. E_Johnny 12.05.17 05:03 Сейчас в теме
уже есть более новые версии с исправленными багами 11.2.3.300

Возможно это поможет:

Данная ошибка Исправлена: "1С:Управление торговлей 11", версия 11.3.3

                            В процессе выполнения обновления УТ с 11.1 на 11.2 не осуществляется создание Актов о расхождения после реализации, на основании документов Реализации товаров и Услуг, в шапке которых указана группа складов. В результате чего некорректно отражаются сведения о доступных остатках на складах.
                        

Способ исправления:

                            Для исправления ошибки в модуле менеджера документа РеализацияТоваровУслуг нужно заменить процедуры ДанныеДляОбновленияПеренестиРасхожденияВАкты() и ПеренестиРасхожденияВАкты на нижеприведенные:

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

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

	ПакетЗапросов = Запрос.ВыполнитьПакет();
	
	//Здесь все документы, пришедшие из очереди
	ТаблицаСсылокКОбработке = ПакетЗапросов[1].Выгрузить();
	СоответствиеОбработанныхДокументов = Новый Соответствие;
	
	//Соответствие
	ВыборкаОснованияСозданныеАкты = ПакетЗапросов[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	СоотвествиеОснованиеАкты = Новый Соответствие;
	Пока ВыборкаОснованияСозданныеАкты.Следующий() Цикл
		МассивСозданныхАктов = Новый Массив;
		ВыборкаДетали = ВыборкаОснованияСозданныеАкты.Выбрать();
		Пока ВыборкаДетали.Следующий() Цикл
			МассивСозданныхАктов.Добавить(ВыборкаДетали.Акт);
		КонецЦикла;
		СоотвествиеОснованиеАкты.Вставить(ВыборкаОснованияСозданныеАкты.ДокументОснование, МассивСозданныхАктов);
	КонецЦикла;
	
	Выборка = ПакетЗапросов[0].Выбрать();;
	
	Пока Выборка.СледующийПоЗначениюПоля("ДокументОснование") Цикл
		
		Попытка
			
			НачатьТранзакцию();
			
			Блокировка = Новый БлокировкаДанных;
			ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяДокумента);
			ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.ДокументОснование);
			ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
			Блокировка.Заблокировать();
			
		Исключение
			
			ОтменитьТранзакцию();
			СоответствиеОбработанныхДокументов.Вставить(Выборка.ДокументОснование);
			ТекстСообщения = НСтр("ru = 'Не удалось заблокировать документ: %Регистратор% по причине: %Причина%'");
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Регистратор%", Выборка.ДокументОснование);
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Причина%", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
			ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
									УровеньЖурналаРегистрации.Предупреждение,
									Метаданные.Документы.РеализацияТоваровУслуг,
									Выборка.ДокументОснование,
									ТекстСообщения);
			Продолжить;
			
		КонецПопытки;
		
		НакладнаяОбъект = ЗаказыСервер.ПроверитьПолучитьОбъект(Выборка.ДокументОснование, Выборка.ВерсияДанных, Параметры.Очередь);
		Если НакладнаяОбъект = Неопределено Тогда
			ОтменитьТранзакцию();
			СоответствиеОбработанныхДокументов.Вставить(Выборка.ДокументОснование);
			Продолжить;
		КонецЕсли;
		МассивСозданныхАктов = СоотвествиеОснованиеАкты.Получить(Выборка.ДокументОснование);
		Если МассивСозданныхАктов = Неопределено Или МассивСозданныхАктов.Количество() = 0 Тогда
			АктОРасхожденияхОбъект = Документы.АктОРасхожденияхПослеОтгрузки.СоздатьДокумент();
		Иначе
			АктОРасхожденияхОбъект = МассивСозданныхАктов[0].ПолучитьОбъект();
			Если АктОРасхожденияхОбъект = Неопределено Тогда
				АктОРасхожденияхОбъект = Документы.АктОРасхожденияхПослеОтгрузки.СоздатьДокумент();
			КонецЕсли;
		КонецЕсли;
		ОбработатьШапкуПриОбновлении(НакладнаяОбъект);
		СтруктураПоиска = Новый Структура("Номенклатура,Характеристика,Назначение,Склад,ДокументРезерваСерий");
		РасхожденияСервер.ЗаполнитьАктПоРасхождениямПриОбновлении(Выборка, АктОРасхожденияхОбъект, НакладнаяОбъект, СтруктураПоиска, Параметры);
		СоответствиеОбработанныхДокументов.Вставить(Выборка.ДокументОснование);
		
	КонецЦикла;
	
	Для Каждого СтрокаТаблицы Из ТаблицаСсылокКОбработке Цикл
		
		Если СоответствиеОбработанныхДокументов.Получить(СтрокаТаблицы.Ссылка) = Неопределено Тогда
			ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(СтрокаТаблицы.Ссылка,, Параметры.Очередь);
		КонецЕсли;
		
	КонецЦикла;
	
	Параметры.ОбработкаЗавершена = Не ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки(Параметры.Очередь, ПолноеИмяДокумента);
	
КонецПроцедуры
                        
Показать
3. E_Johnny 12.05.17 05:06 Сейчас в теме
Добавка



  В процессе выполнения обновления УТ с 11.1 на 11.2 не осуществляется распроведение помеченных на удаление Приходных ордеров, в результате чего некорректно отражаются сведения о доступных остатках на складах.
                        

Способ исправления:

                            Для исправления ошибки в модуле менеджера документа ПриходныйОрдерНаТовары нужно заменить процедуру ПометитьНаУдалениеОрдераСТипомВозвратНепринятых() на нижеприведенную:

Процедура ПометитьНаУдалениеОрдераСТипомВозвратНепринятых(Параметры) Экспорт
	
	Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Документ.ПриходныйОрдерНаТовары");
	
	Если ПолучитьФункциональнуюОпцию("УправлениеПредприятием") Тогда
		Версия = НСтр("ru = 'УП 2.1.1'");
	Иначе
		Версия = НСтр("ru = 'УТ 11.2.1'");
	КонецЕсли;
	
	Пока Выборка.Следующий() Цикл
		
		НачатьТранзакцию();
		
		Попытка	
			
			Блокировка = Новый БлокировкаДанных;
			ЭлементБлокировки = Блокировка.Добавить("Документ." + Метаданные.Документы.ПриходныйОрдерНаТовары.Имя);
			ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка);
			ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
			Блокировка.Заблокировать();
			
			ПриходныйОрдерОбъект = Выборка.Ссылка.ПолучитьОбъект();
			
			Если ПриходныйОрдерОбъект.СкладскаяОперация <> Перечисления.СкладскиеОперации.ВозвратНепринятыхТоваров 
				Или Не ПриходныйОрдерОбъект.Проведен Тогда
				
				ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ПриходныйОрдерОбъект.Ссылка);
				ЗафиксироватьТранзакцию();
				Продолжить;
				
			КонецЕсли;
						
			ОприходованиеТоваровОбъект = Документы.ОприходованиеИзлишковТоваров.СоздатьДокумент();
			НоваяСсылка = Документы.ОприходованиеИзлишковТоваров.ПолучитьСсылку(ПриходныйОрдерОбъект.Ссылка.УникальныйИдентификатор());
			ОприходованиеТоваровОбъект.УстановитьСсылкуНового(НоваяСсылка);
			ОприходованиеТоваровОбъект.Дата = ТекущаяДатаСеанса();
			ЗаполнитьЗначенияСвойств(ОприходованиеТоваровОбъект, ПриходныйОрдерОбъект, "Склад, Ответственный");
			
			// Заполнение ТЧ Товары в созданном оприходовании излишков товаров
			Для Каждого Строка Из ПриходныйОрдерОбъект.Товары Цикл
				
				НоваяСтрока = ОприходованиеТоваровОбъект.Товары.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
				
			КонецЦикла;
			
			// Заполнение комментариев в созданном оприходовании излишков товаров
			КомментарийОприходования = НСтр("ru = 'Создан при обновлении информационной базы на версию %Версия% по данным документа ""%ПриходныйОрдер%"".'");
			КомментарийОприходования = СтрЗаменить(КомментарийОприходования, "%Версия%", Версия);
			КомментарийОприходования = СтрЗаменить(КомментарийОприходования, "%ПриходныйОрдер%", ПриходныйОрдерОбъект.Ссылка);
			ОприходованиеТоваровОбъект.Комментарий = КомментарийОприходования;
			
			// Запись созданного оприходования излишков товаров
			ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОприходованиеТоваровОбъект,, Истина);		
			
			// Заполнение комментариев в приходном ордере
			КомментарийОрдера = ПриходныйОрдерОбъект.Комментарий
				+ ?(ЗначениеЗаполнено(ПриходныйОрдерОбъект.Комментарий), Символы.ПС, "")
				+ НСтр("ru = 'Помечен на удаление при обновлении информационной базы на версию %Версия%.'");		
			КомментарийОрдера = СтрЗаменить(КомментарийОрдера, "%Версия%", Версия);
			ПриходныйОрдерОбъект.Комментарий = КомментарийОрдера;
			
			// Пометка удаления и запись приходного ордера
			ПриходныйОрдерОбъект.Проведен = Ложь;
			ПриходныйОрдерОбъект.ПометкаУдаления = Истина;
			
			ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ПриходныйОрдерОбъект);
			ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПриходныйОрдерОбъект, , , РежимЗаписиДокумента.ОтменаПроведения);
			
			ЗафиксироватьТранзакцию();
			
		Исключение
			
			ОтменитьТранзакцию();
			ТекстСообщения = НСтр("ru = 'Не удалось обработать документ: %Регистратор% по причине: %Причина%'");
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Регистратор%", Выборка.Ссылка);
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Причина%", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
			ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
									УровеньЖурналаРегистрации.Предупреждение,
									Метаданные.Документы.ПриходныйОрдерНаТовары,
									Выборка.Ссылка,
									ТекстСообщения);
			ВызватьИсключение;
			
		КонецПопытки;
						
	КонецЦикла;
	
	Параметры.ОбработкаЗавершена = Не ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки(Параметры.Очередь, 
																								"Документ.ПриходныйОрдерНаТовары");
	
КонецПроцедуры
Показать
4. deman_ru 19 19.05.17 09:22 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот