Подбор номенклатуры (8.1, УТ 10.3, ДОРАБОТАН, ОБНОВЛЕН 09.11.09)

22.11.09

Разработка - Универсальные функции

Доработан более дружественный и гибкий интерфейс стандартного подбора номенклатуры для УТ 10.3.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ПодборНоменклатуры1_7.epf
.epf 148,95Kb
1052
1052 Скачать (1 SM) Купить за 1 850 руб.

Доработки для типовой обработки "Подбор номенклатуры" конфигурации "Управление торговлей 10.3" версии конфигурации не ниже 10.3.6.8  Обработка может подключаться к табличным частям документов и доступна через подменю табличной части "Заполнить".

Описание доработок

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

Добавлены следующие возможности:

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

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

ПОРЯДОК ПОДКЛЮЧЕНИЯ НА СТАНДАРТНУЮ КНОПКУ "ПОДБОР" В ДОКУМЕНТАХ:

Предлагаемый мной способ может показаться громоздким, но это только на первый взгляд. Он проверен на практике и может пригодится не для одной задачи.

Итак начнем:

Функция ПолучитьФормуВнешнейОбработки(Объект, ВнешняяОбработка, ИмяФормы, Владелец, КлючУникальности, Обновлять = Ложь) Экспорт

    Если
ТипЗНЧ(ВнешняяОбработка) = Тип("СправочникСсылка.ВнешниеОбработки") Тогда
       
ИмяФайла = КаталогВременныхФайлов()+"ExtForm"+ВнешняяОбработка.Код+".epf"; // для простоты отладки

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

        Если НЕ
ФайлСуществует(ИмяФайла) Тогда
           
ОбъектВнешнейФормы = ВнешняяОбработка.ПолучитьОбъект();

            Если
ОбъектВнешнейФормы = Неопределено Тогда
               
Сообщить("Ошибка получения внешней обработки заполнения табличной части документа. Возможно обработка была удалена", СтатусСообщения.Важное);
                Возврат Неопределено;
            КонецЕсли;

           
ДополнительныеПараметры = Неопределено;
           
МетаданныеОбъекта = Объект.Метаданные();
           
СсылкаОбъекта = Неопределено;
            Если
Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
               
СсылкаОбъекта = Документы[МетаданныеОбъекта.Имя].ПустаяСсылка();
            ИначеЕсли
Метаданные.Справочники.Содержит(МетаданныеОбъекта) Тогда
               
СсылкаОбъекта = Справочники[МетаданныеОбъекта.Имя].ПустаяСсылка();
            КонецЕсли;


            ДвоичныеДанные = ОбъектВнешнейФормы.ХранилищеВнешнейОбработки.Получить();
           
ДвоичныеДанные.Записать(ИмяФайла);

            Попытка
               
Обработка = ВнешниеОбработки.Создать(ИмяФайла);
            Исключение
               
Сообщить("Ошибка исполнения внешней обработки табличной части документа."+Символы.ПС+ОписаниеОшибки(), СтатусСообщения.Важное);
                Возврат Неопределено;
            КонецПопытки;

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

            Попытка
               
ПолученнаяФорма = Обработка.ПолучитьФорму(ИмяФормы, Владелец, Владелец);
                Возврат
ПолученнаяФорма;
            Исключение
               
ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(),, "Ошибка получения формы!");
                Возврат Неопределено;
            КонецПопытки;

        Иначе

            Попытка
               
ПолученнаяФорма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла, ИмяФормы, Владелец, Владелец);
                Возврат
ПолученнаяФорма;
            Исключение
               
ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(),, "Ошибка получения формы!");
                Возврат Неопределено;
            КонецПопытки;

        КонецЕсли;

    КонецЕсли;

КонецФункции

  1. Скачайте Конфигурацию "Универсальные механизмы"

  2. Сохраните базу!!!

  3. Объедините скачанную конфигурацию с Вашей с помощью пункта меню конфигуратора (Конфигурация > Сравнить, объединить с конфигурацией из файла). В открывшемся окне отключите все объединения  и включите только объединение(добавление) справочника ДополнительныеНастройки

    Примечание: В справочнике уже существует (как пример) все необходимое для подключения обработки, а конкретно - предопределенный элемент справочника через который мы будем находить нужную обработку

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

  5. Открываем справочник "Дополнительные настройки" через меню "Операции" > Справочник... (по вашему желанию Вы можете добавить его в интерфейсы) и выбираем для предопределенного элемента с наименованием "Обработка подбора номенклатуры" только что добавленную нами обработку.

  6. Создаем новый общий модуль (либо используем уже существующий) и добавляем в него функцию:

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

     

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



    Где     - код 1С



  8.  
  9.  

ПЛЮСЫ:

1.Теперь Вы или другой программист уже не сможете поломать работу, поменяв код или изменив наименование добавленной нами внешней обработки. Данным методом можно любой элемент сделать предопределенным.
2. Простота управления. Вы в любой момент можете указать новую обработку или вернуть старый релиз не влезая в конфигурацию и не останавливая работу пользователей

КОД ОТКРЫТ. Буду благодарен за критику и помощь.

См. также

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

21.05.2024    17224    dimanich70    81    

135

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

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    3835    3    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    14337    atdonya    23    

56

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    5238    ke.92@mail.ru    16    

65

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    13619    YA_418728146    7    

165

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    3309    52    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    18096    160    sapervodichka    112    

134
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4691 08.09.09 11:02 Сейчас в теме
С виду гламурненько. За открытый код плюс.
3. WiseSnake 1521 08.09.09 13:20 Сейчас в теме
(1) Спасибо. Старался...
(2) Специально подбирал ))))) Чтобы вкуснее выглядело ;)

Чего остальные молчат? Тестируют :)? Может что не получается, так Вы не стесняйтесь )
4. Арчибальд 2709 08.09.09 13:24 Сейчас в теме
(3) Ну так рано еще... А мне потестировать нечем :|
2. Арчибальд 2709 08.09.09 13:11 Сейчас в теме
А подбор номенклатуры! Перед обедом вообще смотреть нельзя :)))
5. rdv 09.09.09 05:56 Сейчас в теме
6. WiseSnake 1521 09.09.09 06:28 Сейчас в теме
На УПП не тестировал...
По идее должно подойти, возможно придется незначительно доработать...
7. Шёпот теней 1782 09.09.09 08:43 Сейчас в теме
... мне кажется хороший продукт и для магазина ...
... только вот подключение и следовательно тестирование - слишком хлопотное дело ...
... поэтому не все программисты оценят а про пользователей и говорить не приходится
... поэтому мне кажется стоит упростить процедуру тестирования ...
... ВОТтакМНЕкажется ...
... УДАЧИ ...
graphbuh; +1 Ответить
10. WiseSnake 1521 09.09.09 12:03 Сейчас в теме
(7) Этот механизм можно подключить параллельно с типовым, то есть если что-то не сработает, то всегда можно использовать типовой... Это доработка работает как вы понимаете на реальном предприятии и уже как основная :)
(8) Так как я старался максимально оставить типовую обработку, то в запрос не стал лезть, по этому пересчет единиц уже идет после формирования номенклатуры. Если объем выводимой информации большой то возможны тормоза. На моей базе это не ощущается. Если будет достаточный интерес и претензии к скорости могу изменить...

(9) Неудобством и недостаточным функционалом. Например я хочу видеть остатки не в штуках а коробах, потому что выписка идет в коробах и каждый раз делить на количество штук в коробе нереально...
8. Шёпот теней 1782 09.09.09 08:57 Сейчас в теме
... хм ... работет гораздо дольше штатной ... ?
9. Alex_IT 140 09.09.09 09:37 Сейчас в теме
А чем стандартное отображение цен и остатков в подборе не устраивает?
11. whitedog 09.09.09 12:12 Сейчас в теме
Все функции относительно групп работают только в подборе по остаткам; в подборе по остаткам и ценам ничего не работает.
WiseSnake; +1 Ответить
12. WiseSnake 1521 09.09.09 12:22 Сейчас в теме
(11) Спасибо! Сейчас потестил... Действительно присутствуют косяки.
13. fuxic 298 09.09.09 14:10 Сейчас в теме
=)) как мило. да только надо еще добавить дополнительные отборы, сортировки с помощью построителя по выбранным режимам подбора и будет клиенту счастье
15. WiseSnake 1521 09.09.09 14:58 Сейчас в теме
(13) Какие например?

(14) Рад, что моя работа приносит пользу...
14. KatyS 09.09.09 14:41 Сейчас в теме
Спасибо! Особо порадовало сворачивание дерева и цветовое оформление.))
16. mr zafod 23 09.09.09 20:17 Сейчас в теме
все конечно очень даже... а вы не читали документацию к 8.2? почитайте, обратите внимание на построение динамических списков и попробуйте компоновкой данных - работать будет гораздо быстрее. и еще один совет, если позволите - как упростить жизнь при подборе с единицами измерения - ну попробуйте через ВТ в запрос передать номенклатуру с единицами и коэфф. и только для них пересчитывайте в единицы документа, для остальных - ед.хран. просто пересчет и ВЫРАЗИТЬ КАК ЧИСЛО(15,3) - помоему так в запросе - работает очень тяжело.
17. WiseSnake 1521 10.09.09 00:01 Сейчас в теме
(16) Документацию для 8.2 не читал. Я еще толком не начинал кодить на 8.2... Если ткнете носом где почитать, буду благодарен... И почему в таком случае для 8.2 есть волшебная документация по построению волшебных динамических списков, а для 8.1 нет?
Признаюсь честно:
1. Пересчет в другую ЕИ был сделан еще на 8.0 в то время когда ВТ не было и в помине. Переделывать было лень... За критику спасибо.
2. Все написано очень сумбурно... Если честно может я туповат, но я ничего не понял... Хотя бы это:
> для остальных - ед.хран. просто пересчет и ВЫРАЗИТЬ КАК ЧИСЛО(15,3) - помоему так в запросе - работает очень тяжело.

Что работает тяжело, как Вы советует сделать то? Зачем тире в предложении?

Или это:
> попробуйте компоновкой данных - работать будет гораздо быстрее

Непонятно зачем компоновкой то? Запроса по моему выше крыши в данном случае... Или Вы что то другое имели ввиду?
21. mr zafod 23 10.09.09 16:38 Сейчас в теме
(16)
0. Документация в комплекте с платформы. Но тут даже и не это важно. Попробуйте сделать тяжелый запрос с отборами и группировками в построителе и СКД без вывода в таб.док. и посмотрите разницу в скорости исполнения.
2. Идея в следующем : для номенклатуры, уже содержащейся в документе, пересчитывать в единицы документа, для остальной номенклатуры выводить в ед.хранения - так для остальной номенклатуры вы экономите на 2-ух операциях : умножения на коэффициент и приведения к виду ЧИСЛО(15,3)
23. WiseSnake 1521 10.09.09 18:00 Сейчас в теме
(21) 0. Смешно, но я давно уже все пишу в СКД, только не пойму какое отношение СКД имеет к данной разработке, я вообще запросы не трогал...
2. Вы не поняли сути разработки!
>>Для номенклатуры, уже содержащейся в документе, пересчитывать в единицы документа, для остальной номенклатуры выводить в ед.хранения

Оператору по большому счету плевать на ту номенклатуру которую она подобрала... Она ее уже отработала. Ей надо знать количество, например в коробах, чтобы оценить сколько нужно выписать конкретному клиенту.
25. MRAK 724 10.09.09 19:20 Сейчас в теме
(23) видимо, он имеет ввиду, что выбирать данные запросом и отображать в форме с помощью СКД эффективнее...
26. WiseSnake 1521 10.09.09 19:37 Сейчас в теме
(25) Согласен, что выбирать данные запросом эффективнее, но в (17) я ответил почему именно так сделано. Со временем может переделаю (или кто нибудь решит переделать). И ИМХО такой простой запрос написать и в конструкторе 2 сек, СКД тут нет необходимости...
27. Ish_2 1110 10.09.09 20:15 Сейчас в теме
(25) Эту шараду так и не разгадал :

"Попробуйте сделать тяжелый запрос с отборами и группировками в построителе и СКД без вывода в таб.док. и посмотрите разницу в скорости исполнения."

Очевидно (21) полагает что в СКД возможно обрашение к результату компоновки без ПроцессораВывода, вид которого и определяет куда будет выводиться результат компоновки (но не запроса) в коллекциюЗначений или ТабличныйДокумент.
Вся тяжесть вычислений в СКД ложится как раз на ПроцессорВывода.

А использовать СКД для того чтобы отображать данные на форме - эта шутка заслуживает плюса.

28. mr zafod 23 10.09.09 20:39 Сейчас в теме
(27) Да, вы правильно поняли, в СКД возможно обращение к результатам компановки без вывода в тд, но с определенным набром отборов и группировок, которые будут выполнены быстрее, чем группировки и отборы самого запроса + использование связанных наборов данных для загрузки в СКД таблицы номенклатуры, единиц и коэффициентов для пересчета остатков в единицы документа.
30. Ish_2 1110 10.09.09 20:53 Сейчас в теме
(28) Честно сказать, снова не понял ни слова.
Если Вы вытаскиваете данные из сформированного макета компоновки , то приведите пример того как Вы обращаетесь к Макету Компоновки и вытаскиваете оттуда нужные данные.
Пока мне ничего неизвестно про такие операции я использую стандартный подход : для получения любых данных из СКД используется ПроцессораВывода
того или иного вида.

35. mr zafod 23 10.09.09 21:37 Сейчас в теме
(30) Да, именно процессор вывода в ТЗ.
(31) Вот как нужно передать вашу "ВТ" в процессор компоновки :
ПроцессорКомпоновкиДанных.Инициализировать(<Макет>, <Внешние наборы данных>, <Данные расшифровки>, <Возможность использования внешних функций>)
Параметры:
<Макет> (обязательный)
Тип: МакетКомпоновкиДанных. Макет, для которого будет выполняться компоновка.
<Внешние наборы данных> (необязательный)
Тип: Структура. Ключ структуры соответствует имени внешнего набора данных. Значение структуры - внешнему набору данных.

Вот здесь нужно передать как <Внешние наборы данных>

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

Я вам оставил просто предложение или, если хотите, пожелание. Я понимаю, что такой способ реализовать гораздо тяжелее и оч.часто я и сам использую прямые конструкции, но если вы серьезно решили перекопать подбор(не секрет, что стандартный - это головная боль) то посмотрите в сторону СКД.
36. Ish_2 1110 10.09.09 21:46 Сейчас в теме
(35) Ну, слава Богу , ПроцессорВывода всё-таки используется.
Ваше предложение о возможности использовании ВнешнегоНабораДанных носит
самый общий характер . И совсем необязательно приведет к улучшению быстродействия в данном конкретном случае , приведенном в (32).
Я даже думаю , что применение СКД в данном конкретном случае - нелепо.
40. mr zafod 23 10.09.09 22:17 Сейчас в теме
(36) Да, имелось ввиду не стандартное решение : при получении данных списка запросом по остаткам и ценам. Целесообразность такого метода в использовании СКД как источника заполнения ТЗ/ДЗ номенклатуры без использования динамического списка справочника. Ведь единственное приемущество справочника - получение данных порциями, но и в СКД можно ограничить количество получаемых данных. И именно это является основной сложностью. Использование внешнего набора абсолютно адекватно и отработает быстрее ВТ. В ВТ нужно еще и индексы нужно указать - потратить время и память.
(37) причем тут 8.2 я вообще не догнал??? Построение динамических списков типа номенклатурного выполняется по запросу описанному через СКД. Там можно для объекта СправочникСписок в его свойствах указать, что при получении его данных нужно читать еще и остатки с ценами. Посмотрите. Даже в демо конф. есть примеры.
41. WiseSnake 1521 10.09.09 22:28 Сейчас в теме
(40) Давайте Вы не будете меня путать, пожалуйста. Излагайте Ваши мысли более понятным языком, уважайте других

Вот Ваша цитата по 8.2 из (16) поста:
>все конечно очень даже... а вы не читали документацию к 8.2? почитайте, обратите внимание на построение динамических списков

И с чего Вы решили, что я знаю СКД хуже Вас?
42. mr zafod 23 10.09.09 22:31 Сейчас в теме
(41) Не вижу никакой путаницы я все ясно изложил : обратите внимание на построение динамических списков 8.2
43. WiseSnake 1521 10.09.09 22:36 Сейчас в теме
(42) Тогда это из (40) как понять?

"(37) причем тут 8.2 я вообще не догнал??? Построение динамических списков типа номенклатурного выполняется по запросу описанному через СКД. Там можно для объекта СправочникСписок в его свойствах указать, что при получении его данных нужно читать еще и остатки с ценами. Посмотрите. Даже в демо конф. есть примеры."
45. Ish_2 1110 10.09.09 22:53 Сейчас в теме
(40) Я всё -таки попытаюсь понять . Вынужден строить предположения .
Итак , правильно ли я понял :

Стандартный подход предполагает :
получение ВТ с номенклатурой из данных списка и затем запрос с левым соединением с таблицами остатков и цен.

Вы предлагаете :
Составить СхемуКомпоновкиДанных в которой указать внешний набор данных
(данные списка) и внутренние наборы данных Таблицы остатков и цен.
В этой схеме указать аналогичное левое соединение между внешним набором
и таблицами цен и остатков.

Вы считатете , что при использовании СКД экономится время на создание ВТ и идет обращение напрямую к данным списка . Поэтому такой подход оправдан ?
Так ?
46. mr zafod 23 11.09.09 06:53 Сейчас в теме
(45)Да, подход примерно такой. Дословно предлагается эмулировать получение данных динамического списка (т.е. последовательного чтения из БД). Т.к. полученные данные списка не сохраняются в кэше объектов, то чтение происходит постоянно, даже если вы отмените автообновление списка, он все равно будет перечитывать данные из БД, повесте точку прерывания в ПриПолученииДанных и уберите фокус с формы, потом вернитесь, у неё список перечитается. Плюс при каждом получении данных необходимо выполнять запрос к остаткам/ценам, если в запрос мы добавим ВТ и отборы - перегрузим запрос. Т.е. в итоге у нас 2 запроса - один, не контролируемый, запрос к справочнику номенклатура, его система выполняет сама, второй к таблицам регистров.
Теперь СКД. Получение данных можно сделать одним запросом. Можно выбрать данные только из регистров, не обращаясь к таблице справочника вообще и получить и номенкл. и остатки и цены. На основании ПроцессораВывода выводить данные в ТЗ или ДЗ с группировкой по иерархии, со складами и ценами в колонках. Т.е. возможности предоставить пользователю информацию гораздо больше, а время затраченное на обработку вывода будет меньше чем даже на стандартный метод : при получении данных запихать номенклатуру в запрос, потом пройти по результату, найти соответств. строки списка и туда чисто интерфейсно записать полученные данные.

Я могу вам на более подробных примерах показать приемущество СКД.
47. Ish_2 1110 11.09.09 10:29 Сейчас в теме
(46) СКД. Попробую понять.

Перед началом работы формы подбора (ПередОткрытием) Вы предлагаете в СКД сформировать МакетКомпоновки . Наборы данных в СКД при этом :
ВнешнийНаборДанных, ТаблицаОстатков, ТаблицаЦен.
Используется левое соединение.
ПроцессорКомпоновки при этом не инициализируется.
Соотвественно ПроцессорВывода не запускается.

Далее . При событии ПриПолученииДанных получаем список номенклатуры и запихиваем его во ВнешнийНаборДанных , инициализируем ПроцессорКомпоновки и затем запускаем ПроцессорВывода.

Так ?
37. WiseSnake 1521 10.09.09 21:53 Сейчас в теме
(35) Просто сумбурно это все было сделано, причем тут 8.2 я вообще не догнал :). Конечно я знаю о всех возможностях описанных в (35), но к данной задаче СКД применять нецелесообразно!
Если конечно полностью переделывать подбор(что я, кстати, возможно буду делать, есть план сделать АРМ оператора) то да, учту Ваши пожелания :).

>Я понимаю, что такой способ реализовать гораздо тяжелее
Да нет вроде, все довольно просто, особых проблем не заметил, даже наоборот...

>не секрет, что стандартный - это головная боль
Ну вот я и выложил разработку, потому что в моем варианте, лично для меня, он перестал быть головной болью...
31. WiseSnake 1521 10.09.09 20:55 Сейчас в теме
(28) Давайте разберемся, пожалуйста:
У меня список номенклатуры которую надо пересчитать
То есть Вы предлагаете в СКД запихнуть отбор по это номенклатуре и вывести в ТЗ? Я правильно понял?

ИМХО загрузка этой таблицы в МенеджерВременныхТаблиц + обычный запрос будет работать быстрее. Вы так не считаете?
29. WiseSnake 1521 10.09.09 20:45 Сейчас в теме
(27) Точно... Кажется и я допер что имелось ввиду... Кстати, я часто применяю СКД, чтобы "красиво" построить ДеревоЗначений, для вывода в форму, но для того чтобы строить ТаблицуЗначений с помощью СКД, до этого еще не доходило...
33. Ish_2 1110 10.09.09 21:01 Сейчас в теме
(29) Слишком туманно. (28) утверждает , что получает данные из СКД минуя ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
18. zenz 10.09.09 01:47 Сейчас в теме
Косяк с ценами - цена базовой ед. проставляется деленная на коэфициент еденицы для отчетов.
19. rinatkin 10.09.09 12:44 Сейчас в теме
Было бы удобно иметь отбор по количеству, чтобы в списке была видна только номенклатура, которая есть на складе
20. WiseSnake 1521 10.09.09 13:09 Сейчас в теме
(19) Это есть и в типовой Подбор: "По остаткам номенклатуры"
22. vlasta 10.09.09 17:05 Сейчас в теме
C виду нормальненько. Было бы неплохо добавить, чтобы автоматически формировались накладные при одновременной отгрузке с разных складов
24. WiseSnake 1521 10.09.09 18:02 Сейчас в теме
(22) С разных складов можно выписывать одной накладной УТ это позволяет. И кстати разработка более удобно работает с этим функционалом, потому что склад можно менять прямо в форме подбора
34. Ish_2 1110 10.09.09 21:30 Сейчас в теме
(32) Преимущество СКД в скорости проявляется когда используется соединение несколько наборов данных и отчет содержит группировки по строкам и колонкам (в настройках СКД Объект "Таблица").
Примером такого отчета может служить "ОборотыСчета" .
В типовой БП 1.6 он реализован "вручную".
Простое сравнение с таким же отчетом построенном на СКД показывает : применение СКД дает значительный выигрыш во времени.

А вот о каком преимуществе говорится в (28) не понимаю.
И чем плох обычный запрос в случае со списком номенклатуры тоже непонятно.
39. WiseSnake 1521 10.09.09 21:54 Сейчас в теме
Извиняюсь, глюки, сообщения по 2 раза добавляются :(((((((((((((
44. WiseSnake 1521 10.09.09 22:37 Сейчас в теме
+43 У меня такое ощущение, что мы говорим на разных языках!!!
48. WiseSnake 1521 11.09.09 13:08 Сейчас в теме
Господа!!! Давайте не будем засорять сабж! Данное обсуждение имеет крайне косвенное отношение к моей разработке.

Перенесите пожалуйста обсуждение в форум, личку или еще лучше mr zafod напишите полноценную статью с описанием преимуществ и замерами производительности. Вот тогда это не будет бесполезной тратой времени! И Ваши знания оценят по достоинству!
49. Ish_2 1110 11.09.09 13:15 Сейчас в теме
(48) Я извиняюсь. Но предполагаю , что вариант с использованием СКД ,
как раз имеет самое прямое отношение к теме автора.

Предполагаю даже, что mr zafod ПРАВ и использование СКД для получения данных в форме подбора более эффективно чем "ручной" запрос с ВТ.
50. WiseSnake 1521 11.09.09 13:21 Сейчас в теме
(49) Перечитайте внимательно (17), я еще хочу сохранить возможность простого обновления подбора.
51. Ish_2 1110 11.09.09 13:30 Сейчас в теме
(50) Ага. Перечитал.
Согласен , что mr zafod очень косноязычен.
Согласен , что процедура обновления еще будет дорабатываться.

Простое обновление - это что ? По кнопке запускать запрос на получение цен и остатков и обновлять список номенклатуры ?
52. WiseSnake 1521 11.09.09 14:07 Сейчас в теме
(51) Я тоже немного костноязычен ;)

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

Хотя ))))... лана я подумаю и учту Ваши пожелания, спасибо за критику! )))
55. Ish_2 1110 20.09.09 13:18 Сейчас в теме
(52) Я извиняюсь. Но вариант с использованием СКД , с трудом понятый и описанный в (47), всё-таки хуже ,чем обычный - с использованием запроса с ВТ в процедуре ПриПолученииДанных().
Потому что, в (47) предлагается сделать всего одно тяжелое обращение к базе в начале работы Подбора ,а затем лишь фильтровать результат этого обращения для заполнения текущего динамического списка номенклатуры.
Это не есть хорошо.
56. WiseSnake 1521 20.09.09 14:23 Сейчас в теме
(55) Еще раз перечитал (45), (47) (кстати на 47 mr zafod так и не ответил) и...ужаснулся... Вообще то я оказывается не так все понимал. Я то в голове продумывал свой вариант:
То есть выполнение СКД вместо Запрос + Выгрузка в ТЧ....

Если честно я так и не догнал как хочет сделать mr zafod, но если Вы, уважаемый Ish_2, правы то:
1. mr zafod наверно совсем забыл об актуальности данных (за то время пока делается подбор остатки, как пример, могут изменится так что ...пипец)
2. Зачем мне "колбасить" всю номенклатуру при открытии подбора, для того чтобы подобрать 1 строчку номенклатуры? + если у меня стоит уже нужная группа(а обычно так и бывает) то я выполню это в 10-100 раз быстрее чем вариант 47...

P.S. Вообщем жесть...
53. PowerBoy 3404 15.09.09 07:11 Сейчас в теме
+1000 Добавил юбилейный! Поздравляю!
54. WiseSnake 1521 15.09.09 08:34 Сейчас в теме
Спасибо! Но Инфостарт дело хитрое :) и до 1000 еще я не дотянул (((
57. Мастер1С 781 20.09.09 18:20 Сейчас в теме
Идея хорошая, но, на мой взгляд, пострадала реализация. На базе с большим количеством номенклатуры (порядка 200 тыс.) существенно тормозит.
58. WiseSnake 1521 20.09.09 19:09 Сейчас в теме
(57) Спасибо! Вижу для многих критично. Буду оптимизировать
59. Floid 03.10.09 22:35 Сейчас в теме
Ошибка при выполнении файловой операции 'C:\Program Files\1cv81\ПодборНоменклатуры1_5.epf'
по причине:
Неверный формат хранилища данных 'file://C:/Program Files/1cv81/ПодборНоменклатуры1_5.epf'

"Управление торговлей", редакция 10.3 (10.3.8.9)

60. Floid 03.10.09 22:40 Сейчас в теме
не то скопировал... пишет выбраный файл не является внешней обработкой
{Справочник.ВнешниеОбработки.Форма.ФормаЭлемента(189)}: Ошибка при вызове метода контекста (Создать): Ошибка при выполнении файловой операции 'C:\Program Files\1cv81\ПодборНоменклатуры1_5.epf'
63. WiseSnake 1521 19.11.09 14:54 Сейчас в теме
Обновлено описание...

(60) Какой релиз? платформа?
(61) Я в принципе уже дорабатывал. Вот только не помню исправлял Вашу проблему или нет :oops: . Если вы скачаете новую версию и проверите, буду Вам очень признателен...
61. hawk 66 30.10.09 19:25 Сейчас в теме
Хорошая вещь, почти то что нужно (нужны были чистые остатки без иерархии) это как раз я посмотрел работает на половину в остатках работает, а в остатках и ценах нет. Планируете доработать?
62. WiseSnake 1521 09.11.09 12:07 Сейчас в теме
Обновлена обработка. Описано подключение на стандартную кнопку "Подбор" в документах
64. Поручик 4691 22.11.09 22:34 Сейчас в теме
Скачал новую версию, при открытии и работе тормозит на нашей базе. Клиент-сервер, в справочнике порядка 20 тыс. позиций. Причём пробовал сегодня, в базе кроме меня никого не было.
65. WiseSnake 1521 23.11.09 01:01 Сейчас в теме
(64) Ну о том, что разработка тормозит на больших базах говорилось и ранее. Новая версия, насколько я помню, не отличается от той что лежала ранее принципом сбора данных. Может быть вы просто открываете по всему справочнику? (с включенным режимом без групп)?? Что я еще могу сказать у меня база около 10тыш позиций скуль, да тормозит чуть больше чем стандартная, но не критично.
+ ко всему сказанному код открыт и каждый может оптимизировать обработку, если поделится еще и с сообществом то респект и уважуха. Лично у меня пока на это времени нет и в ближайшее время не предвидится.
66. Поручик 4691 23.11.09 21:20 Сейчас в теме
Могу открыть тайну: у нас до сих пор используется подбор УТ 10.2, портированный и жутко доработанный автором этих строк, причём с минимальной тормознутостью.
67. WiseSnake 1521 24.11.09 01:24 Сейчас в теме
68. Поручик 4691 24.11.09 18:31 Сейчас в теме
Толку не будет, конфа сильно моденная.
69. Flashlike 20.01.10 19:20 Сейчас в теме
На мой взгляд очень удобно было бы, если дерево разместить слева. А не сверху.
70. aleks123321 18.01.11 09:05 Сейчас в теме
Спасибо за разработку. Безусловно [+]
71. margo2007 15 03.12.11 15:13 Сейчас в теме
Стандартный подбор слишком нагроможден.
Хотелось бы такой, как этот, по проще.
72. volodya_gold 01.03.12 14:21 Сейчас в теме
Использовал эту обработку некоторое время. Есть свои плюсы. Но всеже большей частью стандартный подбор.
73. kodblack 14 17.07.12 14:34 Сейчас в теме
при сохранение конфигурации выдает
{ОбщийМодуль.Подборр(6,14)}: Процедура или функция с указанным именем не определена (ФайлСуществует)
Если <<?>>ФайлСуществует(ИмяФайла) И Обновлять Тогда (Проверка: Толстый клиент (обычное приложение))
{ОбщийМодуль.Подборр(18,17)}: Процедура или функция с указанным именем не определена (ФайлСуществует)
Если НЕ <<?>>ФайлСуществует(ИмяФайла) Тогда (Проверка: Толстый клиент (обычное приложение))
Подскажите как быть????
74. Morokola 23.08.12 13:35 Сейчас в теме
{ОбщийМодуль.Подбор.Модуль(6,14)}: Процедура или функция с указанным именем не определена (ФайлСуществует)
Если <<?>>ФайлСуществует(ИмяФайла) И Обновлять Тогда (Проверка: Толстый клиент (обычное приложение))
{ОбщийМодуль.Подбор.Модуль(18,17)}: Процедура или функция с указанным именем не определена (ФайлСуществует)
Если НЕ <<?>>ФайлСуществует(ИмяФайла) Тогда (Проверка: Толстый клиент (обычное приложение))
Та же ошибка что и в 73. Что делать? В чем причина?
75. ВРедная 44 19.11.12 13:57 Сейчас в теме
Можно подключить как внешнюю, без изменения конфигурации и добавления модулей. Для вызова подбора, правда, прийдется выбирать меню "Заполнить" - "Подбор номенклатуры", зато без ошибок и изменения конфы.

Спасибо автору.
76. serg1974 08.04.13 11:04 Сейчас в теме
Обработка сделана очень качественно - спасибо - на 1с82 КА (комплексная!) заработала - простой авторегистрацией, через меню "заполнить" удобнее - тем что у пользователя остается выбор.

WiseSnake - РЕСПЕКТ!!!
77. laf 28.01.15 03:30 Сейчас в теме
Спасибо за обработку. Непонятно, почему в последних версиях 1с нет возможности работать в подборах "безИерархии" и "БезГрупп". Ведь в 7-ке эти возможности были изначально, было Супер-удобно.
78. Agkorepanov 11.02.16 18:25 Сейчас в теме
Слишком сильно тормозит.
79. WiseSnake 1521 11.02.16 22:18 Сейчас в теме
(78) Agkorepanov, Это давно уже все устарело.
Оставьте свое сообщение