Имя: Пароль:
1C
1С v8
Розница, файловая. При записи номенклатуры невозможно провести чек
,
0 empafe
 
22.05.15
14:46
Добрый день!

такой вопрос..
Есть магазин который работает на 1с Розница 1.
Работа ведется как кассиров так и операторов в одной базе.
Последнее время при записи номенклатуры у кассиров начинает висеть касса при пробитии чека.
Сделал замер производительности процедуры записи номенклатуры и наткнулся на следующие процедуры..Время выполнения запроса по поиску на ссылки номенклатуры в регистрах занимает ~10-15 сек
Я так понял, что из за этого кассы и висят
Если я прав, то можно ли как-то оптимизировать это?
Зачем, например, проверять номенклатуру, которая только что создалась? Понятное дело по ней не будет движений..
Может нужно сделать на это условие? или есть подводные камни?

Если Не Услуга И Ссылка.ЕдиницаХраненияОстатков <> ЕдиницаХраненияОстатков И ПолныеПрава.Номенклатура_СуществуютСсылки(Ссылка, СуществуютСсылки) Тогда
        ТекстСообщения = "Единица """ + СокрЛП(Ссылка.ЕдиницаХраненияОстатков) + """ является единицей хранения остатков для """ + Наименование + """
        |и уже участвует в товародвижении.
        |Изменить эту единицу уже нельзя!";
        ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения, Отказ);
КонецЕсли;



Функция Номенклатура_СуществуютСсылки(Ссылка, СуществуютСсылки) Экспорт
    
    Если НЕ ЗначениеЗаполнено(Ссылка) Тогда
        Возврат Ложь;
    ИначеЕсли СуществуютСсылки <> Неопределено Тогда
        Возврат СуществуютСсылки; // уже было рассчитано
    КонецЕсли;
    
    Запрос = Новый Запрос();
    
    Запрос.УстановитьПараметр("ТекущийВладелец", Ссылка);
    
    ТипНоменклатура = Тип("СправочникСсылка.Номенклатура");
    
    Запрос.Текст = "";
    
    Для Каждого РегистрНакопления Из Метаданные.РегистрыНакопления Цикл
        Для Каждого РеквизитРегистра Из РегистрНакопления.Измерения Цикл
            Если РеквизитРегистра.Тип.СодержитТип(ТипНоменклатура) Тогда
                Если Запрос.Текст <> "" Тогда
                    Запрос.Текст = Запрос.Текст + "
                    |ОБЪЕДИНИТЬ ВСЕ
                    |";
                КонецЕсли;
                Запрос.Текст = Запрос.Текст + "
                |ВЫБРАТЬ ПЕРВЫЕ 1
                |    1 КАК Результат
                |ИЗ
                |    РегистрНакопления." + РегистрНакопления.Имя + " КАК Рег
                |ГДЕ
                |    Рег." + РеквизитРегистра.Имя + " = &ТекущийВладелец
                |";
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    Возврат Не Запрос.Выполнить().Пустой();
    
КонецФункции //  СуществуютСсылки()
1 Лефмихалыч
 
22.05.15
14:49
гениально...
надо что-то сделать, чтобы этот копрокод не вызывался
2 ВРедная
 
22.05.15
14:51
(0) Для чего кассир на кассе записывает номенклатуру?
3 empafe
 
22.05.15
14:52
(2) кассир только чеки пробивает
номенклатуру записывает оператор
4 Лефмихалыч
 
22.05.15
14:53
(2) кассир - ни для чего. Кто-то другой записывает в другом сеансе и, судя по всему, база файловая и клиенты дохлые
5 Лефмихалыч
 
22.05.15
14:55
+(4) запрос из (0) - тяжелый, как баржа с утюгами, т.к. шерстит все движения без периода. Транзакция при записи номенклатуры лочит всю таблицу справочника и запускает этот скребучий запрос. А, по скольку, проведение чеков - это тоже транзакция, чтение в ней не может быть сырым, вот все кассиры и ждут, пока грузовой запрос не завершится.

Не используйте файловых баз
6 Лефмихалыч
 
22.05.15
14:57
ну, или, раз уж на то пошло, выделите этих номенклатурщиков в отдельную почку УРБД. Один фиг - кассирам не нужна в онлайне номенклатура, которую создают прямо сейчас
7 ДенисЧ
 
22.05.15
14:58
Эй... А как вы сслыки-то вставляете, ироды??
8 Лефмихалыч
 
22.05.15
14:58
(7) шо?..
9 empafe
 
22.05.15
15:01
(5) Не использовать файловую конечно хороший вариант, но ну уж как есть. Предлагал такое, но им как раз хочется все в онлайне. Короче сделаю тогда:

Если Ссылка.ЕдиницаХраненияОстатков.Пустая() Тогда
//НафигПроверку
КонецЕсли;
10 Лефмихалыч
 
22.05.15
15:02
(9) кассиры могут начать продавать товар сразу, как только его создали?
11 empafe
 
22.05.15
15:07
(10) Ага. Более того, они хотят его продавать, когда его еще даже создать не успели, потому что оператор прохлаждался, а товар уже на полках. В итоге крики/драки и оператор в панике забивает накладные
12 empafe
 
22.05.15
15:10
И да, спасибо. С названием темы я немного опечатался..)
13 Лефмихалыч
 
22.05.15
15:10
(11) хотим, чтобы был учет, но не хотим его вести и в гробу видали вас с вашими бищнес процессами и проче ё*банью заумной, мы деньги зарабатываем (с)
ну, тогда - снимай с поддержки и правь конфу
14 Новый участник
 
22.05.15
15:11
(11) Передайте собственнику, что онлайн-консультант считает безусловное прменение бизнес-геля неоправданным в этом случае.
15 ВРедная
 
22.05.15
15:12
(9) (13) В актуальном релизе УПП уже стоит заглушка:

Если мЭтоНеНовый И НЕ ЭтоГруппа Тогда

Возможно, нужно обновить розницу
16 empafe
 
22.05.15
17:23
(15) Посмотрел, и правда, тут тоже стоит
Но после первого возврата 1с присваивает единицу измерения и пишет элемент еще раз. И в этот раз он уже не новый. Странно конечно как-то..
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой