|   |   | 
| 
 | Как оптимизировать данный код? | ☑ | ||
|---|---|---|---|---|
| 0
    
        SherifSP 23.04.13✎ 13:53 | 
        Есть РС "ФКР" непериодический, независимый. В него записываю данные при обработке действий фискального регистратора. Ищу записи, если нет, тогда записываю, если есть, циклом прохожу по записям и проверяю совпадения данных ресурса РС "ТоварКод" с данными фискального регистратора. Все бы ничего, но данных "ТоварКод" в РС может не быть, как мне проверить если нет, тогда записываю новую запись? 
  НЗ = РегистрыСведений.ФКР.СоздатьНаборЗаписей(); НЗ.Отбор.КассовыйАпарат.Установить(Модель); НЗ.Отбор.НомерZОтчета.Установить(НомерZОтчета); НЗ.Прочитать(); Если НЗ.Количество() = 0 Тогда НоваяЗапись = НЗ.Добавить(); НоваяЗапись.КассовыйАпарат = Модель; НоваяЗапись.НомерZОтчета = НомерZОтчета; НоваяЗапись.ТоварКод = Строка(Код1С); НоваяЗапись.КодАртикула = КодАртикула; НоваяЗапись.Наименование = Наименование1С; НоваяЗапись.НалоговаяГруппа = НалоговаяГруппа1С; НоваяЗапись.Цена = Окр(Цена1С,2); НоваяЗапись.ТоварДелимость = Делимость1С; НЗ.Записать(); Иначе Для Каждого СтрокаНЗ Из НЗ Цикл Если СтрокаНЗ.ТоварКод = Строка(Код1С) Тогда Если (СтрокаНЗ.Цена <> Окр(Цена1С,2)) ИЛИ(СтрокаНЗ.НалоговаяГруппа <> НалоговаяГруппа1С) ИЛИ (СтрокаНЗ.Наименование <> Наименование1С) Тогда НЗ.Цена = Окр(Цена1С,2); НЗ.ТоварКод = Строка(Код1С); НЗ.НалоговаяГруппа = НалоговаяГруппа1С; НЗ.Наименование = Наименование1С; НЗ.Записать(); Прервать; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; | |||
| 1
    
        zak555 23.04.13✎ 13:55 | 
        а если есть данные -- нужно их перезаписывать ?     | |||
| 2
    
        1C-band 23.04.13✎ 13:55 | 
        Прервать или Продолжить?     | |||
| 3
    
        SherifSP 23.04.13✎ 13:57 | 
        (1) Если есть тогда сравниваю Если СтрокаНЗ.ТоварКод = Строка(Код1С) Тогда  и если в записи не совпадает к примеру цена, перезаписываю данные     | |||
| 4
    
        SherifSP 23.04.13✎ 13:58 | 
        (2) Прервать     | |||
| 5
    
        Рэйв 23.04.13✎ 13:58 | 
        Прсто делай отбор, добавляй новые записи по фиск. регистратору и делай
  Набор.Записать(Истина) Были записи или не были - все будет поновому как надо | |||
| 6
    
        Галахад гуру 23.04.13✎ 13:59 | 
        Почему не писать все?     | |||
| 7
    
        1C-band 23.04.13✎ 13:59 | 
        (0) Вообще, конечно, такое делается запросом. Потом смотришь на .Количество() результата запроса и добавляешь нужные строки.     | |||
| 8
    
        SherifSP 23.04.13✎ 14:01 | 
        (5) По вот этому отбору несколько записей
  НЗ.Отбор.КассовыйАпарат.Установить(Модель); НЗ.Отбор.НомерZОтчета.Установить(НомерZОтчета); А вы предлагаете все записи удалить и записать одну новую | |||
| 9
    
        SherifSP 23.04.13✎ 14:03 | 
        (7) Могу, но весь код выполняется в цикле, это на каждую запись нужно будит запросом в базу лазить и выгребать данные, посчитал что не кошерно     | |||
| 10
    
        SherifSP 23.04.13✎ 14:05 | 
        +(9) Могу перед циклом выбрать все записи и методом найти строки найти свою строку, но как ее потом перезаписать?     | |||
| 11
    
        Галахад гуру 23.04.13✎ 14:05 | 
        Не понимаю. Если два раза пробьют батон, в регистре одно событие будет?     | |||
| 12
    
        Fragster гуру 23.04.13✎ 14:05 | 
        получить запросом нужные данные и создать/именить нужное     | |||
| 13
    
        Рэйв 23.04.13✎ 14:06 | 
        (8)Запись будет для каждого Отбора     | |||
| 14
    
        SherifSP 23.04.13✎ 14:07 | 
        (13) Ладно, сейчас попробую     | |||
| 15
    
        Рэйв 23.04.13✎ 14:25 | 
        для каждого набора отборов!  а то щас начнешь на каждую строку записывать в самом деле:-)     | |||
| 16
    
        SherifSP 23.04.13✎ 14:26 | 
        (15) Да нет, вот так вот сделал
  НЗ = РегистрыСведений.ФКР.СоздатьНаборЗаписей(); НЗ.Отбор.КассовыйАпарат.Установить(Модель); НЗ.Отбор.НомерZОтчета.Установить(НомерZОтчета); НЗ.Прочитать(); НоваяЗапись = НЗ.Добавить(); НоваяЗапись.КассовыйАпарат = Модель; НоваяЗапись.НомерZОтчета = НомерZОтчета; НоваяЗапись.ТоварКод = Строка(Код1С); НоваяЗапись.КодАртикула = КодАртикула; НоваяЗапись.Наименование = Наименование1С; НоваяЗапись.НалоговаяГруппа = НалоговаяГруппа1С; НоваяЗапись.Цена = Окр(Цена1С,2); НоваяЗапись.ТоварДелимость = Делимость1С; НЗ.Записать(Истина); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |