- 1
Немного лирики в ветку
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
Немного лирики в ветку
День за днем из года в год
Мы херачим говнокод
Не испытывая стресс
Мы шатаем 1С
И работаем мы чисто
По заветам программистов:
"CTRL+C, CTRL+V
И гоните мне лавэ!"
+1
Функция ОпределитьВидКонтрагента(Контрагент) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Контрагент", Контрагент);
ТекстЗапроса = "ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент,
| Контрагенты.Представление КАК Представление,
| Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицоНеРезидент)
| И Контрагенты.Ссылка = &Контрагент";
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Ложь;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Контрагент = Выборка.Контрагент Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецЦикла;
КонецФункции
+1
// Заполняет документ заказ данными с сайта.
//
// Параметры:
// ДокументОбъект - ДокументОбъект - объект документа Заказ покупателя.
// РеквизитыЗаказа - Структура - содержит значения реквизитов заказа, загруженных с сайта:
// * Ид - Идентификатор заказа, очень часто тоже что и номер.
// * Дата - дата создания заказа на сайте.
// * Номер - номер заказа на сайте.
// * ДатаОтгрузки - дата отгрузки товара по заказу.
// * ВалютаДокументаКод - трехзначный идентификатор валюты.
// * ВидЦенНаименование - наименование вида цены.
// * СуммаВключаетНДС - признак включения НДС.
// * НаименованиеСкидки - наименование скидки.
// * ПроцентСкидки - процент скидки.
// * СуммаСкидки - сумма скидки по заказу.
// * СкладНаименование - наименование склада, точки самовывоза.
// * ПодразделениеНаименование - наименование подразделения.
// * Контрагент - ссылка на контрагента, который уже был идентифицирован в базе.
// * АдресДоставки - строка адреса доставки.
// * ТочкаСамовывоза - ссылка на элемент справочника, который в прикладном решении является справочником точек самовывоза или Неопределено.
// * Товары - табличная часть документа.
// * Комментарий - текстовый комментарий.
// СвойстваЗаказа - Соответствие - содержит строковое представления свойств (ключ) и значений (значение) заказа.
// ПрикладныеПараметры - Структура - содержит параметры прикладного решения, добавленные на форму узла плана обмена.
// ОписаниеОшибки - Строка - текстовое представление ошибки.
// Успешно - Булево - признак заполнения документа.
//
Процедура ЗаполнитьЗаказ(ДокументОбъект, РеквизитыЗаказа, СвойстваЗаказа,
ПрикладныеПараметры, ОписаниеОшибки, Успешно) Экспорт
//++ НЕ ГОСИС
Валюта = Неопределено;
ОбменССайтамиУТ.ОбработатьВалютуXML(Валюта, РеквизитыЗаказа.ВалютаДокументаКод);
ДокументОбъект.Дата = РеквизитыЗаказа.Дата;
ДокументОбъект.Валюта = Валюта;
ДокументОбъект.Соглашение = ПрикладныеПараметры.Соглашение;
ДокументОбъект.Организация = ПрикладныеПараметры.Организация;
ДокументОбъект.Менеджер = ПрикладныеПараметры.Менеджер;
ДокументОбъект.Контрагент = РеквизитыЗаказа.Контрагент;
ДокументОбъект.Партнер = РеквизитыЗаказа.Партнер;
ДокументОбъект.ЦенаВключаетНДС = РеквизитыЗаказа.СуммаВключаетНДС;
ДокументОбъект.Склад = ?(ЗначениеЗаполнено(РеквизитыЗаказа.ТочкаСамовывоза),
РеквизитыЗаказа.ТочкаСамовывоза,
ПрикладныеПараметры.Склад);
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(ПрикладныеПараметры.Соглашение);
Если НЕ ЗначениеЗаполнено(УсловияПродаж.ИспользуютсяДоговорыКонтрагентов)
ИЛИ НЕ УсловияПродаж.ИспользуютсяДоговорыКонтрагентов Тогда
ДокументОбъект.ПорядокОплаты = УсловияПродаж.ПорядокОплаты;
Иначе
ДокументОбъект.ПорядокОплаты = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОбъект.Договор, "ПорядокОплаты");
КонецЕсли;
ДокументОбъект.ВернутьМногооборотнуюТару = УсловияПродаж.ВозвращатьМногооборотнуюТару;
ЗаполнитьЗначенияСвойств(ДокументОбъект,
УсловияПродаж,
"ХозяйственнаяОперация, ГруппаФинансовогоУчета,
|ТребуетсяЗалогЗаТару, ФормаОплаты, ГрафикОплаты");
Если ЗначениеЗаполнено(ДокументОбъект.ГрафикОплаты) Тогда
ДокументОбъект.ФормаОплаты = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОбъект.ГрафикОплаты, "ФормаОплаты");
КонецЕсли;
ДокументОбъект.ВернутьМногооборотнуюТару = УсловияПродаж.ВозвращатьМногооборотнуюТару;
ДокументОбъект.Приоритет = Справочники.Приоритеты.ПолучитьПриоритетПоУмолчанию(ДокументОбъект.Приоритет);
Если УсловияПродаж.ИспользуютсяДоговорыКонтрагентов Тогда
ДокументОбъект.Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(ДокументОбъект,
УсловияПродаж.ХозяйственнаяОперация,
Валюта);
Если ЗначениеЗаполнено(ДокументОбъект.Договор) Тогда
ДокументОбъект.НалогообложениеНДС = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОбъект.Договор,
"НалогообложениеНДС");
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументОбъект.НалогообложениеНДС) Тогда
ДокументОбъект.НалогообложениеНДС = Справочники.Организации.НалогообложениеНДС(
ДокументОбъект.Организация,
ДокументОбъект.Склад,
ДокументОбъект.Дата);
КонецЕсли;
Комментарий = "";
Если Не ПустаяСтрока(РеквизитыЗаказа.Комментарий) Тогда
Комментарий = Комментарий + НСтр("ru = 'Комментарий менеджера на сайте'") + ": " +РеквизитыЗаказа.Комментарий;
КонецЕсли;
КомментарийПокупателя = СвойстваЗаказа.Получить("Комментарии покупателя");
Если Не КомментарийПокупателя = Неопределено И Не ПустаяСтрока(КомментарийПокупателя) Тогда
Комментарий = Комментарий + ?(ПустаяСтрока(Комментарий),"",Символы.ПС) + НСтр("ru = 'Комментарий покупателя на сайте'") + ": " + КомментарийПокупателя;
КонецЕсли;
ДокументОбъект.Комментарий = Комментарий;
СтатусЗаказа = СвойстваЗаказа.Получить("Статус заказа");
+2
// Раздел 1 продолжение, расчет графы 5 и 6.
Области.П010000105.Значение = Области.П010000205.Значение
+ Области.П010000305.Значение
+ Области.П010000405.Значение
+ Области.П010000505.Значение
+ Области.П010000605.Значение
+ Области.П010000705.Значение
+ Области.П010000805.Значение
+ Области.П010000905.Значение
+ Области.П010001005.Значение
+ Области.П010001105.Значение;
Если Области.П010000105.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000205.Текст
+ Области.П010000305.Текст
+ Области.П010000405.Текст
+ Области.П010000505.Текст
+ Области.П010000605.Текст
+ Области.П010000705.Текст
+ Области.П010000805.Текст
+ Области.П010000905.Текст
+ Области.П010001005.Текст
+ Области.П010001105.Текст), "ЧН=' '", "ЧН=");
Области.П010000105.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000105.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000106.Значение = Области.П010000206.Значение
+ Области.П010000306.Значение
+ Области.П010000406.Значение
+ Области.П010000506.Значение
+ Области.П010000606.Значение
+ Области.П010000706.Значение
+ Области.П010000806.Значение
+ Области.П010000906.Значение
+ Области.П010001006.Значение
+ Области.П010001106.Значение;
Если Области.П010000106.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000206.Текст
+ Области.П010000306.Текст
+ Области.П010000406.Текст
+ Области.П010000506.Текст
+ Области.П010000606.Текст
+ Области.П010000706.Текст
+ Области.П010000806.Текст
+ Области.П010000906.Текст
+ Области.П010001006.Текст
+ Области.П010001106.Текст), "ЧН=' '", "ЧН=");
Области.П010000106.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000106.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000107.Значение = Области.П010000207.Значение
+ Области.П010000307.Значение
+ Области.П010000407.Значение
+ Области.П010000507.Значение
+ Области.П010000607.Значение
+ Области.П010000707.Значение
+ Области.П010000807.Значение
+ Области.П010000907.Значение
+ Области.П010001007.Значение
+ Области.П010001107.Значение;
Если Области.П010000107.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000207.Текст
+ Области.П010000307.Текст
+ Области.П010000407.Текст
+ Области.П010000507.Текст
+ Области.П010000607.Текст
+ Области.П010000707.Текст
+ Области.П010000807.Текст
+ Области.П010000907.Текст
+ Области.П010001007.Текст
+ Области.П010001107.Текст), "ЧН=' '", "ЧН=");
Области.П010000107.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000107.Формат, ФорматПредставленияНуля);
КонецЕсли;
zoebis
+1
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Отбор.Регистратор.Значение);
Запрос.УстановитьПараметр("НачалоПериода", ЭтотОбъект.Отбор.Регистратор.Значение.МоментВремени());
Запрос.УстановитьПараметр("КонецПериода", ЭтотОбъект.Отбор.Регистратор.Значение.МоментВремени());
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаСоставаДокумента.Склад,
| ТаблицаСоставаДокумента.Номенклатура,
| ТаблицаСоставаДокумента.Качество,
| ТаблицаСоставаДокумента.ХарактеристикаНоменклатуры,
| ТаблицаСоставаДокумента.СерияНоменклатуры
|ПОМЕСТИТЬ ВТ_Состава_Документа
|ИЗ
| &ТаблицаСоставаДокумента КАК ТаблицаСоставаДокумента
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СвободныеОстаткиОстаткиИОбороты.Склад,
| СвободныеОстаткиОстаткиИОбороты.Номенклатура,
| СвободныеОстаткиОстаткиИОбороты.Качество,
| СвободныеОстаткиОстаткиИОбороты.ХарактеристикаНоменклатуры,
| СвободныеОстаткиОстаткиИОбороты.СерияНоменклатуры,
| СвободныеОстаткиОстаткиИОбороты.КоличествоНачальныйОстаток,
| СвободныеОстаткиОстаткиИОбороты.КоличествоКонечныйОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
| &НачалоПериода,
| &КонецПериода,
| Запись,
| Движения,
| НЕ Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.Продукция)
| И НЕ Номенклатура.ВестиУчетПоСериям
| И (Склад, Номенклатура, Качество, ХарактеристикаНоменклатуры, СерияНоменклатуры) В
| (ВЫБРАТЬ
| ВТ_СоставаДокумента.Склад,
| ВТ_СоставаДокумента.Номенклатура,
| ВТ_СоставаДокумента.Качество,
| ВТ_СоставаДокумента.ХарактеристикаНоменклатуры,
| ВТ_СоставаДокумента.СерияНоменклатуры
| ИЗ
| ВТ_Состава_Документа КАК ВТ_СоставаДокумента)) КАК СвободныеОстаткиОстаткиИОбороты
|ГДЕ
| СвободныеОстаткиОстаткиИОбороты.Регистратор = &Регистратор
| И СвободныеОстаткиОстаткиИОбороты.КоличествоКонечныйОстаток < 0";
Проверка на отрицательные остатки.....
+1
Если ЗначениеЗаполнено(Подразделение.Родитель.Родитель.Родитель) Тогда
ВышестоящееПодразделение = Подразделение.Родитель.Родитель.Родитель;
ИначеЕсли ЗначениеЗаполнено(Подразделение.Родитель.Родитель) Тогда
ВышестоящееПодразделение = Подразделение.Родитель.Родитель;
ИначеЕсли ЗначениеЗаполнено(Подразделение.Родитель) Тогда
ВышестоящееПодразделение = Подразделение.Родитель;
Иначе ВышестоящееПодразделение = Подразделение;
КонецЕсли;
Найдем максимально вышестоящее подразделение, ну, до поры - до времени максимальное..
+3
&НаКлиенте
Процедура ИмяФайла_ПроизводственнаяПрограммаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДиалогВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыборФайла.Фильтр = "Файлы Microsoft Excel (*.xls, *.xlsx, *.xlsm)|*.xls; *.xlsx; *.xlsm|Все файлы (*.*)|*.*";
ДиалогВыборФайла.Показать(Новый ОписаниеОповещения("ИмяФайла_ПроизводственнаяПрограммаНачалоВыбораЗавершение", ЭтотОбъект, Новый Структура("ДиалогВыборФайла,ИмяФайла", ДиалогВыборФайла, Элемент.Имя)));
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайла_ПроизводственнаяПрограммаНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
ДиалогВыборФайла = ДополнительныеПараметры.ДиалогВыборФайла;
Если (ВыбранныеФайлы <> Неопределено) Тогда
ЭтаФорма[ДополнительныеПараметры.ИмяФайла] = ДиалогВыборФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
Асинхронные вызовы??? Нее.... Не слышал...
0
&НаСервереБезКонтекста
Функция ПроверкаНаРукожопость1()
ГруппаЮзеровРСЧ = Справочники.ГруппыПользователей.НайтиПоНаименованию("Отдел расчёта сотрудников");
ЮзерыРСЧ = ГруппаЮзеровРСЧ.Состав.ВыгрузитьКолонку("Пользователь");
ТекущийЮзер = Пользователи.ТекущийПользователь();
//Если ТекущийЮзер = ЮзерыРСЧ.Найти(ТекущийЮзер) Тогда
НайденныеЮзеры = ЮзерыРСЧ.Найти(ТекущийЮзер);
Если (НайденныеЮзеры) <> Неопределено Тогда
Возврат ИСТИНА;
Иначе
Возврат ЛОЖЬ;
КонецЕсли
КонецФункции
&НаКлиенте
Процедура ПриОткрытииПосле(Отказ)
//ПроверкаНаРукожопость(ЭтотОбъект);
//Если РольДоступна("Расчетчик") Тогда
// Объект.Дата.Доступность = ЛОЖЬ;
//КонецЕсли;
Если ПроверкаНаРукожопость1() Тогда
ЭтотОбъект.Элементы.Дата.Доступность = ЛОЖЬ;
ЭтотОбъект.Элементы.Номер.Доступность = ЛОЖЬ;
ЭтотОбъект.Элементы.НомерПриказа.Доступность = ЛОЖЬ;
КонецЕсли;
КонецПроцедуры
Шобы не рукоблудили шелудивые бухгалтерши
+6
Функция РазрешеноМенятьЗаявкуПоПравилу9Утра()
_Год = Год ( Объект.Дата);
_Месяц = Месяц( Объект.Дата);
_День = День ( Объект.Дата) + 1;
Если _День = 29 Тогда
Если _Месяц = 2 Тогда
Если (_Год - 2016)%4 <> 0 Тогда
_Месяц = 3; _День = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если _День = 30 Тогда
Если (_Месяц = 4) ИЛИ (_Месяц = 6) ИЛИ (_Месяц = 9) ИЛИ (_Месяц = 11) Тогда
_Месяц = _Месяц + 1;
_День = 1;
КонецЕсли;
КонецЕсли;
Если _День = 31 Тогда
Если (_Месяц = 1) ИЛИ (_Месяц = 3) ИЛИ (_Месяц = 5) ИЛИ (_Месяц = 7) ИЛИ
(_Месяц = 8) Тогда
_Месяц = _Месяц + 1;
_День = 1;
ИначеЕсли _Месяц = 12 Тогда
_Месяц = 1;
_День = 1;
КонецЕсли;
КонецЕсли;
_9УтраСледующегоДня = Дата( _Год , _Месяц, _День,9,0,0);
Если ТекущаяДата() < _9УтраСледующегоДня Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
По-моему, достойно Вашего внимания ;)
−1
Функция ВнешнийОтчетВФоновомЗадании(НаимРеглОтч)
...
ИмяОбработки = ВнешниеОтчеты.Подключить(АдресВоВременномХранилище, , Ложь);
Возврат ВнешниеОтчеты.Создать(ИмяОбработки, Истина);
...
КонецФункции
В фоновом задании создаем внешний отчет с БезопасныйРежим=Истина. Вопрос, типа, "предупреждение безопасности, разрешить открывать данный файл?", конечно, никому не выходит. Итог для пользователя - ошибка. Что за звездец! Как можно задавать вопрос в фоновом? Зачем? ЗУП 3.1 типовая