Имя: Пароль:
1C
1С v8
В одном месте чек печатается, а в другом нет. Код одинаковый.
0 DenisVich
 
02.08.17
15:10
Вот код который не дает расхождения по сумме итога:
"    Перем НомерЧека, НомерСмены;
    //Объявление, инициализация переменных. -

    Если ФискальныйРегистраторДоступен Тогда
            Если Вопрос("Оформить кассовый чек?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
            НомерЧека = 0;
            НомерСмены = 0;
            НомерПоз = 0;
            ШапкаУслуги = Ложь;
            ШапкаТовары = Ложь;
            ИтоговаяСумма = 0;
            ФискальныйРегистраторОбъект.CheckType = 0;
            //ПечатьЧекаШтрих.ПечатьЗаголовка();
            Если ЭтотОбъект.Товары.Количество()>0 Тогда
                Для Каждого СтрокаТаблицы Из ЭтотОбъект.Товары Цикл
//                ДокОбъект = Документы.Реализация.НайтиПоНомеру(СтрокаТаблицы.ОбъектОснование.Ссылка.Номер);
                    НомерПоз = НомерПоз + 1;
                    ИтоговаяСумма = ИтоговаяСумма + СтрокаТаблицы.Сумма;
                    ПечатьЧекаШтрих.ПродажаЧекШтрих(НомерПоз,СтрокаТаблицы.Сумма,СтрокаТаблицы.Количество,СокрЛП(СтрокаТаблицы.Номенклатура));
                КонецЦикла;
            КонецЕсли;
            Если ЭтотОбъект.Услуги.Количество()>0 Тогда
                Для Каждого СтрокаТаблицы Из ЭтотОбъект.Услуги Цикл
//                ДокОбъект = Документы.Реализация.НайтиПоНомеру(СтрокаТаблицы.ОбъектОснование.Ссылка.Номер);
                    НомерПоз = НомерПоз + 1;
                    ИтоговаяСумма = ИтоговаяСумма + СтрокаТаблицы.Сумма;                    
                    ПечатьЧекаШтрих.ПродажаЧекШтрих(НомерПоз,СтрокаТаблицы.Сумма,СтрокаТаблицы.Количество,СокрЛП(СтрокаТаблицы.Номенклатура));
                КонецЦикла;
            КонецЕсли;

            //ПечатьЧекаШтрих.ПечатьСтроки("СКИДКА ПО ЧЕКУ:",0);
                    
                    ПечатьЧекаШтрих.ЗакрытьЧек(ИтоговаяСумма,"");

            //Если ФискальныйРегистраторОбъект.ОткрытьЧек() Тогда
            ////Если ФискальныйРегистраторОбъект.ОткрытьЧек(ФискальныйРегистраторИдентификаторУстройства, 0, 0, 0, НомерЧека, НомерСмены) Тогда
            //    //Если ФискальныйРегистраторОбъект.ЗакрытьЧек(ФискальныйРегистраторИдентификаторУстройства, Сумма, 0, 0) Тогда
            //        //
            //        
            //        ФискальныйРегистраторОбъект.Summ1 = Сумма;
            //      Если ФискальныйРегистраторОбъект.ЗакрытьЧек() Тогда
            //    Иначе                                                                                к
            //        Сообщить("Не удалось закрыть кассовый чек!", СтатусСообщения.Внимание);
            //    КонецЕсли;
            //Иначе
            //    Сообщить("Не удалось создать кассовый чек!", СтатусСообщения.Внимание);
            //КонецЕсли;
            КонецЕсли;
    Иначе
        Сообщить("Фискальный регистратор недоступен.", СтатусСообщения.Информация);
    КонецЕсли;
"

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

                КонецЕсли;
            //Если ФискальныйРегистраторОбъект.ОткрытьЧек() Тогда
            ////Если ФискальныйРегистраторОбъект.ОткрытьЧек(ФискальныйРегистраторИдентификаторУстройства, 0, 0, 0, НомерЧека, НомерСмены) Тогда
            //    //Если ФискальныйРегистраторОбъект.ЗакрытьЧек(ФискальныйРегистраторИдентификаторУстройства, Сумма, 0, 0) Тогда
            //        //
            //        
            //        ФискальныйРегистраторОбъект.Summ1 = Сумма;
            //      Если ФискальныйРегистраторОбъект.ЗакрытьЧек() Тогда
            //    Иначе                                                                                к
            //        Сообщить("Не удалось закрыть кассовый чек!", СтатусСообщения.Внимание);
            //    КонецЕсли;
            //Иначе
            //    Сообщить("Не удалось создать кассовый чек!", СтатусСообщения.Внимание);
            //КонецЕсли;
        КонецЕсли;
    
    Иначе
        Сообщить("Фискальный регистратор недоступен.", СтатусСообщения.Информация);
    КонецЕсли;"
1 DenisVich
 
02.08.17
15:10
Как это вылечить. Не знаю как.
2 Волшебник
 
модератор
02.08.17
15:11
Контекст или параметры разные
3 Numerus Mikhail
 
02.08.17
15:12
Скопируйте код, которй работает в то место, где не работает
4 DenisVich
 
02.08.17
15:18
Он везде работает
5 DenisVich
 
02.08.17
15:18
Выводил через сообщить.
6 DenisVich
 
02.08.17
15:19
ПечатьЧекаШтрих.ЗакрытьЧек(ИтоговаяСумма,"");
7 DenisVich
 
02.08.17
15:19
Закрытие чека не происходит.
8 DenisVich
 
02.08.17
15:20
Хотя суммы совпадают. Накопления в цикле происходят.
9 DenisVich
 
02.08.17
15:23
В Сообщить("Итоговая сумма"+Строка(ИтоговаяСумма)) все доходит. Итог правильный.