8.х Ошибка при записи в регистре накопления

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем step86, 12 мар 2010.

  1. TopicStarter Overlay
    step86
    Offline

    step86 Опытный в 1С

    Регистрация:
    22 май 2009
    Сообщения:
    137
    Симпатии:
    0
    Баллы:
    26
    Привет всем!!!

    Нужна помощь, проблема в следующем клиент снимает Фискальный регистратор, но хочет чтобы в режиме кассира при работе с обработкой эмклятор кассира получать Х-отчет как на ФР. Так вот в конфе создал свой регистр накопления и в него при операциях внесение денег в кассу и изъятие денег добавляем записи, так вот при попытке записать выскакивает ошибка

    "Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Имя регистра)"

    Подскажите в чем может быть проблема???
  2. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Пишите в регистр как? Видимо через набор записей, а он подчинен регистратору. Покажите код, когда появляется данное сообщение.
  3. TopicStarter Overlay
    step86
    Offline

    step86 Опытный в 1С

    Регистрация:
    22 май 2009
    Сообщения:
    137
    Симпатии:
    0
    Баллы:
    26
    Код:
     
    // Процедура вызывается при выборе пункта подменю "Внесение в денежный ящик" командной панели
    // формы. 
    //
    Процедура ДействияФормыВнесениеВДенежныйЯщик(Кнопка)
    
    Сумма = Неопределено;
    Если ВвестиЧисло(Сумма, "Необходимо ввести сумму", 15, 3) Тогда
    Пароль    = ПолучитьСерверТО().ПолучитьПарольКассираККМ();
    Результат = ПолучитьСерверТО().ВнестиСумму(мФР, Пароль, Сумма);
    Если ЗначениеЗаполнено(Результат) Тогда
    ТекстОшибки = ПолучитьСерверТО().ПолучитьТекстОшибкиФРТО(Результат);
    Предупреждение(ТекстОшибки);
    КонецЕсли;
    КонецЕсли;
    
    //мой код(
    Движение = Движения.абкДвижениеДенежныхСредствККМ.Добавить();
    //Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = ТекущаяДата();
    Движение.КассаККМ = КассаККМ;
    Движение.ВидОперации = Перечисления.абкВидыОперацийЧекККМ.Внесение;
    Движение.Сумма = Сумма;
    
    Движения.абкДвижениеДенежныхСредствККМ.Записать();
    //мой код)
    
    КонецПроцедуры
    
    
    
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Такие вещи делать из формы? Жестко...
    Если документ новый - то ссылки еще не существует и отбор по регистратору не будет установлен.
  5. TopicStarter Overlay
    step86
    Offline

    step86 Опытный в 1С

    Регистрация:
    22 май 2009
    Сообщения:
    137
    Симпатии:
    0
    Баллы:
    26
    Так как правильно сделать подскажите?
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Задачу расскажите
  7. TopicStarter Overlay
    step86
    Offline

    step86 Опытный в 1С

    Регистрация:
    22 май 2009
    Сообщения:
    137
    Симпатии:
    0
    Баллы:
    26
    Задача следующая когда клиент уберет ФР, не обходимо фиксировать когда кассир проводит операцию внесению денег в кассу и изъятия денег из кассы.

    Я пошел чуть по другому методу для данного регистра сделал документ который является для него регистратором, а в документе ЧекККМ сделал следующее:

    Код:
    
    Процедура абкСоздатьДокументВнесениеИзъятиеНаличных(мПараметр, Сумма) Экспорт
    
    Если мПараметр = 1 Тогда
    Документ = Документы.абкВнесениеИзъятиеНаличныхИзКассыККМ.СоздатьДокумент();
    Документ.Дата = ТекущаяДата();
    Документ.ВидОперации = Перечисления.абкВидыОперацийЧекККМ.Внесение;
    Документ.КассаККМ = КассаККМ;
    Документ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    Документ.Организация = Организация; 
    Документ.СуммаДокумента = Сумма;
    Иначе 
    Документ = Документы.абкВнесениеИзъятиеНаличныхИзКассыККМ.СоздатьДокумент();
    Документ.Дата = ТекущаяДата();
    Документ.ВидОперации = Перечисления.абкВидыОперацийЧекККМ.Изъятие;
    Документ.КассаККМ = КассаККМ;
    Документ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    Документ.Организация = Организация;
    Документ.СуммаДокумента = Сумма;
    КонецЕсли;
    
    Попытка
    Документ.Записать(РежимЗаписиДокумента.Проведение);
    Сообщить("Документ проведен!!!");
    Исключение
    Предупреждение("Не удалось провести документ!!!");
    КонецПопытки;
    
    КонецПроцедуры
    
    
    
    а взываем ее в модуле формы при нажатии по кнопке внесения:
    Код:
    Процедура ДействияФормыВнесениеВДенежныйЯщик(Кнопка)
    
    //абк(
    мПараметр = 1;
    //абк)
    Сумма = Неопределено;
    Если ВвестиЧисло(Сумма, "Необходимо ввести сумму", 15, 3) Тогда
    Пароль    = ПолучитьСерверТО().ПолучитьПарольКассираККМ();
    Результат = ПолучитьСерверТО().ВнестиСумму(мФР, Пароль, Сумма);
    Если ЗначениеЗаполнено(Результат) Тогда
    ТекстОшибки = ПолучитьСерверТО().ПолучитьТекстОшибкиФРТО(Результат);
    Предупреждение(ТекстОшибки);
    КонецЕсли;
    КонецЕсли;
    
    //абк(
    абкСоздатьДокументВнесениеИзъятиеНаличных(мПараметр, Сумма);
    //абк)
    
    КонецПроцедуры
    
    
    В модуле созданного мною нового документа сделал обработку проведения

    Код:
    Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    // регистр абкДвижениеДенежныхСредствККМ
    Если Режим = РежимПроведенияДокумента.Оперативный Тогда 
    Движение = Движения.абкДвижениеДенежныхСредствККМ.Добавить();
    Движение.Период = Дата;
    Движение.КассаККМ = КассаККМ;
    Движение.ВидОперации = ВидОперации;
    Движение.Организация = Организация;
    Движение.Ответственный = Ответственный;
    Движение.Сумма = СуммаДокумента;
    
    Движения.абкДвижениеДенежныхСредствККМ.Записать();
    КонецЕсли;
    
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    КонецПроцедуры
    
    
    
    Так вот почему он не проводит новый докмент программно!!!

    Код:
    Попытка
    Документ.Записать(РежимЗаписиДокумента.Проведение);
    Сообщить("Документ проведен!!!");
    Исключение
    Предупреждение("Не удалось провести документ!!!");
    КонецПопытки;
    
    
    Данная операция почему то не выполняется срабатывает оператор исключение, в чем может быть проблема???
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Не очень понятно, зачем это делается из формы документа, а не при его проведении.
    Посмотрите принцип работы РКО и ПКО - пока документ не проведется - никаких движений по регистрам не возникает
Похожие темы
  1. PavelA
    Ответов:
    19
    Просмотров:
    684
Загрузка...

Поделиться этой страницей