Бухгалтерия / Говнокод #9649 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
Если  ЗначениеЗаполнено(ВыслугаЛет) Тогда 
			Запрос.УстановитьПараметр("ВыслугаЛет",     ВыслугаЛет);
		КонецЕсли;
		
		Если не ЗначениеЗаполнено(ВыслугаЛет) Тогда 
			Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ПНУ.ВидРасчета <> &ВыслугаЛет","");
			Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ТабельныйЛист.ВидРасчета <> &ВыслугаЛет","");
			Запрос.Текст = СтрЗаменить(Запрос.Текст,"И Прекращения.ВидРасчета <> &ВыслугаЛет","");
		КонецЕсли;
		
		Запрос.УстановитьПараметр("Организация",    Организация);
		Запрос.УстановитьПараметр("ПодразделениеОрганизации",  ПодразделениеОрганизации);
		
		Если ПодразделениеОрганизации.Пустая() Тогда
			Запрос.Текст = СтрЗаменить(Запрос.Текст,"И Подразделение В ИЕРАРХИИ(&ПодразделениеОрганизации)","");
			Запрос.Текст = СтрЗаменить(Запрос.Текст,"И Прекращения.ПодразделениеОрганизации = &ПодразделениеОрганизации","");
			Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ТабельныйЛист.Подразделение В ИЕРАРХИИ(&ПодразделениеОрганизации)","");
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ВыслугаЛет) Тогда 
			Запрос.Текст = СтрЗаменить(Запрос.Текст,"ГДЕ
			|	ТабельныйЛист.ВидРасчета <> &ВыслугаЛет
			|	И","Где ");
		КонецЕсли;

Jivchic Jivchic, (Updated )

Комментарии (6, +6)

Бухгалтерия / Говнокод #9648 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
Если РучнойВводОтработанногоВремени И СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда 
	Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда 
			СТЧ.ОтработаноДней  = НачислениеИзРегистрыРасчета.ОтработаноДней;
			СТЧ.ОтработаноЧасов = НачислениеИзРегистрыРасчета.ОтработаноЧасов;
	КонецЕсли;	
КонецЕсли;

Бонд, Джеймс Бонд.

Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда
Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда

Jivchic Jivchic, (Updated )

Комментарии (2, +2)

Бухгалтерия / Говнокод #9586 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
Функция ПроверкаНогИВанны()
	Строка = ТаблицаНоменклатуры.Найти(Справочники.Номенклатура.НайтиПоКоду("50641     "), "Номенклатура");
	Если Строка = Неопределено Тогда
		Возврат Ложь;
	Иначе 
		СтрокаВанна = ТаблицаНоменклатуры.Найти(Справочники.Номенклатура.НайтиПоКоду("50624     "), "Номенклатура");
		Если СтрокаВанна = Неопределено Тогда 
			Возврат Истина
		Иначе 
			Возврат Ложь
		КонецЕсли;
	КонецЕсли;
КонецФункции

glavdir glavdir, (Updated )

Комментарии (12, +12)

Бухгалтерия / Говнокод #9538 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	
	Если ЭтоНовый() Тогда
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("Период", НачалоГода(ТекущаяДата()));
		Запрос.Текст = "ВЫБРАТЬ
		|	Максимум(ПлатежноеПоручение.Номер) КАК Номер
		|ИЗ
		|	Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
		|ГДЕ
		|	ПлатежноеПоручение.Дата >= &Период";
		Выборка = Запрос.Выполнить().Выбрать();
		НомерМакс = 0;
		Пока Выборка.Следующий() Цикл
			Если НомерМакс < Число(Выборка.Номер) Тогда
				НомерМакс = Число(Выборка.Номер);
				Если СтрДлина(НомерМакс) = 1 И НомерМакс<9 Тогда
					НомерДок ="0000000000" + Строка(Число(Число(Выборка.Номер) + 1));
				ИначеЕсли (СтрДлина(НомерМакс) = 2 И НомерМакс<>99) Или НомерМакс=9 Тогда
					НомерДок ="000000000" + Строка(Число(Число(Выборка.Номер) + 1));
				ИначеЕсли (СтрДлина(НомерМакс) = 3 И НомерМакс<>999) Или НомерМакс<>99 Тогда
					НомерДок ="00000000" + Строка(Число(Число(Выборка.Номер) + 1));
				ИначеЕсли (СтрДлина(НомерМакс) = 4 И НомерМакс<>9999) Или НомерМакс<>999 Тогда
					НомерДок ="0000000" + Строка(Число(Число(Выборка.Номер) + 1));
				ИначеЕсли (СтрДлина(НомерМакс) = 5 И НомерМакс<>99999) Или НомерМакс<>9999 Тогда
					НомерДок ="000000" + Строка(Число(Число(Выборка.Номер) + 1));
				ИначеЕсли (СтрДлина(НомерМакс) = 6 И НомерМакс<>999999) Или НомерМакс<>99999 Тогда
					НомерДок ="00000" + Строка(Число(Число(Выборка.Номер) + 1));
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		ЭтотОбъект.Номер = НомерДок;
	КонецЕсли;
	
КонецПроцедуры

Мое творение, писАл на полном серьезе. В одном из документов БП пользователь отредактировал вручную номер документа, после этого сбилась нумерации. Документы с "неправильными" номерами удалили и добавили вновь - было поздно. Типового решения проблемы не нашлось и был написан этот код.
Можно увидеть очень интересное: нахождение максимального значения в запросе и одновременный бесполезный прогон всего цикла, чтобы снова найти максимальное значение и много чего другого.

ErrorEd88 ErrorEd88, (Updated )

Комментарии (6, +6)

Бухгалтерия / Говнокод #9533 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
Процедура ВводНаОсновании(ДокОснование) 
    // .....
    ДатаДок=РабочаяДата();
   // .....
КонецПроцедуры

Типовая торговля для Украины.
Зачем то явно указывается рабочая дата. Причём ровно один раз.

Xbrut Xbrut, (Updated )

Комментарии (13, +13)

Бухгалтерия / Говнокод #9532 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
Процедура ОбработкаНоменклатуры()
    
НомерЛистаТипы = 1;
Попытка ExcelТипы = СоздатьОбъект("Excel.Application");
 ФайлДанныхТипы = ExcelТипы.Workbooks.Open(НазваниеФайла);        
Исключение
КонецПопытки;
//Лист = ФайлДанныхТипы.WorkSheets(НазваниеФайла);
 
ЗагрузкаТипы = ФайлДанныхТипы.Worksheets(НомерЛистаТипы).UsedRange;    
//КоличествоСтрокЭкселеТипы = Лист.Rows.Count;    
 
КоличествоСтрокЭкселеТипы = ФайлДанныхТипы.Worksheets(НомерЛистаТипы).UsedRange.Rows.Count;
ExcelТипы.Sheets(НомерЛистаТипы).Select();    

Спр2 = СоздатьОбъект("Справочник.Номенклатура");
СпрВидНом = СоздатьОбъект("Справочник.ВидыНоменклатуры");
СпрНДС = СоздатьОбъект("Справочник.СтавкиНДС");
СпрНП = СоздатьОбъект("Справочник.СтавкиНП");
СпрЕд = СоздатьОбъект("Справочник.ЕдиницыИзмерений");

Для СтрТипы = НачСтр+1 По КонСтр Цикл      
    
Спр = СоздатьОбъект("Справочник.Номенклатура");
Если Спр.НайтиПоНаименованию(Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,1).Value))) =  1 Тогда
    Сообщить("Номенклатура найдена");
Если ВидыЦен = 1 Тогда
    Спр.Себестоимость = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
ИначеЕсли ВидыЦен = 2 Тогда
    Спр.Цена = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
КонецЕсли;
Спр.Записать(); 
Иначе
Спр.Новый(); 
Спр.ИспользоватьДату('01.11.2011');
Если Спр2.НайтиПоКоду("Сй111")=1 Тогда
Спр.Родитель =Спр2.ТекущийЭлемент(); 
Конецесли;
Спр.Наименование = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,1).Value));  
Сообщить("Создается номенклатура" + Спр.Наименование);
Спр.ТипТовара = Перечисление.ТипыТоваров.Собственный; 
Если СпрВидНом.НайтиПоНаименованию("Товар")=1 Тогда
Спр.ВидНоменклатуры = СпрВидНом.ТекущийЭлемент();
КонецЕсли;
Спр.ПолнНаименование = Спр.Наименование;
Если ВидыЦен = 1 Тогда
    Спр.Себестоимость = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
ИначеЕсли ВидыЦен = 2 Тогда
    Спр.Цена = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
КонецЕсли;
Спр.СтранаПроисхожд = 1;   
Если СпрНДС.НайтиПоКоду("3")=1 Тогда
Спр.СтавкаНДС = СпрНДС.ТекущийЭлемент(); 
КонецЕсли;
Если СпрНП.НайтиПоКоду("1")=1 тогда
Спр.СтавкаНП = СпрНП.ТекущийЭлемент(); 
КонецЕсли;        
Если СпрЕд.НайтиПоНаименованию("шт")=1 Тогда
Спр.ЕдиницаИзмерения = СпрЕд.ТекущийЭлемент(); 
КонецЕсли;
Спр.Записать();
КонецЕсли;     

КонецЦикла;

КонецПроцедуры

В бух 7.7 нужно было загрузить определенный данные из экселя. С 7.7 не работаю - начал сочинять. В начале писал по аналогии с 8.х:
Спр.СтавкаНДС = СпрНДС.НайтиПоКоду("3") и т.д.
Потом на инфостарте и мисте подсказали как правильно сделать и посоветовали создать здесь эту запись)

ErrorEd88 ErrorEd88, (Updated )

Комментарии (15, +15)

Бухгалтерия / Говнокод #9400 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
Для Каждого СтрПЛ Из ПутевыеЛисты Цикл
	ЗаказСсылкаИзПЛ = СтрПЛ.ЗаказНаИспользованиеТС;
	Если Не ЗаказСсылкаИзПЛ.Пустая() Тогда
		ЗапросВыборкаЗаказовПоСсылкеИЗПЛ = Новый Запрос;
		ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.Текст = "ВЫБРАТЬ
					   |	АСУ_ЗаказНаИспользованиеТС.Ссылка
					   |ИЗ
					   |	Документ.АСУ_ЗаказНаИспользованиеТС КАК АСУ_ЗаказНаИспользованиеТС
					   |ГДЕ
					   |	АСУ_ЗаказНаИспользованиеТС.ДатаС <= &Дата1
					   |	И АСУ_ЗаказНаИспользованиеТС.ДатаПо >= &Дата2
					   |	И АСУ_ЗаказНаИспользованиеТС.Ответственный = &Ответственный
					   |	И АСУ_ЗаказНаИспользованиеТС.Номер = &Номер";	
		ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.УстановитьПараметр("Дата1", КонецДня(Дата));
		ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.УстановитьПараметр("Дата2", НачалоДня(Дата)); 
		ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.УстановитьПараметр("Ответственный", Ответственный);
		ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.УстановитьПараметр("Номер", ЗаказСсылкаИзПЛ.Номер);
		РезультатЗаказыПоСсылкеИзПЛ = ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.Выполнить().Выгрузить();
		Если РезультатЗаказыПоСсылкеИзПЛ.Количество() > 0 Тогда
			Для Каждого СтрЗаказПоСсылкеИзПЛ Из РезультатЗаказыПоСсылкеИзПЛ Цикл
				...
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
КонецЦикла;

Ищем заказ по номеру. А номер берем из заказа. И, конечно же, их может оказаться множество. (КонтрольУникальности = Истина, периодичность = Непериодический).
А также хитровылепленный способ убедиться, что заказ попадает в указанный период и имеет указанного ответственного.
И, конечно же, запрос надо создавать заново для каждой СтрПЛ, а вдруг он испортился...
Вот такие у нас крайне осторожные прогромисты.

mrbus mrbus, (Updated )

Комментарии (12, +12)

Бухгалтерия / Говнокод #9377 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
Функция ПолучитьМаксимальныйДокументРеализации(ТЗРеализаций)
	МаксДок = ПолучитьПустоеЗначение("Документ");
	ТЗРеализаций.ВыбратьСтроки();
	Пока ТЗРеализаций.ПолучитьСтроку()=1 Цикл
		Если МаксДок = ПолучитьПустоеЗначение("Документ") Тогда
			МаксДок =  ТЗРеализаций.ДокументРеализации;
		ИначеЕсли МаксДок.ДатаДок < ТЗРеализаций.ДокументРеализации.ДатаДок Тогда
		    МаксДок =  ТЗРеализаций.ДокументРеализации;
		КонецЕсли;
		
	КонецЦикла;
	Возврат МаксДок;
КонецФункции

Во как надо получать последний документ из таблицы!

jerokee jerokee, (Updated )

Комментарии (5, +5)

Бухгалтерия / Говнокод #9376 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
Процедура ЗаписатьТрижды(Док)
	Попытка
		Док.Записать();
	
	Исключение
		Для ХХХ=1 По 1000 Цикл
			УУУ = ХХХ;
		КонецЦикла;
		Попытка
			Док.Записать();
		
		Исключение
			Для ХХХ=1 По 1000 Цикл
				УУУ = ХХХ;
			КонецЦикла;
			Попытка
				Док.Записать();
			
			Исключение
				Сообщить("И с третьей попытки не удалось записать документ "+Док);
				Сообщить(ОписаниеОшибки());
			КонецПопытки;
		КонецПопытки;
	КонецПопытки;

Разбирал тут обработку, наткнулся на этот шедевр...

jerokee jerokee, (Updated )

Комментарии (44, +44)

Бухгалтерия / Говнокод #9368 Ссылка на оригинал

0

  1. 1
спВидТорговли.ДобавитьЗначение(Перечисление.ВидыТорговли.Нал,Строка(Перечисление.ВидыТорговли.Нал));

Типовая торговля для Украины.
Подозреваю , ШО текст датируется концом 90-х.

Xbrut Xbrut, (Updated )

Комментарии (69, +69)