Строка поиска по справочникам "Номенклатура" и "Контрагенты"

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

Администрирование - Администрирование данных 1С - Поиск данных

38
Поиск элемента справочника набором фрагментов искомых слов в произвольном порядке.

Здравствуйте, друзья!

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

Если организовать поиск, набирая слова или отрывки слов в произвольном порядке, которые помнишь – вот это другое дело. Для этого мы построим запрос по каждому запрашиваемому фрагменту. Фрагменты искомого названия при подборе будем разделять пробелом.

Для дополнительного удобства сделаем транслитерацию латинского алфавита русским. Это позволит не переключаться между раскладкой клавиатуры и всё писать по-русски. Например, вместо буквы "g" будем смело писать "ж" или "г", кто как эту букву слышит. Когда в строке поиска будет более одной буквы, внизу откроется список, в который попадут первые 10 элементов справочника, названия которых (полное или короткое) полностью включают все набранные фрагменты. Если набор будет уникальным, то значение выберется автоматически.

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

Перем ТаблицаРезультата;

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

//Делаем выбор из выпадающего списка с клавиатуры (стрелки вверх, вниз и enter)
Процедура СтрокаПоискаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   
текИндексСпискаВыбора = Элемент.СписокВыбора.Индекс(Элемент.СписокВыбора.НайтиПоЗначению(ВыбранноеЗначение));
   
ЭлементыФормы.СтрокаПоиска.ЦветФонаПоля = Новый Цвет(240, 255, 240);
   
ОчиститьСписки();
   
ПолучитьИнформацию(ТаблицаРезультата[текИндексСпискаВыбора].Ссылка);
КонецПроцедуры

//Кнопка очистки ещё подчистит все списки
Процедура СтрокаПоискаОчистка(Элемент, СтандартнаяОбработка)
   
ЭлементыФормы.СтрокаПоиска.ЦветФонаПоля = Новый Цвет(255, 255, 255);
   
ОчиститьСписки();
КонецПроцедуры

//Делаем выбор из таблицы выбора (при помощи мыши)
Процедура ТаблицаВыбораПриАктивизацииСтроки(Элемент)
    Если НЕ
ЭлементыФормы.ТаблицаВыбора.Видимость Тогда Возврат КонецЕсли;
   
текИндексТаблицыВыбора = ТаблицаВыбора.Индекс(Элемент.ТекущаяСтрока);
    Если
текИндексТаблицыВыбора = 0 Тогда Возврат КонецЕсли;
   
ЭлементыФормы.СтрокаПоиска.Значение = ЭлементыФормы.СтрокаПоиска.СписокВыбора[текИндексТаблицыВыбора - 1];
   
ЭлементыФормы.СтрокаПоиска.ЦветФонаПоля = Новый Цвет(240, 255, 240);
   
ОчиститьСписки();
   
ПолучитьИнформацию(ТаблицаРезультата[текИндексТаблицыВыбора - 1].Ссылка);
КонецПроцедуры

//По результатам запроса при необходимости заполняем список выбора, таблицу выбора
Процедура СделатьВыбор(СписокФрагментов)
   
//Получаем таблицу с найденными элементами
   
ТаблицаРезультата = ЗапросПоиска(СписокФрагментов);
   
ОчиститьСписки();
   
//Имеем три варианта:
    //Элементы не найдены
   
Если ТаблицаРезультата.Количество() = 0 Тогда
       
ЭлементыФормы.СтрокаПоиска.ЦветФонаПоля = Новый Цвет(255, 216, 128);
   
//Найден один элемент, что и требовалось. Теперь уходим отсюда.
   
ИначеЕсли ТаблицаРезультата.Количество() = 1 Тогда
       
ЭлементыФормы.СтрокаПоиска.ЦветФонаПоля = Новый Цвет(240, 255, 240);
       
ЭлементыФормы.СтрокаПоиска.Значение = ТаблицаРезультата[0].Наименование;
       
ПолучитьИнформацию(ТаблицаРезультата[0].Ссылка);
   
//Найдено много элементов
   
Иначе
       
ЭлементыФормы.СтрокаПоиска.ЦветФонаПоля = Новый Цвет(255, 255, 255);
       
КоличествоНайденныхЭлементов = ТаблицаРезультата.Количество();
        Для
текСтрока = 1 По КоличествоНайденныхЭлементов Цикл
           
ТаблицаВыбора.Добавить();
        КонецЦикла;
       
ТаблицаВыбора.ЗагрузитьКолонку(ТаблицаРезультата.ВыгрузитьКолонку("Наименование"), "Наименование");
       
ТаблицаВыбора.Вставить(0);
       
ЭлементыФормы.СтрокаПоиска.СписокВыбора.ЗагрузитьЗначения(ТаблицаРезультата.ВыгрузитьКолонку("Наименование"));
       
ЭлементыФормы.ТаблицаВыбора.ТекущаяСтрока = ТаблицаВыбора[0];
       
ЭлементыФормы.ТаблицаВыбора.Высота = (КоличествоНайденныхЭлементов + 1) * 19 + 2 ;
       
ЭлементыФормы.СтрокаПоиска.КнопкаСпискаВыбора = Истина;
       
ЭлементыФормы.ТаблицаВыбора.Видимость = Истина;
    КонецЕсли;
КонецПроцедуры

//Сам запрос
Функция ЗапросПоиска(СписокФрагментов)
   
текЗапрос = Новый Запрос;
   
ТекстФрагментов = "";
    Для Каждого
текСтрока Из СписокФрагментов Цикл
       
текНомерСтроки = СписокФрагментов.Индекс(текСтрока);
       
текФрагмент = текСтрока.Значение;
       
//Для каждого искомого фрагмента создадим фильтр в запросе,
        //Ищем в наименовании, полном наименовании с транслитом и без
       
ТекстФрагментов = ТекстФрагментов + "
            |   "
+ ?(текНомерСтроки > 0, "И ", "") + "(Наименование ПОДОБНО ""%"" + &ФрагментКириллица" + текНомерСтроки + " + ""%""
            |   ИЛИ НаименованиеПолное ПОДОБНО ""%"" + &ФрагментКириллица"
+ текНомерСтроки + " + ""%""
            |   ИЛИ Наименование ПОДОБНО ""%"" + &Фрагмент1Транслит"
+ текНомерСтроки + " + ""%""
            |   ИЛИ НаименованиеПолное ПОДОБНО ""%"" + &Фрагмент1Транслит"
+ текНомерСтроки + " + ""%""
            |   ИЛИ Наименование ПОДОБНО ""%"" + &Фрагмент2Транслит"
+ текНомерСтроки + " + ""%""
            |   ИЛИ НаименованиеПолное ПОДОБНО ""%"" + &Фрагмент2Транслит"
+ текНомерСтроки + " + ""%"")";
       
//и установим параметры
       
текЗапрос.УстановитьПараметр("ФрагментКириллица" + текНомерСтроки, текФрагмент);
       
СписокТранслита = Транслит(текФрагмент);
       
текЗапрос.УстановитьПараметр("Фрагмент1Транслит" + текНомерСтроки, СписокТранслита[0].Значение);
       
текЗапрос.УстановитьПараметр("Фрагмент2Транслит" + текНомерСтроки, СписокТранслита[1].Значение);
    КонецЦикла;
   
текЗапрос.Текст = "
        |   ВЫБРАТЬ ПЕРВЫЕ 10
        |       Ссылка,
        |       Наименование
        |   ИЗ
        |       (ВЫБРАТЬ
        |           Ссылка,
        |           Наименование,
        |           ВЫРАЗИТЬ(НаименованиеПолное КАК СТРОКА(200)) КАК НаименованиеПолное
        |       ИЗ Справочник.Контрагенты ГДЕ НЕ Ссылка.ЭтоГруппа
        |       ОБЪЕДИНИТЬ
        |       ВЫБРАТЬ
        |           Ссылка,
        |           Наименование,
        |           ВЫРАЗИТЬ(НаименованиеПолное КАК СТРОКА(200)) КАК НаименованиеПолное
        |       ИЗ Справочник.Номенклатура ГДЕ НЕ Ссылка.ЭтоГруппа
        |       ) КАК Вложение
        |   ГДЕ
        |       "
+ ТекстФрагментов + "";
    Возврат
текЗапрос.Выполнить().Выгрузить();
КонецФункции

//Параллельно кириллице будем искать фрагменты на латинице,
//в двух вариантах из-за различия транслитирации некоторых букв
Функция Транслит(Фрагмент)
   
СписокТранслита = Новый СписокЗначений;
   
Кириллица = "абвгдежзийклмнопрстуфхц";
   
Латиница1 = "abvgdegzijklmnoprstufhc";
   
Латиница2 = "abwgdejzijqlmnoprstufhc";
   
КириллицаДиграф = "ч ш ";
   
ЛатиницаДиграф = "chsh";
   
Транслит1 = "";
   
Транслит2 = "";
    Для
позиция = 1 По СтрДлина(Фрагмент) Цикл
       
текБуква = Сред(Фрагмент, позиция, 1);
       
вШаблоне = Найти(Кириллица, текБуква);
        Если
вШаблоне > 0 Тогда
           
Транслит1 = Транслит1 + Сред(Латиница1, вШаблоне, 1);
           
Транслит2 = Транслит2 + Сред(Латиница2, вШаблоне, 1);
            Продолжить;
        КонецЕсли;
       
вШаблоне = Найти(КириллицаДиграф, текБуква);
        Если
вШаблоне > 0 Тогда
           
Транслит1 = Транслит1 + Сред(ЛатиницаДиграф, вШаблоне, 2);
           
Транслит2 = Транслит2 + Сред(ЛатиницаДиграф, вШаблоне, 2);
            Продолжить;
        КонецЕсли;
       
Транслит1 = Транслит1 + текБуква;
       
Транслит2 = Транслит2 + текБуква;
    КонецЦикла;
   
СписокТранслита.Добавить(Транслит1);
   
СписокТранслита.Добавить(Транслит2);
    Возврат
СписокТранслита;
КонецФункции

//Очистка списка выбора и таблицы выбора
Процедура ОчиститьСписки()
   
ЭлементыФормы.ТаблицаВыбора.Видимость = Ложь;
   
ТаблицаВыбора.Очистить();
   
ЭлементыФормы.СтрокаПоиска.СписокВыбора.Очистить();
   
ЭлементыФормы.СтрокаПоиска.КнопкаСпискаВыбора = Ложь;
КонецПроцедуры

//Здесь будет любая наша обработка результата поиска
Процедура ПолучитьИнформацию(текОбъект)
    Если
ТипЗнч(текОбъект) = Тип("СправочникСсылка.Контрагенты") Тогда
       
//Это контрагент
   
Иначе
       
//Это номенклатура
   
КонецЕсли;
   
//Например
   
текОбъект.ПолучитьФорму().Открыть();
КонецПроцедуры

В результате мы получили строку поиска, по своим удобствам похожую на строку поисковых сайтов. Справочники Номенклатура и Контрагенты здесь объединены в качестве примера. Можно искать как в справочнике, так и в документах, слегка подправив запрос.

Также обнаружены некоторые ограничения при использовании:

-При быстром удалении слов из строки клавиатурой событие в процедуре СтрокаПоискаАвтоПодборТекста не вызывается, и таблица выбора остаётся открытой.

-В транслитерации есть три буквы, которые имеют два значения в латинице (в - v, w; ж - g, j; к - k, q). Если их использовать перекрёстно, то в первом варианте, то во втором, тогда такое слово не найдётся.

В будущем, надеюсь, решения для снятия этих ограничений будут найдены.

С уважением, Лёлёсь

38

Скачать файлы

Наименование Файл Версия Размер
СтрокаПоиска_v8.2.epf
.epf 8,99Kb
19.02.12
113
.epf 8,99Kb 113 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. ninch 51 20.02.12 12:12 Сейчас в теме
Молодец! Хорошая задумка и реализация. Чувствуется где-то была задача поставлена под эту разработку. Так то наврядли кто бы стал такое чудо делать:)
2. leles 66 20.02.12 13:36 Сейчас в теме
(1) Спасибо, друг!
Делал для себя, теперь и для Вас!
3. cool.vlad4 45 20.02.12 13:49 Сейчас в теме
вот , как мне кажется, более навороченная и универсальная - http://infostart.ru/public/89892/
4. leles 66 20.02.12 14:20 Сейчас в теме
(3) Да, спасибо за ссылку, обязательно изучу
10. ms200999 22.02.12 16:19 Сейчас в теме
(3) Согласен. У себя сделал поиск на основе именно той публикации, добавил поддержку транслита и учел ошибку выбора раскладки. При вводе подстроки "дел" ищем "дел", "del" и "ltk". Здорово помогает как тем, кто забывает переключать язык ввода, так и тем, кто не помнит, какими символами - кириллицей и латиницей - записана исклмая строка.
5. Smaylukk 779 21.02.12 00:14 Сейчас в теме
Тоже присоединяюсь - хорошее решение. Правда когда реализовывал у себя подобное - делал еще дополнительные возможности, которые здесь тоже не помешают.
1. Передавал в процедуру поиска имя справочника, по которому искать;
2. Передавал в процедуру поиска набор полей в виде массива, по которым нужно производить поиск;
И еще по поводу раскрытия списка выбора - пробуйте подергать методы ВыбратьИзСписка() или ВыбратьИзМеню() - если получится прикрутить - будет отлично, а то таблицу неудобно наверное встраивать в табчасть документа, когда нужно будет привязать к полю в ней этот чуджо-поиск :)
7. leles 66 21.02.12 01:06 Сейчас в теме
(5) Да, да точно! ВыбратьИзСписка() я пробовал приладить как и таблицу, но тогда никак не мог придумать, как только при помощи стрелки "вниз" перейти со строки поиска в этот список(таблицу). Чтобы всё делать с клавиатуры, без мыши. Решение нашёл что по стрелке "вниз" мы передвигаемся не в таблицу, а в выпадающий список, который выпадает над как раз над таблицей и полностью её повторяет так, что создаётся впечатление что мы спускаемся в таблицу.
Ну и конечно, успешно забыл про ВыбратьИзСписка(). А ведь можно всё организовать лучше! Спасибо! Буду переделывать.
По поводу расширения универсальности и новых возможностей - это здорово. Надо подумать.

(6) Чудаковато? - Согласен! Мы здесь немного все чудаки. Время ночь, а все у экрана и улучшать, улучшать :)
8. leles 66 21.02.12 01:30 Сейчас в теме
(5) А нет, не получиться. После появления списка из ВыбратьИзСписка() фокус переходит на этот список и следующую букву уже не набрать. А жаль.
9. Smaylukk 779 21.02.12 10:13 Сейчас в теме
(8) Можно попробовать завязаться на другое событие - ОкончаниеВводаТекста(), правда здесь пока пользователь не введет нужный текст и не нажмет Enter, список или подсказка не появится.
P.S. Я реализовывал как раз так :)
13. leles 66 24.02.12 19:13 Сейчас в теме
(9) Да, как вариант. Только хотелось как в поисковике: набрал пару букв - раз, подсказки.
Добрал ещё - более нужные подсказки, и выбрал из предложенного.

(10) Ошибка выбора раскладки это плюс! Если можно приведите Ваш кусок кода с транслитом и ошибкой.

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

(12) Да уж, и ведь это только ассортимент нашего ларька на Апрашке:)
17. mentozavr 33 13.03.13 09:30 Сейчас в теме
(5) Smaylukk, Сэр а как вы это сделали может кодом поделитесь. Заранее благодарю.
6. Rembi_999 21.02.12 00:35 Сейчас в теме
11. mkostya 26 22.02.12 20:41 Сейчас в теме
хорошее решение, очень понравилось.

(6) Чудаковато? Вполне сойдет за решение??

Не собираетесь и дальше её усовершенствовать???
12. Damian 894 22.02.12 21:03 Сейчас в теме
Особенно порадовал справочник "Номенклатура" на скринах. Сразу видно - серьезный бизнес :)
itsnowbars; Pawlick; fomix; +3 Ответить
14. anig99 2696 20.03.12 09:12 Сейчас в теме
А не лучше ли искать последовательно? Т.е. разбить строку поиска на подстроки и в цикле через временные таблицы ограничивать конечный список. Примерно так.

нап вент bo 112

Сначала делается запрос к справочнику номенклатура по подобию "нап". Сохраняется во временной таблице в запросе. Потом вторым запросом и последующими отрезаем лишнее от этой временной таблицы по подобно по 1 слову. Алгоритм будет не такой громоздкий. Да и по скорости может быть выигрыш.
15. Vladimir87 222 11.09.12 07:41 Сейчас в теме
Извиняюсь если был такой вопрос, но все же, в УТ 10.3 будет работать?
16. mentozavr 33 11.03.13 19:47 Сейчас в теме
а у меня как раз задача похожая стоит
18. Andromix 16.01.15 13:27 Сейчас в теме
Отличная обработка, теперь думаю как её прикрутить в форму номенклатуры, что бы при создании показывала похожие элементы
Оставьте свое сообщение

См. также

Дополнение к контролю остатков 85

Инструменты и обработки Программист Бухгалтер Пользователь Расширение (cfe) v8 ERP2 УТ11 КА2 БУ УУ Учет ТМЦ Абонемент ($m) Обработка документов

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

1 стартмани

15.08.2019    4682    8    sapervodichka    15       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 510

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    24958    242    bonv    102       

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь полноценный оффлайн (обновление от 15.08.19)! 169

Инструменты и обработки Программист Архив с данными v8 v8::Mobile БУ УУ Android Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Абонемент ($m) Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    19696    208    informa1555    167       

Использование подсистемы БСП "Заполнение объектов" 133

Статья Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем)

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    12929    8    ids79    14       

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом 12

Инструменты и обработки Программист Пользователь Архив с данными v8 КА1 БП2.0 УТ10 УПП1 Windows Абонемент ($m) Печатные формы документов Универсальные функции Email

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    11023    10    stvorl    0       

Автоматизация отдела продаж - CRM конфигурация для небольшой компании 11

Отчеты и формы Руководитель проекта Конфигурация (md, cf) v8 Россия УУ Управление взаимоотношениями с клиентами (СRM) Оптовая торговля Абонемент ($m) Управленческий учет (прочее)

Вам нужна несложная и многофункциональная автоматизированная система управления продажами для автоматизации отдела продаж? Наша CRM Система поможет Вам! Внедрение займет не более 15 минут. CRM Система - быстрая и безболезненная автоматизация отдела продаж. Без лишних затрат и сложностей. Интеграция с 1С Бухгалтерией 3 и 1С УТ 11.

1 стартмани

05.03.2018    11152    32    user718500    8       

Давно обещанная автовесовая 8.Х 7

Инструменты и обработки Программист Архив с данными v8 Россия УУ Windows Учет ТМЦ Абонемент ($m) Производство

Финальная версия автовесовой без оператора.

10 стартмани

02.01.2018    10335    4    Арчибальд    1       

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Печатные формы документов Практика программирования Универсальные функции

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    21359    21    agent00mouse    0       

Остатки товаров на складах по выбранным документам 9

Отчеты и формы Бухгалтер Руководитель проекта Внешняя обработка (ert,epf) v8 ERP2 УТ11 УУ Учет ТМЦ Абонемент ($m) Печатные формы документов

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

2 стартмани

09.11.2017    30344    24    A7758735    4       

Размеры управляемой формы 100

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Универсальные функции

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

1 стартмани

08.10.2017    17587    46    json    8       

Автозаказ для 1С:Управление торговлей 11 21

Отчеты и формы Бизнес-аналитик Внешний отчет (ert,erf) v8 v8::ОУ УТ11 УУ Оптовая торговля Учет ТМЦ Абонемент ($m) Управленческие

Отчет выводит информацию, помогающую принять решение о пополнении товарного запаса.

3 стартмани

26.09.2017    13692    37    The Ded    23       

Контроль учёта спецодежды 22

Отчеты и формы Бухгалтер Внешний отчет (ert,erf) v8 v8::БУ БП3.0 Россия БУ Учет ТМЦ Абонемент ($m) Бухгалтерские Анализ учета

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

8 стартмани

08.09.2017    19499    26    sansys    9       

Шаблон внешней обработки регламентного задания с формой настройки параметров выполнения 86

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Шаблон внешней обработки призван упростить программисту процесс реализации внешнего регламентного задания. Пригоден к использованию во всех конфигурациях на управляемых формах, в которых присутствует подсистема "Дополнительные отчеты и обработки" из состава библиотеки стандартных подсистем (БСП) версии 2.1 и выше.

1 стартмани

28.05.2017    17368    140    Bassgood    10       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 175

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    38309    166    DarkAn    86       

Журнал записи клиентов 10

Отчеты и формы Руководитель проекта Конфигурация (md, cf) v8 Бытовые услуги, сервис Россия УУ Управление взаимоотношениями с клиентами (СRM) Абонемент ($m) Управление услугами и сервисом

Журнал предварительной записи на платформе 1С 8 для небольших салонов красоты, спа-салонов, массажных салонов, клиник и т.д.

5 стартмани

10.11.2016    21862    31    alfanika    2       

Отладка/доработка модуля менеджера "на лету" 89

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные функции

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

1 стартмани

23.10.2016    22690    19    json    22       

Универсальный поиск объектов по глобальному уникальному идентификатору (ГУИД, GUID) 8

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Поиск данных Универсальные обработки

Универсальная обработка поиска объектов информационной базы по глобальному уникальному идентификатору (ГУИД, GUID) или по его части.

1 стартмани

06.09.2016    23150    101    Dzenn    8       

Легкий интернет-магазин из УТ 11.2 67

Инструменты и обработки Руководитель проекта Внешняя обработка (ert,epf) v8 УТ10 УУ Управление взаимоотношениями с клиентами (СRM) Оптовая торговля Розничная торговля Абонемент ($m) WEB

Обработка создания интернет-магазина из УТ 11. Создается единственный файл html, который содержит все выгруженные товары. Клиент составляет и отправляет заказ вам на e-mail прямо из браузера, не прибегая к использованию стороннего ПО.

11.08.2016    21737    482    hlopik    36       

Неликвиды на складе Pro и Lite версия. Редактирование реквизита в таблице документа. Для конфигурации Управление торговлей 11.2, 11.1 1С Предприятие 8.3 5

Отчеты и формы Бизнес-аналитик Бухгалтер Внешний отчет (ert,erf) v8 v8::ОУ УТ11 Оптовая торговля, дистрибуция, логистика УУ Windows Оптовая торговля Розничная торговля Учет ТМЦ Абонемент ($m) Управленческие

Внешний отчет для анализа товаров, находящихся на складе без движения. Работает для конфигураций 1С Управление Торговлей 11.2, 11.1. Отчет отображает товары на складах, движения по которым не производились в течении заданного периода дней. Подключается как внешний отчет в конфигурации 1С Управление торговлей 11. В Pro версии можно установить общий реквизит номенклатуры, для дальнейшего включения в отбор в установке цен номенклатуры. Редактирование в табличном документе ускоряет процесс работы с неликвидами номенклатуры на складах. Отчет можно использовать для стоимостной оценки товаров на складах. Полный доступ к тексту модулей и СКД.

1 стартмани

17.06.2016    22235    47    Ликреонский    2       

Остатки на каждый день в запросе 33

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf УУ Windows Учет ТМЦ Абонемент ($m) Практика программирования

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    33846    19    arakelyan    16       

Генерация QR-кода (управляемая форма, обычное и управляемое приложение) 59

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Универсальные функции Универсальные обработки

Обработку можно быстро и легко интегрировать в любую конфигурацию с и без БСП (Библиотека Стандартных Подсистем).

3 стартмани

04.02.2016    35571    151    tunesoft    24       

Пакетная замена номенклатуры с учетом характеристик 6

Инструменты и обработки Бухгалтер Руководитель проекта Внешняя обработка (ert,epf) v8 КА1 УТ10 УПП1 УУ Оптовая торговля Учет ТМЦ Абонемент ($m) Обработка документов

Обработка "Пакетная замена номенклатуры" в Заказе покупателя, Реализации и Поступлении товаров с использованием отбора по значениям характеристик

1 стартмани

22.01.2016    9383    trendy    1       

Складские операции на ТСД 9

Инструменты и обработки Пользователь Конфигурация (md, cf) v8 УУ Учет ТМЦ Абонемент ($m) Терминал сбора данных

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

1 стартмани

15.11.2015    18532    5    JetBrain    8       

Автоматическая подстановка уничтожений временных таблиц в текст запроса 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Функция, которая сама подставляет в текст запроса "УНИЧТОЖИТЬ" в местах последнего использования ВТ.

1 стартмани

14.11.2015    15026    SeiOkami    3       

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении 58

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 1cv8.cf Россия БУ Windows Учет ТМЦ Абонемент ($m) Инструментарий разработчика Универсальные функции

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

1 стартмани

17.08.2015    38196    167    ekaruk    31       

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 v8 1cv8.cf 1cv7.md Windows Абонемент ($m) Практика программирования Универсальные функции

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    21027    4    Serginio    1       

Конвертация данных. Найдется все! И еще немного... 26

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 КД Абонемент ($m) Поиск данных Инструментарий разработчика

Каждый разработчик, применяющий конфигурацию «1С:Конвертация данных», когда-нибудь обязательно сталкивается с проблемой поиска данных в правилах обмена и (или) регистрации данных.

2 стартмани

25.06.2015    22838    40    tomvlad    7       

Использование общих модулей "Длительные операции" из состава БСП или асинхронное выполнение серверных процедур без блокировки пользовательского интерфейса 124

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Производительность и оптимизация (HighLoad) Универсальные функции БСП (Библиотека стандартных подсистем)

В статье кратко описан способ использования процедур общих модулей "Длительные операции" из состава библиотеки стандартных подсистем (БСП). Статья будет полезна программистам и администраторам, работающих с объемными клиент-серверными базами, конфигурации которых включают в себя БСП. К длительным операциям можно отнести, например, такие процедуры как групповое проведение документов, формирование объемистых отчетов, работа с внешними источниками данных.

1 стартмани

17.03.2015    55026    163    Bassgood    15       

Сверка остатков МПЗ (товаров, материалов, продукции) между планом счетов (БУ) и регистрами (РАУЗ) для КА 1.1, УПП 1.3 26

Отчеты и формы Бизнес-аналитик Бухгалтер Внешний отчет (ert,erf) v8 КА1 УПП1 БУ Учет ТМЦ Абонемент ($m) Бухгалтерские Анализ учета

Контрольный отчет для конфигураций "Комплексная автоматизация 1.1", "Управление производственным предприятием 1.3", позволяющий убедиться в том, что в регистрах регламентированного учета материально-производственных запасов (в варианте расширенной аналитики учета затрат (РАУЗ), раздел МПЗ) и на плане счетов бухгалтерского учета отражены одинаковые значения количества и стоимости МПЗ, а также позволяющий "уловить" другие ошибки учета МПЗ.

1 стартмани

24.02.2015    31516    280    stvorl    7       

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр 207

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

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

1 стартмани

14.02.2015    89245    104    daMaster    87       

Регулярные выражения без COM объектов и внешних компонент 27

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

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

1 стартмани

09.02.2015    20510    18    boogie    35       

Заполнение по остаткам спецодежды и инвентаря по сотрудникам 2

Инструменты и обработки Бухгалтер Внешняя обработка (ert,epf) v8 БП2.0 БУ Windows Учет ТМЦ Абонемент ($m) Обработка документов

Обработки для заполнения по остаткам спецодежды и инвентаря по сотрудникам (можно указать список) для документа "Списание материалов из эксплуатации" и "Возврат материалов из эксплуатации"

1 стартмани

04.02.2015    6970    36    portal2011    3       

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

Инструменты и обработки Руководитель проекта Архив с данными v8 v8::УФ 1cv8.cf Управление взаимоотношениями с клиентами (СRM) Абонемент ($m) SMS рассылки

Очень часто в торговых организациях проводятся рассылки своим покупателям об акциях, скидках, новых поступлениях и т.д. Для этих целей была создана одна универсальная обработка, которая поможет осуществить рассылку в любой конфигурации 1С. Для отправки используется несколько сервисов на выбор: sms.ru, smsc.ru, p1sms.ru, smsgorod.ru, terasms.ru которые по нашему мнению являются одними из самых функциональных в интернете. Так же есть возможность для юридических лиц заключения договора и оплата безналичным расчетом. Наша обработка не просто может отправлять СМС, но и позволяет автоматически заполнять сотовые(!) телефонные номера из базы 1С, делать как общие рассылки так и персонализированные, подставляя значения переменных, которые вычисляются для каждого адресата, будь то его долг или фамилия имя, например, узнать баланс и т.д. Но обо всем по порядку...

1 стартмани

03.02.2015    37362    372    Diversus    80       

Лучшие методы сравнения таблиц значений 324

Инструменты и обработки Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Универсальные функции

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

1 стартмани

02.02.2015    88926    51    ildarovich    54       

Полезные функции БСП 235

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

Список часто востребованных, по моему мнению, функций из состава Библиотеки стандартных подсистем 2.2.

1 стартмани

01.02.2015    45940    47    spec8s    30       

ServiceDesk - служба поддержки организации 52

Отчеты и формы Системный администратор Программист Пользователь Конфигурация (md, cf) v8 1С:Франчайзи, автоматизация бизнеса Россия УУ Windows Управление взаимоотношениями с клиентами (СRM) Абонемент ($m) Управление услугами и сервисом

Service Desk FREE (Сервис Деск бесплатная) - это учёт и контроль выполнения обращений пользователей в тех. поддержку. Помощь в работе специалистов для своевременного реагирования на возникающие проблемы. Благодаря удобному механизму создаются задания по отделам и исполнителям. Каждый этап выполнения обусловлен собственным статусом. В конфигурации предусмотрена история статусов, сообщений и исполнителей. Для аналитики выполнения обращений разработан набор отчётов с различными разрезами.

1 стартмани

28.01.2015    27936    319    wel_ko    24       

Универсальный поиск документов 8

Инструменты и обработки no Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Поиск данных

Для обычных и управляемых форм. Версия 1.15 Создана на 1С8.3, но в режиме совместимости с 8.2.16. Итоговые таблицы одинаковы на обоих закладках

1 стартмани

06.01.2015    17487    38    nikitin19819    10       

Инвентаризационная опись 0504087 с группировкой по счету для БГУ 1.0 1

Отчеты и формы Бухгалтер Внешняя обработка (ert,epf) v8 БГУ Россия БУ Windows Учет ОС и НМА Учет ТМЦ Абонемент ($m) Печатные формы документов

Внешняя печатная форма предназначена для печати ф. 0504087 с группировкой по счёту учёта для документов:"Инвентаризация ОС (НМА,НПА) на балансовых счетах", "Инвентаризация основных средств (забалансовый учет)", "Инвентаризация ОС в оперативном учете", "Инвентаризация материалов на счете 105", "Инвентаризация материалов (забалансовый учет)".

5 стартмани

22.12.2014    26406    5    agospodarin    2       

Библиотека математических функций 1.1 114

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Привожу тексты различных математических функций, которыми периодически пользуюсь. Основной акцент ставится на функции работы с матрицами (в 1С в качестве матриц использовались двумерные массивы). В версии 1.1 функции работы с матрицами немного переписаны для улучшения производительности.

1 стартмани

18.12.2014    21957    40    alex271    67       

Библиотека универсальных функций и процедур (v 1.3) 85

Инструменты и обработки Программист Подсистема v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

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

1 стартмани

17.12.2014    13755    46    alex271    27       

Поиск, восстановление битой ссылки, 8.3, v 0.2 20

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Поиск данных Тестирование и исправление

Обработка для работы с битой ссылкой, 8.3, v 0.1 Позволяет быстро найти и восстановить битую ссылку.

1 стартмани

24.10.2014    30845    306    infostart user    13       

"КОММУНИКАТОР" - обмен заказами, номенклатурой, сообщениями, история работы по сделке без изменения конфигурации. 22

Инструменты и обработки no Внешняя обработка (ert,epf) v8 КА1 УТ10 УПП1 Россия УУ Учет ТМЦ Абонемент ($m) Универсальные обработки

Внешняя обработка(печатная форма) к конфигурациям УТ 10.3, УПП, КА для совместной работы над заказами между Покупателем и Продавцом - автоматическая передача заказа (распознавание номенклатуры поставщика/покупателя) между базами, обсуждение цен, корректировки состава, проведение согласований и т.д. Имеется лента сообщений в стиле мессенджера, в котором можно обмениваться просто сообщениями или передавать состав заказа. Обработка работает как в направлении от заказчика к покупателю, так и наоборот, т.е. инициатором может быть и менеджер по закупкам, и менеджер по продажам.

1 стартмани

24.10.2014    13177    56    informa1555    10       

Конфигурация для партнеров "Инфостарт" для ведения публикаций, рассылки обновлений 47

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf УУ Windows Управление взаимоотношениями с клиентами (СRM) Абонемент ($m) Email Управление услугами и сервисом

Для упрощения жизни своей я разработал конфигурацию «База клиентов и публикаций», которая практически решает мои «проблемы» с рассылкой обновлений и учетом продаж на сайте «Инфостарт», с возможностью загрузки данных с сайта (авторского раздела) . Обновление от 18.06.2019, версия 1.5!

5 стартмани

28.09.2014    26821    54    hakerxp    20       

[ТАКСИ] Шаблон внешней обработки...и не только 207

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Универсальные обработки Работа с интерфейсом Универсальные функции

Обработка предназначена для лентяев, к каковым, в первую очередь, отношу себя. Это в некотором роде шпаргалка в виде шаблона внешней обработки. Для создания новой копируем эту, удаляем ненужное, вставляем нужное - получаем результат. Чем ваять с нуля, каждый раз прописывая одно и то же, проще использовать заготовку, подобную этой... 24.11.2018 - Версия 1.21 - что-то добавил, что-то поправил.... 16.04.2019 - По просьбам трудящихся (немногочисленным, правда) оставил последнюю версию 1.21, дабы не было путаницы... 17.04.2019 - Версия 1.22 Вернул пример сохранения табличного документа в разных форматах и чтения DBF из версии 1.16 (как потерялось - сам не понял)

2 стартмани

22.09.2014    46021    687    Alex_E    27       

Быстрое создание характеристик номенклатуры по дополнительным реквизитам в УТ11 + ВИДЕО 7

Инструменты и обработки Руководитель проекта Внешняя обработка (ert,epf) v8 v8::ОУ УТ10 УУ Windows Оптовая торговля Учет ТМЦ Абонемент ($m) Обработка справочников

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

1 стартмани

06.09.2014    20802    38    GATTUSO    27