Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Замедление производительности клиент-сервеного варианта          
Batchir Подменю пользователя
сообщение 12.02.09, 10:14
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Данную тему я поднимал на другом форуме, но т.к. являюсь её автором и нашел выход из сложившейся ситуации, то позволю себе разместить здесь

ОПИСАНИЕ ПРОБЛЕМЫ

УТ 2.3.2.6 для Украины, но и в российской версии так же присутствует проблемный запрос.
Платформа 8.1.12.101, MS SQL Server 2005, Windows Server 2003 R2 Enterprise x64 Edition SP2
Компьютер: Intel® Xeon® CPU E5430 @ 2.66GHz, 7.99GB ОЗУ
Рекомендации по регламентным операциям для MS SQL Server выполнены: 
• Обновление статистик 
• Очистка процедурного КЭШа
• Дефрагментация индексов
• Реиндексация таблиц базы данных

В параметрах учетной политики стоит флаг "Списывать партии при проведении документов".
Снятие его решает проблему медленного проведения документа, но не решает проблемы медленного восстановления последовательности по партиям.  
Регистры накопления рассчитаны на 31.12.2008 
Проводится документ перемещения товаров от 01.10.2007 . Количество строк 546.  
Замер производительности показал, что проведение в клиент-серверном варианте 
в 2,67!!! раз выполняется дольше, чем в файловом.

Файловый вариант:
ОбщийМодуль.ОбщегоНазначения СтрокаДвижения.НаборЗаписей.Записать(); - 31,542450 сек
ОбщийМодуль.УправлениеЗапасамиПартионныйУчет Возврат Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам) - 30,270411 сек

Клиент - серверный вариант:
ОбщийМодуль.ОбщегоНазначения СтрокаДвижения.НаборЗаписей.Записать(); - 5,217208 сек ОбщийМодуль.УправлениеЗапасамиПартионныйУчет Возврат Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); - 160,466609 сек

Исследование проведения документа в парсере SQL показали что бульшую часть времени уходит на выполнение запроса, сформированного в 1С. Формируется этото запрос в процедуре ЗаполнитьЗапросПартийНаСкладахУпр общего модуля УправлениеЗапасамиПартионныйУчет.

там есть участок:


|ИЗ
| РегистрСведений.СписанныеТовары КАК СписанныеТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
| &Дат,
| Номенклатура В
| (ВЫБРАТЬ
| РегистрСведений.СписанныеТовары.Номенклатура
| ИЗ
| РегистрСведений.СписанныеТовары
| ГДЕ
| РегистрСведений.СписанныеТовары.Регистратор = &Ссылка)"
+ ?(ВестиПартионныйУчетПоСкладам, "
| И (Склад В 
| (ВЫБРАТЬ
| РегистрСведений.СписанныеТовары.Склад
| ИЗ
| РегистрСведений.СписанныеТовары
| ГДЕ
| РегистрСведений.СписанныеТовары.Регистратор = &Ссылка)
| ИЛИ Склад = &ПустойСклад)", "") + ") КАК ПартииТоваровНаСкладах


проанализровав который, сдел вывод, что для каждой строки партии выполняется запрос для получения списка номенклатуры из регистра сведений СписанныеТовары. А теперь представим что строк в документе более 500 и регистр Списанныетовары сам по себе огромный, то колличество таких внутренних "одних и тех же" запросов прямопропорцинально количеству строк в документе регистраторе. Вобщем SQL-ю стало плохо о такого условия с выборкой. 

Что сделал я. Сначала с помощью вложенных запросов получил списки необходимой номенклатуры и складов, а потом поставил в условие проверку вхождения номенклатуры и складов в полученные с помощью вложенных запросов списки. 
Таким образом запрос по регистру сведений СписанныТовары выполняется один раз, а номенклатура и склад проверяются на вхождение в уже сформированные списки. 
Результаты замера производительности просто потрясли: теперь 


Возврат Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам)
выполняется меньше чем за 10 секунд против 160 в типовом запросе.




Ответ 1С по поводу такого поведения платформы:
Спасибо за сообщение. Информация передана в отдел разработки. 
Зарегистрирована ошибка 10009845


ПРЕДПОЛАГАЕМЫЙ ДИАГНОЗ
Скорее всего конструкции вида :



| Номенклатура В
| (ВЫБРАТЬ
| РегистрСведений.СписанныеТовары.Номенклатура
| ИЗ
| РегистрСведений.СписанныеТовары
| ГДЕ
| РегистрСведений.СписанныеТовары.Регистратор = &Ссылка)" 


представляют проблему для оптимизатора MS SQL 2005.



ИСПРАВЛЕНИЕ ЗАПРОСА (ВРЕМЕННАЯ ЗАПЛАТКА, ПОКА ОШИБКА НЕ ИСПРАВЛЕНА)



Вот код измененной процедуры:

Процедура ЗаполнитьЗапросПартийНаСкладахУпр(Запрос, ВестиПартионныйУчетПоСкладам,
СтратегияСтатусПартии, СпособОценкиМПЗ)
   
Запрос.Текст ="
   
|ВЫБРАТЬ
| СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
| ПартииТоваровНаСкладах.Номенклатура,
| ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,
| ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДокументОприходованияДата,
| ПартииТоваровНаСкладах.Склад,
| ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
| ПартииТоваровНаСкладах.СерияНоменклатуры,
| ПартииТоваровНаСкладах.Качество,
| ПартииТоваровНаСкладах.Заказ,
| ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество,
| ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость,
| ПартииТоваровНаСкладах.СтатусПартии,
| ВЫБОР
| КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК ЧислоСерияНоменклатуры,
| ВЫБОР
| КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ КАК ЧислоДокументОприходования,
| ВЫБОР
| КОГДА СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК ЧислоЗаказ,
| ВЫБОР
| КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК ЧислоСтатусПартии
|ИЗ
| РегистрСведений.СписанныеТовары КАК СписанныеТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дат, ) КАК ПартииТоваровНаСкладах
| ПО СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
| И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры
| И (ВЫБОР
| КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество
| ТОГДА ИСТИНА
| ИНАЧЕ ВЫБОР
| КОГДА СписанныеТовары.Качество = &ПустоеКачество
| ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый
| ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество
| КОНЕЦ
| КОНЕЦ)
| И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад
| ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад)
| И (ВЫБОР
| КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус
| ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус
| ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус
| ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус
| ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус
| ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру
| ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1
| ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2
| ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3
| ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4
| ИНАЧЕ ИСТИНА
| КОНЕЦ)
| И (ВЫБОР
| КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА
| ТОГДА ВЫБОР
| КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
| ТОГДА ВЫБОР
| КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
| КОНЕЦ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
| ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| КОНЕЦ)
| И (СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
| ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры
| ИЛИ СписанныеТовары.КодОперацииПартииТоваров = &КодРезервирование),
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| СписанныеТовары.Номенклатура КАК Номенклатура
| ИЗ
| РегистрСведений.СписанныеТовары КАК СписанныеТовары
| ГДЕ
| СписанныеТовары.Регистратор = &Ссылка) КАК СписокТоваров,
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| СписанныеТовары.Склад КАК Склад
| ИЗ
| РегистрСведений.СписанныеТовары КАК СписанныеТовары
| ГДЕ
| СписанныеТовары.Регистратор = &Ссылка) КАК СписокСкладов
|ГДЕ
| СписанныеТовары.Регистратор = &ОсновнойДокумент
| И ПартииТоваровНаСкладах.Номенклатура В (СписокТоваров.Номенклатура)"
+?(ВестиПартионныйУчетПоСкладам, "
| И (ПартииТоваровНаСкладах.Склад В (СписокСкладов.Склад)
| ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад)","")+"
|
|УПОРЯДОЧИТЬ ПО
| ЧислоСерияНоменклатуры,
| ЧислоДокументОприходования,
| ЧислоЗаказ,
| ЧислоСтатусПартии" +
?(СтратегияСтатусПартии = Перечисления.СтретегииСписанияПартийТоваровПоСтатусам.СначалаПринятыеПотомСобств
енные, " Убыв", "") + ",
| ДокументОприходованияДата" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
| ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + "
|ИТОГИ ПО
| НомерСтрокиДокумента  
|";  

КонецПроцедуры // ЗаполнитьЗапросПартийНаСкладахУпр()




Тестирование на типовой конигурации: выполнил полное перепроведение документов в типовой до изменения и полное перепроведение после изменения. Отчеты по партиям, по остаткам до и после СОВПАЛИ.

Рекомендуется при исправлении запроса использовать не вложенные запросы, а временную таблицу (в пакете). Сильная вложенность тоже иногда даёт непредсказуемые результаты, особенно если регламентные процедуры на сервере не проводятся.

Но на использование временных таблиц я запрос не переделывал

Спасибо сказали: MATEVI, vbi,

MadProf Подменю пользователя
сообщение 06.09.10, 13:32
Сообщение #2

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

У меня возникла таже самая проблема. Очень медленно получают остатки запросы по регистрам партий. Я пришел к такому же заключению, что и Вы, но при этом у меня возникает сомнение в необходимости этих условий по списку товаров и складов. Если я не ошибаюсь внутреннее соединение регистра "Списанные товары" и "Партии товаров на складах" решает вопрос и условия по товарам и складам.
Хотелось бы узнать, как у Вас сейчас происходит получение остатков по партиям (текст запроса) и правильные ли остатки получает этот запрос?

Batchir Подменю пользователя
сообщение 06.09.10, 14:01
Сообщение #3

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Сейчас у меня используется тот же принцип, что и описывается выше. Проблем с остатками и партиями не наблюдается. Если честно, то на счет Ваших саомнений не думал. Хотел повозможности оставить типовую логику, но оптимизировав её.

MadProf Подменю пользователя
сообщение 08.09.10, 8:40
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Я тоже оставил типовую логику. Просто из запроса убрал условия виртуальной таблицы "Остатки" по товарам и складам, при этом не добавлял в конце условие (как написано у Вас в запросе.

    Запрос.Текст =
    "ВЫБРАТЬ
    |    СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
    |    ПартииТоваровНаСкладах.Номенклатура,
    |    ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,
    |    ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДокументОприходованияДата,
    |    ПартииТоваровНаСкладах.Склад,
    |    ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
    |    ПартииТоваровНаСкладах.СерияНоменклатуры,
    |    ПартииТоваровНаСкладах.Качество,
    |    ПартииТоваровНаСкладах.Заказ,
    |    ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество,
    |    ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость,
    |    ПартииТоваровНаСкладах.СтатусПартии,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК ЧислоСерияНоменклатуры,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО
    |            ТОГДА 0
    |        ИНАЧЕ ВЫБОР
    |                КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования
    |                    ТОГДА 0
    |                ИНАЧЕ 1
    |            КОНЕЦ
    |    КОНЕЦ КАК ЧислоДокументОприходования,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО
    |            ТОГДА 0
    |        ИНАЧЕ ВЫБОР
    |                КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                    ТОГДА 1
    |                ИНАЧЕ 0
    |            КОНЕЦ
    |    КОНЕЦ КАК ЧислоЗаказ,
    |    ВЫБОР
    |        КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию
    |            ТОГДА 1
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК ЧислоСтатусПартии
    |ИЗ
    |    РегистрСведений.СписанныеТовары КАК СписанныеТовары
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
    |        &Дат, ) КАК ПартииТоваровНаСкладах
    |        ПО СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
    |            И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры
    |            И (ВЫБОР
    |                КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество
    |                    ТОГДА ИСТИНА
    |                ИНАЧЕ ВЫБОР
    |                        КОГДА СписанныеТовары.Качество = &ПустоеКачество
    |                            ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый
    |                        ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество
    |                    КОНЕЦ
    |            КОНЕЦ)
    |            " + ?(ВестиПартионныйУчетПоСкладам, "И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад ИЛИ      
    |    ПартииТоваровНаСкладах.Склад = &ПустойСклад)", "") + "
    |            И (ВЫБОР
    |                КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус
    |                    ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру
    |                            
ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4
    |                ИНАЧЕ ИСТИНА
    |            КОНЕЦ)
    |    
    |        И (ВЫБОР
    |            КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА
    |                ТОГДА ВЫБОР
    |                        КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
    |                            ТОГДА ВЫБОР
    |                                    КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО)
    |                                        ТОГДА ЛОЖЬ
    |                                    ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                                КОНЕЦ
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |            ИНАЧЕ ВЫБОР
    |                    КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
    |                        ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |        КОНЕЦ)
    |        И (СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
    |            ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры)
    |ГДЕ
    |    СписанныеТовары.Регистратор = &ОсновнойДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |    ЧислоСерияНоменклатуры,
    |    ЧислоДокументОприходования,
    |    ЧислоЗаказ,
    |    ЧислоСтатусПартии" + ?(СтратегияСтатусПартии = Перечисления.СтретегииСписанияПартийТоваровПоСтатусам.СначалаПринятыеПотомСобств
енные, " Убыв", "") + ",
    |    ДокументОприходованияДата" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
    |    ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + "
    |ИТОГИ ПО
    |    НомерСтрокиДокумента";

PromUA Подменю пользователя
сообщение 30.11.10, 9:24
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Уже год прошел, а в типовых конфах этот запрос еще не изменили sad.gif

Текст еще как-то оптимизировался?

vbi Подменю пользователя
сообщение 18.07.12, 15:39
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 373
Из: Украина, Луцк
Спасибо сказали: 72 раз
Рейтинг: 0

Уже три прошло...
Спасибо, пригодился! Кстате, теперь нужно еще НДС и МоментВремени добавить в результат запроса.


Signature
Впроваджую, супроводжую

yuritch Подменю пользователя
сообщение 19.07.12, 11:29
Сообщение #7

Общительный
Иконка группы
Группа: Местный
Сообщений: 46
Спасибо сказали: 21 раз
Рейтинг: 0

В УПП для Украины, по крайней мере в 1.3.17 (текущий релиз), этот запрос сделан через временные таблицы. То ли в части типовых ошибку все же исправили, то ли в УПП ее и не было.

Выглядит это так:
    Запрос.Текст = "
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    РегистрСведений.СписанныеТовары.Номенклатура КАК Номенклатура
    |ПОМЕСТИТЬ
    |    СписанныеТоварыНоменклатура
    |ИЗ
    |    РегистрСведений.СписанныеТовары
    |ГДЕ
    |    РегистрСведений.СписанныеТовары.Регистратор = &Ссылка
    |
    |;
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    РегистрСведений.СписанныеТовары.Склад КАК Склад
    |ПОМЕСТИТЬ
    |    СписанныеТоварыСклады
    |ИЗ
    |    РегистрСведений.СписанныеТовары
    |ГДЕ
    |    РегистрСведений.СписанныеТовары.Регистратор = &Ссылка
    |
    |;
    |
    |ВЫБРАТЬ
    |    СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
    |    ПартииТоваровНаСкладах.Номенклатура,
    |    ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,
    |    "+ПараметрыЗапроса_ДатаОприходования.ДокОприходованияДата_Выбор+"
    |    ПартииТоваровНаСкладах.Склад,
    |    ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
    |    ПартииТоваровНаСкладах.СерияНоменклатуры,
    |    ПартииТоваровНаСкладах.Качество,
    |    ПартииТоваровНаСкладах.Заказ,
    |    ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество,
    |    ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость,
    |    ПартииТоваровНаСкладах.СтатусПартии,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК ЧислоСерияНоменклатуры,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО
    |            ТОГДА 0
    |        ИНАЧЕ ВЫБОР
    |                КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования
    |                    ТОГДА 0
    |                ИНАЧЕ 1
    |            КОНЕЦ
    |    КОНЕЦ КАК ЧислоДокументОприходования,
    |    ВЫБОР
    |        КОГДА СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО
    |            ТОГДА 0
    |        ИНАЧЕ ВЫБОР
    |                КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                    ТОГДА 1
    |                ИНАЧЕ 0
    |            КОНЕЦ
    |    КОНЕЦ КАК ЧислоЗаказ,
    |    ВЫБОР
    |        КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию
    |            ТОГДА 1
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК ЧислоСтатусПартии
    |ИЗ
    |    РегистрСведений.СписанныеТовары КАК СписанныеТовары
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
    |        &Дат, Организация = &Организация И
    |        Номенклатура В
    |            (ВЫБРАТЬ
    |                СписанныеТоварыНоменклатура.Номенклатура
    |            ИЗ
    |                СписанныеТоварыНоменклатура)" + ?(ВестиПартионныйУчетПоСкладам, "
    |        И (Склад В
    |            (ВЫБРАТЬ
    |                СписанныеТоварыСклады.Склад
    |            ИЗ
    |                СписанныеТоварыСклады) ИЛИ Склад = &ПустойСклад)", "") + ") КАК ПартииТоваровНаСкладах
    |        ПО СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
    |            И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры
    |            И (ВЫБОР
    |                КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество
    |                    ТОГДА ИСТИНА
    |                ИНАЧЕ ВЫБОР
    |                        КОГДА СписанныеТовары.Качество = &ПустоеКачество
    |                            ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый
    |                        ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество
    |                    КОНЕЦ
    |            КОНЕЦ)
    |            " + ?(ВестиПартионныйУчетПоСкладам, "И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад)", "") + "
    |            И (ВЫБОР
    |                КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус
    |                        ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус
    |                    ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3
    |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4
    |                ИНАЧЕ ИСТИНА
    |            КОНЕЦ)
    |    
    |        И (ВЫБОР
    |            КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА
    |                ТОГДА ВЫБОР
    |                        КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
    |                            ТОГДА ВЫБОР
    |                                    КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО)
    |                                        ТОГДА ЛОЖЬ
    |                                    ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                                КОНЕЦ
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |            ИНАЧЕ ВЫБОР
    |                    КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
    |                        ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |        КОНЕЦ)
    |ГДЕ
    |    СписанныеТовары.Регистратор = &ОсновнойДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |    ЧислоСерияНоменклатуры,
    |    ЧислоДокументОприходования,
    |    ЧислоЗаказ,
    |    ЧислоСтатусПартии" + ?(СтратегияСтатусПартии = Перечисления.СтретегииСписанияПартийТоваровПоСтатусам.СначалаПринятыеПотомСобств
енные, " Убыв", "") + ",
    |    "+ПараметрыЗапроса_ДатаОприходования.ДокОприходованияДата_Сортировка+"
    |    ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
    |    ПартииТоваровНаСкладах.Склад
    |ИТОГИ ПО
    |    НомерСтрокиДокумента";

_OVEN_ Подменю пользователя
сообщение 13.08.14, 11:51
Сообщение #8

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

[необходимо зарегистрироваться для просмотра ссылки]

Отборы в виртуальной таблице с помощью конструкции ГДЕ

Накладывать фильтры на реквизиты виртуальной таблицы необходимо только через параметры ВТ. Не в коем случае для отбора в виртуальной таблице нельзя использовать конструкцию ГДЕ, это грубейшая ошибка с точки зрения оптимизации. В случае с отбором с помощью ГДЕ по факту система получит ВСЕ записи и только потом отберет нужные записи.

ПРАВИЛЬНО:

ВЫБРАТЬ
ВзаиморасчетыСДепонентамиОрганизацийОстатки.СуммаОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыСДепонентамиОрганизаций.Остатки(
,
Организация = &Организация
И Физлицо = &Физлицо) КАК ВзаиморасчетыСДепонентамиОрганизацийОстатки


НЕПРАВИЛЬНО:

ВЫБРАТЬ
ВзаиморасчетыСДепонентамиОрганизацийОстатки.СуммаОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыСДепонентамиОрганизаций.Остатки(, ) КАК ВзаиморасчетыСДепонентамиОрганизацийОстатки
ГДЕ
ВзаиморасчетыСДепонентамиОрганизацийОстатки.Организация = &Организация
И ВзаиморасчетыСДепонентамиОрганизацийОстатки.Физлицо = &Физлицо



 ! 

Правила, пункт 12
 


Сообщение отредактировал Vofka - 13.08.14, 12:04

sava1 Подменю пользователя
сообщение 13.08.14, 12:57
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

А где там критикуемая конструкция?

topitop Подменю пользователя
сообщение 08.09.17, 13:22
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 29
Из: Днепр
Спасибо сказали: 5 раз
Рейтинг: 0

Проблема того же разряда, тоже в УТП Украина (1.2.42.2) .
Столкнулся с проблемой медленного проведения документа списания товаров, в бух учете почему то ведется партионный учет, зачем и почему уже другая история .... (сам не знаю, но ОЧЕНЬ НАДО БУХАМ!!! )))))) )

Суть проблемы в том что на серверном варианте УправлениеЗапасамиПартионныйУчет.ТорговаяНаценкаАТТ(ДокументСсылка, Склады, Номенклатура, НалоговоеНазначение)
отрабатывает критично долго.

В стандарте используется запрос:
Код
Запрос.Текст = 
    "ВЫБРАТЬ
    |    ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение КАК НалоговоеНазначение,
    |    ХозрасчетныйОстаткиИОборотыТН.Субконто1 КАК Номенклатура,
    |    ХозрасчетныйОстаткиИОборотыТН.Субконто2 КАК Склад,
    |"+?(РазделятьПоПартиям, "
    |    ХозрасчетныйОстаткиИОборотыТН.Субконто3 КАК Партия,", "
    |    &ПустаяПартия КАК Партия,")+ "
    |"+?(ВестиУчетПоДопРазрезамРегл, "
    |    ХозрасчетныйОстаткиИОборотыТН.Субконто"+НомерСубконтоНоменклатурнойПозиции+" КАК НоменклатурнаяПозиция,", "
    |    &ПустаяНоменклатурнаяПозиция КАК НоменклатурнаяПозиция,") + "
    |    СУММА(
    |    ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт КОНЕЦ +
    |    ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт КОНЕЦ
    |    ) КАК ТН,
    |    СУММА(
    |    ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыПС.СуммаНачальныйОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыПС.СуммаНачальныйОстатокДт КОНЕЦ +
    |    ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыПС.СуммаОборотДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыПС.СуммаОборотДт КОНЕЦ
    |) КАК ПС,
    |    СУММА(
    |    ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт КОНЕЦ +
    |    ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт КОНЕЦ
    |    ) КАК ТН_НУ,
    |    СУММА(
    |    ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыПС.СуммаНУНачальныйОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыПС.СуммаНУНачальныйОстатокДт КОНЕЦ +
    |    ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыПС.СуммаНУОборотДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыПС.СуммаНУОборотДт КОНЕЦ
    |    ) КАК ПС_НУ
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач,&ДатаКон, , ,Счет = &СчетТН, &ВидыСубконто, НалоговоеНазначение В (&НалоговоеНазначение) И Организация = &Организация И Субконто1 В (&Номенклатура) И Субконто2 В (&Склады)) КАК ХозрасчетныйОстаткиИОборотыТН
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач,&ДатаКон, , ,Счет = &СчетПС, &ВидыСубконто, НалоговоеНазначение В (&НалоговоеНазначение) И Организация = &Организация И Субконто1 В (&Номенклатура) И Субконто2 В (&Склады)) КАК ХозрасчетныйОстаткиИОборотыПС
    |        ПО ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение = ХозрасчетныйОстаткиИОборотыПС.НалоговоеНазначение
    |            И ХозрасчетныйОстаткиИОборотыТН.Субконто1 = ХозрасчетныйОстаткиИОборотыПС.Субконто1
    |            И ХозрасчетныйОстаткиИОборотыТН.Субконто2 = ХозрасчетныйОстаткиИОборотыПС.Субконто2"+?(РазделятьПоПартиям,"
    |            И ХозрасчетныйОстаткиИОборотыТН.Субконто3 = ХозрасчетныйОстаткиИОборотыПС.Субконто3","")+?(ВестиУчетПоДопРазрезамРегл,"
    |            И ХозрасчетныйОстаткиИОборотыТН.Субконто"+НомерСубконтоНоменклатурнойПозиции+" = ХозрасчетныйОстаткиИОборотыПС.Субконто"+НомерСубконтоНоменклатурнойПозиции,"")+"
    |
    |СГРУППИРОВАТЬ ПО
    |    ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение,
    |    ХозрасчетныйОстаткиИОборотыТН.Субконто1,
    |    ХозрасчетныйОстаткиИОборотыТН.Субконто2"+?(РазделятьПоПартиям, ",
    |    ХозрасчетныйОстаткиИОборотыТН.Субконто3", "")+?(ВестиУчетПоДопРазрезамРегл, ",
    |    ХозрасчетныйОстаткиИОборотыТН.Субконто"+НомерСубконтоНоменклатурнойПозиции, "")+"
    |";


Мною оптимизирован данные запрос в вид:

Код
Запрос.Текст =  "ВЫБРАТЬ
     |    ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение КАК НалоговоеНазначение,
     |    ХозрасчетныйОстаткиИОборотыТН.Субконто1 КАК Номенклатура,
     |    ХозрасчетныйОстаткиИОборотыТН.Субконто2 КАК Склад,
     |    ХозрасчетныйОстаткиИОборотыТН.Субконто3 КАК Партия,
     |    &ПустаяНоменклатурнаяПозиция КАК НоменклатурнаяПозиция,
     |    СУММА(ВЫБОР
     |            КОГДА ХозрасчетныйОстаткиИОборотыТН.Счет = &СчетТН
     |                ТОГДА ВЫБОР
     |                        КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт ЕСТЬ NULL
     |                            ТОГДА 0
     |                        ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт
     |                    КОНЕЦ + ВЫБОР
     |                        КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт ЕСТЬ NULL
     |                            ТОГДА 0
     |                        ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт
     |                    КОНЕЦ
     |            ИНАЧЕ 0
     |        КОНЕЦ) КАК ТН,
     |    СУММА(ВЫБОР
     |            КОГДА ХозрасчетныйОстаткиИОборотыТН.Счет = &СчетТН
     |                ТОГДА ВЫБОР
     |                        КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт ЕСТЬ NULL
     |                            ТОГДА 0
     |                        ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт
     |                    КОНЕЦ + ВЫБОР
     |                        КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт ЕСТЬ NULL
     |                            ТОГДА 0
     |                        ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт
     |                    КОНЕЦ
     |            ИНАЧЕ 0
     |        КОНЕЦ) КАК ТН_НУ,
     |    СУММА(ВЫБОР
     |            КОГДА ХозрасчетныйОстаткиИОборотыТН.Счет = &СчетПС
     |                ТОГДА ВЫБОР
     |                        КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокДт ЕСТЬ NULL
     |                            ТОГДА 0
     |                        ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокДт
     |                    КОНЕЦ + ВЫБОР
     |                        КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаОборотДт ЕСТЬ NULL
     |                            ТОГДА 0
     |                        ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаОборотДт
     |                    КОНЕЦ
     |            ИНАЧЕ 0
     |        КОНЕЦ) КАК ПС,
     |    СУММА(ВЫБОР
     |            КОГДА ХозрасчетныйОстаткиИОборотыТН.Счет = &СчетПС
     |                ТОГДА ВЫБОР
     |                        КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокДт ЕСТЬ NULL
     |                            ТОГДА 0
     |                        ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокДт
     |                    КОНЕЦ + ВЫБОР
     |                        КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотДт ЕСТЬ NULL
     |                            ТОГДА 0
     |                        ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотДт
     |                    КОНЕЦ
     |            ИНАЧЕ 0
     |        КОНЕЦ) КАК ПС_НУ
     |ИЗ
     |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
     |            &ДатаНач,
     |            &ДатаКон,
     |            ,
     |            ,
     |            Счет = &СчетТН
     |                ИЛИ Счет = &СчетПС,
     |            &ВидыСубконто,
     |            НалоговоеНазначение В (&НалоговоеНазначение)
     |                И Организация = &Организация
     |                И Субконто1 В (&Номенклатура)
     |                И Субконто2 В (&Склады)) КАК ХозрасчетныйОстаткиИОборотыТН
     |
     |СГРУППИРОВАТЬ ПО
     |    ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение,
     |    ХозрасчетныйОстаткиИОборотыТН.Субконто1,
     |    ХозрасчетныйОстаткиИОборотыТН.Субконто2,
     |    ХозрасчетныйОстаткиИОборотыТН.Субконто3";


Запрос не приводил в аналогичный вид стандарту потому как лень, в моем конкретном случае данного решения вполне хватает...
Скорость отработки запроса уменьшилась на 30-40 %, при замерах производительности с учетом правок запроса управленческого изложенного выше
удалось добиться ускорения проведения документа в 4 раза, данное значение получено в сравнении производительности до и после, почему именно в 4 раза вышло сложно сказать,
замеры проводились на рабочей базе и в зависимости от текущих нагрузок могут отличаться ...

Так же было замечено что если в параметры запроса массивы передать без дублей это также влияет в положительную cторону, в обработке проведения документа СписаниеТоваров
в процедуре ДвиженияПоРегистрамРегл() было переделано так:

Код
Если НЕ Склад.ВидСклада = Перечисления.ВидыСкладов.Оптовый Тогда
        
        Если АТТ Тогда
            
            //Спишем торговую наценку
            
            //Свернем дубли для более быстрого выполнения запроса
            ТаблицаПоТоварамКопия = ТаблицаПоТоварам.Скопировать();
            ТаблицаПоТоварамКопия.Свернуть("Номенклатура,НалоговоеНазначение");
            МассивНоменклатуры =  ТаблицаПоТоварамКопия.ВыгрузитьКолонку("Номенклатура");
            ТаблицаПоТоварамКопия.Свернуть("НалоговоеНазначение");
            МассивНалоговыхНазначений =  ТаблицаПоТоварамКопия.ВыгрузитьКолонку("НалоговоеНазначение");
            
            
            ТаблицаНаценок = УправлениеЗапасамиПартионныйУчет.ТорговаяНаценкаАТТ(Ссылка, Склад, МассивНоменклатуры, МассивНалоговыхНазначений);


Сообщение отредактировал Vofka - 08.09.17, 13:29

Спасибо сказали: alider, Vofka,

gorak Подменю пользователя
сообщение 26.03.19, 15:34
Сообщение #11

Говорящий
***
Группа: Пользователи
Сообщений: 69
Из: Харьков
Спасибо сказали: 20 раз
Рейтинг: 0

Выявил ЦУПом что этот запрос занимет половину времени проведения документа размер базы больше 100 Гб.
1) Обратил внимание что измерения регистра партии товаров на складах по которым иде соединение не проиндексированы, Поставил индексирование
2) Порядок следования соединений не соответствует порядку следования измерений в регистре. Изменил порядок следований соединений в запросе.
Результат этот запрос пропал из ТОП запросов ЦУПа.
ОФ ТоП Добивайтесь что если вместе с серверм 1ц стоит антивирус "ОДМИН" его правильно настроил. Добавил все что относится к "КЖФ" в исключения.

Спасибо сказали: andr_andrey,

andr_andrey Подменю пользователя
сообщение 27.03.19, 16:54
Сообщение #12

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Цитата(gorak @ 26.03.19, 15:34) *
если вместе с серверм 1ц стоит антивирус

Такого быть не должно.


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 17:25
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!