Имя: Пароль:
1C
1С v8
ТОЗагрузкаККМOffline на основании поступления или перемещения УТ 10.3
0 ElidanPro
 
23.06.15
02:53
Добрый день товарищи задался целью допилить обработку загрузки товаров в ккм offline на основании поступления\перемещения.
Что то не идет немного. Релиз: 10.3.32.2

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



{Форма.Форма.Форма(475)}: Значение не является значением объектного типа (Записать)
НаборЗаписей.Записать();
Вываливается с ошибкой.


Процедура ДействияФормыЗаполнить(Кнопка)

    Если НЕ ЗначениеЗаполнено(ТекущийСклад) Тогда
        Предупреждение("Не выбран склад.");
        Возврат;
    КонецЕсли;

    Если НЕ ЗначениеЗаполнено(ККМOffline) Тогда
        Предупреждение("Не выбрана ККМ.");
        Возврат;
    КонецЕсли;

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

    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    ПзТовары.КодТовара                        КАК ПЛУ,
    |    ПзТовары.Номенклатура                     КАК Номенклатура,
    |    ПзТовары.ВесовойТовар                     КАК ВесовойТовар,
    |    ПзТовары.ЕдиницаИзмерения                 КАК ЕдиницаИзмерения,
    |    ПзТовары.ХарактеристикаНоменклатуры       КАК ХарактеристикаНоменклатуры,
    |    ПзТовары.СерияНоменклатуры                КАК Серия,
    |    111111111111111.11                        КАК Цена,
    |    ЕСТЬNULL(ПзКодыТоваров.Штрихкод, """")    КАК КодТовара,
    |    ЕСТЬNULL(РегОстатки.КоличествоОстаток, 0) КАК Остаток
    |ИЗ
    |    (ВЫБРАТЬ
    |         РегТовары.Код                         КАК КодТовара,
    |         РегТовары.Номенклатура                КАК Номенклатура,
    |         РегТовары.Номенклатура.Весовой        КАК ВесовойТовар,
    |         РегТовары.ЕдиницаИзмерения            КАК ЕдиницаИзмерения,
    |         РегТовары.ХарактеристикаНоменклатуры  КАК ХарактеристикаНоменклатуры,
    |         РегТовары.СерияНоменклатуры           КАК СерияНоменклатуры
    |     ИЗ
    |         РегистрСведений.ТоварыНаККМ           КАК РегТовары
    |     ГДЕ
    |         РегТовары.КассаККМ = &КассаККМ
    |          " + ?(ЗначениеЗаполнено(поступление),"И РегТовары.Номенклатура В (&МассивНоменклатуры)","") + "
    |         " + ?(мПоддерживаетсяВесовойТовар, "", "И НЕ РегТовары.Номенклатура.Весовой") + "
    |    ) КАК ПзТовары
    |    " + ?(мНеобходимШтрихкод, "ВНУТРЕННЕЕ", "ЛЕВОЕ") + " СОЕДИНЕНИЕ
    |        (ВЫБРАТЬ
    |             РегШК.Штрихкод                   КАК Штрихкод,
    |             РегШК.ЕдиницаИзмерения           КАК ЕдиницаИзмерения,
    |             РегШК.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |             РегШК.СерияНоменклатуры          КАК СерияНоменклатуры
    |         ИЗ
    |             РегистрСведений.Штрихкоды КАК РегШК
    |         ГДЕ
    |             РегШК.Владелец ССЫЛКА Справочник.Номенклатура
    |             И РегШК.ТипШтрихкода В (&ТипыШтрихкодов)
    |" + ?(мПоддерживаетсяВесовойТовар, "
    |         ОБЪЕДИНИТЬ ВСЕ
    |         ВЫБРАТЬ
    |             РегКоды.Код                                  КАК Штрихкод,
    |             РегКоды.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
    |             РегКоды.ХарактеристикаНоменклатуры           КАК ХарактеристикаНоменклатуры,
    |             РегКоды.СерияНоменклатуры                    КАК СерияНоменклатуры
    |         ИЗ
    |             РегистрСведений.КодыВесовогоТовара КАК РегКоды
    |", "
    |") + "
    |        ) КАК ПзКодыТоваров
    |    ПО   ПзТовары.ЕдиницаИзмерения           = ПзКодыТоваров.ЕдиницаИзмерения
    |       И ПзТовары.ХарактеристикаНоменклатуры = ПзКодыТоваров.ХарактеристикаНоменклатуры
    |       И ПзТовары.СерияНоменклатуры          = ПзКодыТоваров.СерияНоменклатуры
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |    (ВЫБРАТЬ
    |        РегОстатки.Номенклатура КАК Номенклатура,
    |        РегОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |        РегОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
    |        СУММА(РегОстатки.КоличествоОстаток) КАК КоличествоОстаток
    |    ИЗ
    |        (ВЫБРАТЬ
    |            РегТоварыНаСкладах.Номенклатура КАК Номенклатура,
    |            РегТоварыНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |            РегТоварыНаСкладах.СерияНоменклатуры КАК СерияНоменклатуры,
    |            РегТоварыНаСкладах.КоличествоОстаток КАК КоличествоОстаток
    |        ИЗ
    |            РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад
    |               И Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)) КАК РегТоварыНаСкладах
    |        ОБЪЕДИНИТЬ ВСЕ
    |        ВЫБРАТЬ
    |            РегТоварыВРознице.Номенклатура КАК Номенклатура,
    |            РегТоварыВРознице.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |            РегТоварыВРознице.СерияНоменклатуры КАК СерияНоменклатуры,
    |            РегТоварыВРознице.КоличествоОстаток КАК КоличествоОстаток
    |        ИЗ
    |            РегистрНакопления.ТоварыВРознице.Остатки(, Склад = &Склад
    |               И Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)) КАК РегТоварыВРознице
    |        ) КАК РегОстатки
    |    СГРУППИРОВАТЬ ПО
    |        РегОстатки.Номенклатура,
    |        РегОстатки.ХарактеристикаНоменклатуры,
    |        РегОстатки.СерияНоменклатуры
    |    ) КАК РегОстатки
    |ПО
    |    РегОстатки.Номенклатура                 = ПзТовары.Номенклатура
    |    И РегОстатки.ХарактеристикаНоменклатуры = ПзТовары.ХарактеристикаНоменклатуры
    |    И РегОстатки.СерияНоменклатуры          = ПзТовары.СерияНоменклатуры
    |" + ?(ИмеющиесяНаСкладе, "
    |ГДЕ
    |    ЕСТЬNULL(РегОстатки.КоличествоОстаток, 0) > 0 ИЛИ ПзТовары.Номенклатура.Услуга",""));
    Запрос.УстановитьПараметр("КассаККМ",       мКассаККМ);
    Запрос.УстановитьПараметр("ТипыШтрихкодов", мТипыШтрихкодов);
    Запрос.УстановитьПараметр("Склад",          ТекущийСклад);
    Запрос.УстановитьПараметр("МассивНоменклатуры", Массив);
    Товары = Запрос.Выполнить().Выгрузить();

    Товар = Неопределено;
    Для Каждого Товар Из Товары Цикл
        Товар.Цена = Ценообразование.ПолучитьЦенуНоменклатуры(Товар.Номенклатура,
                                              Товар.ХарактеристикаНоменклатуры,
                                              ТипЦен,
                                              Неопределено,
                                              Товар.ЕдиницаИзмерения);
    КонецЦикла;

КонецПроцедуры // ДействияФормыЗаполнить()