Регистрация Правила Главная форума Поиск |
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) ОбъектЧекККМ - это документ? Параметр &КонецДняТек можно убрать на время, будет возвращать актуальные остатки, посмотреть изменяются или нет. Сделать отладку, пройтись по каждому параметру и посмотреть их значения. Можно набросать внешний отчет в СКД по виртуальной таблице ОстаткиИОбороты, с периодичностью Авто, выбрать поля Номенклатура, Регистратор, ПериодСекунда, КоличествоНачальныйОстаток, КоличествоОборот, КоличествоКонечныйОстаток, в настройках создать отчет с группировками номенклатура, детальные записи. Сформируешь будет видно по каждому чеку нач. остаток, оборот, кон. остаток. | |
| Интернет-форум Краснодарского края и Краснодара |