- 1
- 2
- 3
- 4
Функция ПеревестиДеньги(СчетИсточник, СчетПолучатель, Сумма)
СнятьСоСчета(СчетИсточник, Сумма);
ПополнитьСчет(СчетПолучатель, Сумма);
КонецФункции
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−93
Функция ПеревестиДеньги(СчетИсточник, СчетПолучатель, Сумма)
СнятьСоСчета(СчетИсточник, Сумма);
ПополнитьСчет(СчетПолучатель, Сумма);
КонецФункции
Как написать эту функцию безопасно? Что делать, если ПополнитьСчет упадет с исключением, например?
−95
Функция ПроверитьРодителя(СчетРодитель,Счет)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| &Счет В ИЕРАРХИИ (&СчетРодитель) КАК ПроверкаСч";
Запрос.УстановитьПараметр("Счет", Счет);
Запрос.УстановитьПараметр("СчетРодитель", СчетРодитель);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.ПроверкаСч;
КонецФункции
−94
Если
ЗначениеЗаполнено(СсылкаНаОбъект) И ((Строка(ТипЗнч(СсылкаНаОбъект))="Документ ссылка: Поступление товаров и услуг") или (Строка(ТипЗнч(СсылкаНаОбъект))="Документ ссылка: Установка цен номенклатуры") или (Строка(ТипЗнч(СсылкаНаОбъект))="Документ ссылка: Перемещение товаров")) Тогда
Проверяется тип документа
−94
Область.Параметры.месяц = МесяцДляГрафика;
Область.Параметры.первое = ПеревестиВКалендарПредставл(ОпрДеньНедели("01", ДатаДляПечатиКалендаря));
Область.Параметры.второе = ПеревестиВКалендарПредставл(ОпрДеньНедели("02", ДатаДляПечатиКалендаря));
Область.Параметры.третье = ПеревестиВКалендарПредставл(ОпрДеньНедели("03", ДатаДляПечатиКалендаря));
Область.Параметры.четвертое = ПеревестиВКалендарПредставл(ОпрДеньНедели("04", ДатаДляПечатиКалендаря));
Область.Параметры.пятое = ПеревестиВКалендарПредставл(ОпрДеньНедели("05", ДатаДляПечатиКалендаря));
Область.Параметры.шестое = ПеревестиВКалендарПредставл(ОпрДеньНедели("06", ДатаДляПечатиКалендаря));
Область.Параметры.седьмое = ПеревестиВКалендарПредставл(ОпрДеньНедели("07", ДатаДляПечатиКалендаря));
Область.Параметры.восьмое = ПеревестиВКалендарПредставл(ОпрДеньНедели("08", ДатаДляПечатиКалендаря));
Область.Параметры.девятое = ПеревестиВКалендарПредставл(ОпрДеньНедели("09", ДатаДляПечатиКалендаря));
Область.Параметры.десятое = ПеревестиВКалендарПредставл(ОпрДеньНедели("10", ДатаДляПечатиКалендаря));
Область.Параметры.одиннадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("11", ДатаДляПечатиКалендаря));
Область.Параметры.двенадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("12", ДатаДляПечатиКалендаря));
Область.Параметры.тринадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("13", ДатаДляПечатиКалендаря));
Область.Параметры.четырнадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("14", ДатаДляПечатиКалендаря));
Область.Параметры.пятнадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("15", ДатаДляПечатиКалендаря));
Область.Параметры.шестнадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("16", ДатаДляПечатиКалендаря));
Область.Параметры.семнадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("17", ДатаДляПечатиКалендаря));
Область.Параметры.восемнадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("18", ДатаДляПечатиКалендаря));
Область.Параметры.девятнадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("19", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("20", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатьпервое = ПеревестиВКалендарПредставл(ОпрДеньНедели("21", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатьвторое = ПеревестиВКалендарПредставл(ОпрДеньНедели("22", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатьтретье = ПеревестиВКалендарПредставл(ОпрДеньНедели("23", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатьчетвертое = ПеревестиВКалендарПредставл(ОпрДеньНедели("24", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатьпятое = ПеревестиВКалендарПредставл(ОпрДеньНедели("25", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатьшестое = ПеревестиВКалендарПредставл(ОпрДеньНедели("26", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатьседьмое = ПеревестиВКалендарПредставл(ОпрДеньНедели("27", ДатаДляПечатиКалендаря));
Область.Параметры.двадцатьвосьмое = ПеревестиВКалендарПредставл(ОпрДеньНедели("28", ДатаДляПечатиКалендаря));
Попытка
Область.Параметры.двадцатьдевятое = ПеревестиВКалендарПредставл(ОпрДеньНедели("29", ДатаДляПечатиКалендаря));
Область.Параметры.тридцатое = ПеревестиВКалендарПредставл(ОпрДеньНедели("30", ДатаДляПечатиКалендаря));
Область.Параметры.тридцатьпервое = ПеревестиВКалендарПредставл(ОпрДеньНедели("31", ДатаДляПечатиКалендаря));
Исключение
КонецПопытки;
Выводим на печать дни недели для каждого дня месяца
−99
http://1c.ru/news/info.jsp?id=21537
ну не вирус конечно, но первый дропер на 1С
−85
может = "ИвановИИ";
текущий = ИмяПользователя();
Если Не текущий = может Тогда
ЭлементыФормы.ОсновныеДействияФормы.Кнопки.ОсновныеДействияФормыВыполнить.Доступность = РедактироватьУзел;
Предупреждение("Запустить обмен может пользователь: " + может );
КонецЕсли;
а если незнающий прог пробел добавит лишний в имя пользователя (или уволится сотрудник)... права лягут, да? ну ок.
−90
Если ВРЕГ(ДанныеСчета.УсловияЗаполнения)<>"ЛОЖЬ" Тогда
УПП 1.3 (1.3.75.2)
ОбщиеМодули.СчетаУчетаВДокументах
Подскажите если изменятся языковые настройки конфигурации как себя поведет данный код?
−73
Запрос=Новый Запрос;
ТекстЗапроса="ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Товар КАК Товар,
| РасходнаяНакладнаяТовары.Ссылка КАК Ссылка,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК КоличествоОстаток
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка.Проведен = Ложь
| И РасходнаяНакладнаяТовары.Ссылка.ПометкаУдаления = Ложь
|";
Если ЗначениеЗаполнено(ВыбСклад) Тогда
ТекстЗапроса=ТекстЗапроса+"
| И РасходнаяНакладнаяТовары.Ссылка.Склад =&ВыбСклад ";
КонецЕсли;
Если ВыбТовар.Количество()>0 Тогда
ТекстЗапроса=ТекстЗапроса+"
| И РасходнаяНакладнаяТовары.Товар В ИЕРАРХИИ(&ВыбТовар) ";
КонецЕсли;
ТекстЗапроса=ТекстЗапроса+"
|СГРУППИРОВАТЬ ПО
| Товар,
| Ссылка
|ИТОГИ
| СУММА(КоличествоОстаток)
|ПО
| ОБЩИЕ,
| Товар,
| Ссылка
|";
Запрос.Текст=ТекстЗапроса;
Запрос.УстановитьПараметр("ВыбСклад",ВыбСклад);
Запрос.УстановитьПараметр("ВыбТовар",ВыбТовар);
РезультатЗапроса=Запрос.Выполнить();
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ОстаткиТоваров");
ОбластьМакета = Макет.ПолучитьОбласть("Шапа");
построитель запроса не существует... шапа... ШАПА, КАРЛ!!!
−11
з.Текст =
"ВЫБРАТЬ
| СобственныеКонтрагенты.Контрагент
|ПОМЕСТИТЬ втСобственныеКонтрагенты
|ИЗ
| РегистрСведений.СобственныеКонтрагенты КАК СобственныеКонтрагенты
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
| РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| РеализацияТоваровУслугТовары.Цена КАК Цена,
| РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата
|ПОМЕСТИТЬ втПоступление_Доки
|ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка.Проведен
| И РеализацияТоваровУслугТовары.Ссылка.Дата <= КОНЕЦПЕРИОДА(&ДатаДок, ДЕНЬ)
| И РеализацияТоваровУслугТовары.Ссылка.Организация = &ОрганизацияПродавец
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втПоступление_Доки.Номенклатура КАК Номенклатура,
| втПоступление_Доки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| МАКСИМУМ(втПоступление_Доки.Дата) КАК Дата
|ПОМЕСТИТЬ втПоступление_Макс
|ИЗ
| втПоступление_Доки КАК втПоступление_Доки
|
|СГРУППИРОВАТЬ ПО
| втПоступление_Доки.Номенклатура,
| втПоступление_Доки.ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втПоступление_Макс.Номенклатура,
| втПоступление_Макс.ХарактеристикаНоменклатуры,
| МИНИМУМ(втПоступление_Доки.Цена) КАК Цена
|ПОМЕСТИТЬ втПоступлениеЦена
|ИЗ
| втПоступление_Макс КАК втПоступление_Макс
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоступление_Доки КАК втПоступление_Доки
| ПО втПоступление_Макс.Номенклатура = втПоступление_Доки.Номенклатура
| И втПоступление_Макс.ХарактеристикаНоменклатуры = втПоступление_Доки.ХарактеристикаНоменклатуры
| И втПоступление_Макс.Дата = втПоступление_Доки.Дата
|
|СГРУППИРОВАТЬ ПО
| втПоступление_Макс.Номенклатура,
| втПоступление_Макс.ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
| РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| РеализацияТоваровУслугТовары.Цена КАК Цена,
| РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата
|ПОМЕСТИТЬ втРеализацияПоставщика_Доки
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка.Проведен
| И РеализацияТоваровУслугТовары.Ссылка.Дата <= КОНЕЦПЕРИОДА(&ДатаДок, ДЕНЬ)
| И РеализацияТоваровУслугТовары.Ссылка.Организация = &ОрганизацияПродавец
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втРеализацияПоставщика_Доки.Номенклатура КАК Номенклатура,
| втРеализацияПоставщика_Доки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| МАКСИМУМ(втРеализацияПоставщика_Доки.Дата) КАК Дата
|ПОМЕСТИТЬ втРеализацияПоставщика_Макс
|ИЗ
| втРеализацияПоставщика_Доки КАК втРеализацияПоставщика_Доки
|
|СГРУППИРОВАТЬ ПО
| втРеализацияПоставщика_Доки.Номенклатура,
| втРеализацияПоставщика_Доки.ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втРеализацияПоставщика_Макс.Номенклатура,
| втРеализацияПоставщика_Макс.ХарактеристикаНоменклатуры,
| МИНИМУМ(втРеализацияПоставщика_Доки.Цена) КАК Цена
|ПОМЕСТИТЬ втРеализацияПоставщикаЦена
|ИЗ
| втРеализацияПоставщика_Макс КАК втРеализацияПоставщика_Макс
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втРеализацияПоставщика_Доки КАК втРеализацияПоставщика_Доки
| ПО втРеализацияПоставщика_Макс.Номенклатура = втРеализацияПоставщика_Доки.Номенклатура
| И втРеализацияПоставщика_Макс.ХарактеристикаНоменклатуры = втРеализацияПоставщика_Доки.ХарактеристикаНоменклатуры
| И втРеализацияПоставщика_Макс.Дата = втРеализацияПоставщика_Доки.Дата
|
|СГРУППИРОВАТЬ ПО
| втРеализацияПоставщика_Макс.Номенклатура,
| втРеализацияПоставщика_Макс.ХарактеристикаНоменклатуры";
про регистр накопления закупки мы походу не слышали... менеджер временных таблиц висит как глобальная переменная модуля формы, поиск организаций по коду в справочнике и т д
−53
Законы де Моргана в 1С
Казалось бы, при чем Булева Алгебра к 1С?
Предположим, есть задача - отобрать действующие договора на некую дату проверки &Дата.
При этом у договора есть дата начала и дата окончания, если дата окончания не задана, то договор действует до конца времен.
Как решается задача? В лоб так:
ВЫБРАТЬ Ссылка ИЗ Справочник.Договоры ГДЕ ДатаНачала <= &Дата И (ДатаОкончания >= &Дата ИЛИ ДатаОкончания = ДатаВремя(1,1,1))
Но операция ИЛИ вызывает некоторые проблемы по скорости, поэтому есть желание обойтись без нее. Как это сделать? Тут приходит на помощь законы Де Моргана.
Перепишем так:
ВЫБРАТЬ Ссылка ИЗ Справочник.Договоры ГДЕ ДатаНачала <= &Дата И НЕ (ДатаОкончания < &Дата И ДатаОкончания <> ДатаВремя(1,1,1))
И всё работает.
Проверяем выделенную зеленым часть условия:
1. Если дата окончания договора меньше даты проверки, то получим НЕ (ИСТИНА И ИСТИНА) = ЛОЖЬ
2. Если дата окончания договора больше или равно даты проверки, то получим НЕ (ЛОЖЬ И ИСТИНА) = ИСТИНА
3. Если дата окончания договора не заполнена, то получим НЕ (ЛОЖЬ) = истина.
Торжество формальной логики! Причем некоторые товарщи пытаются оптимизировать этот запрос через запросы с объединением, а ларчик открывается просто!
Немножко обо мне:
Действующий пикапер. Честно соблазнил 174 женщин и купил 42 феи (на август 2015)
Использует функциональную 5 бальную шкалу оценок женщин.
Известный 1сник с кличкой Гений 1С. Получает от 120 тыщ.
Изобрел фонд «Секс за ваши» - занимаюсь сексом с проститутками за счет пожертвований фанатов.
Изобрел Религию Дембеля.