7.7 Ребят подскажите Пожалуйста 3 дня бьюсь над проблемой

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

  1. TopicStarter Overlay
    Kyznets
    Offline

    Kyznets Опытный в 1С

    Регистрация:
    24 янв 2010
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Ребят подскажите а не то я сгорю на работе. Имеем магазины со своей спецификой 1С 7.7 Тис
    Написана обработка которая рассчитывает скидку в Самой т табличной части документа и скидку соответственно на каждую позицию разная % процентная.. Раньше стояли обычные кассы ручные.. И было все нормально.. Теперь нужно поставить Штрих ФР К ...

    У меня значит так при Проведении документа реализации создается автоматически ЧекККМ и проводиться-Тем самым печатает чек на Фискальнеке Пока стандартная обработка fr_elves. Если продажа по рознице все нормально!!!!

    В чек значить попадает Цена она Розничная и Сумма она со скидкой И Скидка Например Так

    Код:
    
    Количество       |   Цена   |    Сумма   |     Скидка
    3                       190           502             68
    
    
    
    
    
    Соответственно Скидка процентная Стоит Без Скидки

    В чек попадает Цена 1-й штучки По Рознице соответственно фискальник считает 3*190 = 570р

    и Конечно Говорит Что сумма чека не равна Получено.... Нужно Переписывать Обработку ФР а я в этом пока не валаку Че делать есть ли у кого нибуть идеи

    Нужно передать Общию Сумму скидки в ФР числовую.... Но как..????? я Х его знаю

    И вообще Можно ли
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если не нужно печатать все позиции товара то раз плюнуть
  3. TopicStarter Overlay
    Kyznets
    Offline

    Kyznets Опытный в 1С

    Регистрация:
    24 янв 2010
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Нужно печатать Позиции товара Кол и цену

    Итог

    Даже можно пока без скидки и ЕЩЕ ОДНО Нужны Цифры без Копеек

    Если б он считал так Кол * Цена =Суума Всего чека - Общяя скидка = ИТОГ
  4. TopicStarter Overlay
    Kyznets
    Offline

    Kyznets Опытный в 1С

    Регистрация:
    24 янв 2010
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Можно было и так

    Код:
    Функция ПробитьЧекНаККМ()
    Перем НомерЧека;
    
    СписокТоваров = СоздатьОбъект("ТаблицаЗначений");
    СписокТоваров.НоваяКолонка("ТовНаим"   , "Строка");
    СписокТоваров.НоваяКолонка("Цена"      , "Число");
    СписокТоваров.НоваяКолонка("Количество", "Число");
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    СписокТоваров.НоваяСтрока();
    СписокТоваров.ТовНаим    = Номенклатура.Наименование;
    СписокТоваров.Цена       = глФрм(?(Количество=0, 0, Сумма / Количество));
    СписокТоваров.Количество = Количество; 
    Сообщить(СписокТоваров.ТовНаим);  
    Сообщить(СписокТоваров.Цена);
    Сообщить(СписокТоваров.Количество)
    КонецЦикла;
    
    
    
    
    

    Но получаеться что СписокТоваров.Цена = глФрм(?(Количество=0, 0, Сумма / Количество)); Цена с копейками ---- и отличная от 502/3=167,33 * 3 = 501.99 А фискальный аппарат не округлит

    Вообщем Цена Нужна Без Копеек как в Базе...... Я не знаю что делать ((
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    СписокТоваров.Цена       = глФрм(?(Количество=0, 0, Окр(Сумма / Количество,0)));
    
    
  6. TopicStarter Overlay
    Kyznets
    Offline

    Kyznets Опытный в 1С

    Регистрация:
    24 янв 2010
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26

    Ну дк Смотри Что получается Итог 502 по документу а цена окр за 1 шт 167*3=501
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    у тебя СУММА должна биться. Поэтому сначала вычисляй сумму, от нее цену.
    Подобные жа "фигушки" творятся и при расчете ндс - общая сумма часто "рвет" если считать построчно и вцелом. На сей счет даже специальное письмо есть....
  8. TopicStarter Overlay
    Kyznets
    Offline

    Kyznets Опытный в 1С

    Регистрация:
    24 янв 2010
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Это как и Где Подскажи ...
  9. TopicStarter Overlay
    Kyznets
    Offline

    Kyznets Опытный в 1С

    Регистрация:
    24 янв 2010
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Вот нашол кусок Кода обработки

    Штрих

    Код:
    голеОбъектККМ.ContinuePrint();
    
    Пока "на экране окно вопроса" = "на экране окно вопроса" Цикл
    
    голеОбъектККМ.GetECRStatus();
    Результат = ОбработкаОшибокПриПечати();
    
    Если Результат = "Отмена" Тогда
    
    //голеОбъектККМ.Disconnect();
    Возврат 0;
    
    ИначеЕсли Результат = 0 Тогда
    Прервать;
    КонецЕсли;
    
    КонецЦикла;
    
    КонецЕсли;
    
    голеОбъектККМ.OpenDrawer();
    
    Если ПризнВозврата = 0 Тогда
    СтрокаПечати = "ЧЕК ПРОДАЖИ";
    Иначе
    СтрокаПечати = "ЧЕК ВОЗВРАТА";
    КонецЕсли;
    
    Если ПечататьПоСередине(СтрокаПечати, гчШиринаСтроки) = 1 Тогда
    Возврат 0;
    КонецЕсли;
    
    Стр = Лев("------------------------------------", гчШиринаСтроки);
    
    Если ПечатьСтроки(Стр) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    Скидка = 0;
    СуммаЧека = 0;
    
    СписокТоваров.ВыбратьСтроки();
    
    Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
    
    СтрокаНаименования = Лев(СокрЛП(ВРЕГ(Строка(СписокТоваров.НомерСтроки) + ". " + СписокТоваров.Товар)), гчШиринаСтроки);
    
    Если БитьНаименованиеИПечатать(СтрокаНаименования, гчШиринаСтроки) = 1 Тогда
    Возврат 0;
    КонецЕсли;
    
    Если ПечатьСтроки(РаспределитьСтроку(СокрЛП(Строка(Формат(Число(СписокТоваров.Цена), "Ч15.2"))) + " руб. х " + Строка(СписокТоваров.ОтоброжениеКоличества) + " " + СписокТоваров.ПредставлениеЕдиницы, СОКРЛП(Строка(Формат((Число(СписокТоваров.СуммаПродажиСН)),"Ч15.2"))), гчШиринаСтроки)) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    лчСкидка = СписокТоваров.СуммаСкидки;
    лчПроцСкидки = СписокТоваров.ПроцентСкидки;
    
    Если лчСкидка > 0 Тогда
    
    Если ПечатьСтроки(РаспределитьСтроку("Скидка " + лчПроцСкидки + "%", СокрЛП(Строка(Формат((Число(лчСкидка)),"Ч15.2"))), гчШиринаСтроки)) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    
    КонецЦикла;
    
    лчПредоплата = Форма.Параметр.Получить("Предоплата");
    
    Если ПустоеЗначение(лчПредоплата) = 1 Тогда
    лчПредоплата = 0;
    КонецЕсли;
    
    Стоимость = СписокТоваров.Итог("СуммаПродажиСН") - лчПредоплата;
    СуммаЧека = СписокТоваров.Итог("ИтогПоСтроке") - лчПредоплата;
    Скидка = СписокТоваров.Итог("СуммаСкидки");
    
    СуммаИтого = СуммаЧека;
    СуммаИтогоСоСкидкой = СуммаЧека;
    
    Если Скидка > 0 Тогда
    
    Стр = Лев("------------------------------------", гчШиринаСтроки);
    
    Если ПечатьСтроки(Стр) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    Если ПечатьСтроки(РаспределитьСтроку("Итого без ск", СокрЛП(Строка(Формат(Стоимость,"Ч15.2"))), гчШиринаСтроки)) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    Если ПечатьСтроки(РаспределитьСтроку("Скидка", СокрЛП(Строка(Формат(Скидка,"Ч15.2"))), гчШиринаСтроки)) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    Если ПечатьСтроки(РаспределитьСтроку("Итого со ск", СокрЛП(Строка(Формат(СуммаИтого,"Ч15.2"))), гчШиринаСтроки)) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    
    Если лчПредоплата > 0 Тогда
    
    Если ПечатьСтроки(РаспределитьСтроку("Аванс", СокрЛП(Строка(Формат(лчПредоплата,"Ч15.2"))), гчШиринаСтроки)) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    
    СписокТоваров.Выгрузить(гтзСуммыНДС, , ,"СтавкаНДСПродажи, СуммаНДСПродажи");
    СписокТоваров.Выгрузить(гтзСуммыНП, , ,"СтавкаНППродажи, СуммаНППродажи");
    
    гтзСуммыНДС.Свернуть("СтавкаНДСПродажи", "СуммаНДСПродажи");
    гтзСуммыНП .Свернуть("СтавкаНППродажи" , "СуммаНППродажи");
    
    
    Если (гтзСуммыНДС.КоличествоСтрок() <> 0) ИЛИ (гтзСуммыНП.КоличествоСтрок() <> 0) Тогда
    
    Если (гтзСуммыНДС.Итог("СуммаНДСПродажи") <> 0) ИЛИ (гтзСуммыНП.Итог("СуммаНППродажи") <> 0) Тогда
    
    Стр = Лев("===================================", гчШиринаСтроки);
    
    Если ПечатьСтроки(Стр) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    Стр = "в т.ч. налоги:";
    
    Если ПечатьСтроки(Стр) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    
    гтзСуммыНДС.ВыбратьСтроки();
    
    Пока гтзСуммыНДС.ПолучитьСтроку() = 1 Цикл
    
    Если гтзСуммыНДС.СуммаНДСПродажи <> 0 Тогда
    
    Если ПечатьСтроки(РаспределитьСтроку("НДС " + гтзСуммыНДС.СтавкаНДСПродажи, СокрЛП(Строка(Формат(гтзСуммыНДС.СуммаНДСПродажи,"Ч15.2"))), гчШиринаСтроки)) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    
    КонецЦикла;
    
    гтзСуммыНП.ВыбратьСтроки();
    
    Пока гтзСуммыНП.ПолучитьСтроку() = 1 Цикл
    
    Если гтзСуммыНП.СуммаНППродажи <> 0 Тогда
    
    Если ПечатьСтроки(РаспределитьСтроку("НП " + гтзСуммыНП.СтавкаНППродажи, СокрЛП(Строка(Формат(гтзСуммыНП.СуммаНППродажи,"Ч15.2"))), гчШиринаСтроки)) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    
    КонецЦикла;
    
    Стр = Лев("====================================", гчШиринаСтроки);
    
    Если ПечатьСтроки(Стр) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    
    СуммаДокумента = СуммаИтогоСоСкидкой;
    Отдел = Число(НомерСекции);
    
    Если ПризнВозврата = 0 Тогда
    
    Если РегистрацияПозиции(Отдел,Стоимость,1) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    Иначе
    
    Если ВозвратПозиции(Отдел,СуммаЧека,1) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    КонецЕсли;
    
    
    Если ЗакрытиеЧека() = 0 Тогда
    Возврат 0;
    КонецЕсли;
    
    
    Если ОбработкаОшибок() = 0 Тогда
    
    голеОбъектККМ.GetECRStatus();
    НомерЧека = голеОбъектККМ.OpenDocumentNumber + 1;
    
    Иначе
    Возврат 0;
    КонецЕсли;
    
    //голеОбъектККМ.Disconnect();
    
    Возврат 1;
    
    КонецФункции // ПечататьЧек() 
    

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