Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нужна помощ в изменении груповой оброботки нуменклатури
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Общий раздел > Корзина
Freez
Всем доброго времени суток нужна помощ в изминении груповой оброботки нуменклатури. Имею платформу 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;

ИмяФормы = "Обработка.ГрупповаяОбработкаСправочникаНоменклатуры";
Комментарий = "Групповая обработка справочника ""Номенклатура""";

Зарание спасибо!!!!
Vofka
Добавьте следующий код в обработку обслуживания механизма построчной печати номенклатуры ценников
Функция ЭтоЧисло(Символ) Экспорт
Если (КодСимв(Символ)>=48) И (КодСимв(Символ)<=57) Тогда
Возврат(1);
Иначе
Возврат(0);
КонецЕсли;
КонецФункции

Функция гКопейки(Значение) Экспорт
Грн=Цел(Значение);
Коп=Значение-Грн;
Возврат(Коп*100);
КонецФункции
Функция гСкидка(Сумма,Скидка) Экспорт
Возврат Сумма*(1-Скидка/100);
КонецФункции
Функция гЗначение(Ко,Атрибут,Значение) Экспорт
Знач1=Ко.ПолучитьАтрибут(Атрибут);
Знач2=Значение;
//проверка
Если Не(ТипЗначенияСтр(Знач1)=ТипЗначенияСтр(Знач2)) Тогда
//несоответствие типов
Возврат(0);
ИначеЕсли Не(ТипЗначенияСтр(Знач2)="Число") И (ПустоеЗначение(Знач2)=1) Тогда
//пустое новое значение
Возврат(0);
КонецЕсли;
//реквизит
Если Метаданные.Документ(Ко.Вид()).Выбран()=1 Тогда
//документ
Если Метаданные.Документ(Ко.Вид()).РеквизитШапки(Атрибут).Выбран()=1 Тогда
Ж=Метаданные.Документ(Ко.Вид()).РеквизитШапки(Атрибут);
Имя=Ж.Представление();
ИначеЕсли Метаданные.Документ(Ко.Вид()).РеквизитТабличнойЧасти(Атрибут).Выбран()=1 Тогда
Ж=Метаданные.Документ(Ко.Вид()).РеквизитТабличнойЧасти(Атрибут);
Имя=Ж.Представление()+" (строка "+Ко.НомерСтроки+")";
Иначе
Ж=Метаданные.ОбщийРеквизитДокумента(Атрибут);
Имя=Ж.Представление();
КонецЕсли;
ИначеЕсли Метаданные.Справочник(Ко.Вид()).Выбран()=1 Тогда
//справочник
Ж=Метаданные.Справочник(Ко.Вид()).Реквизит(Атрибут);
Имя=Ж.Представление();
Если ПустаяСтрока(Имя)=1 Тогда
Имя=Атрибут;
КонецЕсли;
КонецЕсли;
//форматирование
Если ТипЗначенияСтр(Знач2)="Строка" Тогда
Знач1=СокрЛП(Знач1);
Знач2=СокрЛП(Знач2);
ИначеЕсли ТипЗначенияСтр(Знач2)="Число" Тогда
Знач2=Окр(Знач2,Ж.Точность);
КонецЕсли;
//проверка
Если Знач1=Знач2 Тогда
Возврат(0);
КонецЕсли;
//установка значения
Если ПустоеЗначение(Знач1)=0 Тогда
Текст=
"Атрибут: "+Имя+"
|
|Старое значение: "+СимволТабуляции+Знач1+"
|Новое значение: "+СимволТабуляции+Знач2+"
|
|Установить новое значение?";
Если Вопрос(Текст,"Да+Нет")="Нет" Тогда
Возврат(0)
КонецЕсли;
КонецЕсли;
//значение
Ко.УстановитьАтрибут(Атрибут,Знач2);
Возврат(1);
КонецФункции
Функция гЧисло(Значение,Знаки=2) Экспорт
Ответ=Формат(Значение,"Ч18."+Знаки);
Возврат СокрЛП(Ответ);
КонецФункции
Функция гСжатьПробелы(аТекст) Экспорт
Текст=СокрЛП(аТекст);
//пробелы
Замена=Формат(" ","С5");
Для й=1 По 4 Цикл
Знак=Сред(Замена,й);
Текст=СтрЗаменить(Текст,Знак," ");
КонецЦикла;
//возврат
Возврат СокрЛП(Текст);
КонецФункции

Функция гБуква(Текст,ФлагНрег=0) Экспорт
Буква=Лев(Текст,1);
Если ФлагНрег=0 Тогда
Буква=ВРег(Буква);
Иначе
Буква=НРег(Буква);
КонецЕсли;
Возврат(Буква+Сред(Текст,2));
КонецФункции

Функция гПредставлениеДокумента(Д) Экспорт
Возврат Д.ПредставлениеВида()+" "+СокрЛП(Д.НомерДок)+" ("+Д.ДатаДок+")";
КонецФункции

Процедура гСообщить(Ко,Текст,НомерСтроки=0,Символ="!") Экспорт
//сигнал
Если Ко.Ошибка=0 Тогда
Сигнал();
КонецЕсли;
//документ
Документ=""+Ко.ДатаДок+" "+Ко.ПредставлениеВида()+" "+СокрЛП(Ко.НомерДок);
//номер строки
Если НомерСтроки>0 Тогда
Документ=Документ+" (строка "+НомерСтроки+")";
КонецЕсли;
//сообщение
Сообщить(Документ+": "+Текст,Символ);
КонецПроцедуры

Процедура сзДобавить(Список,Тип,Вид,Длина,Точность,Подсказка) Экспорт
//тип
Если (Тип="Справочник") Или (Тип="Документ") Тогда
Тип=Тип+"."+Вид;
КонецЕсли;
//значение
Если Список.ТекущаяСтрока()=0 Тогда
Значение="";
Иначе
Значение=Список.ПолучитьЗначение(Список.ТекущаяСтрока());
КонецЕсли;
//выбор
Если ВвестиЗначение(Значение,Подсказка,Тип,Длина,Точность)=1 Тогда
Список.ДобавитьЗначение(Значение);
КонецЕсли;
КонецПроцедуры

Процедура сзИзменить(Список) Экспорт
Позиция=Список.ТекущаяСтрока();
Если Позиция=0 Тогда
Возврат;
КонецЕсли;
//
Значение=Список.ПолучитьЗначение(Список.ТекущаяСтрока());
Тип=ТипЗначенияСтр(Значение);
Если (Тип="Справочник") Или (Тип="Документ") Тогда
Тип=Тип+"."+Значение.Вид();
Подсказка=Значение.Вид();
Иначе
Подсказка=Тип;
КонецЕсли;
Если ВвестиЗначение(Значение,Подсказка,Тип)=1 Тогда
Список.УстановитьЗначение(Позиция,Значение);
КонецЕсли;
КонецПроцедуры

Процедура сзУдалить(Список) Экспорт
Если Список.ТекущаяСтрока()>0 Тогда
Список.УдалитьЗначение(Список.ТекущаяСтрока());
КонецЕсли;
КонецПроцедуры

Процедура сзСдвинуть(Список,Количество) Экспорт
Если (Количество>0) И (Список.ТекущаяСтрока()=Список.РазмерСписка()) Тогда
Количество=1-Список.РазмерСписка();
ИначеЕсли (Количество<0) И (Список.ТекущаяСтрока()=1) Тогда
Количество=Список.РазмерСписка()-1;
КонецЕсли;
Список.СдвинутьЗначение(Количество,Список.ТекущаяСтрока());
КонецПроцедуры

Функция сзПометка(Список) Экспорт
Для i=1 По Список.РазмерСписка() Цикл
Если Список.Пометка(i)=1 Тогда
Возврат(1);
КонецЕсли;
КонецЦикла;
//нет пометок
Возврат(0);
КонецФункции

Процедура сзПометить(Список,Флаг) Экспорт
Для й=1 По Список.РазмерСписка() Цикл
Список.Пометка(й,Флаг);
КонецЦикла;
КонецПроцедуры

Процедура сзОбрезать(Список,Размер) Экспорт
Если Список.РазмерСписка()>Размер Тогда
Количество=Список.РазмерСписка()-Размер;
Список.УдалитьЗначение(Размер+1,Количество);
КонецЕсли;
КонецПроцедуры

Функция сзКолонка(М,Колонка) Экспорт
Список=СоздатьОбъект("СписокЗначений");
//
В=СоздатьОбъект("ТаблицаЗначений");
М.Выгрузить(В,,,Колонка);
В.Свернуть(Колонка,);
В.Выгрузить(Список,,,Колонка);
Возврат(Список);
КонецФункции

Процедура сзПарсить(Список,Текст) Экспорт
Если ПустаяСтрока(Текст)=0 Тогда
Если Найти(Текст,"=")=0 Тогда
//делитель - Запятая
Значение=СтрЗаменить(СокрЛП(Текст),",",Симв(34)+","+Симв(34));
Значение=Симв(34)+Значение+Симв(34);
Список.ИзСтрокиСРазделителями(Значение);
Иначе
//делитель - Точка с запятой
Текст=СтрЗаменить(Текст,";",РазделительСтрок);
Для й=1 По Текст.КоличествоСтрок() Цикл
Стр=Текст.ПолучитьСтроку(й);
Если ПустаяСтрока(Стр)=0 Тогда
Позиция=Найти(Стр,"=");
Если Позиция>0 Тогда
Идентификатор=Лев(Стр,Позиция-1);
Значение=Сред(Стр,Позиция+1);
Список.Установить(СокрЛП(Идентификатор),СокрЛП(Значение));
Иначе
Список.ДобавитьЗначение(СокрЛП(Стр));
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Процедура сзУстановить(Список,Значение) Экспорт
Позиция=Список.НайтиЗначение(Значение);
Если Позиция>0 Тогда
Список.ТекущаяСтрока(Позиция);
КонецЕсли;
КонецПроцедуры
Freez
А поподробнее можна куда его вставить???
Vofka
А подробнее только за деньги.
Freez
Цитата(Vofka @ 10.09.11, 14:53) необходимо зарегистрироваться для просмотра ссылки
А подробнее только за деньги.

и сколько стоит ета услуга???
Vofka
500 гривен
Freez
Цитата(Vofka @ 10.09.11, 15:01) необходимо зарегистрироваться для просмотра ссылки
500 гривен

круто а почему не 5000, крутой у вас форум обратился блин за помощю називается, да к стати судя по тому коду я понял что у меня в 1с много чего поменяетса но не то что мне нужно, спасибо конечно за ответ если нет желания помоч буду юзать сам.
Vofka
Это называется "стою на асфальте в лыжи обутый...". Поговорили и хватит. Тема переезжает в корзину.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.