Выгрузка нескольких штрих-кодов одного товара в программу Штрих-Кассир
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Как я понимаю вот процедура которая выбирает условия заполнения товаров для выгрузки в ккм:
Процедура ЗаполнитьПостроительОтчета()
ПостроительОтчета.Параметры.Вставить("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
ПостроительОтчета.Параметры.Вставить("КассыККМ", КассыККМ);
Если ИсточникиДанныхНеВыбраны() Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| 0
|";
Иначе
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| Ном.*,
| СпрКассы.Ссылка КАК Касса
|ИЗ
| (
|";
Если ЗаполнитьПоШтрихКодам Тогда
ТекстЗапроса = ТекстЗапроса + "
|ВЫБРАТЬ
| РегШтрихКоды.Владелец КАК Номенклатура,
| РегШтрихКоды.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| РегШтрихКоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
|ИЗ
| РегистрСведений.Штрихкоды КАК РегШтрихКоды
|ГДЕ
| РегШтрихКоды.Владелец Ссылка Справочник.Номенклатура
|{ГДЕ РегШтрихКоды.Владелец.* КАК Номенклатура}
|";
КонецЕсли;
Если ЗаполнитьПоСправочникуНоменклатуры Тогда
Если ЗаполнитьПоШтрихКодам Или ЗаполнитьПоКодамВесовогоТовара Тогда
ТекстЗапроса = ТекстЗапроса + "
|ОБЪЕДИНИТЬ";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Номенклатура,
|";
Если ИспользоватьЕдиницыИзмерения Тогда
ТекстЗапроса = ТекстЗапроса + "
| СпрЕдиницы.Ссылка КАК ЕдиницаИзмерения,
|";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| СпрНоменклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
|";
КонецЕсли;
Если ИспользоватьХарактеристики Тогда
ТекстЗапроса = ТекстЗапроса + "
| ЕСТЬNULL(СпрХарактеристики.Ссылка, СпрНоменклатура.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатуры,
|";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|ИЗ
| (ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Ссылка,
| СпрНоменклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
| ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ГДЕ
| НЕ СпрНоменклатура.ЭтоГруппа
| {ГДЕ СпрНоменклатура.Ссылка.* КАК Номенклатура}
| ) КАК СпрНоменклатура
|";
Если ИспользоватьЕдиницыИзмерения Тогда
ТекстЗапроса = ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.ЕдиницыИзмерения КАК СпрЕдиницы
|ПО
| СпрЕдиницы.Владелец = СпрНоменклатура.Ссылка
|";
КонецЕсли;
Если ИспользоватьХарактеристики Тогда
ТекстЗапроса = ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| СпрХарактеристики.Ссылка КАК Ссылка,
| СпрХарактеристики.Владелец КАК Владелец
| ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
| ОБЪЕДИНИТЬ
| ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
| NULL
| )КАК СпрХарактеристики
|ПО
| СпрХарактеристики.Владелец = СпрНоменклатура.Ссылка
| ИЛИ СпрХарактеристики.Ссылка = СпрНоменклатура.ХарактеристикаНоменклатуры
|";
КонецЕсли;
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|) КАК Ном
|";
ТекстЗапроса = ТекстЗапроса + "
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.КассыККМ КАК СпрКассы
|ПО
| СпрКассы.Ссылка В (&КассыККМ)
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ТоварыНаККМ КАК ТоварыНаККМ
|ПО
| ТоварыНаККМ.Номенклатура = Ном.Номенклатура
| И ТоварыНаККМ.ХарактеристикаНоменклатуры = Ном.ХарактеристикаНоменклатуры
| И ТоварыНаККМ.ЕдиницаИзмерения = Ном.ЕдиницаИзмерения
| И ТоварыНаККМ.КассаККМ = СпрКассы.Ссылка
|";
Если ТолькоИмеющиесяВНаличии Тогда
ТекстЗапроса = ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(Остатки.Количество) КАК Количество
| ИЗ
| (ВЫБРАТЬ
| РегТоварыНаСкладах.Номенклатура КАК Номенклатура,
| РегТоварыНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| РегТоварыНаСкладах.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, {Номенклатура.* КАК Номенклатура,
| Склад.* КАК Склад}) КАК РегТоварыНаСкладах
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| РегТоварыВРознице.Номенклатура КАК Номенклатура,
| РегТоварыВРознице.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| РегТоварыВРознице.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыВРознице.Остатки(, {Номенклатура.* КАК Номенклатура,
| Склад.* КАК Склад}) КАК РегТоварыВРознице
| ) КАК Остатки
| СГРУППИРОВАТЬ ПО
| Остатки.Номенклатура,
| Остатки.ХарактеристикаНоменклатуры
| ) КАК Остатки
|ПО
| Остатки.Номенклатура = Ном.Номенклатура
| И Остатки.ХарактеристикаНоменклатуры = Ном.ХарактеристикаНоменклатуры
|ГДЕ
| (ЕСТЬNULL(Остатки.Количество, 0) > 0
| ИЛИ Ном.Номенклатура.Услуга)
| И ТоварыНаККМ.Номенклатура ЕСТЬ NULL
| И Не Ном.Номенклатура.Набор
|";
Иначе
ТекстЗапроса = ТекстЗапроса + "
|ГДЕ
| ТоварыНаККМ.Номенклатура ЕСТЬ NULL
| И Не Ном.Номенклатура.Набор
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|";
КонецЕсли;
ПостроительОтчета.Текст = ТекстЗапроса;
ПостроительОтчета.ЗаполнитьНастройки();
// Создадим список доступных отборов.
СоответствиеДоступныхОтборов = Новый Соответствие;
СоответствиеДоступныхОтборов.Вставить("Номенклатура", 0);
СоответствиеДоступныхОтборов.Вставить("Склад", 0);
Для Каждого ДоступноеПоле Из ПостроительОтчета.ДоступныеПоля Цикл
Если СоответствиеДоступныхОтборов[ДоступноеПоле.Имя] = Неопределено Тогда
ДоступноеПоле.Отбор = Ложь;
Иначе
ДоступноеПоле.Отбор = Истина;
КонецЕсли;
КонецЦикла;
// Создадим массив отборов.
МассивОтбора = Новый Массив;
Если Не ИсточникиДанныхНеВыбраны() Тогда
МассивОтбора.Добавить("Номенклатура");
Если ТолькоИмеющиесяВНаличии Тогда
МассивОтбора.Добавить("Склад");
КонецЕсли;
КонецЕсли;
Для Каждого ЭлементОтбора Из МассивОтбора Цикл
Если ПостроительОтчета.Отбор.Найти(ЭлементОтбора) = Неопределено Тогда
ПостроительОтчета.Отбор.Добавить(ЭлементОтбора);
КонецЕсли;
КонецЦикла;
Процедура ЗаполнитьПостроительОтчета()
ПостроительОтчета.Параметры.Вставить("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
ПостроительОтчета.Параметры.Вставить("КассыККМ", КассыККМ);
Если ИсточникиДанныхНеВыбраны() Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| 0
|";
Иначе
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| Ном.*,
| СпрКассы.Ссылка КАК Касса
|ИЗ
| (
|";
Если ЗаполнитьПоШтрихКодам Тогда
ТекстЗапроса = ТекстЗапроса + "
|ВЫБРАТЬ
| РегШтрихКоды.Владелец КАК Номенклатура,
| РегШтрихКоды.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| РегШтрихКоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
|ИЗ
| РегистрСведений.Штрихкоды КАК РегШтрихКоды
|ГДЕ
| РегШтрихКоды.Владелец Ссылка Справочник.Номенклатура
|{ГДЕ РегШтрихКоды.Владелец.* КАК Номенклатура}
|";
КонецЕсли;
Если ЗаполнитьПоСправочникуНоменклатуры Тогда
Если ЗаполнитьПоШтрихКодам Или ЗаполнитьПоКодамВесовогоТовара Тогда
ТекстЗапроса = ТекстЗапроса + "
|ОБЪЕДИНИТЬ";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Номенклатура,
|";
Если ИспользоватьЕдиницыИзмерения Тогда
ТекстЗапроса = ТекстЗапроса + "
| СпрЕдиницы.Ссылка КАК ЕдиницаИзмерения,
|";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| СпрНоменклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
|";
КонецЕсли;
Если ИспользоватьХарактеристики Тогда
ТекстЗапроса = ТекстЗапроса + "
| ЕСТЬNULL(СпрХарактеристики.Ссылка, СпрНоменклатура.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатуры,
|";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|ИЗ
| (ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Ссылка,
| СпрНоменклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
| ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ГДЕ
| НЕ СпрНоменклатура.ЭтоГруппа
| {ГДЕ СпрНоменклатура.Ссылка.* КАК Номенклатура}
| ) КАК СпрНоменклатура
|";
Если ИспользоватьЕдиницыИзмерения Тогда
ТекстЗапроса = ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.ЕдиницыИзмерения КАК СпрЕдиницы
|ПО
| СпрЕдиницы.Владелец = СпрНоменклатура.Ссылка
|";
КонецЕсли;
Если ИспользоватьХарактеристики Тогда
ТекстЗапроса = ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| СпрХарактеристики.Ссылка КАК Ссылка,
| СпрХарактеристики.Владелец КАК Владелец
| ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
| ОБЪЕДИНИТЬ
| ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
| NULL
| )КАК СпрХарактеристики
|ПО
| СпрХарактеристики.Владелец = СпрНоменклатура.Ссылка
| ИЛИ СпрХарактеристики.Ссылка = СпрНоменклатура.ХарактеристикаНоменклатуры
|";
КонецЕсли;
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|) КАК Ном
|";
ТекстЗапроса = ТекстЗапроса + "
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.КассыККМ КАК СпрКассы
|ПО
| СпрКассы.Ссылка В (&КассыККМ)
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ТоварыНаККМ КАК ТоварыНаККМ
|ПО
| ТоварыНаККМ.Номенклатура = Ном.Номенклатура
| И ТоварыНаККМ.ХарактеристикаНоменклатуры = Ном.ХарактеристикаНоменклатуры
| И ТоварыНаККМ.ЕдиницаИзмерения = Ном.ЕдиницаИзмерения
| И ТоварыНаККМ.КассаККМ = СпрКассы.Ссылка
|";
Если ТолькоИмеющиесяВНаличии Тогда
ТекстЗапроса = ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(Остатки.Количество) КАК Количество
| ИЗ
| (ВЫБРАТЬ
| РегТоварыНаСкладах.Номенклатура КАК Номенклатура,
| РегТоварыНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| РегТоварыНаСкладах.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, {Номенклатура.* КАК Номенклатура,
| Склад.* КАК Склад}) КАК РегТоварыНаСкладах
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| РегТоварыВРознице.Номенклатура КАК Номенклатура,
| РегТоварыВРознице.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| РегТоварыВРознице.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыВРознице.Остатки(, {Номенклатура.* КАК Номенклатура,
| Склад.* КАК Склад}) КАК РегТоварыВРознице
| ) КАК Остатки
| СГРУППИРОВАТЬ ПО
| Остатки.Номенклатура,
| Остатки.ХарактеристикаНоменклатуры
| ) КАК Остатки
|ПО
| Остатки.Номенклатура = Ном.Номенклатура
| И Остатки.ХарактеристикаНоменклатуры = Ном.ХарактеристикаНоменклатуры
|ГДЕ
| (ЕСТЬNULL(Остатки.Количество, 0) > 0
| ИЛИ Ном.Номенклатура.Услуга)
| И ТоварыНаККМ.Номенклатура ЕСТЬ NULL
| И Не Ном.Номенклатура.Набор
|";
Иначе
ТекстЗапроса = ТекстЗапроса + "
|ГДЕ
| ТоварыНаККМ.Номенклатура ЕСТЬ NULL
| И Не Ном.Номенклатура.Набор
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|";
КонецЕсли;
ПостроительОтчета.Текст = ТекстЗапроса;
ПостроительОтчета.ЗаполнитьНастройки();
// Создадим список доступных отборов.
СоответствиеДоступныхОтборов = Новый Соответствие;
СоответствиеДоступныхОтборов.Вставить("Номенклатура", 0);
СоответствиеДоступныхОтборов.Вставить("Склад", 0);
Для Каждого ДоступноеПоле Из ПостроительОтчета.ДоступныеПоля Цикл
Если СоответствиеДоступныхОтборов[ДоступноеПоле.Имя] = Неопределено Тогда
ДоступноеПоле.Отбор = Ложь;
Иначе
ДоступноеПоле.Отбор = Истина;
КонецЕсли;
КонецЦикла;
// Создадим массив отборов.
МассивОтбора = Новый Массив;
Если Не ИсточникиДанныхНеВыбраны() Тогда
МассивОтбора.Добавить("Номенклатура");
Если ТолькоИмеющиесяВНаличии Тогда
МассивОтбора.Добавить("Склад");
КонецЕсли;
КонецЕсли;
Для Каждого ЭлементОтбора Из МассивОтбора Цикл
Если ПостроительОтчета.Отбор.Найти(ЭлементОтбора) = Неопределено Тогда
ПостроительОтчета.Отбор.Добавить(ЭлементОтбора);
КонецЕсли;
КонецЦикла;
(10) reazek, Так то если почитать формат файла кассира поддерживается только один штрих-код на товар. Через дополнительные единицы измерения канечно можно, но все таки для Кассира это будут разные товары со своим наименованием и ценой. Сам настраивал обмен между комплексной и кассиром. Бывает штрих-коды у товаров меняются, но действующий обычно один. При поступлении новых товаров очищал их старые штрих-кода, назначал новые. В таком виде все корректно работает, у каждого товара один штрих-код.
(13) Товар для кассира 1-н - остальные к нему доп единицы измерения.
так что несколько поддерживается и работает на ура.
пример - у клиента помимио заводских ШК всегда по умолчанию присваивается внутренний, в кассире - как минимум два.
а то и 10-ть - есть кампании , которые при смене упаковки на товар меняют ШК. а по факту это единый товар, из-за него заводить отдельный товар как сущность в бэке смысла нет.
Кроме того вопрос как выделять товар. пример - носки. у каждого размера свой ШК, у цвета свой ШК.
если выделять каждый отдельный шк как товар - будет 25 носков. если носки идут как сопутка - смысла нет.
так что несколько поддерживается и работает на ура.
пример - у клиента помимио заводских ШК всегда по умолчанию присваивается внутренний, в кассире - как минимум два.
а то и 10-ть - есть кампании , которые при смене упаковки на товар меняют ШК. а по факту это единый товар, из-за него заводить отдельный товар как сущность в бэке смысла нет.
Кроме того вопрос как выделять товар. пример - носки. у каждого размера свой ШК, у цвета свой ШК.
если выделять каждый отдельный шк как товар - будет 25 носков. если носки идут как сопутка - смысла нет.
(15)Если у тебя все доп единицы одного типа нет.
И если разного - тоже нет.
т.е. если у тебя создано 5 допединицы равных основной и все они шт - все ок.
и если у тебя основная штука а доп с др штрихкодов упаковка - тоже нет.
во втором случае - смотри за коэффициентом
И если разного - тоже нет.
т.е. если у тебя создано 5 допединицы равных основной и все они шт - все ок.
и если у тебя основная штука а доп с др штрихкодов упаковка - тоже нет.
во втором случае - смотри за коэффициентом
Добрый день. Подскажите, пожалуйста, как добавлять на склад по штрихкоду товар, если он приходит несколькими пакетами? Как объединить штрихкода в один? То есть пришел шкаф, по товарной накладной одной строкой, Продается одной строкой, но на склад поступает как отдельные детали со штрихкодами. Интересует как сделать штрихкод на сам шкаф и под ним внутри несколько штрихкодов, и в программе отражалось как один шкаф , а не три например. Вводим штрихкоды на шкаф, пробиваются три шкафа, на три детали от одного шкафа.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот