- 1
КоличествоСтраницПриПечати = Цел(ТабличныйДокумент.ВысотаТаблицы / 40.417) + 1 + 1;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−125
КоличествоСтраницПриПечати = Цел(ТабличныйДокумент.ВысотаТаблицы / 40.417) + 1 + 1;
Разработчик 1С вооруженный линейкой опасен в 1+1 раз.
−121
Функция ПереформатироватьДату(Дата)
Год = Формат(Дата, "ДФ=гггг");
Месяц = Формат(Дата, "ДФ=ММ");
День = Формат(Дата, "ДФ=дд");
Час = Формат(Дата, "ДФ=Ч") ;
Минута = Формат(Дата, "ДФ=мм");
Секунда = Формат(Дата, "ДФ=сс");
ПолученнаяДата = Год+Месяц+День+Час+Минута+Секунда;
Возврат ПолученнаяДата;
КонецФункции
Творчечство стажера. Надо было в скл -запрос подсунуть дату в виде строки. Должно быть Формат(Дата, "ДФ=yyyyMMddhhmmss"). Да и отдельной функции не надо
−125
ВЫБОР
КОГДА &ПоказыватьВсеПотребности
ТОГДА ВЫБОР
КОГДА ОсновнаяТаблица.КоличествоПлана <= 0
ТОГДА ОсновнаяТаблица.КоличествоПлана
ИНАЧЕ ОсновнаяТаблица.КоличествоПлана
КОНЕЦ
ИНАЧЕ ОсновнаяТаблица.КоличествоПлана
КОНЕЦ КАК КоличествоПлана
плана было больше количество, это уж точно
−126
Если ЗаполненАдрес=0 Тогда
Если ПустаяСтрока(Запрос.ЭлПочта)=0 Тогда
Продолжить;
Иначе
ТЗ.НоваяСтрока();
ТЗ.Код = Запрос.Контрагенты.Код;
ТЗ.Контрагент = Запрос.Контрагенты.Наименование;
ТЗ.ЭлАдрес = Запрос.ЭлПочта;
КонецЕсли;
иначе
Если ПустаяСтрока(Запрос.ЭлПочта)=1 Тогда
Продолжить;
Иначе
ТЗ.НоваяСтрока();
ТЗ.Код = Запрос.Контрагенты.Код;
ТЗ.Контрагент = Запрос.Контрагенты.Наименование;
ТЗ.ЭлАдрес = Запрос.ЭлПочта;
КонецЕсли;
Конецесли;
ЗаполненАдрес - это чекбокс.
Если сократить код, то получится:
Если ЗаполненАдрес<>ПустаяСтрока(Запрос.ЭлПоч та) Тогда
ТЗ.НоваяСтрока();
ТЗ.Код = Запрос.Контрагенты.Код;
ТЗ.Контрагент = Запрос.Контрагенты.Наименование;
ТЗ.ЭлАдрес = Запрос.ЭлПочта;
КонецЕсли;
−124
//часть текста запроса
|ИЗ
| ЭтапыОплатыИсходник КАК ЭтапыОплаты
|//ТекстОтбора
|{ГДЕ
.................
//Добавляем поля если используется отбор
ТекстОтбора="ГДЕ ";
ТекстОтбора=ТекстОтбора+" ИСТИНА";
НомерПеременнойОтбора=1;
Для каждого СтрокаТекущегоОтбора Из ПостроительОтчета.Отбор Цикл
if НЕ СтрокаТекущегоОтбора.Использование then
continue;
endif;
СложноеИмяПоля=ПолучитьИмяПоляБезТочек(СтрокаТекущегоОтбора.ПутьКДанным);
Если ПостроительОтчета.Отбор.Найти(СложноеИмяПоля)=Неопределено Тогда
Если СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Больше Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" > &ПеременнаяОтбора"+НомерПеременнойОтбора;
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.БольшеИлиРавно Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" >= &ПеременнаяОтбора"+НомерПеременнойОтбора;
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВИерархии или
СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВСписке или
СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВСпискеПоИерархии Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В (&ПеременнаяОтбора"+НомерПеременнойОтбора+")";
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВИерархии Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В ИЕРАРХИИ(&ПеременнаяОтбора"+НомерПеременнойОтбора+")";
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Меньше Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" < &ПеременнаяОтбора"+НомерПеременнойОтбора;
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.МеньшеИлиРавно Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" <= &ПеременнаяОтбора"+НомерПеременнойОтбора;
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВСписке или
СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВСпискеПоИерархии Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И НЕ "+"ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В (&ПеременнаяОтбора"+НомерПеременнойОтбора+")";
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВИерархии Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И НЕ "+"ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В ИЕРАРХИИ(&ПеременнаяОтбора"+НомерПеременнойОтбора+")";
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеРавно Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" <> &ПеременнаяОтбора"+НомерПеременнойОтбора;
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Равно Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" = &ПеременнаяОтбора"+НомерПеременнойОтбора;
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НомерПеременнойОтбора>1 Тогда
Запрос.Текст=СтрЗаменить(Запрос.Текст,"//ТекстОтбора",ТекстОтбора);
КонецЕсли;
При этом при всем, в отчете используется 2 построителя ( на одном не смог построить , одного видимо было было мало для стратегии заложенной в голове:) ) + между ними используется куча запросов , в которых выгружаются таблицы (РезультатЗапроса.Выполнить().Выгрузить( )) и передаются в следующие запросы как параметры.
От себя добавлю: Добавлял элементарные вещи, чтобы вывести пару дополнительных колонок - убить 1 час , тоже самое, что ничего не сделать..... Да и к тому же отчет рисуется через "ТабДок.Присоеденить".
−125
//часть текста запроса
|ИЗ
| ЭтапыОплатыИсходник КАК ЭтапыОплаты
|//ТекстОтбора
|{ГДЕ
.................
//Добавляем поля если используется отбор
ТекстОтбора="ГДЕ ";
ТекстОтбора=ТекстОтбора+" ИСТИНА"; //NP002
НомерПеременнойОтбора=1;
Для каждого СтрокаТекущегоОтбора Из ПостроительОтчета.Отбор Цикл
if НЕ СтрокаТекущегоОтбора.Использование then
continue;
endif;
СложноеИмяПоля=ПолучитьИмяПоляБезТочек(СтрокаТекущегоОтбора.ПутьКДанным);
Если ПостроительОтчета.Отбор.Найти(СложноеИмяПоля)=Неопределено Тогда
Если СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Больше Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" > &ПеременнаяОтбора"+НомерПеременнойОтбора; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.БольшеИлиРавно Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" >= &ПеременнаяОтбора"+НомерПеременнойОтбора; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВИерархии или
СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВСписке или
СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВСпискеПоИерархии Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В (&ПеременнаяОтбора"+НомерПеременнойОтбора+")"; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВИерархии Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В ИЕРАРХИИ(&ПеременнаяОтбора"+НомерПеременнойОтбора+")"; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Меньше Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" < &ПеременнаяОтбора"+НомерПеременнойОтбора; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.МеньшеИлиРавно Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" <= &ПеременнаяОтбора"+НомерПеременнойОтбора; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВСписке или
СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВСпискеПоИерархии Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И НЕ "+"ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В (&ПеременнаяОтбора"+НомерПеременнойОтбора+")"; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВИерархии Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И НЕ "+"ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В ИЕРАРХИИ(&ПеременнаяОтбора"+НомерПеременнойОтбора+")"; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеРавно Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" <> &ПеременнаяОтбора"+НомерПеременнойОтбора; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Равно Тогда
ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" = &ПеременнаяОтбора"+НомерПеременнойОтбора; //NP002
Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
НомерПеременнойОтбора=НомерПеременнойОтбора+1
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НомерПеременнойОтбора>1 Тогда
Запрос.Текст=СтрЗаменить(Запрос.Текст,"//ТекстОтбора",ТекстОтбора);
КонецЕсли;
При этом при всем, в отчете используется 2 построителя ( на одном не смог построить , одного видимо было было мало для стратегии заложенной в голове:) ) + между ними используется куча запросов , в которых выгружаются таблицы (РезультатЗапроса.Выполнить().Выгрузить( )) и передаются в следующие запросы как параметры.
От себя добавлю: Добавлял элементарные вещи, чтобы вывести пару дополнительных колонок - убить 1 час , тоже самое, что ничего не сделать..... Да и к тому же отчет рисуется через "ТабДок.Присоеденить".
−120
|РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1980, 1, 1), НакладнаяНаОтпускМатериалы.ДатаВозврата, ДЕНЬ) + 2444240 КАК ДатаВозврата,
Внезапно! Календарь майя
−124
Процедура Флажок1ПриИзменении(Элемент)
//выбираем контрагента
ТК = табК.найти(Контрагент, "контрагент");
Первый = 2+2;
для кк=0 по табК.Количество()-1 цикл
элементыформы.МаршрутныйЛистК.Область("C"+число(кк*3+1+Первый)).Видимость = (ОтобразитьВсеМеста и ТабК[кк]=ТК);
конеццикла;
КонецПроцедуры
Продукт "1С:Молокозавод. Международная поставка для пользователей "1С:Управление производственным предприятием "
Форма документа "МОЛ_ЗаказПоМаршруту".
Фирма "ЦНТУиК" (ЗАО "Центр научно-технических услуг и консультаций").
Не понятно что они курят.
−125
Движение = Движения.Добавить();
Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду(Счет.Код);
−122
Для Индекс = 1 По 4 Цикл
Если Индекс = 1 Тогда
<Действие1...>;
ИначеЕсли Индекс = 2 Тогда
<Действие2...>;
ИначеЕсли Индекс = 3 Тогда
<Действие3...>;
ИначеЕсли Индекс = 4 Тогда
<Действие4...>;
КонецЦикла;
КонецЦикла