Обработка табличной части "Товары" для 8.2 (управляемая форма)

01.03.12

Задачи пользователя - Прайсы

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Обработка табличной части товары для 8.2
.epf 21,55Kb
277
277 Скачать (1 SM) Купить за 1 850 руб.

Итак.

Почему-то разработчики 11-ой редакции конфигурации "Управление торговлей" решили, что данная обработка не особо востребована и не стали заморачиваться с ее включением в доступный функционал. Как показывает практика, да и по опыту исследования отзывов пользователей, такое исключение оказалось серьезным упущением. На infostarte подобного функционала не обнаружил, и когда заказчик попросил внедрить обработку, которая была в торговых (да и других) конфигурациях на платформе 7.7, 8.0, 8.1, был вынужден взяться за кисти и краски.

На суд общественности предлагаю то, что удалось сваять. Думаю удастся кому-нибудь помочь и облегчить сосуществование с управляемыми формами в торговле.

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

Обработка разрабатывалась на платформе 8.2.13.219.

 

Возможности, включенную в обработку (обработчики):

  • - Изменить цены на %,
  • - Распределить сумму по суммам,
  • - Распределить сумму по количеству,
  • - Установить ставку НДС,
  • - Установить ручную скидку, %,
  • - Округлить цены до,
  • - Удалить помеченные строки,
  • - Добавить из документа.

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

Особенности такие:

1) форма обработки открывается в модальном режиме,

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

3) в форме обработки редактирование строк недоступно (этим можно заняться в основной форме документа), из стандартных действий с табличной частью есть возможность Удаления и Упорядочивания,

4) Система запоминает последнее использованное в обработке действие и предлагает именно его при повторном открытии обработки.

Теперь касаемо того, как вызвать эту внедренную в метаданные обработку из документов системы...

1) В форму документов, требующих изменения механизмами, заложенными в обработку, добавляется в командную панель товаров Кнопка с обработчиком вида:

&НаКлиенте
Процедура автИзменитьТабличнуюЧасть(Команда)

   
Отказ = Ложь;

    Если
Отказ Тогда
        Возврат;
    КонецЕсли;

   
ПараметрЗаголовок = НСтр("ru = 'Изменение табличной части товаров в %Документ%'");
    Если
ЗначениеЗаполнено(Объект.Ссылка) Тогда
       
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);
    Иначе
       
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", "заказе клиента");
    КонецЕсли;

   
ПараметрыФормы = Новый Структура;

   
ПараметрыФормы.Вставить("ЦенаВключаетНДС",      Объект.ЦенаВключаетНДС);

   
ПараметрыФормы.Вставить("Товары",               Объект.Товары);

   
ПараметрыФормы.Вставить("Заголовок",            ПараметрЗаголовок);

   
ОткрытьФорму("Обработка.автОбработкаТабличнойЧастиТовары.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);

КонецПроцедуры
// автИзменитьТабличнуюЧасть()

 

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

 

2) Результат обработки, возвращаемый в документ, естественно, следует обработать в событии "ОбработкаВыбора" формы:

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

    Перем
ВыполняемаяОперация;

    Если
ИсточникВыбора.ИмяФормы = "Обработка.автОбработкаТабличнойЧастиТовары.Форма.Форма" Тогда

        //-->
       
автОбработкаВыбораЗаполненияТЧТовары(ВыбранноеЗначение);

    КонецЕсли;

КонецПроцедуры
// ОбработкаВыбора()

&НаКлиенте
Процедура автОбработкаВыбораЗаполненияТЧТовары(ВыбранноеЗначение)

    //-->
   
автОбработкаВыбораЗаполненияТЧТоварыНаСервере(ВыбранноеЗначение);

КонецПроцедуры
// автОбработкаВыбораЗаполненияТЧТовары()

&НаСервере
Процедура автОбработкаВыбораЗаполненияТЧТоварыНаСервере(ВыбранноеЗначение)

   
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);

   
КолВоСтрокИсх = Объект.Товары.Количество();

   
МассивУдалить = Новый Массив;

    Для Каждого
СтрокаТовар Из Объект.Товары Цикл

        Если
ТаблицаТоваров.Найти(СтрокаТовар.НомерСтроки, "НомерСтрокиТЧ") = Неопределено Тогда

           
МассивУдалить.Добавить(СтрокаТовар);

        КонецЕсли;

    КонецЦикла;

    Для каждого
СтрокаТовара Из ТаблицаТоваров Цикл

        Если
СтрокаТовара.НомерСтрокиТЧ > КолВоСтрокИсх Тогда

           
СтрокаТовараТЧ = Объект.Товары.Добавить();

           
ЗаполнитьЗначенияСвойств(СтрокаТовараТЧ, СтрокаТовара);

        Иначе

           
СтрокаТовараТЧ = Объект.Товары.Получить(СтрокаТовара.НомерСтрокиТЧ - 1);

           
ЗаполнитьЗначенияСвойств(СтрокаТовараТЧ, СтрокаТовара, "Цена, Сумма, СтавкаНДС, СуммаНДС, ПроцентРучнойСкидки, СуммаРучнойСкидки, ПроцентАвтоматическойСкидки, СуммаАвтоматическойСкидки");

        КонецЕсли;

    КонецЦикла;


    Для Каждого
СтрокаТовар Из Объект.Товары Цикл

        Если
МассивУдалить.Найти(СтрокаТовар) = Неопределено Тогда

           
ОбработкаТабличнойЧастиТоварыКлиентСервер.ЗаполнитьСуммуВсегоВСтрокеТаблицы(СтрокаТовар, Объект.ЦенаВключаетНДС);

        КонецЕсли;

    КонецЦикла;

    Для Каждого
ЭлМас Из МассивУдалить Цикл

       
Объект.Товары.Удалить(ЭлМас);

    КонецЦикла;

   
ОбработкаТабличнойЧастиТоварыСервер.ЗаполнитьТипНоменклатурыВТаблице(Объект.Товары);
   
ПродажиКлиентСервер.РассчитатьИтоговыеПоказателиЗаказа(Объект, ЭтаФорма);
   
ОбработкаТабличнойЧастиТоварыСервер.ЗаполнитьПризнакИспользованияХарактеристик(Объект.Товары);
   
Элементы.КартинкаНесколькоСкладов.Картинка =    ОбщегоНазначенияУТКлиентСервер.ПолучитьКартинкуНесколькоСкладов(Объект.Товары, СкладГруппа, Истина);

КонецПроцедуры
// автОбработкаВыбораЗаполненияТЧТовары()

 

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

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

Например, для документа "РеализацияТоваровУслуг" концовка будет следующая:

       ...

    ОбработкаТабличнойЧастиТоварыКлиентСервер.ЗаполнитьСуммуВсегоВТаблице(Объект.Товары, Объект.ЦенаВключаетНДС);
   
ПродажиКлиентСервер.РассчитатьИтоговыеПоказателиРеализации(Объект, ЭтаФорма);
   
ОбработкаТабличнойЧастиТоварыСервер.ЗаполнитьПризнакИспользованияХарактеристик(Объект.Товары);
   
ОбработкаТабличнойЧастиТоварыСервер.ЗаполнитьТипНоменклатурыВТаблице(Объект.Товары);
   
Элементы.КартинкаНесколькоСкладов.Картинка = ОбщегоНазначенияУТКлиентСервер.ПолучитьКартинкуНесколькоСкладов(Объект.Товары, СкладГруппа);

Для документа "ПоступлениеТоваровУслуг" концовка будет следующая:

    ОбработкаТабличнойЧастиТоварыСервер.ЗаполнитьТипНоменклатурыВТаблице(Объект.Товары);
   
ЗакупкиКлиентСервер.РассчитатьИтоговыеПоказателиПоступления(Объект, ЭтаФорма);
   
ОбработкаТабличнойЧастиТоварыСервер.ЗаполнитьПризнакИспользованияХарактеристик(Объект.Товары);
   
Элементы.КартинкаНесколькоСкладов.Картинка = ОбщегоНазначенияУТКлиентСервер.ПолучитьКартинкуНесколькоСкладов(Объект.Товары, СкладГруппа);

 

У себя внедрял вызов этой обработки в документы:

  • - Заказ клиента,
  • - Заказ поставщику,
  • - Коммерческое предложение клиенту,
  • - Поступление товаров услуг,
  • - Реализация товаров услуг.

P.S.

Спасибо за внимание, удачных внедрений.

 

См. также

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Пользователь Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом. ВНИМАНИЕ! 09.01.25 г. планируется повышение цен на 20%!

28500 руб.

21.04.2017    97257    137    42    

220

Оптовая торговля Розничная торговля Обмен с ГосИС Бухгалтер Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полнофункциональное расширение (ранее известное как Модуль 1С-ЕГАИС) для взаимодействия типовых конфигураций 1С и ЕГАИС, предоставляющее максимум возможностей по работе с УТМ. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

828 руб.

15.12.2015    171243    826    364    

402

SALE! 10%

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

55778 50200 руб.

24.04.2015    195553    155    244    

284

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    236190    1070    898    

1008

Управление взаимоотношениями с клиентами (CRM) Оптовая торговля Розничная торговля Пользователь Платформа 1С v8.3 Оперативный учет Управляемые формы 1С:Управление торговлей 10 1С:Розница 2 Россия Управленческий учет Платные (руб)

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

30000 руб.

02.11.2015    112761    101    88    

185
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gavrikprog 118 01.03.12 16:06 Сейчас в теме
Приложенная обработка НЕ ВНЕШНЯЯ, сделать ее таковой не представляется возможным, исходя из того, что это не обработка заполнения, а обработка изменения имеющейся в таб. части информации.


Сомнительное утверждение
Проверять пока нет желания, но из того что знаю - вероятность > 50 процентов
2. happyden 25 28.03.12 12:44 Сейчас в теме
Вещь, прикрутил к 11.0.7.21 - юзеры пищат от счастья :)
3. salus 28 14.08.12 20:53 Сейчас в теме
Что за ссылки???

{Обработка.автОбработкаТабличнойЧастиТовары.Форма.Форма.Форма(519,54)}: Переменная не определена (ОбработкаТабличнойЧастиТоварыКлиентСервер)
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", <<?>>ОбработкаТабличнойЧастиТоварыКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(Объект));
4. lonedog 62 07.09.12 12:33 Сейчас в теме
Что за ссылки???
+1


{Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента.Форма(5790,13)}: Переменная не определена (ОбработкаТабличнойЧастиТоварыКлиентСервер)
<<?>>ОбработкаТабличнойЧастиТоварыКлиентСервер.ЗаполнитьСуммуВсегоВСтрокеТаблицы(СтрокаТовар, Объект.ЦенаВключаетНДС); (Проверка: Сервер)
5. lonedog 62 07.09.12 17:44 Сейчас в теме
Прикрутил к 11.0.8.8 пришлось закомментировать пару процедур:

 ОбработкаТабличнойЧастиТоварыКлиентСервер.ЗаполнитьСуммуВсегоВСтрокеТаблицы(СтрокаТовар, Объект.ЦенаВключаетНДС);

 ОбработкаТабличнойЧастиТоварыСервер.ЗаполнитьТипНоменклатурыВТаблице(Объект.Товары);

 Элементы.КартинкаНесколькоСкладов.Картинка =   ОбщегоНазначенияУТКлиентСервер.ПолучитьКартинкуНесколькоСкладов(Объект.Товары, СкладГруппа);


и так еще по мелочи...
да еще пришлось прикрутить пересчет суммы с НДС
пока опробовал на документе "Поступления товаров услуг"
6. _n26__ 29.01.13 11:56 Сейчас в теме
Спасибо! Очень пригодилось!
7. Open-BS 3 26.03.13 15:14 Сейчас в теме
Огромное спасибо! Вы сэкономили мне часов 5 кодинга :)
8. svetanik 5 11.11.13 06:45 Сейчас в теме
Действительно, очень своевременная обработка, т.к. мои бухгалтера привыкли на документами "куражиться", добиваясь нужного результата... А в УТ11 с удивлением не обнаружили такой возможности. Недоработочка разработчиков. Спасибо, что исправили!
9. akvatorg 2 09.12.14 11:54 Сейчас в теме
{Форма.Форма.Форма(116,3)}: Переменная не определена (ОбработкаТабличнойЧастиТоварыСервер)
<<?>>ОбработкаТабличнойЧастиТоварыСервер.ОбработатьСтрокуТЧСервер(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения); (Проверка: Сервер)
10. child1983 13 08.01.15 09:26 Сейчас в теме
Было бы неплохо и для Бухгалтерии 3.0 такую обработку
очень пригодилась бы когда работают от обратного сначала реализацию делают, а на ее основании потом поступление и нужны цены ниже
11. Tangram 161 26.01.15 12:17 Сейчас в теме
Оч. полезная обработка. Но при подключении к 11.1.7 пришлось практически все вызовы общих модулей переделывать, все имена поменялись.
12. romankoav 4 24.10.17 18:00 Сейчас в теме
А в 2017 году так и не появилось внешней альтернативы? Или может в 11 торговле что-то поменялось? Почему обработку нельзя сделать внешней?
Оставьте свое сообщение