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

1. deman_ru 20 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 20 19.05.17 09:22 Сейчас в теме
Оставьте свое сообщение

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