Помогите организовать выбор!!!

1. Shaman4ik 01.02.11 11:39 Сейчас в теме
Вот код:

Перем тбПлощадкаНомер1;
Перем тбПлощадкаНомер2;
Перем тбПлощадкаНомер3;
Перем тбПлощадкаНомер4;
Перем тбПлощадкаНомер5;
Перем тбПлощадкаНомер6;
Перем Запрос, дЗапроса, ТестЗапроса, тбКуски, Склад, тбТара, дтЗапроса, спТараСтрДокумента;
Перем Склад1, Склад2;


//__________________________________________________________­___________________
Функция КонтрольДоступностиКнопок()
Если КоличествоСтрок() > 0 тогда
Форма.спПлощадка.Доступность(0);
Иначе
Форма.спПлощадка.Доступность(1);
КонецЕсли;
КонецФункции // КонтрольДоступностиКнопок()



//__________________________________________________________­___________________


Процедура ВводНового(Копирование)

Автор = глПользователь;
Склад = ВосстановитьЗначение("СкладГП");

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

//----------------------------------------------------
Процедура ЗаполнитьХарактеристикиПлощадок();

тбПлощадкаНомер1 = СоздатьОбъект("ТаблицаЗначений");
тбПлощадкаНомер1.НоваяКолонка("НазваниеРяда","Строка",4);
тбПлощадкаНомер1.НоваяКолонка("РазмерРяда","Число",4,0);

тбПлощадкаНомер1.НоваяСтрока();
тбПлощадкаНомер1.НазваниеРяда = "р001";
тбПлощадкаНомер1.РазмерРяда = 15;



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


//----------------------------------------------------



//----------------------------------------------------

Процедура ВыбратьБарабаны();


тбТара.УдалитьСтроки();

Если ДатаДок>ПолучитьДатуТА() тогда
дЗапроса=ПолучитьДатуТА();
Иначе
дЗапроса=ДатаДок;
КонецЕсли;

ТекстЗапроса = "";
ТекстЗапроса = ТекстЗапроса +
"//{{ЗАПРОС(ОстаткиТоваров)
|Тов=Регистр.Товары.Товар;
|Скл=Регистр.Товары.Склад;
|Дл1=Регистр.Товары.Длина1;
|Дл2=Регистр.Товары.Длина2;
|Дл3=Регистр.Товары.Длина3;
|Тара=Регистр.Товары.Тара;
|НТар=Регистр.Товары.НомерТары;
|Рез=Регистр.Товары.Резерв;
|Кол=Регистр.Товары.Количество;
|Группировка Тов;
|Группировка Дл1;
|Группировка Дл2;
|Группировка Дл3;
|Группировка Тара;
|Группировка НТар;
|Группировка Рез;
|Группировка Кол;
|Функция КонКол=КонОст(Кол);
|Условие (Скл=Склад);
|Условие (Тара.Вес>0);
|"//}}ЗАПРОС
;


//Если Тогда
//КонецЕсли;

//Если дтЗапроса < ПолучитьДатуТА() Тогда
// ТекстЗапроса = ТекстЗапроса + "Период С дтЗапроса По дтЗапроса;" ;
// РассчитатьРегистрыНа(дтЗапроса) ;
//КонецЕсли;

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

Пока Запрос.Группировка("Тов") = 1 Цикл
Пока Запрос.Группировка("Дл1") = 1 Цикл
Пока Запрос.Группировка("Дл2") = 1 Цикл
Пока Запрос.Группировка("Дл3") = 1 Цикл
Пока Запрос.Группировка("Тара") = 1 Цикл
Пока Запрос.Группировка("НТар") = 1 Цикл
Пока Запрос.Группировка("Рез") = 1 Цикл
Пока Запрос.Группировка("Кол") = 1 Цикл
Если Запрос.КонКол>0 Тогда
тбТара.НоваяСтрока();
тбТара.Тара=Запрос.Тара;
тбТара.НомерТары=Запрос.НТар;
тбТара.Товар=Запрос.Тов;
тбТара.Длина1=Запрос.Дл1;
тбТара.Длина2=Запрос.Дл2;
тбТара.Длина3=Запрос.Дл3;
тбТара.Заказ=Запрос.Рез;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;



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


//***************************************************************************************************

Процедура ЗаполнитьСклады()
спрМХ=СоздатьОбъект("Справочник.МестаХранения");

спМХ = СоздатьОбъект("СписокЗначений");
спрМХ.НайтиПокоду(8, 0); //Склад ГП №1
Склад1 = спрМХ.ТекущийЭлемент();
спрМХ.НайтиПокоду(1, 0); //Склад ГП №2
Склад2 = спрМХ.ТекущийЭлемент();

//спМХ.ВыбратьЭлемент();
//Пока спМХ.ПолучитьЭлемент() = 1 Цикл





КонецПроцедуры //ПриОткрытии

//-------------------------------------------------------------------------------------------

Процедура ПриОткрытии()
ПриЗаписиПерепроводить(1);
глПроверкаРазрешенияРедактирования(Контекст);

Если Форма.ТолькоПросмотр() = 0 тогда
Если Проведен() = 1 Тогда
Сигнал();
Предупреждение("Внимание!
|Документ проведен! Возможен только просмотр.
|Для изменения документа сделайте его сначала непроведенным");
Форма.ТолькоПросмотр(1);
КонецЕсли;
КонецЕсли;

спПлощадка.ДобавитьЗначение(0, "Площадка хранения барабанов Цех №1");
спПлощадка.ДобавитьЗначение(1, "Площадка хранения барабанов у торца Цеха №1");
спПлощадка.ДобавитьЗначение(2, "Площадка хранения барабанов №1, Цеха №2");
спПлощадка.ДобавитьЗначение(3, "Площадка хранения барабанов №4 между конторой и цехом №2");
спПлощадка.ДобавитьЗначение(4, "Площадка хранения барабанов №5");
спПлощадка.ДобавитьЗначение(5, "Площадка хранения барабанов №6 Брандербург");

ЗаполнитьХарактеристикиПлощадок();

тбТара = СоздатьОбъект("ТаблицаЗначений");
тбТара.НоваяКолонка("Товар","Справочник.Номенклатура");
тбТара.НоваяКолонка("Тара","Справочник.Тара");
тбТара.НоваяКолонка("НомерТары","Строка",10,0,"№ тары",12);
тбТара.НоваяКолонка("Длина1","Число",10,4,"Кусок 1",9);
тбТара.НоваяКолонка("Длина2","Число",10,4,"Кусок 2",9);
тбТара.НоваяКолонка("Длина3","Число",10,4,"Кусок 3",9);
тбТара.НоваяКолонка("Заказ","Документ.Заказ");



спрМХ=СоздатьОбъект("Справочник.МестаХранения");

спМХ = СоздатьОбъект("СписокЗначений");
спрМХ.НайтиПокоду(8, 0); //Склад ГП №1
Склад1 = спрМХ.ТекущийЭлемент();
спрМХ.НайтиПокоду(1, 0); //Склад ГП №2
Склад2 = спрМХ.ТекущийЭлемент();


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


//-----------------------------------------------
Процедура ПриЗаписи()
Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;


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

//ПРОВЕРИМ СТРОКИ ДОКУМЕНТА
ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл
Если Тара.Вес>0 Тогда

Если СтрДлина(СокрЛП(НомерТары)) < 10 Тогда
Сигнал();
Предупреждение("Строка "+НомерСтроки+"
|Неверный номер тары!
|Номер тары должен состоять из 10 символов!");
СтатусВозврата(0);
Возврат;
КонецЕсли;

Если (Число(Лев(НомерТары,2)) < 1) или (Число(Лев(НомерТары,2)) > 12) Тогда
Сигнал();
Предупреждение("Строка "+НомерСтроки+"
|Неверный номер тары!
|Первые два символа номера означают номер месяца!");
СтатусВозврата(0);
Возврат;
КонецЕсли;

Если (Сред(НомерТары,9,1) <> "1") и
(Сред(НомерТары,9,1) <> "2") Тогда
Сигнал();
Предупреждение("Строка "+НомерСтроки+"
|Неверный номер тары! При сдаче ГП на склад девятый символ номера
|означает номер цеха и может быть равен ""1"" или ""2""!");
СтатусВозврата(0);
Возврат;
КонецЕсли;

Если (Сред(НомерТары,10,1) <> "0") и
(Сред(НомерТары,10,1) <> "П") и
(Сред(НомерТары,10,1) <> "Ц") и
(Сред(НомерТары,10,1) <> "Р") и
(Сред(НомерТары,10,1) <> "В") и
(Сред(НомерТары,10,1) <> "Г") Тогда
Сигнал();
Предупреждение("Строка "+НомерСтроки+"
|Неверный номер тары!
|Десятый символ номера может быть ""0"", ""П"", ""Ц"", ""Р"", ""В"" или ""Г""!");
СтатусВозврата(0);
Возврат;
КонецЕсли;

КонецЕсли;
КонецЦикла;

//СохранитьЗначение("СкладГП",Склад);
КонецПроцедуры
//__________________________________________________________­___________________
//Процедура ПриОкончанииРедактированияСтроки()
// Если (Товар.Выбран()=0) или (ДлинаКуска1=0) или (Тара.Выбран()=0) Тогда
// Сигнал();
// Предупреждение("Заполните в строке все значения!");
// СтатусВозврата(0);Возврат;
// КонецЕсли;
//КонецПроцедуры
//******************************************************************************
Процедура Печать()
НомерДокПечатнойФормы = глПреобразоватьНомерДок(НомерДок, 0, 0);

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка");
Таб.ВывестиСекцию("Заголовок");

ВыбратьСтроки();
Ном = 0;
Пока ПолучитьСтроку()=1 Цикл
Ном = Ном + 1;
Таб.ВывестиСекцию("Строка");
КонецЦикла;

Таб.ВывестиСекцию("Подвал");
Таб.Опции(0,0,0,0,"ОпцииПечатиСдачаГП","ОкноСдачаГП");
Таб.ТолькоПросмотр(1);
Таб.Показать("Печать сдача ГП","");
КонецПроцедуры
//*****************************************************************************
Функция ЗаголовокФормы()
Перем Заголовок, Название;


Заголовок = "Готовая продукция";
Название = "Готовая продукция №";

Если Выбран() = 1 Тогда
Если Проведен() = 1 Тогда
Заголовок = Заголовок + ".Проведен";
Иначе
Заголовок = Заголовок + ".Не проведен";
КонецЕсли;
Иначе
Заголовок = Заголовок + ".Новый";
КонецЕсли;
Форма.Заголовок(Заголовок);
Возврат Название;
КонецФункции //ЗаголовокФормы
//__________________________________________________________­___________________
Процедура ЗаполнитьтбНачСоставЗаказа()
Перем Запрос, ТекстЗапроса, дЗапроса;

тбНачСоставЗаказа = СоздатьОбъект("ТаблицаЗначений");
тбНачСоставЗаказа.НоваяКолонка("Продукт");
тбНачСоставЗаказа.НоваяКолонка("Количество");

Если ДатаДок>ПолучитьДатуТА() тогда
дЗапроса=ПолучитьДатуТА();
Иначе
дЗапроса=ДатаДок;
КонецЕсли;

ТекстЗапроса = "";
ТекстЗапроса = ТекстЗапроса +
"//{{ЗАПРОС(ТекСостояниеЗаказа)
|Период с дЗапроса по дЗапроса;
|докЗаказ=Регистр.ЗАКАЗЫ.дкЗаказ;
|Товар=Регистр.ЗАКАЗЫ.Товар;
|пзКол=Регистр.ЗАКАЗЫ.Количество;
|пзКолЗарезервировано=Регистр.ЗАКАЗЫ.КоличествоЗарезервировано;
|пзКолОтгружено=Регистр.ЗАКАЗЫ.КоличествоОтгружено;
|Группировка Товар Без Групп;
|Условие (докЗаказ=Заказ);
|Функция КонОстКоличество=КонОст(пзКол);
|Функция КонОстКолЗарезервировано=КонОст(пзКолЗарезервировано);
|Функция КонОстКолОтгружено=КонОст(пзКолОтгружено);
|"//}}ЗАПРОС
;

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

Пока Запрос.Группировка("Товар") = 1 Цикл
Кол=Запрос.КонОстКоличество-Запрос.КонОстКолЗарезервировано-Запрос.КонОстКолОтгружено;
Если Кол>0 тогда
тбНачСоставЗаказа.НоваяСтрока();
тбНачСоставЗаказа.Продукт=Запрос.Товар;
тбНачСоставЗаказа.Количество=Кол;
КонецЕсли;
КонецЦикла;

КонецПроцедуры //ЗаполнитьтбНачСоставЗаказа()


//__________________________________________________________­___________________
Процедура ПриНачалеВыбораЗначения(ЭлемДиалога,ФлагСтандОбр)


Если ЭлемДиалога="Тара" Тогда
ФлагСтандОбр = 0;
ВыбратьБарабаны();

Если тбТара.ВыбратьСтроку() = 1 тогда
Тара=тбТара.Тара;
НомерТары=тбТара.НомерТары;
КонецЕсли;

ИначеЕсли ЭлемДиалога="Место" Тогда
Если (ПустоеЗначение(Тара) = 1) или (ПустоеЗначение(НомерТары) = 1) тогда
Иначе
ФлагСтандОбр = 0;
конВызова=глВзятьКонтекст(Контекст);



ПередаваемыйКонтекст=СоздатьОбъект("СписокЗначений");
ПередаваемыйКонтекст.ДобавитьЗначение(конВызова, "КонтекстФормыВызова");

НомПлощадки = спПлощадка.ПолучитьЗначение(спПлощадка.ТекущаяСтрока());
Если НомПлощадки = 0 тогда

ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер1, "тбПлощадка");

ИначеЕсли НомПлощадки = 1 тогда

ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер2, "тбПлощадка");

ИначеЕсли НомПлощадки = 2 тогда

ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер3, "тбПлощадка");

ИначеЕсли НомПлощадки = 3 тогда

ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер4, "тбПлощадка");


ИначеЕсли НомПлощадки = 4 тогда

ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер5, "тбПлощадка");


ИначеЕсли НомПлощадки = 5 тогда

ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер6, "тбПлощадка");

КонецЕсли;

ОткрытьФормуМодально("Отчет",ПередаваемыйКонтекст,КаталогИБ()+"ExtForms\ПодборМеста.ert");
СтатусВозврата(0);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот