- 1
- 2
- 3
- 4
ВЫРАЗИТЬ(ВЫРАЗИТЬ(РасчетыСКлиентамиОстатки.ЗаказКлиента КАК Документ.РеализацияТоваровУслуг).ЗаказКлиента КАК Документ.ЗаказКлиента) КАК ЗаказКлиента
Типично
Конфигурация 1С ERP Украина.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
ВЫРАЗИТЬ(ВЫРАЗИТЬ(РасчетыСКлиентамиОстатки.ЗаказКлиента КАК Документ.РеализацияТоваровУслуг).ЗаказКлиента КАК Документ.ЗаказКлиента) КАК ЗаказКлиента
Типично
Конфигурация 1С ERP Украина.
0
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВЫРАЗИТЬ(Работы.Ссылка КАК Документ.ЗаказНаряд) КАК СсылкаЗН,
ДЦ.Ссылка КАК ДилерскийЦентр
ИЗ
Документ.ЗаказНаряд.Работы КАК Работы
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.CRM_ДилерскиеЦентры КАК ДЦ
ПО (ЛОЖЬ)
ГДЕ
Работы.Ссылка.ДатаЗакрытия >= &ДатаНачала
И Работы.Ссылка.ДатаЗакрытия < &ДатаОкончания
И ДЦ.Ссылка.ПометкаУдаления = ЛОЖЬ
;
Язык запросов 1С. При таком соединение запрос запрос всегда будет пустым.
+2
Попытка
Выборка = Запрос.Выполнить().Выбрать();
Исключение
Пока Выборка.Следующий() Цикл
Рез.Менеджер = Выборка.СуммаМенеджера;
Рез.Дивизион = Выборка.СуммаСтаршегоДивизиона;
КонецЦикла;
КонецПопытки;
0
https://phpclub.ru/talk/threads/перевод-алгаритма-с-1с-в-пхп.52808/
+1
Если ВидОперации = Перечисления.МОЛ_ВидыОперацийПоступленияСырья.Перемещение Тогда
ДоговорКонтрагента = "";
ТипЦен = "";
Если Сырье.Количество()>0 Тогда
Для каждого СтрокаСырье Из Сырье Цикл
СтрокаСырье.Цена = 0;
СтрокаСырье.Сумма = 0;
СтрокаСырье.СуммаНДС = 0;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Добавлена проверка, чтобы цикл вдруг не выполнился при пустой таб части!
Кстати выполняется при открытии формы и постоянно вызывает модифицированность
Молокозавод 1.3.121
+2
ПроизведенаРабота = Истина;
Если ЗапрашиватьТрудозатраты И Не ВыполняетсяПеренаправление Тогда
ПроизведенаРабота = Истина;
КонецЕсли;
Типично
+4
&НаКлиенте
Процедура Расчитать(Команда)
ТекДата = ТекущаяДата();
ТекМесяц = Месяц(ТекДата);
МесяцРождения = Месяц(ДатаРождения);
Если ТекМесяц=МесяцРождения Тогда //День рождения сегодня или в этом месяце,
Если День(ТекДата)=День(ДатаРождения) Тогда
КоличествоДнейДоДР = 0;
ИначеЕсли День(ТекДата)<День(ДатаРождения) Тогда
КоличествоДнейДоДР = День(ДатаРождения)-День(ТекДата);
Иначе
КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
Дата = ДобавитьМесяц(ТекДата,1);
Ограничитель = (12-ТекМесяц)+МесяцРождения;
Для сч=1 По Ограничитель Цикл
Если сч=Ограничитель Тогда
КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
продолжить;
КонецЕсли;
КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
Дата = ДобавитьМесяц(Дата,1);
КонецЦикла;
КонецЕсли;
ИначеЕсли ТекМесяц<МесяцРождения Тогда //День рождения еще не наступил,
КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
Дата = ДобавитьМесяц(ТекДата,1);
Для сч= ТекМесяц+1 По МесяцРождения Цикл
Если сч=МесяцРождения Тогда
КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
продолжить;
КонецЕсли;
КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
Дата = ДобавитьМесяц(Дата,1);
КонецЦикла;
ИначеЕсли ТекМесяц>МесяцРождения Тогда //День рождения уже прошел.
КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
Дата = ДобавитьМесяц(ТекДата,1);
Ограничитель = (12-ТекМесяц)+МесяцРождения;
Для сч= 1 По Ограничитель Цикл
Если сч=Ограничитель Тогда
КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
продолжить;
КонецЕсли;
КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
Дата = ДобавитьМесяц(Дата,1);
КонецЦикла;
КонецЕсли;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = КоличествоДнейДоДР;
Сообщение.Сообщить();
// Вставить содержимое обработчика.
КонецПроцедуры
Задача рассчитать количество дней до дня рождения, вопрос в том что не много ли я использовал условий Если?
0
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЭтапРемонт.Номер КАК Номер
|ИЗ
| Документ.ЭтапРемонт КАК ЭтапРемонт
|ГДЕ
| ЭтапРемонт.Основание = &Основание";
Запрос.УстановитьПараметр("Основание", Объект.Ссылка);
Выб = Запрос.Выполнить().Выбрать();
Выгрузка = Запрос.Выполнить().Выгрузить();
Количество = Выб.Количество();
Если Количество > 0 Тогда
Ссыль = Выгрузка[0].Номер;
ЭтаФорма.Элементы.Этап.Заголовок = Документы.ЭтапРемонт.НайтиПоНомеру(Ссыль);
КонецЕсли;
Задача кода - установить текстовое представление документа в надписи на форме, для этого автор сначала получает номер требуемого документа, потом проверяет выборку на наличие записей, а потом по полученному номеру ищет ссылку методом НайтиПоНомеру.
Говнокод в том, что:
1. Ссылку можно получить сразу же в запросе
2. Выгружать выборку в коллекцию значений нет никакой необходимости, можно всё необходимое взять из выборки, она для этого и предназначена.
Автор - один из франей Абакана.
+2
Функция ПолучитьСтавкуНДС(СуммаСНДС, НДС)
Если НДС = 0 Тогда
Возврат Перечисления.СтавкиНДС.БезНДС;
ИначеЕсли СуммаСНДС = 0 Тогда //некорректные данные
Возврат Перечисления.СтавкиНДС.БезНДС;
ИначеЕсли НДС / СуммаСНДС <= 0.152+0.0152 и НДС / СуммаСНДС >= 0.152-0.0152 Тогда
Возврат Перечисления.СтавкиНДС.НДС18;
ИначеЕсли НДС / СуммаСНДС <= 0.091+0.0091 и НДС / СуммаСНДС >= 0.091-0.0091 Тогда
Возврат Перечисления.СтавкиНДС.НДС10;
КонецЕсли;
КонецФункции
Костыль костыльный
−1
ЧисловойСимвол = ?(Найти("0123456789",СимволVIN)>0,Истина,Ложь);
Проверка на то, является ли "СимволVIN" числом