К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

1С 8.2 Прыгают остатки в результатах запроса. подскажите!!!

Гость
0 - 17.01.2014 - 12:19
Вот кусок процедуры.
В ней пробивается (проводится чек) и печатается складской корешок чека. Проблем с временем судя по всему связана с Запрос.УстановитьПараметр("КонецДняТек",КонецДня(О бъектЧекККМ.Дата)), которая стоит в конце запроса.

Если несколько раз подряд пробиваю один и тот же товар, то остатки вдруг начинают прыгать. Как правильно сделать???

Результат = МенеджерОборудованияКлиент.ВыполнитьКоманду(Иденти фикаторУстройстваФР,
"PrintReceipt",
ВходныеПараметры,
ВыходныеПараметры);


Если Результат Тогда

// Установить полученное значение номера чека реквизиту документа.
ОбъектЧекККМ.НомерСменыККМ = ВыходныеПараметры[0];
ОбъектЧекККМ.НомерЧекаККМ = ВыходныеПараметры[1];

ОбъектЧекККМ.СтатусЧекаККМ = Перечисления.СтатусыЧековККМ.Пробитый;
ОбъектЧекККМ.Дата = ТекущаяДата();
Если Не ЗначениеЗаполнено(ОбъектЧекККМ.НомерЧекаККМ) Тогда
ОбъектЧекККМ.НомерЧекаККМ = 1;
КонецЕсли;

ЧекПробит = Истина;
Иначе
ТекстСообщения = НСтр("ru = 'При печати чека произошла ошибка.
|Чек не напечатан на фискальном регистраторе.
|Дополнительное описание:
|%ДополнительноеОписание%'");
ТекстСообщения = СтрЗаменить(ТекстСообщения,
"%ДополнительноеОписание%",
ВыходныеПараметры[1]);
КонецЕсли;


//Печать "Складского корешка"

// Готовим данные
ВходныеПараметры = Новый Массив;
ВыходныеПараметры = Неопределено;

НомерСекции = 1;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток Как Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецДн яТек
| ,Склад = &Склад
| И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ТоварыНаСкладахОстатки";

Запрос.УстановитьПараметр("Склад", ОбъектЧекККМ.Магазин.СкладПродажи);
Запрос.УстановитьПараметр("Номенклатура", ОбъектЧекККМ.ТабличныеЧасти.Товары.ВыгрузитьКолонк у("Номенклатура"));
Запрос.УстановитьПараметр("КонецДняТек",КонецДня(О бъектЧекККМ.Дата));
Сообщить(КонецДня(ОбъектЧекККМ.Дата));
РезультатОстатка = Запрос.Выполнить();
ВыборкаОстатка = РезультатОстатка.Выбрать();



Гость
1 - 17.01.2014 - 12:25
Ваабще-то, чек несколько раз не пробивают. Государство обижается.
Гость
2 - 17.01.2014 - 12:34
(1) Да чек пробивается один раз, я имел в виду несколько чеков подряд с одним и тем же товаром
Гость
3 - 17.01.2014 - 12:38
(0) Чек же вроде пробит и проведен.
1. было 1000, продали 100, осталось 900 и показывает в корешке 900
2. было 900, продали опять 100, осталось 800 а показывает в корешке почему-то опять 900
Гость
4 - 17.01.2014 - 12:53
3-Путевый лист > Оптимизация, однако. Результат запроса бережно сохраняется, если после него не было съема данных ;)
Гость
5 - 17.01.2014 - 13:03
4-VZ Ну а в коде-то мне что надо поменять???
Гость
6 - 17.01.2014 - 13:03
4-VZ И почему происходит такая фигня?
Гость
7 - 17.01.2014 - 14:30
Чисто бабахну "с потолка". Может на "клиенте" надо обновление данных с "сервера" сделать? Как оно делается, я не знаю...
Гость
8 - 17.01.2014 - 20:00
Запрос.УстановитьПараметр("КонецДняТек",КонецДня(О бъектЧекККМ.Дата)) в этом варианте помойму последняя секунда дня не попадает, попробуйте Запрос.УстановитьПараметр("КонецДняТек",Новый Граница(КонецДня(ОбъектЧекККМ.Дата),ВидГраницы.Вкл ючая));
А В ИЕРАРХИИ (&Номенклатура) зачем используете данный вид проверки вхождения более тормознутый (помойму достаточно В (&Номенклатура)), у Вас ведь список значений с номенклатурой из таб. части.
Гость
9 - 17.01.2014 - 20:43
8-Write. Надо попробовать но кажется я так тоже пробовал.
Вот причем тут конец дня вообще? я вывожу конец дня. Он мне показывает 17.01.2013 23:59:59. А ведь реально было время 2 часа дня. Вроде ж есть функция МоментВремени(). А ей нельзя воспользоваться?
Гость
10 - 17.01.2014 - 23:26
9-Путевый лист > Бери в качестве границы времени сам документ. Вот он и даст точное время :)
Гость
11 - 17.01.2014 - 23:49
(9) Если ты хочешь получить остатки на момент текущего чека тогда нужно использовать
Запрос.УстановитьПараметр("КонецДняТек",Новый Граница(ОбъектЧекККМ.МоментВремени(),ВидГраницы.Вк лючая)), но если у тебя не было движений по регистру после чека в течении дня то результат должен быть одинаковый и с предыдущим вариантом.
Гость
12 - 18.01.2014 - 08:38
10-VZ мне же надо именно после документа, то есть остатки уже должны измениться. И мне не важно время, мне важна актуальность остатков
Гость
13 - 18.01.2014 - 08:56
11-Write МоментВремени() не является свойством ОбъектЧекККМ. Но я уже по всякому пробовал. Не работает стабильно А хотелось бы понять, а то как обезьяна с очками
Гость
14 - 18.01.2014 - 09:47
Границу по текущему документу установить можно и нужно. А вообще, не совсем понятно, почему у чеков текущее время съезжает в последнюю секунду дня - это же должно быть реальное оперативное время с клиентской машины?
Гость
15 - 18.01.2014 - 09:52
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
МоментВремени (PointInTime)
Синтаксис:

МоментВремени()
Возвращаемое значение:

Тип: МоментВремени.

Описание:

Получает момент времени документа.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

// (в модуле документа ПроведениеПоПартиям)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.Текст =
"ВЫБРАТЬ
| ПроведениеПоПартиям.Ссылка КАК РегламентныйДокумент
|ИЗ
| Документ.ПроведениеПоПартиям КАК ПроведениеПоПартиям
|
|ГДЕ
| ПроведениеПоПартиям.МоментВремени >= МоментВремени";
Выборка = Запрос.Выполнить().Выбрать();
Гость
16 - 18.01.2014 - 10:01
(13) ОбъектЧекККМ - это документ? Параметр &КонецДняТек можно убрать на время, будет возвращать актуальные остатки, посмотреть изменяются или нет. Сделать отладку, пройтись по каждому параметру и посмотреть их значения. Можно набросать внешний отчет в СКД по виртуальной таблице ОстаткиИОбороты, с периодичностью Авто, выбрать поля Номенклатура, Регистратор, ПериодСекунда, КоличествоНачальныйОстаток, КоличествоОборот, КоличествоКонечныйОстаток, в настройках создать отчет с группировками номенклатура, детальные записи. Сформируешь будет видно по каждому чеку нач. остаток, оборот, кон. остаток.


К списку вопросов






Copyright ©, Все права защищены