Данная обработка служит для формирования заказа на товары от магазина к центральному офису, в виде текстового файла. Для того случая упрощенной торговой сети, когда фронт-офиса, как такового, нет, а кассир формирует заказ в виде текстового файла, пользуясь непосредственно клавиатурой кассового аппарата.
На рабочем столе windows-CE кассового аппарата установлен ярлык со ссылкой на текстовый шаблон, служащий одновременно текущим заказом. Также на кассе установлена программа типа FtpSync, осуществляющая периодическую передачу файла заказа на ftp-каталог, на котором со стороны центрального офиса предприятия существует свой обмен с каталогами локальной сети. Через тот же каталог происходит штатный обмен данными 1С кассы и центрального офиса: с кассы выгружаются данные о продажах, а с центрального офиса - справочник товара и остатки. Передача текстового файла заказа возможна любым иным способом, например, через каталог локальной сети.
Файл заказа имеет следующий вид:
В первой строке - краткое наименование магазина (для логистов).
Во второй строке - внутренний номер заказа, произвольной формы. Когда нужно сделать заказ, кассир (заведующий) ставит новый номер, например, увеличивая на единицу. Номер нужен для исключения повторного приема заказа, и в базе-приемнике записывается в поле НомерВходящегоДокументаЭлектронногоОбмена документа "Заказ покупателя".
В третьей строке записана дата, на которую заказан товар, в формате дд.мм.гггг. Разделитель любой - точка, запятая. В зависимости от того, что есть на клавиатуре кассы.
В первой колонке цифр - артикулы товара на предприятии, во второй - количество коробов (или других принятых в процессе поставки единиц товара).
Как правило, типичный ассортимент ходового товара небольшой, и кассир просто указывает необходимые количества единиц в заказе. Если артикул не нужен, можно просто поставить 0 в поле количества.
Примечание. У нас весь товар поставляется в коробах, и в обработке в функции ПолучитьЗаказИзТекста есть вот это место:
Конкретный пользователь может тут сделать свою схему выбора единиц отгрузки.
Другой специфический момент обработки представляет собой контроль типа загружаемого файла по ключевым словам:
Это служит для предотвращения попытки загрузки случайного файла. Конкретный пользователь может изменить или выбросить эту проверку.
Обработка имеет следующий вид:
При открытии она устанавливает обработчик события таймера, принимающий файлы (если они есть в каталоге приема) каждые 5 минут. По кнопке "Принять заказ" можно осуществить прием файла в тот же момент.
В каталог архива переносятся принятые файлы заказа (на всякий случай), а ошибочные или повторные просто удаляются из каталога приема.
Поля "Клиент КК" и "Контрагент" в нашем случае содержать одно и то же значение, именно - специального контрагента, на которого формируется заказ.
Наименование магазина заносится в комментарий документа "Заказ покупателя", и далее логист центрального офиса по своему усмотрению определяет из него, на какой розничный склад отгружать продукцию.
В нашем случае, центральный офис и магазины относятся к одной фирме, и потому для отгрузки на магазин создается накладная перемещения товаров на розничный склад. В штатной конфигурации УПП этого сделать нельзя, и потому в модул документа "ПеремещениеТоваров" добавлены требуемые механизмы:
Процедура ЗаполнитьТоварыПоЗаказуПокупателя(ДокументОснование) Экспорт
Запрос = Новый Запрос;
масНаправленияВыпуска = новый Массив;
масНаправленияВыпуска.Добавить(Перечисления.НаправленияВыпуска.НаЗатраты);
масНаправленияВыпуска.Добавить(Перечисления.НаправленияВыпуска.НаЗатратыСписок);
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
ПоляЗапросаРегл = "";
ЗаполнитьПоляЗапросаРегл(ПоляЗапросаРегл);
Запрос.Текст =
"ВЫБРАТЬ
| ДокТовары.Номенклатура КАК Номенклатура,
| ДокТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ДокТовары.СерияНоменклатуры КАК СерияНоменклатуры,
| ДокТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ДокТовары.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| ДокТовары.Коэффициент КАК Коэффициент,
| ДокТовары.СчетУчетаБУ КАК СчетУчетаБУ,
| ДокТовары.СчетУчетаНУ КАК СчетУчетаНУ,
| СУММА(ДокТовары.Количество) КАК Количество,
| СУММА(ДокТовары.КоличествоМест) КАК КоличествоМест
|
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ДокТовары
|
|ГДЕ
| ДокТовары.Ссылка = &ДокументОснование
|
|СГРУППИРОВАТЬ ПО
| ДокТовары.Номенклатура,
| ДокТовары.СерияНоменклатуры,
| ДокТовары.ХарактеристикаНоменклатуры,
| ДокТовары.ЕдиницаИзмерения,
| ДокТовары.ЕдиницаИзмеренияМест,
| ДокТовары.Коэффициент,
| ДокТовары.СчетУчетаБУ,
| ДокТовары.СчетУчетаНУ
|";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаТабличнойЧасти = Товары.Добавить();
СтрокаТабличнойЧасти.Номенклатура = Выборка.Номенклатура;
СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры;
СтрокаТабличнойЧасти.СерияНоменклатуры = Выборка.СерияНоменклатуры;
СтрокаТабличнойЧасти.Качество = Справочники.Качество.Новый;
СтрокаТабличнойЧасти.Количество = Выборка.Количество;
СтрокаТабличнойЧасти.КоличествоМест = Выборка.КоличествоМест;
СтрокаТабличнойЧасти.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест = Выборка.ЕдиницаИзмеренияМест;
СтрокаТабличнойЧасти.Коэффициент = Выборка.Коэффициент;
СтрокаТабличнойЧасти.СчетУчетаБУ = ПланыСчетов.Хозрасчетный.ГотоваяПродукция;
СтрокаТабличнойЧасти.НовыйСчетУчетаБУ = ПланыСчетов.Хозрасчетный.ГотоваяПродукция;
СтрокаТабличнойЧасти.СчетУчетаНУ = ПланыСчетов.Налоговый.ГотоваяПродукция;
СтрокаТабличнойЧасти.НовыйСчетУчетаНУ = ПланыСчетов.Налоговый.ГотоваяПродукция;
КонецЦикла; // Выборка.Следующий()
КонецПроцедуры // ibs ЗаполнитьТоварыПоОснованию()
и в процедуру ОбработкаЗаполнения() модуля документа следующее:
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда // ibs добавка для магазина
// Заполним реквизиты из стандартного набора по документу основанию.
ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(ЭтотОбъект, Основание);
ЗаполнитьТоварыПоЗаказуПокупателя(Основание);
Также надо в свойстве "Ввод на основании" документа ПеремещениеТоваров указать такую возможность.
Примечание:
Данная схема формирования заказов весьма надежна, но имеет один недостаток: иногда кассиры портят заголовок шаблона, и тогда помогает только удаленное исправление или передача нового. Разумеется, для аналогичных целей лучше использовать Excel, но с его установкой на кассе, под Windows-CE могут быть проблемы, и так или иначе понадобятся мышь и стандартная клавиатура.