Колонка с остатками в документе "Заказ Поставщику"

В прошлый раз мы рассмотрели, как отсортировать товары при заказе поставщику. Мы поставили некоторое условие, что бы при заполнении табличной части по минимальным остаткам в таблицу попадали только те товары, которые закупаются именно у выбранного контрагента. Смотрим тут: Как отсортировать товары при заказе поставщику.

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

Первым делом добавим колонку в табличную часть документа.

ВАЖНО!! Обязательно сохраняем базу!! Смотрим тут - как сохранить базу

Открываем программу в режиме конфигуратор и находим документ "ЗаказПоставщику"


Открываем документ - дважды щелкаем на нем мышкой. В открывшемся окне по кнопке "Новый"  в поле "Реквизиты табличной части" добавляем новый реквизит.


На вкладке "общие" в поле "Идентификатор" пишем "Остаток", а ниже в поле "Тип значения" выбираем "Число" и указываем "Длина" - 14, "Точность" - 3. По кнопке "ОК" записываем.




Теперь добавим в таблицу. Нажимаем кнопку "Форма" и переходим к форме документа.


В верхнем меню нажимаем "Вставить" и выбираем "Реквизиты.."


В окне добавления реквизитов в поле "Реквизиты табличной части" ставим галочку у реквизита "Остаток" и нажимаем кнопку "Вставить"


Колонка вставляется в конец таблицы. Мышкой перетаскиваем ее на нужное нам место. Я поставила эту колонку рядом с колонкой "Количество".


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

1. Остаток заполняется при заполнении табличной части .
Переходим на вкладку "Модуль". По кнопочке с биноклем внизу на панели кнопок в окне с функциями и процедурами выбираем  "ЗаполнитьТаблЧастьПоТЗ" (дважды щелкаем на ней мышкой или нажимаем кнопку "Перейти")

А теперь внимательно смотрим что и куда нужно написать - нужное обведено красными прямоугольниками

Продублирую строки, которые нужно написать, на случай, если не очень четко можно рассмотреть на рисунке:

Первый прямоугольник:

РегОст=СоздатьОбъект("Регистр.ОстаткиТМЦ");
Если ДатаДок<ПолучитьДатуТА() Тогда
   РегОст.ВременныйРасчет();
РассчитатьРегистрыНа(ДатаДок);
КонецЕсли; 

и второй :
        Остаток=РегОст.СводныйОстаток(Фирма,Номенклатура,,,"Количество");

Сохраняем и закрываем конфигуратор.

Напоминаю, что остатки заполняются на дату документа. Если документ оформляется задним числом, то и остатки будут заполняться на то самое "заднее число". Если вы хотите, что бы остатки всегда заполнялись на сегодняшний момент (даже если документ оформляется очень задним числом) - тогда из первого прямоугольника можно удалить все, кроме первой строчки, а точнее - строка: 
        РегОст=СоздатьОбъект("Регистр.ОстаткиТМЦ");

остается, а все остальное можно удалить. 

Строка из второго прямоугольника заполняет колонку "Остаток" в таблице.

У этого способа есть недостаток - остаток заполняется не во всех случаях. Например, при заполнении по минимальному остатку, по заявке и т.п. остаток будет заполняться. Но если вы захотите добавить товар через "Подбор" - остаток заполняться не будет. Так же остаток не будет заполняться, если вы будете добавлять новую строчку в таблицу через "новую строку" или по кнопке "Ins".

Я не хочу путать вас и искать все места, куда нужно поставить условия для заполнения остатка в таблице - этих мест несколько, но если кому-то будет действительно очень нужно - можно будет потом и рассмотреть.

Посмотрим в программе. Создаем документ и заполняем по минимальному остатку:



А теперь в этот же документ добавим товар через "Подбор"

Остаток не заполнился.

2. Заполняем остаток по кнопочке.
Давайте добавим в документ кнопочку, по которой будет заполняться остаток. Да, это лишнее движение для работника - нажать кнопочку, но зато это просто и не нужно искать все места в коде программы, куда нужно поставить условия для заполнения остатка.

Нажимаем кнопку, на панели кнопок внизу (можно в верхнем меню нажать "Вставить" и выбрать "Кнопка")

и внизу слева над кнопками "Записать" "Провести" и т.п. рисуем кнопку. В окне свойств кнопки на вкладке "Общие" в поле "Заголовок" пишем "Остаток" - это название кнопки, можно написать, например, "Заполнить остатки"... 


На вкладке "Дополнительно" в поле "Формула" пишем "ЗаполнитьОстаток()" - это процедура, которую мы ниже напишем в модуле документа и которая будет выполняться при нажатии этой кнопки.

По кнопке "ОК" записываем. Щелкаем на кнопке правой клавишей мыши и выбираем "Поместить" - " В слой ТабличнаяЧасть". Теперь на вкладке "Шапка" в документе мы эту кнопочку видеть не будем - она будет видна только на вкладке "Табличная часть".


Теперь запишем функцию в модуль документа

В самом верху модуля под словами //СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ вставим новую процедуру

Продублирую, на случай, если что-то плохо читается:

Процедура ЗаполнитьОстаток()    
РегОст=СоздатьОбъект("Регистр.ОстаткиТМЦ");
Если ДатаДок<ПолучитьДатуТА() Тогда
   РегОст.ВременныйРасчет();
РассчитатьРегистрыНа(ДатаДок);
КонецЕсли; 
ВыбратьСтроки();
Пока ПолучитьСтроку()=1  Цикл
   Остаток=РегОст.СводныйОстаток(Фирма,Номенклатура,,,"Количество");
КонецЦикла;
КонецПроцедуры

Сохраняем, закрываем конфигуратор.
Смотрим в программе, что у нас получилось. Открываем программу. Создаем документ "Заказ поставщику" (или можно открыть уже существующий) и заполняем его по минимальному остатку


Теперь нажимаем нашу новую кнопку "Остаток"


Наши остатки заполнились.


0 коммент.:

Отправить комментарий

Related Posts Plugin for WordPress, Blogger...