-
−142
- 1
- 2
- 3
- 4
- 5
- 6
Если РучнойВводОтработанногоВремени И СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда
Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда
СТЧ.ОтработаноДней = НачислениеИзРегистрыРасчета.ОтработаноДней;
СТЧ.ОтработаноЧасов = НачислениеИзРегистрыРасчета.ОтработаноЧасов;
КонецЕсли;
КонецЕсли;
Бонд, Джеймс Бонд.
Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда
Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда
Jivchic,
12 Марта 2012
-
−133
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
Функция ПроверкаНогИВанны()
Строка = ТаблицаНоменклатуры.Найти(Справочники.Номенклатура.НайтиПоКоду("50641 "), "Номенклатура");
Если Строка = Неопределено Тогда
Возврат Ложь;
Иначе
СтрокаВанна = ТаблицаНоменклатуры.Найти(Справочники.Номенклатура.НайтиПоКоду("50624 "), "Номенклатура");
Если СтрокаВанна = Неопределено Тогда
Возврат Истина
Иначе
Возврат Ложь
КонецЕсли;
КонецЕсли;
КонецФункции
glavdir,
02 Марта 2012
-
−137
- 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
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ЭтоНовый() Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Период", НачалоГода(ТекущаяДата()));
Запрос.Текст = "ВЫБРАТЬ
| Максимум(ПлатежноеПоручение.Номер) КАК Номер
|ИЗ
| Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
|ГДЕ
| ПлатежноеПоручение.Дата >= &Период";
Выборка = Запрос.Выполнить().Выбрать();
НомерМакс = 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,
24 Февраля 2012
-
−151
- 1
- 2
- 3
- 4
- 5
Процедура ВводНаОсновании(ДокОснование)
// .....
ДатаДок=РабочаяДата();
// .....
КонецПроцедуры
Типовая торговля для Украины.
Зачем то явно указывается рабочая дата. Причём ровно один раз.
Xbrut,
24 Февраля 2012
-
−146
- 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
Процедура ОбработкаНоменклатуры()
НомерЛистаТипы = 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,
24 Февраля 2012
-
−138
- 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
Для Каждого СтрПЛ Из ПутевыеЛисты Цикл
ЗаказСсылкаИзПЛ = СтрПЛ.ЗаказНаИспользованиеТС;
Если Не ЗаказСсылкаИзПЛ.Пустая() Тогда
ЗапросВыборкаЗаказовПоСсылкеИЗПЛ = Новый Запрос;
ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.Текст = "ВЫБРАТЬ
| АСУ_ЗаказНаИспользованиеТС.Ссылка
|ИЗ
| Документ.АСУ_ЗаказНаИспользованиеТС КАК АСУ_ЗаказНаИспользованиеТС
|ГДЕ
| АСУ_ЗаказНаИспользованиеТС.ДатаС <= &Дата1
| И АСУ_ЗаказНаИспользованиеТС.ДатаПо >= &Дата2
| И АСУ_ЗаказНаИспользованиеТС.Ответственный = &Ответственный
| И АСУ_ЗаказНаИспользованиеТС.Номер = &Номер";
ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.УстановитьПараметр("Дата1", КонецДня(Дата));
ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.УстановитьПараметр("Дата2", НачалоДня(Дата));
ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.УстановитьПараметр("Ответственный", Ответственный);
ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.УстановитьПараметр("Номер", ЗаказСсылкаИзПЛ.Номер);
РезультатЗаказыПоСсылкеИзПЛ = ЗапросВыборкаЗаказовПоСсылкеИЗПЛ.Выполнить().Выгрузить();
Если РезультатЗаказыПоСсылкеИзПЛ.Количество() > 0 Тогда
Для Каждого СтрЗаказПоСсылкеИзПЛ Из РезультатЗаказыПоСсылкеИзПЛ Цикл
...
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Ищем заказ по номеру. А номер берем из заказа. И, конечно же, их может оказаться множество. (КонтрольУникальности = Истина, периодичность = Непериодический).
А также хитровылепленный способ убедиться, что заказ попадает в указанный период и имеет указанного ответственного.
И, конечно же, запрос надо создавать заново для каждой СтрПЛ, а вдруг он испортился...
Вот такие у нас крайне осторожные прогромисты.
mrbus,
13 Февраля 2012
-
−143
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
Функция ПолучитьМаксимальныйДокументРеализации(ТЗРеализаций)
МаксДок = ПолучитьПустоеЗначение("Документ");
ТЗРеализаций.ВыбратьСтроки();
Пока ТЗРеализаций.ПолучитьСтроку()=1 Цикл
Если МаксДок = ПолучитьПустоеЗначение("Документ") Тогда
МаксДок = ТЗРеализаций.ДокументРеализации;
ИначеЕсли МаксДок.ДатаДок < ТЗРеализаций.ДокументРеализации.ДатаДок Тогда
МаксДок = ТЗРеализаций.ДокументРеализации;
КонецЕсли;
КонецЦикла;
Возврат МаксДок;
КонецФункции
Во как надо получать последний документ из таблицы!
jerokee,
10 Февраля 2012
-
−135
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
Процедура ЗаписатьТрижды(Док)
Попытка
Док.Записать();
Исключение
Для ХХХ=1 По 1000 Цикл
УУУ = ХХХ;
КонецЦикла;
Попытка
Док.Записать();
Исключение
Для ХХХ=1 По 1000 Цикл
УУУ = ХХХ;
КонецЦикла;
Попытка
Док.Записать();
Исключение
Сообщить("И с третьей попытки не удалось записать документ "+Док);
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПопытки;
КонецПопытки;
Разбирал тут обработку, наткнулся на этот шедевр...
jerokee,
10 Февраля 2012
-
−147
- 1
спВидТорговли.ДобавитьЗначение(Перечисление.ВидыТорговли.Нал,Строка(Перечисление.ВидыТорговли.Нал));
Типовая торговля для Украины.
Подозреваю , ШО текст датируется концом 90-х.
Xbrut,
09 Февраля 2012
-
−134
- 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
Если Сумма25<>0 Тогда
с25=Сумма25/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма26<>0 Тогда
с26=Сумма26/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма60<>0 Тогда
с60=Сумма60/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма691<>0 Тогда
с691=Сумма691/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма692<>0 Тогда
с692=Сумма692/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма6921<>0 Тогда
с6921=Сумма6921/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма6922<>0 Тогда
с6922=Сумма6922/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма693<>0 Тогда
с693=Сумма693/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма6931<>0 Тогда
с6931=Сумма6931/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма6932<>0 Тогда
с6932=Сумма6932/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма694<>0 Тогда
с694=Сумма694/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма695<>0 Тогда
с695=Сумма695/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма70<>0 Тогда
с70=Сумма70/Итог("Материалы")*Материалы;
КонецЕсли;
Если Сумма97<>0 Тогда
с97=Сумма97/Итог("Материалы")*Материалы;
КонецЕсли;
glavdir,
06 Февраля 2012