Имя: Пароль:
1C
1С v8
Получить сумму наличности в кассе.
0 Seeker
 
11.08.11
13:41
При снятии z-отчета нужно получить сумму наличности в кассе.
Конфигурация 1С:Розница
Делаю так:

   МассивФР      = ПолучитьСерверТО().ПолучитьСписокУстройств(
                       Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор,
                       КассаККМ);
   ФР = МассивФР[0];
   Объект = Неопределено;
   Результат = ПолучитьСерверТО().ПолучитьОбъектДрайвера(ФР, Неопределено, Объект);
   Объект.Драйвер.НомерРегистра = 241;
   Сумма = Объект.Драйвер.ПолучитьДенежныйРегистр();

Не работает...
Помогите
1 Seeker
 
12.08.11
07:35
никто не знает?
2 vis_tmp
 
12.08.11
07:39
У меня вот такая функция сделана и работает:

Функция ПолучитьСуммуККМ()
   Запрос = Новый Запрос(
       "ВЫБРАТЬ РАЗРЕШЕННЫЕ
       |    РегТО.Модель КАК Модель,
       |    РегТО.Параметры КАК Параметры,
       |    РегТО.Вид КАК Вид
       |ИЗ
       |    РегистрСведений.ТорговоеОборудование КАК РегТО
       |ГДЕ
       |    РегТО.Компьютер = &Компьютер
       |    И РегТО.Подключено
       |    И РегТО.Вид = &Вид");
   Запрос.УстановитьПараметр("Компьютер", ПолучитьСерверТО().ПолучитьИмяКомпьютераТО());
   Запрос.УстановитьПараметр("Вид", Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор);
   
   РезультатЗапроса = Запрос.Выполнить();
   Обработка        = Неопределено;
   Объект           = Неопределено;
   ДопИнфо          = "";
   Если Не РезультатЗапроса.Пустой() Тогда
       Выборка = РезультатЗапроса.Выбрать();
       Пока Выборка.Следующий() Цикл
           ДопИнфо          = "";
           Результат = РаботаСТорговымОборудованием.ПолучитьОбработкуОбслуживанияТО(Выборка.Модель, Обработка);
           Если НЕ ЗначениеЗаполнено(Результат) Тогда
               Объект    = Неопределено;
               Форма     = Обработка.ПолучитьФорму();
               Параметры = ?(ПустаяСтрока(Выборка.Параметры), Новый Структура(), ЗначениеИзСтрокиВнутр(Выборка.Параметры));
               Результат = Форма.СоздатьОбъектДрайвера(Объект, Выборка.Модель.Модель, Параметры);
               
               Если НЕ ЗначениеЗаполнено(Результат) Тогда
                   Объект.ОписаниеОшибки = "";
                   СуммаВККМ = 0;
                   Результат = Форма.ПолучитьСумму(Объект, СуммаВККМ);
//Сообщить("ККМПолучитьСумму.Результат = " + Результат + ", СуммаВККМ = " + СуммаВККМ);
                   ДопИнфо = Объект.ОписаниеОшибки;
                   
                   Возврат СуммаВККМ;
               КонецЕсли;
           Иначе
               НетОшибок  = Ложь;
               ТекстОшибки = """" + Выборка.Модель + """:
                             |" + ПолучитьСерверТО().ПолучитьТекстОшибкиТО(Результат);
               ТекстОшибки = ТекстОшибки + "
                                           |" + ДопИнфо;
               Сообщить(ТекстОшибки, СтатусСообщения.Важное);
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   
   Возврат Неопределено;
КонецФункции
3 Wobland
 
12.08.11
07:39
посмотри, как шифт+ф3 работает (если не поменяли комбинацию, я давно розницу не видел)
4 Seeker
 
12.08.11
08:29
у меня вот на эту строчку ругается:

Результат = Форма.ПолучитьСумму(Объект, СуммаВККМ);
5 Seeker
 
12.08.11
08:30
скорее всего в обработке обслуживания нет такой функции
получитьСумму
мне бы ее листинг
6 Seeker
 
15.08.11
11:08
проблема так и не решена, хелп
7 Wobland
 
15.08.11
11:11
смотри на обработку обслуживания ФР, там должно что-то быть. вон у vis_tmp есть ПолучитьСумму()
PS смотрел на подпиленную розницу, там сумма ящика из самописного РН достаётся
8 Seeker
 
15.08.11
11:15
(7) - В моей обработке обслуживания нет ПолучитьСумму().
9 Wobland
 
15.08.11
11:18
поискать за тебя?
10 Seeker
 
15.08.11
11:19
FR.RegisterNumber=241;  
FR.GetCashReg();
Сумма = FR.ContentsOfCashRegister;

можно вот так сделать, но с DrvFR1C не работает...
хелп....
11 Wobland
 
15.08.11
11:19
12 Wobland
 
15.08.11
11:19
(10) DrvFR1C - шо за?
13 Seeker
 
15.08.11
11:21
Используется типовая Розница
а в ней для Фискальника используется DrvFR1C
вот такая печенюга....
14 Seeker
 
15.08.11
11:25
15 Wobland
 
15.08.11
11:28
(14) поздравляю, сэр! осталось только прочитать
16 Seeker
 
15.08.11
11:34
(15) - думаешь я не читал?
нет там того чего мне надо...
1Сники не предусмотрели функцию получения денег в кассе.
необходимо сначала отключить DrvFR1C потом подключить DRvFR и только потом получать сумму наличных в кассе, НО так работает не корректно. В этом загвоздка
17 Wobland
 
15.08.11
11:37
Seeker, я не против подумать вместе с тобой, но навыки телепатии у меня развиты слабо, а от тебя в последних постах исходит не более чем "не работает"
18 Seeker
 
15.08.11
14:44
ПолучитьСерверТО().ОтключитьКлиента(ЭтаФорма);

Функция ПолучитьНаличностьВКассе()

ПодключитьВнешнююКомпоненту("AddIn.DrvFR");
FR = Новый ("AddIn.DrvFR");
FR.Password = 30;
FR.RegisterNumber = 241;
FR.GetCashReg();
Сумма = FR.ContentsOfCashRegister;
FR.Disconnect();

Возврат Сумма;

КонецФункции // ()

ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);

Вот что получилось в итоге
но это ппц муть, т.к. каждый раз приходится отключить и подключчать все торговое оборудование.
19 Wobland
 
15.08.11
14:50
подозреваю, что и у нас был заведён свой РН неспроста (когда я подключился к проекту, это уже было), почему так, я не вдавался. выходит, единственный путь через назад ;)
20 Seeker
 
15.08.11
14:55
видать....
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс