Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Програмне розбиття чеку на 2-ва окремих робочому місці касира!          
Pashaboston Подменю пользователя
сообщение 09.05.22, 13:46
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 0

Доброго дня, конфігурація BAS Управління торгівлею. Стоїть завдання, якщо у чеку є акцизні і звичайні товари, то розділяти чек на 2 чеки.
Було вибрано наступний варіант, перед тим як чек проводиться, програмно перевіряти на наявність акцизу і програмне створеня 2-х чеків(спочатку пробивається і друкується звичайний чек з всіма товарами, а тоді окремо друкується фіскальний чек з акцизними товарами ). Чек без акцизних товарів створюється і троводиться програмно програмно, а акцизні товари завантажуються в документ об'єкт відкритого документу і він також має пробитися.
Код
&НаКлиенте
Процедура ПробитьЧек()
    
    ОчиститьСообщения();
    
    ЕстьОшибки = Ложь;
    
    Если Объект.ПометкаУдаления Тогда
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru='Документ помечен на удаление';uk='Документ позначений на вилучення'"), Объект.Ссылка,,,ЕстьОшибки);
    КонецЕсли;
    
    Объект.Дата = ТекущаяДата();
    Модифицированность = Истина;
    
    Если ЕстьОшибки Или Не ПроверитьЗаполнение() Тогда
        Возврат;
    КонецЕсли;
    
    ВыполнитьДействиеПослеЗаписи(
        Новый ОписаниеОповещения("ПробитьЧекПослеПроведения", ЭтотОбъект),
        НСтр("ru='Перед выполнением операции пробития чека не удалось провести документ.';uk='Перед виконанням операції пробиття чека не вдалося провести документ.'"));
        //++++++++++++++++++++++++++++++++++++++++++++
        Если ПроверкаСтатуса (ЭтотОбъект.Объект.Статус) Тогда
            ЕстьАкциз = Ложь;
            СтруктураДопКаси(,,ЭтотОбъект.Объект);
            Если ЕстьАкциз Тогда
                
                ВыполнитьДействиеПослеЗаписи(
                Новый ОписаниеОповещения("ПробитьЧекПослеПроведения", ЭтотОбъект),
                НСтр("ru='Перед выполнением операции пробития чека не удалось провести документ.';uk='Перед виконанням операції пробиття чека не вдалося провести документ.'"));
            КонецЕсли;    
            
        КонецЕсли;
    //++++++++++++++++++++++++++++++++++++++++++++
КонецПроцедуры


&НаСервере
Процедура СтруктураДопКаси (ЕстьАкциз = Ложь,ДопКаса = Неопределено,ЭтотОбъект)
    
    ДопКаса = ПолучитьДопКасу(ДопКаса);
    Структура = ПроверкаНаАкциз(ЭтотОбъект,ЕстьАкциз,ДопКаса);
    Если ЕстьАкциз Тогда
    ДокументОбъект = ЭтотОбъект.Ссылка.ПолучитьОбъект();
    ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    ДокументОбъект.Товары.Загрузить(Структура.ТзАкцизных);
    ДокументОбъект.КассаККМ = ДопКаса;
    ДокументОбъект.Организация = ДопКаса.Владелец;
    ДокументОбъект.СуммаДокумента = ДокументОбъект.товары.Итог("Сумма");
    ДокументОбъект.Статус = Перечисления.СтатусыЧековККМ.Пробит;
    ЗначениеВДанныеФормы(ДокументОбъект, Объект);
    Результат = ЗаписатьНаСервере(Истина);
    КонецЕсли;
    //Попытка
    //  ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    //Исключение
    //КонецПопытки;
    
КонецПроцедуры

&НаСервере
Функция ПроверкаНаАкциз(ДокументОбъект, ЕстьАкциз,ДопКасса) Экспорт  
  
  Запрос = Новый Запрос;  
  Запрос.Текст = "ВЫБРАТЬ
                 |    ЧекККМТовары.Ссылка,
                 |    ЧекККМТовары.НомерСтроки,
                 |    ЧекККМТовары.КлючСвязи,
                 |    ЧекККМТовары.Номенклатура,
                 |    ЧекККМТовары.Характеристика,
                 |    ЧекККМТовары.Упаковка,
                 |    ЧекККМТовары.КоличествоУпаковок,
                 |    ЧекККМТовары.Количество,
                 |    ЧекККМТовары.Цена,
                 |    ЧекККМТовары.Сумма,
                 |    ЧекККМТовары.СтавкаНДС,
                 |    ЧекККМТовары.СуммаНДС,
                 |    ЧекККМТовары.ПроцентАвтоматическойСкидки,
                 |    ЧекККМТовары.СуммаАвтоматическойСкидки,
                 |    ЧекККМТовары.ПроцентРучнойСкидки,
                 |    ЧекККМТовары.СуммаРучнойСкидки,
                 |    ЧекККМТовары.СтатусУказанияСерий,
                 |    ЧекККМТовары.Продавец,
                 |    ЧекККМТовары.Помещение,
                 |    ЧекККМТовары.Серия,
                 |    ЧекККМТовары.СуммаБонусныхБалловКСписанию,
                 |    ЧекККМТовары.СуммаБонусныхБалловКСписаниюВВалюте,
                 |    ЧекККМТовары.СуммаНачисленныхБонусныхБалловВВалюте,
                 |    ЧекККМТовары.НоменклатураНабора,
                 |    ЧекККМТовары.ХарактеристикаНабора,
                 |    ЧекККМТовары.Штрихкод,
                 |    ЧекККМТовары.ИдентификаторСтроки
                 |ИЗ
                 |    Документ.ЧекККМ.Товары КАК ЧекККМТовары
                 |ГДЕ
                 |    ЧекККМТовары.Номенклатура.ПодакцизныйТовар = ЛОЖЬ
                 |    И ЧекККМТовары.Ссылка = &Ссылка";
  
  Запрос.УстановитьПараметр("Ссылка", ДокументОбъект.Ссылка);
  
  ТзБезАкцизных = Запрос.Выполнить().Выгрузить();
  
  Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                 |    ЧекККМТовары.Ссылка,
                 |    ЧекККМТовары.НомерСтроки,
                 |    ЧекККМТовары.КлючСвязи,
                 |    ЧекККМТовары.Номенклатура,
                 |    ЧекККМТовары.Характеристика,
                 |    ЧекККМТовары.Упаковка,
                 |    ЧекККМТовары.КоличествоУпаковок,
                 |    ЧекККМТовары.Количество,
                 |    ЧекККМТовары.Цена,
                 |    ЧекККМТовары.Сумма,
                 |    ЧекККМТовары.СтавкаНДС,
                 |    ЧекККМТовары.СуммаНДС,
                 |    ЧекККМТовары.ПроцентАвтоматическойСкидки,
                 |    ЧекККМТовары.СуммаАвтоматическойСкидки,
                 |    ЧекККМТовары.ПроцентРучнойСкидки,
                 |    ЧекККМТовары.СуммаРучнойСкидки,
                 |    ЧекККМТовары.СтатусУказанияСерий,
                 |    ЧекККМТовары.Продавец,
                 |    ЧекККМТовары.Помещение,
                 |    ЧекККМТовары.Серия,
                 |    ЧекККМТовары.СуммаБонусныхБалловКСписанию,
                 |    ЧекККМТовары.СуммаБонусныхБалловКСписаниюВВалюте,
                 |    ЧекККМТовары.СуммаНачисленныхБонусныхБалловВВалюте,
                 |    ЧекККМТовары.НоменклатураНабора,
                 |    ЧекККМТовары.ХарактеристикаНабора,
                 |    ЧекККМТовары.Штрихкод,
                 |    ЧекККМТовары.ИдентификаторСтроки
                 |ИЗ
                 |    Документ.ЧекККМ.Товары КАК ЧекККМТовары
                 |ГДЕ
                 |    ЧекККМТовары.Номенклатура.ПодакцизныйТовар = Истина
                 |    И ЧекККМТовары.Ссылка = &Ссылка";

  
  Запрос.УстановитьПараметр("Ссылка", ДокументОбъект.Ссылка);
  
  ТзАкцизных = Запрос.Выполнить().Выгрузить();
  
  
  Если ТзАкцизных.Количество() = 0 Тогда
  
    ЕстьАкциз = Ложь;
    Возврат  ЕстьАкциз = Ложь;

  Иначе
    
    Если ТзБезАкцизных.Количество() <> 0 Тогда
      НовыйДок = ДокументОбъект.Ссылка.Скопировать();
      НовыйДок.товары.Загрузить(ТзБезАкцизных);
      НовыйДок.Дата = ДокументОбъект.Дата;
      НовыйДок.СуммаДокумента = НовыйДок.товары.Итог("Сумма");
      НовыйДок.Статус = Перечисления.СтатусыЧековККМ.Пробит;      
      НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
      
    КонецЕсли;
         
      ЕстьАкциз = Истина;
  КонецЕсли;
    Структура = Новый структура;
  Структура.Вставить("ТзБезАкцизных",ТзБезАкцизных);
  Структура.Вставить("ТзАкцизных",ТзАкцизных);
  Структура.Вставить("ДопКасса",ДопКасса);
  Структура.Вставить("ЕстьАкциз",ЕстьАкциз);
  Возврат Структура;
КонецФункции


Після цього з'являється помилка "неможливо змінювати поле яке містить об'єкт даних форми"!!!
В чрму може бути причина, або порадьте інший варіант вирішення завдання(цей варіант працював в звичайних формах...).

Сообщение отредактировал Vofka - 09.05.22, 16:00

Vofka Подменю пользователя
сообщение 09.05.22, 16:01
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

В якому саме рядку виникає помилка?

Pashaboston Подменю пользователя
сообщение 09.05.22, 16:26
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 0

Vofka @ Сегодня, 16:01 * ,
При записі чеку з акцизними товарами.
  Результат = ЗаписатьНаСервере(Истина);

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 18:34
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!