0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
Функция СоответствиеСодержитКлюч(Соответствие, Ключ)
Если НЕ Соответствие[Ключ] = Неопределено Тогда
Возврат Истина;
КонецЕсли;
КоличествоЭлементов = Соответствие.Количество();
Соответствие.Удалить(Ключ);
Если КоличествоЭлементов = Соответствие.Количество() Тогда
Возврат Ложь;
КонецЕсли;
Соответствие.Вставить(Ключ);
Возврат Истина;
КонецФункции
Как тебе такое Илон (зачеркнуто) Нуралиев?!
hujaboy,
16 Мая 2023
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Функция ЗначениеКонстанты(ИмяКонстанты) Экспорт
Если ИмяКонстанты = "_ИмяФайловогоСервера" тогда
возврат "jrumos03fscp010";
КонецЕсли;
Возврат Константы[ИмяКонстанты].Получить();
КонецФункции
Файловый сервер может быть только такой.
TrollNeedsDoll,
11 Января 2023
−7
- 1
ВремяВыезда = Строка(Формат(ВыборкаМаршШапка[0].ВремяВыезда, "ДФ=ЧЧ")) + ":" + Строка(Формат(ВыборкаМаршШапка[0].ВремяВыезда, "ДФ=мм")) + " выезд из гар.";
Выводит время без секунд
serving12,
04 Октября 2022
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
&НаКлиенте
Процедура НастройкаВидимости()
НастройкаВидимости();
КонецПроцедуры
&НаКлиенте
Процедура ВидЗаявкиПриИзменении(Элемент)
НастройкаВидимости();
КонецПроцедуры
Когда отвлекли телефонным звонком, а потом сидишь полчаса и думаешь почему при выборе значения на форме в поле "Вид заявки" 1ска крашиться)))
mordik,
24 Августа 2022
+1
- 1
СТРЗАМЕНИТЬ(СОКРЛ(СТРЗАМЕНИТЬ(уатПутевойЛист.Номер, "0", " ")), " ", "0") КАК НомерПЛ,
Удаляет нули в номере документа для вывода на печатную форму
serving12,
18 Августа 2022
−1
- 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
- 32
- 33
- 34
Функция ПолучитьСеб (Номенклатура,ДатаОстатков) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| УчетПартийОстатки.Номенклатура,
| УчетПартийОстатки.Партия КАК Партия,
| УчетПартийОстатки.СуммаБезНДСОстаток / УчетПартийОстатки.КоличествоОстаток КАК бухСС
|ИЗ
| РегистрНакопления.УчетПартий.Остатки(&ДатаОстатков, Номенклатура В (&Номенклатура)) КАК УчетПартийОстатки
| ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииНоменклатуры.Остатки(&ДатаОстатков, Номенклатура В (&Номенклатура)) КАК ПартииНоменклатурыОстатки
| ПО УчетПартийОстатки.Характеристика = ПартииНоменклатурыОстатки.Характеристика
| И УчетПартийОстатки.МестоХранения = ПартииНоменклатурыОстатки.МестоХранения
| И УчетПартийОстатки.Статус = ПартииНоменклатурыОстатки.Статус
| И УчетПартийОстатки.Номенклатура = ПартииНоменклатурыОстатки.Номенклатура
| И УчетПартийОстатки.Партия = ПартииНоменклатурыОстатки.Партия
|ГДЕ
| УчетПартийОстатки.КоличествоОстаток > 0
|
|УПОРЯДОЧИТЬ ПО
| Партия";
Запрос.УстановитьПараметр("ДатаОстатков", ДатаОстатков);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи.бухсс;
КонецЕсли;
КонецФункции
Нашёл сие поделие в базе одного клиента, придраться хочется ко всему, начиная с лютого нэйминга - имя функции ПолучитьСеб(), не намного лучше чем Функция1(), имя переменной в запросе бухСС тоже так себе.
Задача функции вернуть себестоимость единицы товара, при этом число она возвращает только если в запросе что-то есть, понятно что в остальных случаях вернет Неопределено, но себестоимость это всегда число, никаких Неопределено быть не должно.
Если посмотреть текст запроса, то видно, что поля выборки на 100% беруться из одной таблицы, зачем там ещё одну прилепили, да ещё и с полным соединением - теряюсь в догадках.
Упорядочивание по полю Партия вообще смысла не имеет, если уж речь идёт о получении себестоимости, то скорей автор хотел получить её из первой партии, что косвенно подвтерждается выражением "ПЕРВЫЕ 1", но дело в том, что упорядочивание по ссылке (Партия - это элемент справочника Партии) не имеет никакой привязки к дате, т.е. нужно было писать так: "Упорядочить По Партия.ДатаПартии".
Здесь не видно, но функция вызывается только в двух местах модуля и всегда с конкретным значением номенклатуры, т.е. условие виртуальной таблицы может быть оптимизировано до "Номенклатура = &Номенклатура".
Ну и на последок - в данном случае полное соединение конечно нужно ликвидировать, но если бы оно действительно было нужно, то виртуальные таблицы не стоит связывать между собой, предварительно их нужно помещать во временные таблицы и индексировать по полям условий соединения.
VladC,
17 Мая 2022
+1
- 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
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
ЗапросБезСЛ = Новый Запрос;
ЗапросБезСЛ.Текст = "ВЫБРАТЬ
| КарточкаСделкиТовары.Ссылка.Ссылка КАК СсылкаКС
|ИЗ
| Документ.КарточкаСделки.Товары КАК КарточкаСделкиТовары
|ГДЕ
| КарточкаСделкиТовары.Ссылка.Завершена = ЛОЖЬ
| И КарточкаСделкиТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
| И (КарточкаСделкиТовары.СтатусСтроки = &СтатусСтрокиПлан
| ИЛИ КарточкаСделкиТовары.СтатусСтроки = &СтатусСтрокиПланХочуВЗаказано
| ИЛИ КарточкаСделкиТовары.Ссылка.Клиент = &Электросистем
| И КарточкаСделкиТовары.СтатусСтроки <> &СтатусСтрокиЗавершено)
| И КарточкаСделкиТовары.КонтрактнаяДата < НАЧАЛОПЕРИОДА(&ТекДата, ДЕНЬ)
| И КарточкаСделкиТовары.Ссылка.Подразделение В ИЕРАРХИИ(&ДРП)
| И КарточкаСделкиТовары.Ссылка.ДляПланаПроизводства = ЛОЖЬ
| И КарточкаСделкиТовары.Ссылка.Дата > &ПрошлыйГод
| И КарточкаСделкиТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Справочник.СтатусыКарточекСделки.Завершена)
//| И КарточкаСделкиТовары.Ссылка.Номер = ""180010002""
|
|СГРУППИРОВАТЬ ПО
| КарточкаСделкиТовары.Ссылка.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| КарточкаСделкиТовары.Ссылка.Дата УБЫВ";
ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиПлан", Справочники.СтатусыСтрокКарточкиСделки.Запланировано);
ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиПланХочуВЗаказано", Справочники.СтатусыСтрокКарточкиСделки.Заказано);
ЗапросБезСЛ.УстановитьПараметр("ТекДата", ТекущаяДата());
ЗапросБезСЛ.УстановитьПараметр("ДРП",Справочники.ФункциональныеОтделыПродаж.НайтиПоКоду("d16"));
ЗапросБезСЛ.УстановитьПараметр("Электросистем", Справочники.Контрагенты.НайтиПоКоду("140755"));
ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиЗавершено", Справочники.СтатусыСтрокКарточкиСделки.Завершено);
ЗапросБезСЛ.УстановитьПараметр("ПрошлыйГод", НачалоГода(НачалоГода(ТекущаяДата())-3 * 86400));
Выборка = ЗапросБезСЛ.Выполнить().Выбрать();
сПользователь = Справочники.Пользователи.НайтиПоКоду("17 644").Руководитель;
НоваяКонтрДата = ОбщиеПроцедурыИФункции.ОпределитьДатуЗавершения(сПользователь, ТекущаяДата(), 3600*8*1);
Пока Выборка.Следующий() Цикл
КС = Выборка.СсылкаКС.ПолучитьОбъект();
НеобходимоЗаписать = Ложь;
Если ЗначениеЗаполнено(Выборка.СсылкаКС.КодSL) Тогда
Для каждого Изделие из КС.Товары Цикл
СтатусСтроки = ПолучитьСтатусСтрокиВSL(Выборка.СсылкаКС.КодSL,Изделие.НомерСтроки,Выборка.СсылкаКС.Склад);
Если СтатусСтроки <> Неопределено И СтатусСтроки <> "F" //выполн.
и СтатусСтроки <> "C" //завершено
Тогда
Если Изделие.КонтрактнаяДата < НачалоДня(ТекущаяДата()) Тогда
Если (Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Запланировано
или Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Заказано) ИЛИ (Изделие.СтатусСтроки <> Справочники.СтатусыСтрокКарточкиСделки.Завершено И Выборка.СсылкаКС.Клиент = Справочники.Контрагенты.НайтиПоКоду("140755")) Тогда
Изделие.КонтрактнаяДата = НоваяКонтрДата;
НеобходимоЗаписать = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НеобходимоЗаписать Тогда
КС.Записать();
Документы.КарточкаСделки.ОбновитьПараметрыКарточкиСделкиВSL(КС);
rs = Неопределено;
КонецЕсли;
Иначе
Для каждого Изделие из КС.Товары Цикл
Если Изделие.КонтрактнаяДата < НачалоДня(ТекущаяДата()) Тогда
Если (Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Запланировано
или Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Заказано) ИЛИ (Изделие.СтатусСтроки <> Справочники.СтатусыСтрокКарточкиСделки.Завершено И Выборка.СсылкаКС.Клиент = Справочники.Контрагенты.НайтиПоКоду("140755")) Тогда
Изделие.КонтрактнаяДата = НоваяКонтрДата;
НеобходимоЗаписать = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НеобходимоЗаписать Тогда
КС.Записать();
rs = Неопределено;
КонецЕсли;
КонецЕсли;
КонецЦикла;
testtest69,
16 Апреля 2022
0
- 1
- 2
- 3
- 4
- 5
Процедура СоздаватьПКОПриИзменении(Элемент)
Если НЕ ЗаписыватьДокументы Тогда
ЗаписыватьДокументы = Истина;
КонецЕсли;
КонецПроцедуры
Нельзя так просто взять и не создавать документы.
Patronize,
15 Февраля 2022
0
- 1
- 2
- 3
- 4
ДокОбъект = ДокСсылка.ПолучитьОбъект();
ДокОбъект.ОбменДанными.Загрузка = Истина;
ДокОбъект.ПометкаУдаления = Истина;
ДокОбъект.Записать();
znsoft,
08 Февраля 2022
−4
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
Функция ПолучитьОсновногоБухгалтераПоОрганизации(организация) Экспорт
текстЗапроса = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| ПользовательБухгалтер
|ИЗ
| РегистрСведений.СКАНИЯ_ОтветственныеБухгалтерыПоОрганизациям
|ГДЕ
| Организация = &организация
| И Основной = ИСТИНА
|";
запрос = Новый Запрос(текстЗапроса);
запрос.УстановитьПараметр("организация", организация);
выборка = запрос.Выполнить().Выбрать();
Если выборка.Следующий() Тогда
возврат выборка.ПользовательБухгалтер;
Иначе
возврат Справочники.Пользователи.ПустаяСсылка();
КонецЕсли;
КонецФункции
alexey85,
31 Января 2022