Изменение "Обработка.ЗакрытиеКассовойСмены" 1С 7.7 ТиС

  • Автор темы Elll
  • Дата начала
E

Elll

#1
Доброго времени суток. как можно сделать чтобы обработка не загружала дубли из выгруженного отчета о продажах? допустим в файле о продажах записано следующее

725;15.04.09;12:03:38;11;1;2321;4;680;1;999;1;999; !!
726;15.04.09;12:04:03;30;1;2321;4;680;1;2498;0;999; !!
727;15.04.09;12:04:31;40;1;2321;4;0;741;0;1;999;
728;15.04.09;12:04:31;55;1;2321;4;0;0;0;0;999;
729;15.04.09;12:37:40;11;1;2322;4;2540;1;366;1;366;
775;16.04.09;19:32:11;55;1;2336;2;0;0;0;0;2998;
776;16.04.09;19:48:54;60;1;2337;2;304;0;4992;0;9988;
777;16.04.09;19:49:27;51;1;2338;2;0;0;0;0;4992;
778;16.04.09;19:49:47;61;1;2339;2;742;0;0;0;9988;
725;15.04.09;12:03:38;11;1;2321;4;680;1;999;1;999; !!
726;15.04.09;12:04:03;30;1;2321;4;680;1;2498;0;999; !!

те строки которые я пометил знаком "!!" обработка загрузит дважды, надо чтобы он как то определил что последние две строки (именно в этом случае две последние строки) загружать не надо.думаю можно чтоб он проверял по номеру транзакции, но как это сделать не знаю... :) обработку прикрепил...
 

Вложения

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#2
Да ничего сложного. Сортируешь табличку по полю транзацкия. Отпарвляешь номер транзакции в переменную, а потом сравниваешь со следующим номером. Если равны - не грузишь, если разные - грузишь. Если грузишь - соответственно обновляешь значение в переменной
 
E

Elll

#3
KiR спасиб,но как это написать я не знаю=( с кодом текущей обработки еще не разобрался,и куда дописыватьтож не знаю.. а время поджимает,эх=(((

[codebox]Функция СформироватьСоставOffline(ТаблРеквизитов, ОписаниеРезультата, Сообщение = "")

Перем НомерЛенты, ДанныеИзККМ;

Рез = глККМЗакрытьСмену(ВыбКасса, ВыбСклад.НомерСекции, ДанныеИзККМ, ОписаниеРезультата, Сообщение, ВыбДата);

Если Рез = 1 Тогда
СпрЕдиницы = СоздатьОбъект("Справочник.Единицы");
СпрТовары = СоздатьОбъект("Справочник.Номенклатура");

ТаблРеквизитов = СоздатьОбъект("ТаблицаЗначений");
ТаблРеквизитов.НоваяКолонка("Товар");
ТаблРеквизитов.НоваяКолонка("Количество");
ТаблРеквизитов.НоваяКолонка("Единица");
ТаблРеквизитов.НоваяКолонка("Цена");
ТаблРеквизитов.НоваяКолонка("Сумма");

ДанныеИзККМ.ВыбратьСтроки();
Пока ДанныеИзККМ.ПолучитьСтроку() = 1 Цикл

Если ДанныеИзККМ.Количество > 0 Тогда

Если ПустоеЗначение(ДанныеИзККМ.Штрихкод) = 0 Тогда

// Задан штрихкод
Если СпрЕдиницы.НайтиПоРеквизиту("Штрихкод", ДанныеИзККМ.Штрихкод, 1) = 0 Тогда
Сообщить("Товар со штрихкодом " + ДанныеИзККМ.Штрихкод + " не найден!");
Иначе
ТаблРеквизитов.НоваяСтрока();
ТаблРеквизитов.Товар = СпрЕдиницы.Владелец;
ТаблРеквизитов.Единица = СпрЕдиницы.ТекущийЭлемент();
ТаблРеквизитов.Количество = ДанныеИзККМ.Количество;
ТаблРеквизитов.Сумма = ДанныеИзККМ.Сумма;
ТаблРеквизитов.Цена = ДанныеИзККМ.Цена;
КонецЕсли;
Иначе
СчетчикЦикла = 0;
Код=ДанныеИзККМ.Код;
Для СчетчикЦикла = СтрДлина(Код) по Метаданные.Справочник("Номенклатура").ДлинаКода-1 Цикл
Код="0"+Код;
КонецЦикла;
Если СпрТовары.НайтиПоКоду(Код, 0) = 0 Тогда
Сообщить("Товар со кодом " + Код + " не найден!");
Иначе
ТаблРеквизитов.НоваяСтрока();
ТаблРеквизитов.Товар = СпрТовары.ТекущийЭлемент();
ТаблРеквизитов.Единица = СпрТовары.БазоваяЕдиница;
ТаблРеквизитов.Количество = ДанныеИзККМ.Количество;
ТаблРеквизитов.Сумма = ДанныеИзККМ.Сумма;
ТаблРеквизитов.Цена = ДанныеИзККМ.Цена;
КонецЕсли;
КонецЕсли;

КонецЕсли;

КонецЦикла;

Если ТаблРеквизитов.КоличествоСтрок() = 0 Тогда
ОписаниеРезультата = "За кассовую смену не продано ни одного товара с выбранного склада.";
Рез = 0;
Иначе
Рез = 1;
КонецЕсли;

КонецЕсли;

Возврат Рез;

КонецФункции // СформироватьСоставOffline()[/codebox] вроде как сюда дописывать..
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#4
ДанныеИзККМ - это и есть Таблица Значений, пример которой приведен в первом посте? И как называются колонки в ней?
 
N

natusia

#5
здраствуйте!
При загрузке отчета ККА,(v 7.7),ошибочно были удалены транзакции,возможно востоновление инфолрмации,или как исправить ошибку,не формируется отчет за этот день
Заранее благодарна за помощь