F
Freez
Доброго времени суток нужна помощ в програмировании 1с сам не спец но самостоятельно учусь програмиривать. Вобщем у меня на роботе стоит 1с 7.7 комплексная конфигурация Бухгалтерия+торговля+склад+зарплата+кадри и вот столкнулся с проблемой печати ценников, вобщем товари у меня в разних групах а частенько надо напечатать ценники товаров из разних груп а в груповой оброботке нет действия печать ценников и я хочу его туда добавить подскажите што нужно изменить в модуле груповой оброботки сам питался не получается вот сам модуль:
Зарание спасибо!!!
Код:
Перем ИмяФормы;
Перем Комментарий;
// ===============================
// ОПИСАНИЕ МОДУЛЬНЫХ ПЕРЕМЕННЫХ
Перем СписокПозиций; // список обрабатываемых позиций
Перем Значение; // значение, определяющее действие
Перем НачальнаяДата; // дата, на которую сбрасывается ГП
Перем ЗначениеПометки,ЗначениеНеПометки;
// ===============================
// "СЛУЖЕБНЫЕ" ПРОЦЕДУРЫ И ФУНКЦИИ
// ===============================
// Название: ДоступностьКнопкиВыбораЗначения
// Параметры:
// НЕТ
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
//
// Описание:
// в зависимости от выбранного действия изменяет доступность кнопки выбора значения
//
Процедура ДоступностьКнопкиВыбораЗначения()
Если (Действие.ТекущаяСтрока()<=2)ИЛИ(Действие.ТекущаяСтрока()=8) Тогда
Форма.КнопкаВыбораЗначения.Доступность(0);
Иначе
Форма.КнопкаВыбораЗначения.Доступность(1);
КонецЕсли;
КонецПроцедуры // ДоступностьКнопкиВыбораЗначения
// ===============================
// ПРОЦЕДУРЫ И ФУНКЦИИ, ВЫЗЫВАЕМЫЕ ИЗ ФОРМУЛ ЭЛЕМЕНТОВ ДИАЛОГА
// ===============================
// Название: ПерерисовкаСписка
// Параметры:
// НомерКолонки - номер перерисовываемой колонки, если 0 - то перерисовываем все
// НачальноеЗаполнение - если 1, то заполняем таблицу с нуля
//
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Флаг
// Описание:
// перерисовывает таблицу обрабатываемых позиций
//
Процедура ПерерисовкаСписка(НомерКолонки=0,НачальноеЗаполнение=0)
Перем НомерСтроки;
Перем Товар;
Перем СписокКатегорий,Категории;
Перем НаименованиеТовара,Единицы;
Перем Всего;
Перем СписокЕдиниц;
Таблица.ВыбратьСтроки();
Категории = СоздатьОбъект("Справочник.КатегорииТоваров");
Единицы = СоздатьОбъект("Справочник.Единицы");
Всего = СписокПозиций.РазмерСписка();
Для НомерСтроки = 1 По СписокПозиций.РазмерСписка() Цикл
Если (НомерСтроки%10=0) Тогда
Состояние("Перерисовка таблицы: "+Строка(НомерСтроки)+" из "+Строка(Всего));
КонецЕсли;
Если НачальноеЗаполнение=1 Тогда
Товар = СписокПозиций.ПолучитьЗначение(НомерСтроки);
Таблица.НоваяСтрока(НомерСтроки);
Таблица.ПолучитьСтрокуПоНомеру(НомерСтроки);
Таблица.Товар = Товар;
Таблица.Пометка = ЗначениеПометки;
Иначе
Таблица.ПолучитьСтроку();
Если Таблица.Пометка=ЗначениеНеПометки Тогда
Продолжить;
КонецЕсли;
Товар = Таблица.Товар;
КонецЕсли;
Товар.ИспользоватьДату(РабочаяДата(),1);
Если (НомерКолонки=0)ИЛИ(НомерКолонки=2) Тогда
// наименование
Таблица.Наименование = СокрЛП(Товар.Наименование)+
?(ПустаяСтрока(Товар.Артикул)=1,"",", арт. "+СокрЛП(Товар.Артикул));
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=3) Тогда
// вид
Таблица.Вид = Строка(Товар.ВидТМЦ);
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=4) Тогда
// группа
Таблица.Группа = ?(Товар.Родитель.Выбран()=1,Товар.Родитель.Наименование,"");
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=5) Тогда
// статус
Таблица.Статус = ?(Товар.ПометкаУдаления()=1,"Помечен на уд.","");
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=6) Тогда
// валюта учета
Таблица.ВалютаУчета = Товар.ВалютаУчета.Наименование;
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=7) Тогда
// НДС
Таблица.НДС = Строка(Товар.СтавкаНДС);
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=8) Тогда
// Категории
Категории.ИспользоватьВладельца(Товар.ТекущийЭлемент());
Категории.ВыбратьЭлементы();
СписокКатегорий = "";
Пока Категории.ПолучитьЭлемент()>0 Цикл
СписокКатегорий = СписокКатегорий+?(СписокКатегорий="","",", ")
+Категории.Категория.Наименование
+?(Категории.ПометкаУдаления()=1,"(уд)","");
КонецЦикла;
Таблица.Категории = СписокКатегорий;
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=9) Тогда
// базовая единица измерения
Таблица.БазоваяЕдИзм = Товар.БазоваяЕдиница.Наименование;
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=10) Тогда
// единица измерения по умолчанию
Таблица.ЕдИзмПоУмолчанию = Товар.ЕдиницаПоУмолчанию.Единица.Наименование;
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=11) Тогда
// Комментарий
Таблица.Комментарий = СокрЛП(Товар.Комментарий);
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=12) Тогда
// Мин. тов. остаток
Таблица.МинимальныйОстаток = Товар.МинимальныйОстаток;
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=13) Тогда
// Торговая наценка
Таблица.ТорговаяНаценка = Товар.ТорговаяНаценка;
КонецЕсли;
Если (НомерКолонки=0)ИЛИ(НомерКолонки=14) Тогда
// Единицы измерения
СписокЕдиниц = "";
Единицы.ИспользоватьВладельца(Товар.ТекущийЭлемент());
Единицы.ВыбратьЭлементы();
Пока Единицы.ПолучитьЭлемент()>0 Цикл
СписокЕдиниц = СписокЕдиниц
+СокрЛП(Единицы.Наименование)
+"("+Строка(Единицы.Коэффициент)
+?(Единицы.ПометкаУдаления()=1,",уд","")
+?(Единицы.Единица.ТекущийЭлемент()=Товар.БазоваяЕдиница.ТекущийЭлемент(),",баз.","")
+?(Единицы.ТекущийЭлемент()=Товар.ЕдиницаПоУмолчанию.ТекущийЭлемент(),",по ум.","")+"); ";
КонецЦикла;
Таблица.ЕдиницыИзмерения = СокрЛП(СписокЕдиниц);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// ===============================
// Название: СортироватьТаблицу
// Параметры:
// Режим
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Кнопка "Сортировать" и список "СписокКолонокСортировки"
// Описание:
// сортирует таблицу по колонке
//
Процедура СортироватьТаблицу()
Перем СпособСортировки;
Если СписокКолонокСортировки.ТекущаяСтрока()>0 Тогда
СпособСортировки = СписокКолонокСортировки.ПолучитьЗначение(СписокКолонокСортировки.ТекущаяСтрока());
Если НаправлениеСортировки.ТекущаяСтрока()>0 Тогда
СпособСортировки = СпособСортировки + НаправлениеСортировки.ПолучитьЗначение(НаправлениеСортировки.ТекущаяСтрока());
КонецЕсли;
Таблица.Сортировать(СпособСортировки);
КонецЕсли;
КонецПроцедуры // СортироватьТаблицу
// ===============================
// Название: ГрупповаяПометка
// Параметры:
// Режим
// 1 - пометить все
// 2 - снять пометку
// 3 - инавертировать пометку
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Кнопки "Пометить все","Снять пометку","Инвертировать пометку".
// Описание:
// в зависимости от значения параметра выполняет пометку всех позиций,
// снимает пометку со всех позиций или инвертирует ее
//
Процедура ГрупповаяПометка(Режим)
НомерСтроки = 1;
Таблица.ВыбратьСтроки();
Пока Таблица.ПолучитьСтроку()>0 Цикл
Если Режим=1 Тогда
Таблица.Пометка = ЗначениеПометки;
ИначеЕсли Режим=2 Тогда
Таблица.Пометка = ЗначениеНеПометки;
ИначеЕсли Режим=3 Тогда
Если Таблица.Пометка=ЗначениеНеПометки Тогда
Таблица.Пометка = ЗначениеПометки;
Иначе
Таблица.Пометка = ЗначениеНеПометки;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// ===============================
// Название: ВыборЭлементаВСпискеДействий
// Параметры:
// НЕТ
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Список "Действие"
// Описание:
// обнуляем значение и изменяет доступность кнопки выбора значения
//
Процедура ИзмДействие()
ЗначениеВВидеСтроки = "";
Значение = 0;
ДоступностьКнопкиВыбораЗначения();
КонецПроцедуры
// ===============================
// Название: ВыборЗначения
// Параметры:
// НЕТ
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Кнопка "Значение",.
// Описание:
// открывает окно выбора значения
//
Процедура ВыборЗначения()
Перем ВыбЗначение;
Если Действие.ТекущаяСтрока()=3 Тогда // ("Перенести в группу");
ВыбЗначение = СоздатьОбъект("Справочник.ТМЦ");
ВыбЗначение.ВыборГруппы(1);
Если ВыбЗначение.Выбрать("Выбор группы номенклатуры",)=1 Тогда
Если ВыбЗначение.ЭтоГруппа()=0 Тогда
ЗначениеВВидеСтроки = ВыбЗначение.Родитель.Наименование;
Значение = ВыбЗначение.Родитель.ТекущийЭлемент();
Иначе
ЗначениеВВидеСтроки = ВыбЗначение.Наименование;
Значение = ВыбЗначение.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=4 Тогда // ("Установить валюту учета");
ВыбЗначение = СоздатьОбъект("Справочник.Валюты");
Если ВыбЗначение.Выбрать("Выбор валюты учета",)=1 Тогда
ЗначениеВВидеСтроки = ВыбЗначение.Наименование;
Значение= ВыбЗначение.ТекущийЭлемент();
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=5 Тогда // ("Установить НДС");
Спис = СоздатьОбъект("СписокЗначений");
Спис.ДобавитьЗначение(ОсновнаяСтавкаНДС);
Спис.ДобавитьЗначение(ЛьготнаяСтавкаНДС);
Спис.ДобавитьЗначение(БезНДС);
ВыбЗначение = глВосстановитьЗначение(,"БазНДС");
Если Спис.ВыбратьЗначение(ВыбЗначение,"Ввод ставки НДС",,,2) = 1 Тогда
ЗначениеВВидеСтроки = Строка(ВыбЗначение);
Значение= ВыбЗначение;
КонецЕсли;
ИначеЕсли (Действие.ТекущаяСтрока()=6)ИЛИ(Действие.ТекущаяСтрока()=7) Тогда // ("Установить или удалить из категории");
ВыбЗначение = СоздатьОбъект("Справочник.ВидыКатегории");
Если ВыбЗначение.Выбрать("Выбор категории",)=1 Тогда
ЗначениеВВидеСтроки = ВыбЗначение.Наименование;
Значение= ВыбЗначение.ТекущийЭлемент();
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=9 Тогда // ("Добавить единицу измерения");
ВыбЗначение2 = СоздатьОбъект("Справочник.ТМЦ");
ВыбЗначение2.ВыборГруппы(0);
Если ВыбЗначение2.Выбрать("Выбор товара",)=1 Тогда
Если (ВыбЗначение2.Выбран()>0)И(ВыбЗначение2.ЭтоГруппа()=0) Тогда
ВыбЗначение = СоздатьОбъект("Справочник.Единицы");
ВыбЗначение.ИспользоватьВладельца(ВыбЗначение2.ТекущийЭлемент());
Если ВыбЗначение.Выбрать("Выбор единицы измерения",)=1 Тогда
ЗначениеВВидеСтроки = ВыбЗначение.Наименование;
Значение= ВыбЗначение.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=10 Тогда // ("Удалить единицу измерения");
ВыбЗначение = СоздатьОбъект("Справочник.КлассификаторЕдИзм");
Если ВыбЗначение.Выбрать("Выбор единицы измерения",)=1 Тогда
ЗначениеВВидеСтроки = ВыбЗначение.ПолнНаименование;
Значение= ВыбЗначение.ТекущийЭлемент();
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=11 Тогда // ("Установить комментарий");
ВыбЗначение = "";
Если ВвестиСтроку(ВыбЗначение,"Ввод комментария",200)=1 Тогда
ЗначениеВВидеСтроки = ВыбЗначение;
Значение= ВыбЗначение;
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=12 Тогда // ("Установить минимальный остаток");
ВыбЗначение = 0;
Если ВвестиЧисло(ВыбЗначение,"Ввод минимального остатка",12,3)=1 Тогда
ЗначениеВВидеСтроки = Строка(ВыбЗначение);
Значение= ВыбЗначение;
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=13 Тогда // ("Установить торговую наценку");
ВыбЗначение = 0;
Если ВвестиЧисло(ВыбЗначение,"Ввод торговой наценки",6,2)=1 Тогда
ЗначениеВВидеСтроки = Строка(ВыбЗначение);
Значение= ВыбЗначение;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// ===============================
// Название: Выполнить
// Параметры:
// НЕТ
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// Кнопка "Выполнить",.
// Описание:
// выполняет групповое действие
//
Процедура Выполнить()
Перем НомерСтроки;
Перем Док;
Перем ТипДок;
Перем Товар,ТовДляПоиска;
Перем Категория,Единица;
Перем ЧислоОбработанныхПозиций;
Категория = СоздатьОбъект("Справочник.КатегорииТоваров");
Единица = СоздатьОбъект("Справочник.Единицы");
Если (ПустоеЗначение(Значение)=1) Тогда // пустое значение
Если (Действие.ТекущаяСтрока()=4)ИЛИ
(Действие.ТекущаяСтрока()=5)ИЛИ(Действие.ТекущаяСтрока()=6)ИЛИ
(Действие.ТекущаяСтрока()=7)ИЛИ
(Действие.ТекущаяСтрока()=9)ИЛИ(Действие.ТекущаяСтрока()=10) Тогда
Предупреждение("Не задано значение");
Возврат;
КонецЕсли;
КонецЕсли;
Если Действие.ТекущаяСтрока()=4 Тогда // ("Установить валюту учета");
Если Вопрос("После изменения валюты учета потребуется перепровести все документы."+
"Вы действительно хотите изменить валюту учета?","Да+Нет")="Нет" Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ЧислоОбработанныхПозиций = 0;
Таблица.ВыбратьСтроки();
Для НомерСтроки = 1 По СписокПозиций.РазмерСписка() Цикл
Таблица.ПолучитьСтроку();
ТовДляПоиска = Таблица.Товар;
Товар = СоздатьОбъект("Справочник.ТМЦ");
Если Товар.НайтиЭлемент(ТовДляПоиска)=0 Тогда
Продолжить;
КонецЕсли;
Товар.ИспользоватьДату(РабочаяДата(),1);
Если Таблица.Пометка=ЗначениеНеПометки Тогда
Продолжить;
КонецЕсли;
глКомментарий("Выполняется обработка позиции "+Товар.Наименование,2);
Если Действие.ТекущаяСтрока()=1 Тогда // ("Пометить на удаление");
Товар.Удалить(0);
глЗаписьЖурналаРегистрации(Комментарий, 1, 3, Товар.ТекущийЭлемент(), 2);
ИначеЕсли Действие.ТекущаяСтрока()=2 Тогда // ("Снять пометку удаления");
Если Товар.ПометкаУдаления()=1 Тогда
Товар.СнятьПометкуУдаления();
глЗаписьЖурналаРегистрации(Комментарий, 1, 5, Товар.ТекущийЭлемент(), 2);
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=3 Тогда // ("Перенести в группу");
Товар.Родитель = ?(ПустоеЗначение(Значение)>0,ПолучитьПустоеЗначение("Справочник.ТМЦ"),Значение.ТекущийЭлемент());
Товар.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 2, Товар.ТекущийЭлемент(), 2);
ИначеЕсли Действие.ТекущаяСтрока()=4 Тогда // ("Установить валюту учета");
Товар.ВалютаУчета = Значение.ТекущийЭлемент();
Товар.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 2, Товар.ТекущийЭлемент(), 2);
ИначеЕсли Действие.ТекущаяСтрока()=5 Тогда // ("Установить НДС");
Товар.СтавкаНДС = Значение;
Товар.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 2, Товар.ТекущийЭлемент(), 2);
ИначеЕсли Действие.ТекущаяСтрока()=6 Тогда // ("Добавить категорию");
Категория.ИспользоватьВладельца(Товар.ТекущийЭлемент());
Если Категория.НайтиПоРеквизиту("Категория",Значение.ТекущийЭлемент(),0)<=0 Тогда
Категория.Новый();
Категория.Категория = Значение;
Категория.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 1, Категория.ТекущийЭлемент(), 2);
Иначе
Если Категория.ПометкаУдаления()=1 Тогда
Категория.СнятьПометкуУдаления();
глЗаписьЖурналаРегистрации(Комментарий, 1, 5, Категория.ТекущийЭлемент(), 2);
КонецЕсли;
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=7 Тогда // ("Удалить категорию");
Категория.ИспользоватьВладельца(Товар.ТекущийЭлемент());
Если Категория.НайтиПоРеквизиту("Категория",Значение.ТекущийЭлемент(),0)>0 Тогда
Категория.Удалить(0);
глЗаписьЖурналаРегистрации(Комментарий, 1, 3, Категория.ТекущийЭлемент(), 2);
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=8 Тогда // ("Удалить все категории");
Категория.ИспользоватьВладельца(Товар.ТекущийЭлемент());
Категория.ВыбратьЭлементы();
Пока Категория.ПолучитьЭлемент()>0 Цикл
Категория.Удалить(0);
глЗаписьЖурналаРегистрации(Комментарий, 1, 3, Категория.ТекущийЭлемент(), 2);
КонецЦикла;
ИначеЕсли Действие.ТекущаяСтрока()=9 Тогда // ("Добавить единицу");
Единица.ИспользоватьВладельца(Товар.ТекущийЭлемент());
Если Единица.НайтиПоРеквизиту("Единица",Значение.Единица.ТекущийЭлемент(),0)<=0 Тогда
Единица.Новый();
Единица.Единица = Значение.Единица;
Единица.Наименование = Значение.Наименование;
Единица.Коэффициент = Значение.Коэффициент;
Единица.Вес = Значение.Вес;
Единица.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 1, Единица.ТекущийЭлемент(), 2);
Иначе
Если Единица.ПометкаУдаления()=1 Тогда
Единица.СнятьПометкуУдаления();
глЗаписьЖурналаРегистрации(Комментарий, 1, 5, Единица.ТекущийЭлемент(), 2);
КонецЕсли;
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=10 Тогда // ("Удалить единицу измерения");
Если Товар.БазоваяЕдиница.ТекущийЭлемент()<>Значение.ТекущийЭлемент() Тогда
Единица.ИспользоватьВладельца(Товар.ТекущийЭлемент());
Если Товар.ЕдиницаПоУмолчанию.Единица.ТекущийЭлемент()=Значение.ТекущийЭлемент() Тогда
Единица.НайтиПоРеквизиту("Единица",Товар.БазоваяЕдиница.ТекущийЭлемент(),0);
Товар.ЕдиницаПоУмолчанию = Единица.ТекущийЭлемент();
Товар.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 2, Товар.ТекущийЭлемент(), 2);
КонецЕсли;
Если Единица.НайтиПоРеквизиту("Единица",Значение.ТекущийЭлемент(),0)>0 Тогда
Единица.Удалить(0);
глЗаписьЖурналаРегистрации(Комментарий, 1, 3, Единица.ТекущийЭлемент(), 2);
КонецЕсли;
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=11 Тогда // ("Установить комментарий");
Товар.Комментарий = ?(ПустоеЗначение(Значение)=1,"",СокрЛП(Значение));
Товар.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 2, Товар.ТекущийЭлемент(), 2);
ИначеЕсли Действие.ТекущаяСтрока()=12 Тогда // ("Установить мин. тов. остаток");
Товар.МинимальныйОстаток = СокрЛП(Значение);
Товар.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 2, Товар.ТекущийЭлемент(), 2);
ИначеЕсли Действие.ТекущаяСтрока()=13 Тогда // ("Установить торг. наценку");
Товар.ТорговаяНаценка = Значение;
Товар.Записать();
глЗаписьЖурналаРегистрации(Комментарий, 1, 2, Товар.ТекущийЭлемент(), 2);
КонецЕсли;
ЧислоОбработанныхПозиций = ЧислоОбработанныхПозиций + 1;
КонецЦикла;
Если Действие.ТекущаяСтрока()=1 Тогда // ("Пометить на удаление");
ПерерисовкаСписка();
ИначеЕсли Действие.ТекущаяСтрока()=2 Тогда // ("Снять пометку удаления");
ПерерисовкаСписка();
ИначеЕсли Действие.ТекущаяСтрока()=3 Тогда // ("Перенести в группу");
ПерерисовкаСписка(4);
ИначеЕсли Действие.ТекущаяСтрока()=4 Тогда // ("Установить валюту учета");
ПерерисовкаСписка(6);
Если ЧислоОбработанныхПозиций>0 Тогда
Последовательность.ОсновнаяПоследовательность.Установить(НачальнаяДата);
КонецЕсли;
ИначеЕсли Действие.ТекущаяСтрока()=5 Тогда // ("Установить НДС");
ПерерисовкаСписка(7);
ИначеЕсли Действие.ТекущаяСтрока()=6 Тогда // ("Добавить категорию");
ПерерисовкаСписка(8);
ИначеЕсли Действие.ТекущаяСтрока()=7 Тогда // ("Удалить категорию");
ПерерисовкаСписка(8);
ИначеЕсли Действие.ТекущаяСтрока()=8 Тогда // ("Удалить все категории");
ПерерисовкаСписка(8);
ИначеЕсли Действие.ТекущаяСтрока()=9 Тогда // ("Добавить единицу");
ПерерисовкаСписка();
ИначеЕсли Действие.ТекущаяСтрока()=10 Тогда // ("Удалить единицу измерения");
ПерерисовкаСписка();
ИначеЕсли Действие.ТекущаяСтрока()=11 Тогда // ("Установить комментарий");
ПерерисовкаСписка(11);
ИначеЕсли Действие.ТекущаяСтрока()=12 Тогда // ("Установить мин. тов. остаток");
ПерерисовкаСписка(12);
ИначеЕсли Действие.ТекущаяСтрока()=13 Тогда // ("Установить торг. наценку");
ПерерисовкаСписка(13);
КонецЕсли;
Предупреждение("Групповая обработка завершена. Число обработанных позиций: "+Строка(ЧислоОбработанныхПозиций));
КонецПроцедуры
// ===============================
// Название: ПриДвойномЩелчкеНаТаблице
// Параметры:
// НЕТ
// Возвращаемое значение:
// НЕТ
// Вызывается из формул элементов диалога:
// таблица значений "Таблица"
// Описание:
// изменяет пометку строки таблицы
//
Процедура ПриДвойномЩелчкеНаТаблице()
// при двойном щелчке инвертирует пометку соответствующей позиции
Если Таблица.Пометка=ЗначениеНеПометки Тогда
Таблица.Пометка = ЗначениеПометки;
Иначе
Таблица.Пометка = ЗначениеНеПометки;
КонецЕсли;
КонецПроцедуры // ПриДвойномЩелчкеНаТаблице
// ===============================
// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ
// ===============================
Процедура ПриОткрытии() // Предопределенная процедура
Если ПустоеЗначение(Форма.Параметр)=1 Тогда
Предупреждение("Не указан список обрабатываемых позиций. Данная обработка запускается автоматически из других процедур конфигурации.");
СтатусВозврата(0);
Возврат;
КонецЕсли;
СписокПозиций = Форма.Параметр;
ТекСтрока = Действие.ТекущаяСтрока();
ДоступностьКнопкиВыбораЗначения();
Таблица.НоваяКолонка("Пометка","Число",4,0,"Пометка");
Таблица.ВыводитьПиктограммы("Пометка",1);
Таблица.НоваяКолонка("Наименование","Строка",100,,"Наименование");
Таблица.НоваяКолонка("Вид","Строка",10,,"Вид");
Таблица.НоваяКолонка("Группа","Строка",40,,"Группа");
Таблица.НоваяКолонка("Статус","Строка",15,,"Статус");
Таблица.НоваяКолонка("ВалютаУчета","Строка",17,,"Валюта учета");
Таблица.НоваяКолонка("НДС","Строка",10,,"НДС(%)");
Таблица.НоваяКолонка("Категории","Строка",80,,"Категории");
Таблица.НоваяКолонка("БазоваяЕдИзм","Строка",17,,"Баз. ед. изм.");
Таблица.НоваяКолонка("ЕдИзмПоУмолчанию","Строка",24,,"Ед. изм. по умолч.");
Таблица.НоваяКолонка("Комментарий","Строка",100,,"Комментарий");
Таблица.НоваяКолонка("МинимальныйОстаток","Число",15,2,"Мин. остаток");
Таблица.НоваяКолонка("ТорговаяНаценка","Число",10,2,"Торг. наценка");
Таблица.НоваяКолонка("ЕдиницыИзмерения","Строка",150,,"Единицы измерения");
Таблица.НоваяКолонка("Товар");
Таблица.ВидимостьКолонки("Товар",0);
Таблица.Фиксировать(0,2);
ПерерисовкаСписка(0,1); // с начальным заполнением
// формируем список колонок сортировки
СписокКолонокСортировки.УдалитьВсе();
Для Индекс = 1 По Таблица.КоличествоКолонок() Цикл
Заголовок = "";
ИдентКолонки = СокрЛП(Таблица.ПолучитьПараметрыКолонки(Индекс,,,,Заголовок));
Если Найти(ВРег("=Товар=Пометка="),ВРег("="+ИдентКолонки+"="))<=0 Тогда
СписокКолонокСортировки.ДобавитьЗначение(ИдентКолонки,Заголовок);
КонецЕсли;
КонецЦикла;
// формируем список направлений сортировки
НаправлениеСортировки.УдалитьВсе();
НаправлениеСортировки.ДобавитьЗначение("+","возрастанию");
НаправлениеСортировки.ДобавитьЗначение("-","убыванию");
// будем отслеживать только реальные изменения этих реквизитов
Форма.СписокКолонокСортировки.ВыполнятьФормулуТолькоПриИзменении(1);
Форма.НаправлениеСортировки.ВыполнятьФормулуТолькоПриИзменении(1);
НомерКолонкиСортировки = ВосстановитьЗначение("НомерКолонкиСортировкиВГрупповойОбработкеНоменклатуры");
НомерНаправленияСортировки = ВосстановитьЗначение("НомерНаправленияСортировкиВГрупповойОбработкеНоменклатуры");
Если ПустоеЗначение(НомерНаправленияСортировки)=0 Тогда
НаправлениеСортировки.ТекущаяСтрока(НомерНаправленияСортировки);
КонецЕсли;
Если ПустоеЗначение(НомерКолонкиСортировки)=0 Тогда
СписокКолонокСортировки.ТекущаяСтрока(НомерКолонкиСортировки);
СортироватьТаблицу();
КонецЕсли;
КонецПроцедуры // ПриОткрытии
// ===============================
Процедура ПриЗакрытии() // Предопределенная процедура
глСохранитьЗначение(ИмяФормы, "НомерКолонкиСортировкиВГрупповойОбработкеНоменклатуры",СписокКолонокСортировки.ТекущаяСтрока());
глСохранитьЗначение(ИмяФормы, "НомерНаправленияСортировкиВГрупповойОбработкеНоменклатуры",НаправлениеСортировки.ТекущаяСтрока());
КонецПроцедуры // ПриЗакрытии
// ===============================
// ТЕЛО МОДУЛЯ
// инициализация списков
Действие.ДобавитьЗначение("Пометить на удаление"); // 1
Действие.ДобавитьЗначение("Снять пометку удаления"); // 2
Действие.ДобавитьЗначение("Перенести в группу"); // 3
Действие.ДобавитьЗначение("Установить валюту учета"); // 4
Действие.ДобавитьЗначение("Установить ставку НДС"); // 5
Действие.ДобавитьЗначение("Установить категорию"); // 6 (+1)
Действие.ДобавитьЗначение("Удалить из категории"); // 7
Действие.ДобавитьЗначение("Удалить из всех категорий"); // 8
Действие.ДобавитьЗначение("Скопировать единицу измерения");// 9
Действие.ДобавитьЗначение("Удалить единицу измерения"); // 10
Действие.ДобавитьЗначение("Установить комментарий"); // 11
Действие.ДобавитьЗначение("Установить мин. тов. остаток"); // 12
Действие.ДобавитьЗначение("Установить торг. наценку"); // 13
Действие.ТекущаяСтрока(3);
НачальнаяДата = Константа.ДатаНачалаРаботы;
ЗначениеПометки = 2;
ЗначениеНеПометки = 1;
ИмяФормы = "Обработка.ГрупповаяОбработкаСправочникаНоменклатуры";
Комментарий = "Групповая обработка справочника ""Номенклатура""";