- 1
- 2
- 3
- 4
- 5
КолЯ= ЦЕЛ(колБутДлчЯщ/20) ;
колЯщ=колЯЩ+ КолЯ;
если колЯ< колБутДлчЯщ/20 Тогда
колЯщ= колЯщ+1;
конецЕсли;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−89
КолЯ= ЦЕЛ(колБутДлчЯщ/20) ;
колЯщ=колЯЩ+ КолЯ;
если колЯ< колБутДлчЯщ/20 Тогда
колЯщ= колЯщ+1;
конецЕсли;
Что будет, если пустить в конфигуратор беременную женщину? В коде окажется Коля.
−99
Функция ЭтоКолбаса(НомерЗаказа) Экспорт
Результ = Ложь;
Если (НомерЗаказа <= 99999) ИЛИ ((НомерЗаказа > 999999) и ((Цел(НомерЗаказа/10000) - Цел(НомерЗаказа/100000)*10) = 2)) Тогда
Результ = Истина;
КонецЕсли;
Возврат Результ;
КонецФункции
Так... чисто поржать)
−99
КолонкаTMCID=ТаблицаСЗаказ.колонки.TMCID;
КолонкаTMCID.ТекстШапки = "№ тов.";
КолонкаTMCID.толькоПросмотр = Истина;
КолонкаTMCID.Ширина = Окр(ШиринаТаблицы * 0.08, 0);
КолонкаType=ТаблицаСЗаказ.колонки.Type;
КолонкаType.ТекстШапки = "Тип этикетки";
КолонкаType.толькоПросмотр = Истина;
КолонкаType.Ширина = Окр(ШиринаТаблицы * 0.08, 0);
КолонкаName=ТаблицаСЗаказ.колонки.Name;
КолонкаName.ТекстШапки = "Наименование";
КолонкаName.толькоПросмотр = Истина;
КолонкаName.Ширина = Окр(ШиринаТаблицы * 0.3, 0);
КолонкаКод=ТаблицаСЗаказ.колонки.Kod_et;
КолонкаКод.ТекстШапки = "Код этикетки";
КолонкаКод.толькоПросмотр = Истина;
КолонкаКод.Ширина = Окр(ШиринаТаблицы * 0.08, 0);
//КолонкаSpecif=ТаблицаСЗаказ.колонки.Specif;
//КолонкаSpecif.ТекстШапки = "Спецификация заказа";
//КолонкаSpecif.толькоПросмотр = Истина;
//КолонкаSpecif.Ширина = Окр(ШиринаТаблицы * 0.11, 0);
КолонкаUnit=ТаблицаСЗаказ.колонки.Unit;
КолонкаUnit.ТекстШапки = "Ед.изм";
КолонкаUnit.толькоПросмотр = Истина;
КолонкаUnit.Ширина = Окр(ШиринаТаблицы * 0.08, 0);
КолонкаГород = ТаблицаСЗаказ.колонки.НаправлениеНамоткиГород;
КолонкаГород.ТекстШапки = "Город";
КолонкаГород.толькоПросмотр = Истина;
КолонкаГород.Ширина = Окр(ШиринаТаблицы * 0.12, 0);
КолонкаАдрес = ТаблицаСЗаказ.Колонки.АдресДоставки;
КолонкаАдрес.ТекстШапки = "Адрес Доставки";
КолонкаАдрес.толькоПросмотр = Истина;
КолонкаАдрес.Ширина = Окр(ШиринаТаблицы * 0.12, 0);
Ну вот не в падлу людям такой код писать... Подумаешь +-10 ненужных переменных. Какой-там нахрен рефакторинг?! Делать больше нечего рефакторингом всяким занниматься. Про повторное использование кода слышали? Так вот взяли код, скопировали, вставили - там самым повторно использовали. Горите в аду, копипастеры!
−97
tmpDt = ДобавитьМесяц(СсылкаНаОбъект.Дата, -3);
Если Месяц(СсылкаНаОбъект.Дата)<4 Тогда
txt = "Д.в. "+Месяц(tmpDt)+"/"+Год(tmpDt)+"-"+ "0"+Месяц(СсылкаНаОбъект.Дата)+"/"+Формат(Год(СсылкаНаОбъект.Дата),"ЧГ=0");
Иначе
Если Месяц(СсылкаНаОбъект.Дата)<10 Тогда
txt="Д.в. "+"0"+Месяц(tmpDt)+"-"+"0"+Месяц(СсылкаНаОбъект.Дата)+"/"+Формат(Год(СсылкаНаОбъект.Дата),"ЧГ=0");
Иначе
txt="Д.в. "+"0"+Месяц(tmpDt)+"-"+Месяц(СсылкаНаОбъект.Дата)+"/"+Формат(Год(СсылкаНаОбъект.Дата),"ЧГ=0");
КонецЕсли;
КонецЕсли;
Неумение пользоваться форматной строкой приводит к перлам наподобие "если месяц меньше 10, то добавить к месяцу нолик слева".
Это не считая разборки в числа и сборки назад в строку.
−98
Процедура ОсновныеДействияФормыПароль(Кнопка)
Если ЭтотОбъект.Пароль = "база7" Тогда
ЭлементыФормы.РедактированиеСклада.Доступность = Истина;
ЭтотОбъект.Пароль = "";
Сообщить("Вы можете изменить галку 'Редактирование склада'");
ИначеЕсли ЭтотОбъект.Пароль = "разрешение" Тогда
ЭлементыФормы.ПривелигированныйПользователь.Доступность = Истина;
ЭтотОбъект.Пароль = "";
Сообщить("Вы можете изменить галку 'Привелигированный пользователь'");
Иначе
Сообщить("Вы ввели неверный пароль");
КонецЕсли;
КонецПроцедуры
Реализация ограничения прав на установку прав для пользователей ИБ.
−96
Запас=0; ВПутиУжеЗаказано=0;Остаток=0;Резерв=0;
Для Каждого ВыбСклад из СписокСкладов Цикл
Скл=Справочники.Склады.НайтиПоНаименованию(СокрЛП(ВыбСклад.Ссылка.Наименование));
СтруктураОтбора = Новый Структура(); // для отбора остатков взаиморасчетов
СтруктураОтбора.Вставить("Номенклатура", Номенклатура);
СтруктураОтбора.Вставить("Склад", Скл);
Остаток =Остаток+ РегистрыНакопления.ТоварыНаСкладах.Остатки(КонецДня(КонДата),
СтруктураОтбора,"Номенклатура,Склад","Количество").Итог("Количество");
Резерв = Резерв+РегистрыНакопления.ТоварыВРезервеНаСкладах.Остатки(КонецДня(КонДата),
СтруктураОтбора,"Номенклатура,Склад","Количество").Итог("Количество");
КонецЦикла;
СтрокаЗапаса=СокрЛП(Остаток);
СтрокаЗапаса=СтрЗаменить(СтрокаЗапаса," ","");
Запас=?(СтрокаЗапаса="",0,Число(СтрокаЗапаса));
Лихие манипуляции со стоками. Следите за руками!
−95
Запрос = Новый Запрос;
Запрос.Текст =
"текст запроса не важен...";
Запрос.УстановитьПараметр("Заказ", Заказ);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Версия = 0 Тогда
Версия = "0";
Иначе
Версия = Выборка.Версия;
КонецЕсли;
ИмяФайла = "\\eskoautomation\HotFolders\zakaz\" +Выборка.НомерЗаказа+"_"+Версия+".xml";
Файл = Новый ЗаписьXML;
Файл.ОткрытьФайл(ИмяФайла);
Файл.ЗаписатьНачалоЭлемента("Главный");
Файл.ЗаписатьНачалоЭлемента("НомерЗаказа");
ЗаписатьXML(Файл,Выборка.НомерЗаказа);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Версия");
ЗаписатьXML(Файл,Выборка.Версия);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Контрагент");
ЗаписатьXML(Файл,Выборка.Контрагент);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ТипЗаказа");
ЗаписатьXML(Файл,Выборка.ТипЗаказа);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ВидЗаказа");
ЗаписатьXML(Файл,Выборка.ВидЗаказа);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ТипРЦ");
ЗаписатьXML(Файл,Выборка.ТипРЦ);
Файл.ЗаписатьКонецЭлемента();
РабочийЦентр = Выборка.РабочийЦентр;
Если Не ЗначениеЗаполнено(РабочийЦентр) Тогда
Отбор = Новый Структура;
Отбор.Вставить("НомерПроката", 1);
Отбор.Вставить("Номерварианта", Выборка.НомерВарианта);
строки = Выборка.Спецификация.ВидыРабот.НайтиСтроки(Отбор);
Если строки<>Неопределено Тогда
РабочийЦентр = строки[0].рабочийЦентр.порядковыйномер;
КонецЕсли;
КонецЕсли;
Файл.ЗаписатьНачалоЭлемента("РабочийЦентр");
ЗаписатьXML(Файл,РабочийЦентр);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ОсновнойМатериал");
ЗаписатьXML(Файл,Выборка.ОсновнойМатериал);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Штамп");
ЗаписатьXML(Файл,Выборка.Штамп);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ЭтикетокНаЛисте");
ЗаписатьXML(Файл,Выборка.ЭтикетокНаЛисте);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Нарезка");
ЗаписатьXML(Файл,Выборка.Нарезка);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Ручьи");
ЗаписатьXML(Файл,Выборка.Ручьи);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Z");
ЗаписатьXML(Файл,Выборка.Z);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШагПечати");
ЗаписатьXML(Файл,Выборка.ШагПечати);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ДлинаЭтикетки");
ЗаписатьXML(Файл,Выборка.ДлинаЭтикетки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШиринаЭтикетки");
ЗаписатьXML(Файл,Выборка.ШиринаЭтикетки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ДлинаКонтрЭтикетки");
ЗаписатьXML(Файл,Выборка.ДлинаКонтрЭтикетки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ДлинаКольеретки");
ЗаписатьXML(Файл,Выборка.ДлинаКольеретки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШиринаКонтрЭтикетки");
ЗаписатьXML(Файл,Выборка.ШиринаКонтрЭтикетки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШиринаКольеретки");
ЗаписатьXML(Файл,Выборка.ШиринаКольеретки);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ШиринаПоНожам");
ЗаписатьXML(Файл,Выборка.ШиринаПоНожам);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ИнтервалМеждуРучьями");
ЗаписатьXML(Файл,Выборка.ИнтервалМеждуРучьями);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ИнтервалМеждуЭтикетками");
ЗаписатьXML(Файл,Выборка.ИнтервалМеждуЭтикетками);
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Комментарий");
ЗаписатьXML(Файл,Заказ.Комментарий);
Файл.ЗаписатьКонецЭлемента();
А вот так мы выгружаем XML. Можно конечно было бы пройтись циклом по колонкам выборки или таблицы значений, но зачем?! Зачем, когда можно написать лишних 300 строчек. Я соду с ума.
−98
ВыборкаЗаказов = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаЗаказов.Следующий() Цикл
ВыборкаГрузополучателей = ВыборкаЗаказов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаГрузополучателей.Следующий() Цикл
ВыборкаАдресовДоставки = ВыборкаГрузополучателей.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаАдресовДоставки.Следующий() Цикл
РезультатЗапроса = ВыборкаАдресовДоставки.Выбрать();
СтавкаНДС = ПолучитьСтавкуНДСдляДокументов(Переменные.ОргПроизводитель, РезультатЗапроса[0].Контрагент);
Если РезультатЗапроса.Количество() <> 0 Тогда
ТАблицаДАнных = ПреобразоватьВыборкуВТаблицуЗначение(РезультатЗапроса);
Функция ПреобразоватьВыборкуВТаблицуЗначение(ИсходнаяВыборка)
ТаблицаРЕзультат = Новый ТаблицаЗначений;
Для каждого Колонка Из ИсходнаяВыборка.Колонки Цикл
ТаблицаРезультат.Колонки.Добавить(Колонка.Имя);
КОнецЦикла;
Для каждого СтрокаВыборки из ИсходнаяВыборка Цикл
СтрокаРезультата = ТаблицаРЕзультат.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаВыборки, СтрокаРезультата);
КонецЦикла;
Возврат ТаблицаРЕзультат;
КонецФункции
Я допускаю, что это было написано в староглиняные времена, когда у РезультатЗапроса не было метода Выгрузить() но блин! Всей истории 1С я не знаю, и сомневаюсь, что такие времена когда-то были. А вообще что-то подсказывает что песатель просто не знал...
−99
Запрос.УстановитьПараметр("Бумага", Справочники.Номенклатура.НайтиПоКоду("g0000000012"));
Запрос.УстановитьПараметр("Пленка", Справочники.Номенклатура.НайтиПоКоду("g0000000382"));
Запрос.УстановитьПараметр("Тиснение", Справочники.Номенклатура.НайтиПоКоду("g0000000481"));
Запрос.УстановитьПараметр("Фольга", Справочники.Номенклатура.НайтиПоКоду("g0000000459"));
Запрос.УстановитьПараметр("Полуфабрикат", Справочники.Номенклатура.НайтиПоКоду("g0000001919"));
Запрос.УстановитьПараметр("Ламинация1", Справочники.Номенклатура.НайтиПоКоду("g0000000074"));
Запрос.УстановитьПараметр("Ламинация2", Справочники.Номенклатура.НайтиПоКоду("g0000001292"));
Возможно стоило использовать предопределенные элементы? Или справочник виды номенклатуры? Или свойства и категории объектов? Или создать своё перечисление? ДА БЛИН ЧТО УГОДНО ТОЛЬКО НЕ ЭТО!!!
−100
//
//Функция проверяет наличие товара на складе для проведения документа
Функция СверкаОстатковТовараПоСкладу(Док)Экспорт
Отказ=Ложь;
ВыбСклад="";
ЗаказВРеализации=неопределено;
ЭтоЗаказ=Ложь;
Если ТипЗнч(Док)=Тип("ДокументСсылка.ЗаказПокупателя") Тогда
ВыбСклад=Док.СкладГруппа;
ЭтоЗаказ=Истина;
ИначеЕсли ТипЗнч(Док)=Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ВыбСклад=Док.Склад;
Если СокрЛП(Док.Сделка)<>"" Тогда
Если ТипЗнч(Док.Сделка)=Тип("ДокументСсылка.ЗаказПокупателя") Тогда
ЗаказВРеализации=Док.Сделка;
КонецЕсли;
КонецЕсли;
Иначе
Возврат Отказ;
КонецЕсли;
ТаблТовара=Док.Товары.Выгрузить();
Если ТипЗнч(ТаблТовара)=Тип("ТаблицаЗначений") Тогда
СписокНом=ТаблТовара.ВыгрузитьКолонку("Номенклатура");
Если ЭтоЗаказ ИЛИ ЗаказВРеализации=неопределено Тогда //Заказ или реализация не на основании заказа
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&КонДата, Склад = &Склад) КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Номенклатура В ИЕРАРХИИ(&Номенклатура)
|
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладахОстатки.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура",СписокНом);
Запрос.УстановитьПараметр("КонДата",Док.Дата);
Запрос.УстановитьПараметр("Склад",ВыбСклад);
Рез=Запрос.Выполнить().Выгрузить();
ТаблТовара.Свернуть("Номенклатура,ЕдиницаИзмерения,Коэффициент","Количество");
Для каждого Стр из ТаблТовара Цикл
СтрОстаток=Рез.Найти(Стр.Номенклатура,"Номенклатура");
Если СтрОстаток=Неопределено Тогда //Нет остатка товара
Сообщить("Остаток товара: "+СокрЛП(Стр.Номенклатура)+" на складе: "+СокрЛП(ВыбСклад)+" =0");
Отказ=Истина;
// Прервать;
Иначе
Остаток=СтрОстаток.КоличествоОстаток;
Если Остаток<(Стр.Количество*Стр.Коэффициент)Тогда
Сообщить("Остаток товара: "+СокрЛП(Стр.Номенклатура)+" на складе: "+СокрЛП(ВыбСклад)+" ="+СокрЛП(Остаток)+" требуется ="+СокрЛП(Стр.Количество*Стр.Коэффициент));
Отказ=Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе //Реализация на основании заказа
ТаблТовара.Свернуть("Номенклатура,ЕдиницаИзмерения,Коэффициент","Количество");
ТоварВЗаказе=ЗаказВРеализации.Товары.Выгрузить();
Для каждого Стр из ТаблТовара Цикл
СтрЗаказ=ТоварВЗаказе.Найти(Стр.Номенклатура,"Номенклатура");
Если СтрЗаказ=Неопределено Тогда //Нет остатка товара
Сообщить("Требуется: "+СокрЛП(Стр.Номенклатура)+" "+СокрЛП(Стр.Количество*Стр.Коэффициент)+" в заказе: "+" =0 "+СокрЛП(Стр.Номенклатура.ЕдиницаХраненияОстатков));
Отказ=Истина;
// Прервать;
Иначе
Остаток=(СтрЗаказ.Количество*СтрЗаказ.Коэффициент);
Если Остаток<(Стр.Количество*Стр.Коэффициент)Тогда
Сообщить("Требуется: "+СокрЛП(Стр.Номенклатура)+" "+СокрЛП(Стр.Количество*Стр.Коэффициент)+" в заказе: "+" = "+СокрЛП(Остаток)+" "+СокрЛП(Стр.Номенклатура.ЕдиницаХраненияОстатков));
Отказ=Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат Отказ;
КонецФункции
!!!!!!!!!!!!!!!!!!