7.7 Учет покупателей

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

  1. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    i`m sorry :cool:
    я же сделал оговорку "после формирования отчёта в чистом виде их нет вроде в БД,"
    потому что именно с чеками в ИД не работаем, грузиться их отчётов KKM-offline
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  3. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    да, кстати, в Торговля и склад 9.2
    такой замечательный код в обработке "ЗакрытиеКассовойСмены"
    Код:
                Если (ВыбКасса.РежимККМ = Перечисление.РежимыККМ.ФР)
                 или (ПустоеЗначение(ВыбКасса.РежимККМ) = 1)
                 или (ВыбКасса.РежимККМ = Перечисление.РежимыККМ.OnLine)
                Тогда
                    // снимем с проведения ЧекиККМ, чтобы можно было провести ОтчетККМ
                    ДокЧеки = СоздатьОбъект("Документ.ЧекККМ");
                    Для Счетчик = 1 По СписокЧеков.РазмерСписка() Цикл
                        Если ДокЧеки.НайтиДокумент(СписокЧеков.ПолучитьЗначение(Счетчик)) = 1 Тогда
                            Попытка
                                ДокЧеки.СделатьНеПроведенным();
                            Исключение
                                ОтменитьТранзакцию();
                                Предупреждение(ОписаниеОшибки());
                                Возврат;
                            КонецПопытки;
                        КонецЕсли;
                    КонецЦикла;
                КонецЕсли;
               
                Попытка
                    ДокОКС.Записать();
                Исключение
                    ОтменитьТранзакцию();
                    Предупреждение(ОписаниеОшибки());
                    Возврат;
                КонецПопытки;
               
                // В режиме OffLine проведем после фиксирования транзакции
                Если ВыбКасса.РежимККМ <> Перечисление.РежимыККМ.OffLine Тогда
                    ДокОКС.Провести();
                    Если ДокОКС.Проведен() = 0 Тогда
                        ОтменитьТранзакцию();
                        Предупреждение(ОписаниеОшибки());
                        Возврат;
                    КонецЕсли;       
                КонецЕсли;
    
                Если (ВыбКасса.РежимККМ = Перечисление.РежимыККМ.ФР)
                 или (ПустоеЗначение(ВыбКасса.РежимККМ) = 1)
                 или (ВыбКасса.РежимККМ = Перечисление.РежимыККМ.OnLine)
                Тогда
                    Для Счетчик = 1 По СписокЧеков.РазмерСписка() Цикл
                        Если ДокЧеки.НайтиДокумент(СписокЧеков.ПолучитьЗначение(Счетчик)) = 1 Тогда
                            Попытка
                                ДокЧеки.Удалить(1);
                            Исключение
                                ОтменитьТранзакцию();
                                Предупреждение(ОписаниеОшибки());
                                Возврат;
                            КонецПопытки;
                        КонецЕсли;
                    КонецЦикла;
                КонецЕсли;
            КонецЕсли;
            ЗафиксироватьТранзакцию();    
        КонецЕсли;       
    
    формирует документ отчёта продаж, перед проведением отчёта снимает с проведения все чеки по этому отчёту, проводит отчёт и удалят все чеки
    и что в ИБ после этого останется?
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Опять вы все притягиваете за уши... Внимательно посмотрите на код процедуры Сформировать... Особенно обратите внимание на условия с перечислением РежимККМ.
    Повторяю - не ваш случай.
  5. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    ну и как не мой? в демобазе (присутствует на дисках ИТС) есть всего один чекККМ и несколько отчётовККМ
    чек за 20 марта 2008 года, отчётаККМ за тот день нету
    только что специально сделал закрытие смены за этот день, итог: чекККМ исчез, отчётККМ с данными по чеку появился

    не верите - убедитесь сами
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если НЕ((ВыбКасса.РежимККМ = Перечисление.РежимыККМ.ФР) и (глФРДляПриемаНаличныхОтЮрЛиц = 1)) Тогда
  7. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    и?
    сие к чему?
    закрытие смены было сделано, в результате информация из чекаККМ перенеслась в отчётККМ и чек ККМ был удалён
    вот движения отчётККМ
    upload_2014-7-22_15-54-52.png
    upload_2014-7-22_15-55-17.png

    а вот движения которые были в чекККМ до выполнения обработки по закрытию смены
    5432.JPG
    --- Объединение сообщений, 22 июл 2014 ---
    надеюсь своим глазам то вы верите?
    Последнее редактирование: 22 июл 2014
  8. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    замер

    Вложения:

  9. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    LordMaverick говорит правильно, если глянуть вкод то при формировании все чеки ккм распроводятся и удаляются. Ни какого другой пос программы нет только 1с. Чеки не сохраняются.
    Код:
        Если (ВыбКасса.РежимККМ = Перечисление.РежимыККМ.ФР)
                 или (ПустоеЗначение(ВыбКасса.РежимККМ) = 1)
                 или (ВыбКасса.РежимККМ = Перечисление.РежимыККМ.OnLine)
                Тогда
                    // снимем с проведения ЧекиККМ, чтобы можно было провести ОтчетККМ
                    ДокЧеки = СоздатьОбъект("Документ.ЧекККМ");
                    Для Счетчик = 1 По СписокЧеков.РазмерСписка() Цикл
                        Если ДокЧеки.НайтиДокумент(СписокЧеков.ПолучитьЗначение(Счетчик)) = 1 Тогда
                            Попытка
                                ДокЧеки.СделатьНеПроведенным();
    
    //**************************************
    или (ПустоеЗначение(ВыбКасса.РежимККМ) = 1)
                 или (ВыбКасса.РежимККМ = Перечисление.РежимыККМ.OnLine)
                Тогда
                    Для Счетчик = 1 По СписокЧеков.РазмерСписка() Цикл
                        Если ДокЧеки.НайтиДокумент(СписокЧеков.ПолучитьЗначение(Счетчик)) = 1 Тогда
                            Попытка
                                ДокЧеки.Удалить(1);
                            Исключение
                                ОтменитьТранзакцию();
    Режим работы кассы ФР.
    По поводу хранить в документе Отчет ккм.
    Не хотелось бы т.к базу обрезаем а регистр при свертке можно и не затронуть и за предыдущие периоды оперативно получить информацию.
    В принципе алгоритм на бумаге выстраиваю так. Чек есть пишем плюс один а время просто обрезаем до часа т.е путем перебора до точки или двоеточия. Писать не полностью время а час.
    Вопрос в том как заставить регистр хранить данные не зависимо от документа основания?
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Никак. Можно завести справочник. Структура справочника и алгоритм заполнения приведена выше. Заполнять можно при формировании ОтчетККМ
  11. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Плохо.
    Придется в чекККм добавить реквизит времяпроведения.
    Справочник наверное сильно раздуется и много будет весить.
  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нет. Считайте сами... Сколько у вас рабочих часов? С 9 до 21 предположим. 12 записей в день. 365 дней в году. 4380 записей в год. Для 1с 4380 записей в справочнике - семечки. Вам до старости хватит))) Около 16.000.000 записей или 2ГБ ограничение на файл.
    SerzhM нравится это.
  13. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Закрывайте тему.
    Решили след образом.
    Справочник. в нем Код, Наименование, Кол-во покупателей, время, Дата.
    в Наименование записываем текущую дату и час (без минут и секунд), по наименование производим поиск, и в количество пишем плюс 1.
    Весь процесс вызывается в модуле документа чека ккм при проведении.

    Что бы новую тему не плодить. Как закрыть форму документа ПКО или РКО что бы ничего не спрашивал и не записывал документ.
    Пробовал Форма.Закрыть() и форма.Закрыть(0) все равно пытается записать и провести документ не зависимо от числа в скобках Закрыть.
    Код:
    //Это вызывается в модуле формы документа в процедуре ПРИОткрытии   
    Если Параметр.Получить("СтатусВозврата") = 0 Тогда
                //Возврат;
                Форма.Закрыть();
            КонецЕсли;
  14. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    один вопрос - одна тема, создавайте новую
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нужно сбросить признак модифицированности...

    НачатьТранзакцию();
    Записать();
    ОтменитьТранзакцию();
  16. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Спасибо. Ругается что документ не проводится, но хоть его не открывает
  17. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В каком случае ругается?
  18. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Открывается обработка ввод получено и если в ней нажать отмена срабатывает след условие
    В процедуре при открытии документа
    Код:
        ОткрытьФормуМодально("Обработка.ВводПолучено", Параметр);
           
            Если Параметр.Получить("СтатусВозврата") = 0 Тогда
             НачатьТранзакцию();
             Записать();
             ОтменитьТранзакцию();
             //Возврат(); //(хоть комментируй, хоть нет, все равно лезет комментарий о проведении документа)
            Форма.Закрыть(); //да хоть с 0 в скобках , хоть с 1, один хрен комментарий о проведении документа.
    КонецЕсли;
            КонецПроцедуры; // при открытии
    
    Т.е при окончании процедуры при открытии выдается коммент что док не проведен.
  19. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Полностью приведите текст процедуры ПриОткрытии
  20. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Код:
    Процедура ПриОткрытии()
       
        // Заполним таблицу для выбора печатной формы
        НомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(),ТаблицаПечФорм);
       
        Если ТипЗначенияСтр(Парам)="СписокЗначений" Тогда
            Если ПустоеЗначение(Парам.Получить("Команда"))=1 Тогда
                Сообщить("В форму документа "+Вид()+" передан неверный параметр!","I");
                СтатусВозврата(0);Возврат;
            КонецЕсли;
            Если Парам.Получить("Команда") = "ПечатьНаПринтер" Тогда
                КолЭкз = Макс(Число(Парам.Получить("КолЭкз")),1);
                ПоКнопкеПечать(1,КолЭкз);
                СтатусВозврата(0);Возврат;
            ИначеЕсли Парам.Получить("Команда") = "ПечатьНаЭкран" Тогда
                ПоКнопкеПечать(0);               
                СтатусВозврата(0);Возврат;
            ИначеЕсли Парам.Получить("Команда") = "ВводИзАвансовогоОтчета" Тогда
                КодОперации = глКО.ВозвратПодотчетныхСумм;
            Иначе
                Сообщить("В форму документа "+Вид()+" передана неверная команда "+Парам.Получить("Команда")+"!","I");
                СтатусВозврата(0);Возврат;
            КонецЕсли;
        КонецЕсли;
       
        // инициализация модульных переменных, контролирующих выполнение
        // пересчетов и обновление надписей в форме
        СтараяДата            = ДатаДок;
        СтараяФирма            = Фирма;
        СтароеФизЛицо        = ФизЛицо;
        СтарыйАвансовыйОтчет= АвансовыйОтчет;
        СтарыйДоговор        = Договор;
        СтарыйКонтрагент    = Контрагент;
       
        ЗаполнитьСписокСтавокНП(); 
       
        Если СписокСтавокНП.РазмерСписка() > 0 Тогда
            Позиция    = СписокСтавокНП.НайтиЗначение(СтавкаНП);
            Если Позиция > 1 Тогда
                // ставка найдена в списке и не первая
                СписокСтавокНП.ТекущаяСтрока(Позиция);
            КонецЕсли;
        КонецЕсли;
           
        ЗаполнитьСписокСтавокНДС();
       
        Если СписокСтавокНДС.РазмерСписка() > 0 Тогда
            Позиция    = СписокСтавокНДС.НайтиЗначение(СтавкаНДС);
            Если Позиция > 1 Тогда
                // ставка найдена в списке и не первая
                СписокСтавокНДС.ТекущаяСтрока(Позиция);
            КонецЕсли;
        КонецЕсли;
       
        ЗаполнитьСписокВидовОплаты();
       
        Если СписокВидовОплаты.РазмерСписка() > 0 Тогда
            Позиция    = СписокВидовОплаты.НайтиЗначение(КодОперации);
            Если Позиция > 1 Тогда
                СписокВидовОплаты.ТекущаяСтрока(Позиция);
            КонецЕсли;
        КонецЕсли;
       
        НачальнаяДатаДокумента    = ДатаДок;
    
        НачВалюта                = Валюта;
        НачКурс                    = Курс;
        НачКратность            = Кратность;
        НачДоговор                = Договор;
        НачКонтрагент            = Контрагент;
        НачФирма                = Фирма;  
        НачСумма                = Сумма;
    
        глПроверкаРазрешенияРедактирования(Контекст);
       
        // поиск выписанных подчиненных документов.
        СФ = глНайтиСчетФактуру(Контекст, ВидСчетаФактуры);
        Форма.ТекстСчФ.Заголовок(глПредставлениеСФ(СФ));
       
        // если дата проведенного документа больше ТА, то открываем только на просмотр,
        // так как его все равно не удастся сохранить после редактирования.
        Если (Проведен() = 1) И (ДатаДок > ПолучитьДатуТА()) Тогда
            Форма.ТолькоПросмотр(1);
        КонецЕсли;
       
        //Инициализирум список действий по кнопке "Действия"
        СписокДействий = СоздатьОбъект("СписокЗначений");
        СписокДействий.ДобавитьЗначение("Отчет о движениях документа");
        СписокДействий.ДобавитьЗначение("Отчет о бухгалтерских проводках");
        СписокДействий.ДобавитьЗначение("Структура подчиненности");
        // Если открыли только на просмотр, то надо кнопки сделать недоступными
        Если Форма.ТолькоПросмотр()=1 Тогда
            // СДЕЛАТЬ НЕДОСТУПНЫМИ КНОПКИ МОДИФИКАЦИИ ДОКУМЕНТА
            Форма.кнОК.Доступность(0);
            Форма.кнХОснование.Доступность(0);
            Форма.кнХПроект.Доступность(0);
            Форма.кнЗаписать.Доступность(0);
            Форма.кнПровести.Доступность(0);
            Форма.кнСуммаВзаиморасчетов.Доступность(0);
           
            Если ПустоеЗначение(ДокОснование) = 1 Тогда
                // только если документ основание отсутствует
                Форма.кнОснование.Доступность(0);
            КонецЕсли;
           
            Если ПустоеЗначение(СФ) = 1 Тогда
                // только если СФ отсутствует
                Форма.кнСчФ.Доступность(0);
            КонецЕсли;
        КонецЕсли;
       
        СписокДействий.ДобавитьЗначение("Ввести на основании");
        СписокДействий.ДобавитьЗначение("Перейти в журнал");
       
        // кнопка по умолчанию
        Если (Форма.ТолькоПросмотр() = 1) ИЛИ ((ДатаДок < Макс(РабочаяДата(), ПолучитьДатуТА()) ) И (Выбран() = 1)) Тогда
            Форма.КнопкаПоУмолчанию("кнЗакрыть");
        Иначе
            Форма.КнопкаПоУмолчанию("кнОК");
        КонецЕсли;
       
        глАктивизироватьРеквизит(Контекст);
           
        СтараяВалюта = Валюта;
        СтарыйКурс   = Курс;
        СтараяКратность    = Кратность;
       
        //Если документ еще не проведен, тогда
        //проведение делаем только в потоке
        Если ( Проведен() = 0 ) Тогда
            ПроводитьПослеТА(1,1);
        КонецЕсли;                                          
           
        ТекстВалютыВзаим();
        РасчетТекущегоДолга();
       
        УправлениеВидимостью();
        УправлениеДоступностью();
       
        глПриВыбореБухСчета(Контекст, 1, 1);
        глПриВыбореНалоговогоСчета(Контекст, 1, 1); 
       
        //Сергей1 Попробуем сразу пробивать
        
    Если глПользователь.ОператорККМ = 0 Тогда
        ВрмСумма= 0;
            Параметр    = СоздатьОбъект("СписокЗначений");
            Параметр.ДобавитьЗначение(ВрмСумма                , "ВрмСумма");
            Параметр.ДобавитьЗначение(Сумма              , "Получено");
       
               
           
            ОткрытьФормуМодально("Обработка.ВводПолучено", Параметр);
           
            Если Параметр.Получить("СтатусВозврата") = 0 Тогда
              
           НачатьТранзакцию();
           Записать();
           ОтменитьТранзакцию();
           //Возврат;
            Форма.Закрыть();
            КонецЕсли;
                   
            Сумма    = Параметр.Получить("Получено");
       
           
            Форма.Обновить();
            ФизЛицо = Константа.ДляОператораККМ;
               КодОперации= глКО.ВозвратПодотчетныхСумм;
            УправлениеВидимостью();
            УправлениеДоступностью();
            РасчетТекущегоДолга();
               ПринятоОт= глПользователь.Наименование;
            //Записать();
            Провести();
            //выбьем внесение или выдачу
            ПоКнопкеПечать(1,1);
            КонецЕсли;
          
       
    КонецПроцедуры //ПриОткрытии()         
Похожие темы
  1. giraf
    Ответов:
    1
    Просмотров:
    1.391
  2. Юджин
    Ответов:
    8
    Просмотров:
    3.631
  3. rom_strizh
    Ответов:
    0
    Просмотров:
    715
  4. Andy45
    Ответов:
    7
    Просмотров:
    2.574
  5. nomad_irk
    Ответов:
    9
    Просмотров:
    422
Загрузка...

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