Оптимизация штатных запросов 7.7

Публикация № 64620

Разработка - Практика программирования

1С 7.7 выполняет запросы просто и бездумно - все что сказали, все и сделает. Никаких попыток оптимизации. Если в запросе есть переменная, например
"СвойствоПоставщика=Регистр.ПартииНаличие.Партия.Поставщик.ОсновноеСвойство;"
произойдет обращение к справочникам контрагентов и значений свойств, даже если переменная СвойствоПоставщика не используется ни в условиях, ни в группировках. Что оборачивается потерей быстродействия.

1С 7.7 выполняет запросы просто и бездумно - все что сказали, все и сделает. Никаких попыток оптимизации. Если в запросе есть переменная, например
"СвойствоПоставщика=Регистр.ПартииНаличие.Партия.Поставщик.ОсновноеСвойство;"
произойдет обращение к справочникам контрагентов и значений свойств, даже если переменная СвойствоПоставщика не используется ни в условиях, ни в группировках. Что оборачивается потерей быстродействия.

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

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

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

Простенькая реализация "оптимизации" текста запроса встречается и в типовых конфигурациях. Например, в ТиС это выглядит примерно так (отчет "ОтчетПоПроектам"):

    ЕстьЗначение = 0;
    Если (ВыводитьЗаявки = 1) или (ВыводитьЗаказы = 1) Тогда
        ТекстЗапроса = ТекстЗапроса + "
            |Валюта = ";
    КонецЕсли;
    Если ВыводитьЗаявки = 1 Тогда
        ТекстЗапроса = ТекстЗапроса + "Регистр.Заявки.ДоговорПокупателя.ВалютаВзаиморасчетов";
        ЕстьЗначение = 1;
    КонецЕсли;

Если валюта нам в запросе не нужна, переменная не добавляется и не будет лишнего обращения к реквизитам договора.

Метод действенный, но, к сожалению, не универсальный и неудобный, требующий больших переделок всех отчетов. Более удобно анализировать текст запроса перед выполнением запроса, когда уже есть все условия и группировки, и выкидывать из него ненужные строки.

Примерно так:

В каждый отчет вставляем перед выполнением запроса следующую строчку:

глПередВыполнениемЗапроса(Контекст, Запрос, ТекстЗапроса,"");

А в глобальный модуль добавляется функция:

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

В первое время желательно еще добавить константу "ЗапретитьОптимизациюТекстаЗапроса" и раскомментарить условие с ней. Это позволит, когда вылезет ошибка в формировании какого-нибудь отчета, временно запретить оптимизацию и неспешно разбираться, какую же переменную запроса нужно включить в исключения.

Результат:

Выполнение запросов ускоряется, ускорение зависит от реально используемых в запросе переменных и группировок, наибольшее ускорение достигается, если отчет формируется без подробностей, сводно.

По факту, в моей базе, формирование ведомости по партиям с групировками Фирма/Поставщик/Склад ускорилось в три раза во сравнению с неоптимизированным запросом. При использовании группировок типа Партия или Документ эффект от оптимизации почти пропадает. В общем, все зависит от переменных, которых вы надобавляли в свой запрос. Если у вас много группировок вида "СвойствоПоставщика=Регистр.ПартииНаличие.Партия.Поставщик.ОсновноеСвойство", эффект от оптимизации может быть огромным.

P.S.

В некоторых отчетах используются дополнительные переменные запроса, не участвующие ни в условиях, ни в группировках. Такие переменные необходимо включить в исключения, что бы оптимизация не удалила их из текста запроса.

Например, в штатном отчете ТиС "Отчет по продажам ТМЦ" вызов процедуры оптимизации текста запроса должен выглядеть так:

глПередВыполнениемЗапроса(Контекст, Запрос, ТекстЗапроса,"ДатаДокумента");

P.P.S.

Дополнительные функции. глРазделить() обычно есть в типовых, глРазделитьВСписок() обычно нет или по другому называется.

//******************************************************************************
//    глРазделить(Стр,Разделитель)
//
//    Параметры:
//        Стр            - строка, которую необходимо разложить на подстроки
//        Разделитель - строка-разделитель, по умолчанию - запятая
//
//    Возвращаемое значение:
//        Многострочная строка, составленная из подстрок
//
//    Описание:
//        Разбивает строку на многострочную строку по разделителю
//
Функция глРазделить(Знач Стр,Разделитель=",") Экспорт
    Если Разделитель=" " Тогда
        Пока Найти(Стр,"  ")>Цикл
            Стр = СтрЗаменить(Стр,"  "," ")
        КонецЦикла
    КонецЕсли;
    Возврат СтрЗаменить(Стр,Разделитель,РазделительСтрок)
КонецФункции // глРазделить()

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

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Арчибальд 2712 26.01.10 15:08 Сейчас в теме
Слегка перефразируя глубокомысленное замечание из топика, получим:
Если в тело длинного цикла напихать всякой ненужной хрени, то быстродействие снизится.
От же однако... :o Кто бы мог подумать... :o
2. Ёпрст 1045 26.01.10 15:18 Сейчас в теме
Ну и для универсальности.. выкинул бы из текста
глРазделитьВСписок, Константа.ЗапретитьОптимизациюТекстаЗапроса

6. vcv 87 26.01.10 15:50 Сейчас в теме
(2) Функция глРазделитьВСписок вполне претендует на универсальную нужность, поэтому просто добавил в статью. Примечание, зачем нужна константа, тоже.
(4), (5) Привычка везде передавать контекст. Вдруг понадобится. По принципу, что любая функция более-менее уважающая себя функция должна знать, в каком контексте выполняется. Внутреннее соглашение о передаче параметров между сам-с-собой :-)
7. Ёпрст 1045 26.01.10 16:03 Сейчас в теме
(6) проще не вводить константу, а пользовать turbomd...
8. vcv 87 26.01.10 20:07 Сейчас в теме
(7) Тот, кто пользуется turbomd, догадается сам, что ему лучше. А для того, кто не пользуется, советовать незнакомую внешнюю компоненту вместо одной константы... Гм... :)
А еще бывает РБД. Я вот побаиваюсь экспериментировать с turbomd в распределенке.
9. Ёпрст 1045 27.01.10 09:00 Сейчас в теме
(8) А чего там такого в распределенке ?
с помощью turbomd ты ж не делаешь реструктуризацию базы, всего лишь "точишь" мд и исправляешь ошибки.
А переслать пару текстовых файликов в перефирийки не составляет труда..или обновленный мд
3. vkr 101 26.01.10 15:18 Сейчас в теме
(0) Ващще-то, "Скальпель Оккама"... ;)
Но, все равно - автору спасибо за обозначение и попытку решения проблемы!
4. Ёпрст 1045 26.01.10 15:21 Сейчас в теме
+2 Ну и непонятно, накой туда контекст передавать, ежели он не используется там вообще.
5. Ёпрст 1045 26.01.10 15:36 Сейчас в теме
+4 И сам Запрос - тоже...
А так... +
10. Abadonna 3879 27.01.10 15:37 Сейчас в теме
А мне понравилось:
Метод девственный

Метод - целка? :D
11. vcv 87 27.01.10 15:42 Сейчас в теме
(10) Глазастый :D
По крайней мере я девственности этот метод не лишал, предпочитаю секс с более симпатичными алгоритмами, чем типовые от 1С :)
12. Abadonna 3879 27.01.10 16:01 Сейчас в теме
(11) Тогда уж не с алгоритмами, а с интерфейсами ;))))
13. Shaman100M 1196 27.01.10 18:27 Сейчас в теме
заочно, плюс за идею. Все конструкции языка обрабатывает? и когда(А=Б) тоже?

(12) интерфейсы это лица заграничной национальности? :) тогда все логично.
14. vcv 87 27.01.10 19:17 Сейчас в теме
(13) Никаких конструкций языка. Все очень просто и тупо. Выделяются строки запроса с переменными - строки, в которых есть символ "равно" и до символа "равно" нет круглой скобки. Все остальные строки тупо проверятся на наличие имен переменных. Это не обеспечивает 100% выкидывания переменной из запроса (переменная, названная "а" никогда не выкинется), но для подавляющего большинства запросов, в которых не встречается коротких имен переменных, этого хватает.
В конце концов, у меня статья с идеей и примером кода, а не продакшин-решение. :)
15. Abadonna 3879 27.01.10 19:22 Сейчас в теме
(0) Подсказываю тебе давно мной применяемый метод разбиения по любому разделителю:
Стр=СтрЗаменить(Стр,КакойХошьРазделитель,РазделительСтрок)
как миленькие многострочными становятся ;)
16. vcv 87 27.01.10 19:53 Сейчас в теме
(15) А кого, собственно говоря ты хочешь делать многострочным? Как-то не уловил глубины мысли в твоем комментарии.
17. Abadonna 3879 27.01.10 20:01 Сейчас в теме
(16) Ха, я на эту не глянул:
 Возврат СтрЗаменить(Стр,Разделитель,РазделительСтрок)

Раньше в типовых ТАК по уродски разделяли, что я и подумал, что и там тоже по уродски...
18. baa 28.01.10 13:39 Сейчас в теме
Автору заслуженный плюс. Очень нужный алгоритм, особенно в универсальных отчетах, где в нагрузку идет еще куча переменных. Давно над этим задумывался. Обычно сам текст запроса формирую методом исключения, но это действительно красиво получается. СПАСИБО
19. zalst 224 29.01.10 15:41 Сейчас в теме
хоть и неактуально для меня - понравилось, поддерживаю константу, вместо турбомд и т.п.

p.s. передача контекста тоже здраво(как по мне), во многих случаях позволяет оптимизировать/доработать код, не меняя вызова процедуры. +1
20. ZOMI 433 01.02.10 04:00 Сейчас в теме
Использовать не буду , но за идею, изложение + .
По опыту - ну десяток типовых отчетов в ТиС активно используют и ручками их поправить приятнее и надежнее ,,,
21. Иваныч 23 08.11.13 16:43 Сейчас в теме
(20) Я с вами полностью согласен
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    77904    Serginio    110    

Маркировка лекарств - как передать код маркировки при продаже через ККТ Штрих-М

Практика программирования ККМ v7.7 Здравоохранение, медицина, стоматология Фармацевтика, аптеки Россия Бесплатно (free)

Пример программного кода для вывода чеков на ККМ Штрих-М с передачей информации о маркированных товарах (лекарства).

10.02.2020    9801    vovaapril    27    

Как в торговле 7.7 печатать код ТНВЭД в счет-фактуре

Практика программирования Внешнеэкономическая деятельность (ВЭД) Внешнеэкономическая деятельность (ВЭД) v77::ОУ 1С7:ТиС Россия БУ НДС Бесплатно (free)

В данной статье хотел поделиться опытом, как в Торговле 7.7 ( релиз 994) сделать возможность выводить код ТНВЭД в печатную форму счета-фактуры. Сразу скажу, что нужно это только тем, кто осуществляет экспорт в страны таможенного союза. Остальные могут не волноваться.

15.11.2017    10744    AndKovalchuk    0    

Проверка часового пояса

Практика программирования v7.7 Бесплатно (free)

При использовании терминалок для удаленных баз, иногда при входе в базу данных необходимо исключить возможность входа пользователей с компьютеров с другим часовым поясом. Например, работают в Новосибирской базе с временем UTC +6 и пытаются зайти в базу с UTC +3.

16.05.2016    11157    kudenzov    3    

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

Практика программирования WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    56507    Serginio    33    

[ПОЛЕЗНЯШКА, 7.7] Как посчитать итоги по документам черным запросом с изподвывертом?

Практика программирования v7.7 1cv7.md Бесплатно (free)

Мелкая полезняшка, считает запросом итоговую сумму документов и количество документов.

12.03.2016    19388    CheBurator    18    

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

Разработка внешних компонент Практика программирования WEB v7.7 v8 Бесплатно (free)

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    32229    Serginio    22    

Пример HTTP запроса к УТМ ЕГАИС на платформе 1С 7.7

Внешние источники данных Практика программирования Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v7.7 1cv7.md Россия Бесплатно (free)

Запрос реализован на объекте ServerXMLHTTP из встроенной в Windows библиотеки MSXML, результатом запроса является XML объект DOMDocument из той же библиотеки MSXML со встроенным интерфейсом его обработки

16.12.2015    25780    Palmer1976    3    

1С:Предприятие 7.7. Оптимизация. Промо

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

Разгоняем 1С:Предприятие 7.7. Выжимаем последние соки.

31.01.2009    47319    alexk-is    110    

Экспорт нескольких MXL таблиц в один XLS файл, на отдельные листы. Простой алгоритм

Загрузка и выгрузка в Excel Практика программирования v7.7 v8 Бесплатно (free)

Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).

23.11.2015    17548    etmarket    14    

Процедура расшифровки ячейки таблицы в отчетах 1С 7.7

Практика программирования Универсальные функции v7.7 1cv7.md Бесплатно (free)

Хочу поделиться с вами универсальной процедурой для расшифровки ячеек печатной формы отчетов в 1С 7.7.

24.09.2015    17946    Anzhey    14    

Универсальный способ сравнения таблиц

Практика программирования v7.7 v8 Бесплатно (free)

На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.

05.07.2015    19256    json    1    

Как уменьшить количество заблокированных объектов Промо

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

История о том как я решил пересобрать форму справочника клиентов и чем это все закончилось...

12.01.2012    15641    ShEvOvIcH    18    

Числа прописью в родительном падеже в 7.7? Легко!

Практика программирования v7.7 1cv7.md Бесплатно (free)

Вывод числительных прописью в родительном падеже штатными средствами в три строчки кода.

20.06.2015    12903    gimalaj    3    

Хитрости сохранения табличного документа в Excel для дальнейшей работы с ним

Загрузка и выгрузка в Excel Практика программирования v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Все пользователи 1С всех версий (начиная с 7-й) сталкиваются с проблемой нормальной работы с данными, сохраненными в Excel файл. Есть некоторые хитрости, которые позволяют облегчить работу с сохраненными данными из 1С в формат Excel.

16.01.2015    92852    shmellevich    38    

Технология обновления нетиповых конфигураций 1С:Предприятия 7.7 Промо

Практика программирования Администрирование данных 1С v7.7 1cv7.md Россия Бесплатно (free)

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

12.12.2008    63232    alexk-is    25    

ЗаполнитьЗначенияСвойств - заставляем работать в 7.7

Практика программирования v7.7 1cv7.md Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    22256    tomvlad    5    

Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями

Практика программирования Внешние источники данных v7.7 Бесплатно (free)

Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями

04.04.2013    19621    ivisor_fil    11    

Конвертация данных 2.1 (2.1.3.1) 1С 7.7 - 1С 8.Х передача параметра ПКО

Практика программирования Перенос данных из 1С7.7 в 1C8.X v7.7 v8 КД Бесплатно (free)

Передача параметров по умолчанию доступна только для баз 1С 8.х -1С 8.х. Показан пример, как передать параметры из 1С 7.7 - 1С 8.х

10.12.2012    25606    serg_gres    6    

Скрытие помеченных на удаление в справочнике

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Корректно скрываем помеченных на удаление в справочнике, с иерархией и без. Вроде простая и нужная вещь, но почему-то нигде не встречалась

08.08.2012    14236    mikukrnet    7    

Динамическая фильтрация в справочнике при вводе наименования

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

Позволяет в открытой форме списка, выбора или подбора справочника производить динамическую фильтрацию по набранному наименованию.

02.07.2012    16550    maxpiter    62    

Продажа собственной фирме (интеркомпани) - заполнение отрицательными остатками

Практика программирования Учет ТМЦ Учет ТМЦ v77::ОУ 1С7:Комплекс 1С7:ТиС Россия Бесплатно (free)

В документе "Продажа собственной фирме" приходится добавлять номенклатуру вручную через подбор. А ведь можно сэкономить время и заполнить спецификацию документа на основании отрицательных остатков фирмы. Все просто...

06.05.2012    13453    2sw    4    

Ввод остатков по 76.ВА в 1С ПУБ

Практика программирования v77::ОУ v77::БУ 1С7:ПУБ Россия БУ Бесплатно (free)

Статья посвящена найденному мной недостатку в конфигурации 1С 7.7 "Производство-услуги-бухгалтерия", связанному с вводом начальных остатков по 76.ВА.

29.04.2012    10089    Пользователь 1С    0    

Обновление базы 1с 7.7. с помощью движка 1с 8.х

Практика программирования Администрирование данных 1С v7.7 1cv7.md Россия Бесплатно (free)

Если Вас угораздило в стандартную типовую конфу внести правки, причем в самый большой модуль, а именно глобальный. Если к тому же Вы внесли изменение в какую-то стандартную функцию, в которой 1с сама регулярно чего-то меняет, то любое обновление начинает доставать. Используя возможности движка платформы 1с 8.х можно существенно сэкономить себе время и нервы.

28.04.2012    18742    Valerich    31    

Ошибка при формировании отчета Авансы по налогу на имущество. В 1С:Предприятие 7.7. Регламентированная отчетность за I квартал 2012 года Обновление 12q1009 от 18.04.2012 г.

Практика программирования v77::ОУ v77::БУ 1cv7.md Россия Бесплатно (free)

При формировании отчета NIMAVP1.ERT Авансы по налогу на имущество (версия 5.03) в разделе № 1-3 не сохраняет номера Страниц при выборе, что ведет к не сохранению и выводу печати двухмерного кода.

24.04.2012    9410    leo072    7    

Запуск внешней обработки по расписанию v7.7

Практика программирования Администрирование данных 1С v7.7 1cv7.md Россия Бесплатно (free)

Неоднократно возникали задачи организовать, например ежедневную выгрузку и отправку отчетов по эл.почте, и вот…

20.03.2012    44738    Yury1001    17    

Быстрый отбор в журнале на конкретную дату

Практика программирования v77::ОУ 1cv7.md Россия Бесплатно (free)

Лень - двигатель прогресса. Полезная фича для быстрого отбора документов в любом журнале на конкретную дату.

27.02.2012    11323    avers007    16    

ЗиК 321, в отчетах пропадает проводка по ПФР_страховая

Практика программирования v77::ОУ v77::Расчет 1С7:ЗиК Россия ФОМС, ПФ, ФСС Бесплатно (free)

При формировании отчета "Свод проводок" с галкой "Учет начисления налогов с ФОТ, включаемых в состав расходов" в отчет не выходит ПФР_страх

10.02.2012    6921    filh    19    

Ошибка в 1С:Бух77 ред.533 Начисление ФФОМС при ЕНВД

Практика программирования Зарплата Зарплата v77::БУ 1С7:Бух Россия Бесплатно (free)

При начислении налогов с ФОТ (док.ЗакрытиеМесяца) не расчитываются налоги ФФОМС, если начисление зарплаты проводится как "облагаемые ЕНВД".

22.01.2012    10319    lelbraun    3    

Прямые запросы: ускорение получения цен для типовой ТиС 7.7

Практика программирования Разработка внешних компонент v77::ОУ 1С7:Комплекс 1С7:ТиС Россия Бесплатно (free)

Первая статья из цикла статей "Прямые запросы:...". Рассказывается о применении класса ПрямойЗапрос и компоненты 1С++ для ускорения функции глВернутьЦену() в типовой конфигурации Торговля и склад. Платформа 7.7.

15.11.2011    15709    leshik    21    

1С:Торговля и Склад - ошибка во всех релизах, При использовании нескольких фирм и префиксов номеров документов.

Практика программирования v77::ОУ 1С7:ТиС Россия Бесплатно (free)

Собственно сегодня обнаружил ошибку, которая присутствует во всех релизах конфигурации Торговля и Склад 7.7 вплоть до текущего 7.70.969, при использовании нескольких фирм и префиксов документов для некоторых из них.

04.11.2011    15716    twilight5023    8    

Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7)

Практика программирования openconf v77::БУ 1cv7.md Россия Бесплатно (free)

Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7). Данную функцию можно вставить в Глобальный модуль и пользоваться, например, при вводе или сохранении e-mail.

30.10.2011    11152    zaursoft    11    

ЗиК: Заполнение данных о заработке у предыдущих работодателей в больничном

Практика программирования Зарплата Зарплата v77::Расчет 1С7:ЗиК Россия БУ Бесплатно (free)

Доработка ЗиК 314. Заполнение данных в больничном за 2 предыдущих года у другого работодателя. Для работы необходимо добавить в конфигурацию новый справочник.

04.10.2011    11955    allexe    13    

Компенсация отпуска, оплата дней доноров и оплата льготных дней родителей в ЗиК

Практика программирования Зарплата Зарплата v77::Расчет 1cv7.md 1С7:ЗиК Россия Бесплатно (free)

"Компенсация отпуска"," Оплата дней доноров" и "Оплата льготных дней родителей" - эти виды расчетов должны облагаться страховыми взносами с 01.01.2011 года.

04.10.2011    9324    maxim305    18    

7.7.: Готовим md-файл для публикации. В картинках.

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

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

14.09.2011    17507    Арчибальд    21    

Расшифровка внутренних расчетов 1С:Зарплата

Практика программирования Зарплата Зарплата v77::Расчет 1С7:ЗиК Россия Бесплатно (free)

Трассировка (расшифровка) промежуточных расчетов документов в 1С:Зарплата

20.07.2011    10829    buhinfo    5    

Дата запрета редактирования

Практика программирования v77::БУ 1cv7.md Россия Бесплатно (free)

Очень часто необходимо постоянно закрывать период для редактирования документов. Вот как я вышла из этой ситуации.

15.07.2011    10776    natalika1601    14    

Кнопка обновления версии внешнего отчета

Практика программирования v77::ОУ v77::БУ v77::Расчет Россия Бесплатно (free)

После исправления внешнего отчета вместо рекомендации пользователю: "Закрой отчет и открой его заново", говорим: "Нажми на кнопку".

18.06.2011    13915    Shaman100M    8    

Методика расчета резервов отпусков (счет 96) в 1С Зарплата и Кадры 7.7 с 2011 года (вариант)

Практика программирования Зарплата Зарплата v77::Расчет 1С7:Бух 1С7:ЗиК Россия БУ Бесплатно (free)

В статье рассмотрен один из возможных вариантов расчета резервов отпусков (счет 96) в 1С Зарплата и Кадры 7.7 с 2011 года.

14.06.2011    22132    vkr    48