Имя: Пароль:
1C
 
Как получить штрихкод (число) по имени позиции номенклатуры?
0 Iliya
 
08.07.08
03:02
Собственно сабж.
Помогите. Не пинайте сильно за ламерские вопросы.

Есть СтрокаТабличнойЧасти.Номенклатура с введенным туда именем позиции номенклатуры
Нужно получить штрихкод и записать его в СтрокаТабличнойЧасти.штрих_код
1 Trance_1C
 
08.07.08
03:18
Непонятно что за конфигурация, но наверно тебе нужно выбрать из регистра сведений все штрих-коды твоей номенклатуры и отсортировав получить один из них.
напиши типа вот такую функцию которая будет возвращать штрих-код по переданной номенклатуре

Функция ПолучитьШК(Товар)
ШК="";
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
   |Штрихкоды.Штрихкод КАК Штрихкод
|ИЗ
|    РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
|    Штрихкоды.Владелец = &Владелец
|
|СГРУППИРОВАТЬ ПО
|    Штрихкоды.Штрихкод
|
|УПОРЯДОЧИТЬ ПО
|    Штрихкод УБЫВ
"
Выб = Запрос.Выполнить().Выбрать();
Если Выб.Следующий() Тогда
ШК=Выб.Штрихкод;
КонецЕсли;
Возврат(ШК);
КонецФункции
2 Trance_1C
 
08.07.08
03:20
с установленным параметром запроса, будет правильней :)
хотя за ошибки не ручаюсь писал все прямо здесь...

Функция ПолучитьШК(Товар)
ШК="";
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
   |Штрихкоды.Штрихкод КАК Штрихкод
|ИЗ
|    РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
|    Штрихкоды.Владелец = &Владелец
|
|СГРУППИРОВАТЬ ПО
|    Штрихкоды.Штрихкод
|
|УПОРЯДОЧИТЬ ПО
|    Штрихкод УБЫВ
"
Запрос.УстановитьПараметр("Владелец",Товар);
Выб = Запрос.Выполнить().Выбрать();
Если Выб.Следующий() Тогда
ШК=Выб.Штрихкод;
КонецЕсли;
Возврат(ШК);
КонецФункции
3 Iliya
 
08.07.08
08:51
Большое спасибо.
Я так и делал, неправильно только немножко запрос составлял.
Теперь все работает :)
4 saladinos
 
28.08.08
20:58
а как и куда эту фунция вставить. Проблема такая: Конфа управление розничничной торговлей . нужно в документ поступление товаров  добавить реквизит штрихкод ( должно показывать штрихкод по каждой позиции).
5 Михаил Козлов
 
28.08.08
21:17
Если по ШК не надо сортировать и искать, то добавьте колоку в таб. поле и формируйте текст ШК в ПриПолученииДанных.
6 saladinos
 
28.08.08
23:09
Как это сделать? Я в 1с очень слабо разбираюсь. Напишите, если можно пошагово.
Или где можно найти такую информацию . Заранее спасибо.
7 saladinos
 
29.08.08
22:20
Куда здесь его вставлять ?


Перем мУчетнаяПолитика Экспорт;
Перем мРассчитыватьАвтоматическиеСкидки;
Перем мТерминалы;

// Коллекция колонок табличного поля "Товары".
Перем мКолонкиТовары;

// Хранит дерево кнопок подменю заполнение ТЧ
Перем мКнопкиЗаполненияТЧ;


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

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

   ЭлементыФормы.Склад.Доступность =
       (ЭлементыФормы.Склад.Доступность
       И УправлениеПользователями.ПолучитьБулевоЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.ИзменятьСклад, Истина));

   ЭлементыФормы.Ответственный.Доступность =
       (ЭлементыФормы.Ответственный.Доступность
       И УправлениеПользователями.ПолучитьБулевоЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.ИзменятьОтветственного, Истина));

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

           КолонкаСтавкаНДС.Доступность =
               (КолонкаСтавкаНДС.Доступность
               И УправлениеПользователями.ПолучитьБулевоЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.ИзменятьСтавкуНДС, Истина));
           
       КонецЕсли;
       
   КонецЦикла;
   
КонецПроцедуры //УстановитьДоступностьЭлементовФормДокумента()
   
// Процедура вызывается при нажатии кнопки "Изменить" командной панели
// табличного поля "Товары", вызывает сервисный механизм для изменения табличной части
//
Процедура КоманднаяПанельТоварыИзменить(Кнопка)

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

   //Установим реквизиты и переменные формы.
   ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект             = ЭтотОбъект;
   ФормаИзменениеТабличнойЧастиТовары.мФормаДокумента            = ЭтаФорма;
   ФормаИзменениеТабличнойЧастиТовары.мЕстьНДС                   = УчитыватьНДС;
   ФормаИзменениеТабличнойЧастиТовары.мЕстьЦенаВРознице          = Ложь;

   //Перенесем табличную часть
   ИзменениеТабличнойЧастиТовары.Товары.Загрузить(Товары.Выгрузить());

   // Открываем форму обработки
   ФормаИзменениеТабличнойЧастиТовары.Открыть();

КонецПроцедуры

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

// Процедура обрабатывает изменение номенклатуры в ТЧ товары. Для обращений извне.
//
Процедура ТоварыПриИзмененииНоменклатуры(СтрокаТабличнойЧасти) Экспорт

   Перем УстановленаСтавкаНДС;
   
   ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТабличнойЧасти,ЭтотОбъект);
   
   ОбработкаТабличныхЧастей.ЗаполнитьПараметрыТабЧастиПоКонтрагенту(СтрокаТабличнойЧасти, ЭтотОбъект, УстановленаСтавкаНДС);
   СтрокаТабличнойЧасти.Коэффициент   = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
   
   Если Не УстановленаСтавкаНДС Тогда
       СтрокаТабличнойЧасти.СтавкаНДС = СтрокаТабличнойЧасти.Номенклатура.СтавкаНДС;
   КонецЕсли;

   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, УчитыватьНДС, СуммаВключаетНДС);
   
   //Активизирует колонку "Количество"
   РаботаСДиалогами.АктивизироватьЯчейкуТабличногоПоля(ЭлементыФормы.Товары, СтрокаТабличнойЧасти, мКолонкиТовары.Количество);
   
КонецПроцедуры

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

   //Активизирует колонку "Количество"
   РаботаСДиалогами.АктивизироватьЯчейкуТабличногоПоля(ЭлементыФормы.Товары, СтрокаТабличнойЧасти, мКолонкиТовары.Количество);

КонецПроцедуры

// Процедура - обработчик события "ПриИзменении" поля Номенклатура
// в строке табличной части "Товары".
//
Процедура ТоварыНоменклатураПриИзменении(Элемент)
   
   СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
   
   ТоварыПриИзмененииНоменклатуры(СтрокаТабличнойЧасти);
   
КонецПроцедуры

// Процедура - обработчик события "ПриИзменении" поля Количество
// в строке табличной части "Товары".
//
Процедура ТоварыКоличествоПриИзменении(Элемент)
   
   СтрокаТабличнойЧасти=ЭлементыФормы.Товары.ТекущиеДанные;
   
   ТоварыПриИзмененииКоличества(СтрокаТабличнойЧасти);
   
КонецПроцедуры

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

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

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

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

// Процедура - обработчик события "ПриВыводеСтроки" табличной части
// "Товары".
//
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   
   Если ЭлементыФормы.Товары.Колонки.Всего.Видимость Тогда
       
       ОформлениеСтроки.Ячейки.Всего.УстановитьТекст(Формат(ДанныеСтроки.Сумма + ?(СуммаВключаетНДС, 0, ДанныеСтроки.СуммаНДС),
                                                     "ЧЦ=15;ЧДЦ=2"));
       
   КонецЕсли;

   РаботаСДиалогами.ПоказатьКодАртикул(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Номенклатура);

КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////
//// ФУНКЦИИ ВЗАИМОДЕЙСТВИЯ С ТОРГОВЫМ ОБОРУДОВАНИЕМ (ОБЩИЕ ФУНКЦИИ API)

// Процедура - обработчик внешнего события, которое возникает при посылке
// внешним приложением сообщения, сформированного в специальном формате.
// Внешнее событие сначала обрабатывается всеми открытыми формами, имеющими
// обработчик этого события, а затем может быть обработано в процедуре модуля
// приложения с именем ОбработкаВнешнегоСобытия().
//
// Параметры:
//  Источник - <Строка>
//           - Источник внешнего события.
//
//  Событие  - <Строка>
//           - Наименование события.
//
//  Данные   - <Строка>
//           - Данные для события.
//
Процедура ВнешнееСобытие(Источник, Событие, Данные)
   
   Если Не ВводДоступен() Тогда
       Возврат;
   КонецЕсли;
   
   ПолучитьСерверТО().ОбработатьВнешнееСобытие(Событие, Данные, ЭтаФорма);
   
КонецПроцедуры // ВнешнееСобытие()

// Функция возвращает признак того, что клиент поддерживает работу с видом ТО,
// переданным в качестве параметра.
//
// Параметры:
//  Вид      - <ПеречислениеСсылка.ВидыТорговогоОборудования>
//           - Вид торгового оборудования, информация о поддержке
//             которого запрашивается.
//
// Возвращаемое значение:
//  <Булево> - Признак поддержки указанного класса торгового оборудования.
//
Функция ПоддерживаетсяВидТО(Вид) Экспорт
   
   Результат = Ложь;
   
   Если Вид = Перечисления.ВидыТорговогоОборудования.СканерШтрихКода
       Или Вид = Перечисления.ВидыТорговогоОборудования.ТерминалСбораДанных Тогда
       Результат = Истина;
   КонецЕсли;
   
   Возврат Результат;
   
КонецФункции // ПоддерживаетсяВидТО()

///////////////////////////////////////////////////////////////////////////////
//// ФУНКЦИИ ВЗАИМОДЕЙСТВИЯ С ТОРГОВЫМ ОБОРУДОВАНИЕМ (СКАНЕР ШТРИХКОДА)

// Функция осуществляет обработку считывания штрих-кода номенклатуры
//
// Параметры:
//  Номенклатура   - <СправочникСсылка.Номенклатура>
//                 - Номенклатура, штрих-код которой был отсканирован.
//
//  Единица        - <СправочникСсылка.ЕдиницыИзмерения>
//                 - Единица измерения отсканированной номенклатуры.
//
//  Количество     - <Число>
//                 - Количество отсканированной номенклатуры.
//
//  СШК            - <Строка>
//                 - Идентификатор сканера штрих-кода, с которым связано данное
//                   событие.
//
// Возвращаемое значение:
//  <Булево>       - Данная ситуация обработана.
//
Функция СШКНоменклатура(Номенклатура, Единица, Количество, СШК) Экспорт

   РаботаСДиалогами.ОбработкаПодбора(ЭтаФорма, Товары,
                                            Номенклатура,
                                            Единица, Количество);

   Возврат Истина;

КонецФункции // СШКНоменклатура()

// Функция осуществляет обработку считывания штрих-кода информационной карты
//
// Параметры:
//  Карта    - <СправочникСсылка.ИнформационныеКарты>
//           - Отсканированная информационная карта.
//
//  СШК      - <Строка>
//           - Идентификатор сканера штрих-кода, с которым связано данное
//             событие.
//
// Возвращаемое значение:
//  <Булево> - Данная ситуация обработана.
Функция СШКИнформационнаяКарта(Карта, СШК) Экспорт
   
   Предупреждение("Подбор информационных карт в данной форме не предусмотрен!");
   Возврат Истина;
   
КонецФункции // СШКИнформационнаяКарта()
// Функция осуществляет обработку считывания штрихового кода, который не был
// зарегистрирован.
//
// Параметры:
//  Штрихкод - <Строка>
//           - Считанный код.
//
//  ТипКода  - <ПланыВидовХарактеристикСсылка.ТипыШтрихкодов>
//           - Тип штрихкода. Пустая ссылка в случае, если тип определить не
//             представляется возможным.
//
//  СШК      - <Строка>
//           - Идентификатор сканера штрих-кода, с которым связано данное
//             событие.
//
// Возвращаемое значение:
//  <Булево> - Данная ситуация обработана.
Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК) Экспорт
   
   Возврат Ложь;
   
КонецФункции // СШКНеизвестныйКод()

// Процедура осуществляет обработку ошибки, произошедшей при работе со сканером
// штрих-кода.
//
// Параметры:
//  Ошибка    - <ПеречислениеСсылка.ТООшибки*>
//            - Возникшая ошибка.
//
//  Штрихкод  - <Строка>
//            - Считанный штрихкод или пустая строка, если штрихкод не был
//              считан.
//
//  ТипШК     - <ПланыВидовХарактеристикСсылка.ТипыШтрихкодов>
//            - Тип штрихкода или пустая ссылка в случае, если тип не определён.
//
//  СШК       - <Строка>
//            - Идентификатор сканера штрих-кода, с которым связано данное
//              событие.
Процедура СШКОшибка(Ошибка, Штрихкод, ТипШК, СШК) Экспорт
   
   Текст = ПолучитьСерверТО().ПолучитьТекстОшибкиСШКТО(Ошибка, Штрихкод, ТипШК);
   Предупреждение(Текст);
   
КонецПроцедуры // СШКОшибка()

// Процедура - обработчик нажатия на кнопку "Печать".
// Открывает форму выбора печатных форм объекта.
//
Процедура ОсновныеДействияФормыПечать(Кнопка)
   
   УниверсальныеМеханизмы.ОткрытьФормуВыбораПечатныхФормОбъекта(ЭтотОбъект, ЭтаФорма);
   
   // Установить печатную форму по умолчанию.
   РаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект, ЭтаФорма);
   
КонецПроцедуры

// Процедура вызывается при нажатии кнопки "Печать" командной панели формы,
// вызывает печать по умолчанию для формы документа.
//
Процедура ОсновныеДействияФормыДействиеПечать(Кнопка)

   УниверсальныеМеханизмы.НапечататьДокументПоУмолчанию(ЭтотОбъект);

КонецПроцедуры // ОсновныеДействияФормыДействиеПечать()

Процедура ПриЗакрытии()
   ПолучитьСерверТО().ОтключитьКлиента(ЭтаФорма);
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ ОБРАБОТКИ СВОЙСТВ И КАТЕГОРИЙ
   

// Процедура выполняет открытие формы работы со свойствами документа
//
Процедура ДействияФормыДействиеОткрытьСвойства(Кнопка)

   РаботаСДиалогами.ОткрытьСвойстваДокумента(ЭтотОбъект, ЭтаФорма);

КонецПроцедуры // ДействияФормыДействиеОткрытьСвойства()

// Процедура выполняет открытие формы работы с категориями документа
//
Процедура ДействияФормыДействиеОткрытьКатегории(Кнопка)

   РаботаСДиалогами.ОткрытьКатегорииДокумента(ЭтотОбъект, ЭтаФорма);

КонецПроцедуры // ДействияФормыДействиеОткрытьКатегории()

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

//Процедура вызывается при выборе пункта подменю "Структура подчиненности" меню "Перейти".
//
Процедура ДействияФормыСтруктураПодчиненностиДокумента(Кнопка)
   
   РаботаСДиалогами.ПоказатьСтруктуруПодчиненностиДокумента(Ссылка);
   
КонецПроцедуры


// Процедура - обработчик события "ПриИзменении" поля Склад
//
Процедура СкладПриИзменении(Элемент)
   
   ПриИзмененииСклада();
   УправлениеВидимостью();
   
КонецПроцедуры


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

// Процедура вызывается при выборе пункта "ИзТерминалаСбораДанных"
// меню кнопки "Сервис" командной панели табличного поля "Товары"
//
Процедура КоманднаяПанельТоварыИзТерминалаСбораДанных(Кнопка)
   
   ПолучитьСерверТО().ЗагрузитьИзТерминалаСбораДанных(мТерминалы, ЭтаФорма);
   
КонецПроцедуры

// Процедура - обработчик нажатия на переключатель "УчитыватьНДС".
// Пересчитывает НДС, устанавливает видимость реквизитов на форме.
//
Процедура УчитыватьНДСПриИзменении(Элемент)
   
   Если УчитыватьНДС = Ложь Тогда
       СуммаВключаетНДС = Ложь;
   КонецЕсли;
   
   ОбработкаТабличныхЧастей.ПересчитатьСуммыНДСТабЧасти(ЭтотОбъект, "Товары");
   
   УправлениеВидимостью();
   
КонецПроцедуры

// Процедура - обработчик нажатия на переключатель "СуммаВключаетНДС".
// Пересчитывает НДС в ТЧ.
//
Процедура СуммаВключаетНДСПриИзменении(Элемент)
   
   ОбработкаТабличныхЧастей.ПриИзмененииФлагаДокументаСуммаВключаетНДС(ЭтотОбъект);
   
   ОбработкаТабличныхЧастей.ПересчитатьСуммыНДСТабЧасти(ЭтотОбъект, "Товары");

КонецПроцедуры

// Процедура устанавливает видимость элементов формы и колонок табличных частей,
// видимость которых определяется программно.
//
Процедура УправлениеВидимостью()
   
   РаботаСДиалогами.УстановитьВидимостьКолонокНДС(ЭтаФорма, УчитыватьНДС);
   
   ЭлементыФормы.СуммаВключаетНДС.Видимость = УчитыватьНДС;
   
КонецПроцедуры

Процедура ДействияФормыВыполнитьПриход(Кнопка)
   Обработка = Обработки.ПеремещениеНоменклатуры.Создать();
   Обработка.СоздатьФорму(ЭтотОбъект, Склад);
КонецПроцедуры

// Процедура вызывается при нажатии кнопки "Изменить" командной панели
// табличного поля "Товары", вызывает сервисный механизм для
// группового изменения значений реквизитов табличной части "Товары".
//
Процедура КоманднаяПанельТоварыНапечататьЦенники(Кнопка)
   
   РаботаСДиалогами.ОткрытьФормуПечатиЦенников(ЭтаФорма, Склад.Магазин, ЭтотОбъект);
   
КонецПроцедуры

// Процедура вызывается при нажатии кнопки "Подбор" командной панели
// табличного поля "Товары", вызывает сервисный механизм для
// подбора номеклатуры в табличную часть "Товары".
//
Процедура КоманднаяПанельТоварыПодбор(Кнопка)
   
   РаботаСДиалогами.ОткрытьФормуПодбораНоменклатуры(ЭтаФорма, ЭтотОбъект, Товары);
   
КонецПроцедуры

// Процедура вызывается при выборе пункта "Поиск по штрихкоду" меню
// кнопки Сервис командной панели табличного поля "Товары", открывает
// форму для ввода штрихкода и обрабатывает событие ввода штрихкода.
//
Процедура КоманднаяПанельТоварыПоискПоШтрихКоду(Кнопка)

   Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();

   Если Не ПустаяСтрока(Результат) Тогда
       ПолучитьСерверТО().ОбработатьВведенныйШтрихкод(Результат, ЭтаФорма);
   КонецЕсли;

КонецПроцедуры

// Процедура разрешения/запрещения редактирования номера документа.
//
Процедура ДействияФормыРедактироватьНомер(Кнопка)

   МеханизмНумерацииОбъектов.ИзменениеВозможностиРедактированияНомера(ЭтотОбъект.Метаданные(), ЭтаФорма, ЭлементыФормы.ДействияФормы.Кнопки.ПодменюДействия, ЭлементыФормы.Номер);

КонецПроцедуры

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

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   
   // Установка кнопок заполнение ТЧ
   УстановитьКнопкиПодменюЗаполненияТЧ();
   
КонецПроцедуры

// Процедура устанавливает подменю "Заполнить" в командных панелях ТЧ документа при необходимости
//
Процедура УстановитьКнопкиПодменюЗаполненияТЧ();
   
   мКнопкиЗаполненияТЧ = УниверсальныеМеханизмы.ПолучитьДеревоКнопокЗаполненияТабличныхЧастей(Ссылка,Новый Действие("НажатиеНаДополнительнуюКнопкуЗаполненияТЧ"));
   
   СоответствиеТЧ = Новый Соответствие;
   СоответствиеТЧ.Вставить(ЭлементыФормы.Товары,ЭлементыФормы.КоманднаяПанельТовары.Кнопки.Сервис);
   
   УниверсальныеМеханизмы.СформироватьПодменюЗаполненияТЧ(мКнопкиЗаполненияТЧ,СоответствиеТЧ);
   
КонецПроцедуры

// Процедура - обработчик нажатия на любую из дополнительных кнопок по заполнению ТЧ
//
Процедура НажатиеНаДополнительнуюКнопкуЗаполненияТЧ(Кнопка)
   
   УниверсальныеМеханизмы.ОбработатьНажатиеНаДополнительнуюКнопкуЗаполненияТЧ(мКнопкиЗаполненияТЧ.Строки.Найти(Кнопка.Имя,"Имя",Истина),ЭтотОбъект);
   
КонецПроцедуры

// Процедура - обработчик события "ОбновлениеОтображения" формы.
//
Процедура ОбновлениеОтображения()

   Если ЭлементыФормы.Товары.Колонки.Всего.Видимость Тогда
       ЭлементыФормы.Товары.Колонки.Всего.ТекстПодвала = Формат(Товары.Итог("Сумма") + ?(СуммаВключаетНДС, 0, Товары.Итог("СуммаНДС")),
                                                                "ЧЦ=15;ЧДЦ=2");
   КонецЕсли;

КонецПроцедуры

Процедура КоманднаяПанельТоварыВТерминалСбораДанных(Кнопка)
   
   РаботаСДиалогами.ОткрытьФормуВыгрузкиВТСД(ЭтаФорма, Товары.Выгрузить());
   
КонецПроцедуры

//////// АВТОМАТИЧЕСКИЕ СКИДКИ

/////////////////////////////////////////////////////////////

мТерминалы     = ПолучитьСерверТО().ПолучитьСписокУстройств(
  Перечисления.ВидыТорговогоОборудования.ТерминалСбораДанных);

мКолонкиТовары = ЭлементыФормы.Товары.Колонки;