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

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


1. Открываем конфигуратор. Документы —> Быстрая продажа —> Форма —> Модуль
2. Идем в конец модуля, после последней строки вставляем код

// Предопределенная процедура
//sw
Процедура ОбработкаПодбора(ВыбЗнач, КонтФормыПодбора)
   //есть ставки налогов, есть скидка
   глОбработкаПодбора(Контекст, ВыбЗнач, 1, 1, 1);
КонецПроцедуры // ОбработкаПодбора()

Процедура ЗаполнитьПоОстаткам()
   //проверки
   Если Форма.Параметр <> "Перемещение" Тогда
      Предупреждение("Только для внутрифирменных продаж");
      Возврат;
   ИначеЕсли КоличествоСтрок() <> 0 Тогда
      Если Вопрос("Заполнить по отрицательным остаткам склада покупателя (перед заполнением табличная часть будет очищена)?", "Да+Нет", 60) <> "Да" Тогда
         Возврат;
      КонецЕсли;
      Сообщить("заполняю");
      УдалитьСтроки();
   КонецЕсли;
   //конец проверок

   ТекстЗапросаОстатков="
   |ФирмаПокупат = Регистр.ОстаткиТМЦ.Фирма;
   |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
   |СкладПокупат = Регистр.ОстаткиТМЦ.Склад;
   |Количество = Регистр.ОстаткиТМЦ.Количество;
   |Функция КоличествоКонОст = КонОст(Количество);
   |Группировка Номенклатура без групп;
   |Условие(ФирмаПокупат=ФирмаПокупателя);
   |Условие(СкладПокупат=СкладПокупателя);";

   ЗапросПоОстаткам = СоздатьОбъект("Запрос");
   Если ЗапросПоОстаткам.Выполнить(ТекстЗапросаОстатков) = 0 Тогда
      Возврат;
   КонецЕсли;
   флаг=0; // для отслеживания того что отбор был

   СписокНоменклатуры =СоздатьОбъект("СписокЗначений"); // думаю пригодится.

   Пока ЗапросПоОстаткам.Группировка(1) = 1 Цикл
      Если ЗапросПоОстаткам.КоличествоКонОст < 0 Тогда //нам нужны отрицательные остатки
         флаг=1;
         НоваяСтрока();
         Номенклатура=ЗапросПоОстаткам.Номенклатура;
         Количество=-ЗапросПоОстаткам.КоличествоКонОст;
         глПересчетТаблЧасти(Контекст,"Номенклатура");
         глПересчетТаблЧасти(Контекст,"Количество");
      КонецЕсли;
   КонецЦикла;

   Если флаг=0 Тогда
      Сообщить("У организации " + ФирмаПокупателя + " по складу " + СкладПокупателя + " не найдено отрицательных остатков");
      Возврат;
   КонецЕсли;
КонецПроцедуры

3. Переходим в диалог формы (слой табличная часть). Вставляем кнопку (Главное меню —> Вставка —> Кнопка).

4. Переходим на кнопке на вкладку «Дополнительно» и заполняем формулу вписанной в модуль процедурой: ЗаполнитьПоОстаткам()

 Заполнить по остаткам
5. Сохраняем изменения конфигурации. Запускаем 1С.

Кнопка заполнить работает и экономит время. 5 минут работы ))

 

зы. спасибо этим публикациям

http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3432 

http://forum.infostart.ru/forum11/topic42164/

 

3 Comments

  1. Фред

    Эх! Опять куда-то в модуль послали…)) Я в модуль ходить давно боюсь….как за три месяца первичку ручками восстановил…((

    Reply
  2. eleonora

    Спасибо! А можно получить остатки на определенную дату?

    Reply
  3. Vesna789

    Добрый вечер, не могли помочь? Сделала все как вы описали, работает но выдает ошибку:

    ЗаполнитьПоОстаткам<<?>>()

    Процедура вызывается как функция (ЗаполнитьПоОстаткам)

    Что я не правильно сделала?

    Reply

Leave a Comment

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