Остатки в подборе товаров в документ продажи по нескольким складам

12.03.19

Задачи пользователя - Адаптация типовых решений

Остатки в подборе товаров в документ продажи по нескольким складам без включенной опции «Реализация товаров с нескольких складов».

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

За подбор товаров в документ продажи отвечает обработка «ПодборТоваровВДокументПродажи». Также для формирования динамического списка «СписокНоменклатура» формы подбора используется общий модуль  «ПодборТоваровСервер» , собственно этот модуль и доработаем.

Первое что нужно сделать это заставить думать программу, что мы используем реализацию с нескольких складов, за которую отвечает  опция «Реализация товаров с нескольких складов» в настройках продаж. Делается это через функцию «ТекстЗапросаСпискаФормыПодбора» . Функция формирует текст  запроса  динамического списка.  В данной функции  в области «ПодставитьЗначенияПараметровВШаблонТекстаЗапроса» Ищем строчку: ПараметрыЗамены.Вставить("НесколькоСкладов",НесколькоСкладов);

Если переменная НесколькоСкладов = Истина то в запросе меняется условие  с  Т.Склад =&Склад на Т.Склад В(&Склад).

Для того чтобы программа понимала что используется несколько складов  приведем код к следующему виду:

Если    Форма.Склады.Количество() = 1  Тогда
 Если Форма.Склады[0].Значение = Справочники.Склады.НайтиПоНаименованию("Оптовый склад").Ссылка  Тогда
     ПараметрыЗамены.Вставить("НесколькоСкладов",Истина);
 Иначе
     ПараметрыЗамены.Вставить("НесколькоСкладов",НесколькоСкладов);
 КонецЕсли;
Иначе
     ПараметрыЗамены.Вставить("НесколькоСкладов",НесколькоСкладов);
КонецЕсли;

В место «оптовый склад» указать склад, с которого менеджеры работают с безнальщиками.

Разберем данный код.

Условие  «Если    Форма.Склады.Количество() = 1  » срабатывает тогда когда подбор товаров используется в документе закупки или в документе продажи не выбран склад.

Условие «Если Форма.Склады[0].Значение = Справочники.Склады.НайтиПоНаименованию("Оптовый склад").Ссылка» срабатывает когда менеджер по работе с  безнальщиками  выбирает «Оптовый склад», соответственно параметр НесколькоСкладов принудительно устанавливается в значение истина .

Далее ищем процедуру «ПриСозданииФормыПодбораНаСервере» в данной процедуре нужна область  «УстановитьСкладскиеНастройкиПоПараметрам» .

В данной области  ищем :

// Если склад не выбран, то заполнить список складов всеми разрешенными складами.
Если Форма.Склады.Количество() = 0
И Параметры.Свойство("ОстаткиПоВсемСкладам")
И Параметры.ОстаткиПоВсемСкладам Тогда
  Форма.ОстаткиПоВсемСкладам = Истина;
  ЗапросПоСкладам = Новый Запрос(
  "ВЫБРАТЬ РАЗРЕШЕННЫЕ
  | Склады.Ссылка КАК Склад
  |ИЗ
  | Справочник.Склады КАК Склады
  |ГДЕ
  | (Не Склады.ЭтоГруппа)");
  Форма.Склады.ЗагрузитьЗначения(ЗапросПоСкладам.Выполнить().Выгрузить().ВыгрузитьКолонку("Склад"));
КонецЕсли;

вместо :

Если Форма.Склады.Количество() = 0 Тогда

 СкладПараметр = Справочники.Склады.ПустаяСсылка();

ИначеЕсли Форма.Склады.Количество() = 1 Тогда

 СкладПараметр = Форма.Склады[0].Значение;

Иначе

 СкладПараметр = Форма.Склады.ВыгрузитьЗначения();

КонецЕсли;

вставляем :

Если    Форма.Склады.Количество() = 1  Тогда

 Если Форма.Склады[0].Значение = Справочники.Склады.НайтиПоНаименованию("Оптовый склад").Ссылка Тогда

  СкладыМассив = Новый Массив;

  СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Оптовый склад").Ссылка);  

   СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Уличный склад").Ссылка);

  СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин Павильон").Ссылка);

  СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин Краски").Ссылка);

  СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин 2-й этаж (касса 3, касса 4)").Ссылка);

  СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин 2-й этаж").Ссылка);

  СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин 1-й этаж").Ссылка);

  СкладПараметр = СкладыМассив;

Иначе

 Если Форма.Склады.Количество() = 0 Тогда

 СкладПараметр = Справочники.Склады.ПустаяСсылка();

ИначеЕсли Форма.Склады.Количество() = 1 Тогда

 СкладПараметр = Форма.Склады[0].Значение;

Иначе

 СкладПараметр = Форма.Склады.ВыгрузитьЗначения();

КонецЕсли;

 

КонецЕсли;

иначе

Если Форма.Склады.Количество() = 0 Тогда

 СкладПараметр = Справочники.Склады.ПустаяСсылка();

ИначеЕсли Форма.Склады.Количество() = 1 Тогда

 СкладПараметр = Форма.Склады[0].Значение;

Иначе

 СкладПараметр = Форма.Склады.ВыгрузитьЗначения();

КонецЕсли;

КонецЕсли;

 

Разберем код.

Условие «Если    Форма.Склады.Количество() = 1 » проверяет выбран ли склад в документе продажи или подбор используется в документах закупки.

Условие «Если Форма.Склады[0].Значение = Справочники.Склады.НайтиПоНаименованию("Оптовый склад").Ссылка» проверяет, выбран ли оптовый склад.

Если выбран «Оптовый склад» то формируется массив с перечислением розничных складов, после чего данный массив передается в переменную СкладПараметр,  который подставляется в параметр запроса динамического списка номенклатуры.

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

P. S. Строго не судите, это первая моя статья. Код тоже не уникален и, возможно, гуру в 1С сделал бы лучше. Спасибо, что дочитали до конца.   

Вступайте в нашу телеграмм-группу Инфостарт

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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Адаптация типовых решений 1С:Предприятие 8 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

32330 руб.

29.06.2023    12136    35    15    

42

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

9760 руб.

17.06.2025    3458    9    0    

8

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

6000 руб.

07.02.2023    13028    117    23    

72

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

Расширение для вывода информации об остатках и ценах номенклатуры в форме списка и выбора номенклатуры. (УТ 11, КА 2, ERP). Позволяет получать информацию о ценах, остатках и доступности в разрезе складов и характеристик номенклатуры, информацию по документам резерва.

7930 руб.

16.10.2025    1271    2    0    

2

Адаптация типовых решений 1С 8.3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Беларусь Россия Платные (руб)

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

21859 руб.

29.12.2025    1316    1    8    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Eremkin 14.03.19 10:45 Сейчас в теме
СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Оптовый склад").Ссылка);

СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Уличный склад").Ссылка);

СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин Павильон").Ссылка);

СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин Краски").Ссылка);

СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин 2-й этаж (касса 3, касса 4)").Ссылка);

СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин 2-й этаж").Ссылка);

СкладыМассив.Добавить(Справочники.Склады.НайтиПоНаименованию("Магазин 1-й этаж").Ссылка);
Показать


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

Справочники.Склады.НайтиПоНаименованию("Оптовый склад")


Тут и так возвращается Ссылка, если найдено. Дополнительная ".Ссылка" +1 скрытый серверный вызов
user614022_compaq994; Ali1976; +2 Ответить
2. klepser 22 14.03.19 13:31 Сейчас в теме
Делалось все на коленке. Менеджеру нужно было срочно. За замечание спасибо. Появится время переделаю.
4. Eremkin 14.03.19 17:57 Сейчас в теме
(2)Это еще останется надолго :)
user614022_compaq994; cleaner_it; +2 Ответить
3. Sakhatyr_Vitaliy 14.03.19 15:38 Сейчас в теме
Вместо:

Вместо



Вставляем:

Вставляем


А ещё лучше забыть про "НайтиПоНаименованию" или "НайтиПоКоду", а работать только с метаданными (то есть добавить справочник/РС).

Делали не через расширение? Просто сняли с поддержки?
5. klepser 22 15.03.19 08:49 Сейчас в теме
Не через расширение. С поддержки база снята. Доработок много в базе.
Для отправки сообщения требуется регистрация/авторизация