Консультация № 100069
29.08.2007, 07:44
0.00 руб.
0 3 3
дравствуйте ув. Эксперты!
Вопрос №1:
1. Есть терминал сбоора данных, которым пересчитали товары и выгрузили это в документ - "ИнвентаризацияТМЦ", документ создается самой обработкой и заполняет все колонки табличной части документа
Количество факт - из терминала
Количество факт - из регистра остатков
Цена - ВремДок.Цена = ВремЦена.Цена.Получить(ВремДок.ДатаДок)
Ну и т.д.
В общем ситуация такая: сканер при вводе количества товара, например одного и того же записывает в память одинаковые позиции с разным количеством, т.е. мне нужно, чтобы была одна позиция этого товара в документе, но при этом количетво было общее, например:
Сбор данных,ШК+БД,4607001290032,МАСЛО ЗОЛОТАЯ СЕМЕЧКА,13
Сбор данных,ШК+БД,4607001290032,МАСЛО ЗОЛОТАЯ СЕМЕЧКА,12
Одно и то же, а мне нужно, чтобы в документе инвентаризация было такое:
Сбор данных,ШК+БД,4607001290032,МАСЛО ЗОЛОТАЯ СЕМЕЧКА,25
т.е. нужно сделать свертывание как в таблице значений и чтобы количество суммировалось ....
Как это можно сделать?

Вопрос №2:
В стандартной обработке, которая выгружает данные из терминала в документ, почему-то при выгрузке отсекает первые два нуля и первый один:
Сбор данных,ШК+БД,0048327203421,МАСЛО YBARRА 100% 500,3
Сбор данных,ШК+БД,0048327203537,МАСЛО ОЛИВКОВОЕ YBARRA,2
Сбор данных,ШК+БД,0718122031207,МАСЛО ОЛИВКОВКОВОЕ EV,1

Код программы:
//Если Сред(ВремШт,1,2) = "00" Тогда
// ВремШт = Сред(ВремШт,3);
// Рез = ВремЕд.НайтиПоРеквизиту("ШтрихКод", ВремШт, 1);
// ВремТовар = ВремЕд.ТекущийЭлемент().Владелец;
//ИначеЕсли Сред(ВремШт,1,1) = "0" Тогда
// ВремШт = Сред(ВремШт,2);
// Рез = ВремЕд.НайтиПоРеквизиту("ШтрихКод", ВремШт, 1);
// ВремТовар = ВремЕд.ТекущийЭлемент().Владелец;
//Иначе
// Не понял почему,но если один или два нуля в начале
// штрих-кода то они отсекаются

Если Лев(ВремШт, 2) = "22" Тогда
ВремТовар = СоздатьОбъект("Справочник.Номенклатура");
Рез = ВремТовар.НайтиПоКоду("000" + Сред(ВремШт,3,5), 0);
Если Рез=0 Тогда
Сообщить("Товар с кодом "+Сред(ВремШт,3,5)+" не найден");
Продолжить;
КонецЕсли;
ВремЕд = ВремТовар.БазоваяЕдиница;
ВремСтр = Число((Сред(ВремШт, 8, 5))) / 1000;
Иначе
Рез = ВремЕд.НайтиПоРеквизиту("ШтрихКод", ВремШт, 1);
ВремТовар = ВремЕд.ТекущийЭлемент().Владелец;
КонецЕсли;

У этих товаров получается штрих-код
48327203421
48327203537
718122031207

Получае6тся так, что эти товары не заносятся в табличную часть документа, поэтму я эту часть кода закомментировал .....
Как вы думаете, для чего отсекались нули?
Я вообще понять не могу ....
Наш префикс "22" - тип товара - весовой - это понятно мне ....

Обсуждение

Неизвестный
29.08.2007, 10:10
общий
это ответ
Здравствуйте, _Alexey_!

Ну так а что мешает заточить обработку под себя?

Я так понял с ТСД залетает текст с разделителями который можно конвертнуть в табличку, а потом табличку свернуть. чтобы потом не париться с кодом, табличку можно опять выгрузить в текст с разделителями вот и все.
Если нужен код пиши в аську 280666057
Неизвестный
29.08.2007, 14:39
общий
это ответ
Здравствуйте, _Alexey_!
Дам ответ только на первый вопрос - о плюсовании количества. Вам необходимо использовать поиск по коду или наименованию найденного по штрих-коду товара. Это выглядит примерно, как обработка подбора в накладную - если товар уже присутствует в накладной, то суммируется количество из накладной с уже подобранным.
В Торговле для Украины в модуле формы процедура ОбработкаПодбора вызывает процедуру глПриОбработкеПодбора, которая в зависимости от переданного контекста вызывает глДобавитьТоварВДокумент с различными параметрами.
Неизвестный
29.08.2007, 21:50
общий
это ответ
Здравствуйте, _Alexey_!

1. Чтобы строки табличной части сворачивались (количество суммировалось), достаточно в конце зугрузки добавить такие строки:
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗ);
ТЗ.Свернуть("<<b>Перечислить колонки через запятую</b>>","<<b>Перечислить суммируемые колонки через запятую</b>>");
ЗагрузитьТабличнуюЧасть(ТЗ);

2. По первым символам "00", "0" или "22" определялось, нужно искать штрихкод в справочнике единиц измерения или в справочнике Номенклатура. Эти два нуля -- не часть штрихкода, а признак.
Форма ответа