|
v7: При печати ПКО выдает такую ошибку, что может быть? | ☑ | ||
---|---|---|---|---|
0
zloy
21.03.12
✎
08:13
|
Если глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,0,""<<?>>) = 1 Тогда
{Документ.ПКО.Форма.Модуль(897)}: Недостаточно фактических параметров |
|||
5
zloy
21.03.12
✎
08:24
|
можно подробнее?
|
|||
6
povar
21.03.12
✎
08:26
|
(5) куда уж подробнее ? В описании функции 5 параметров, ты ей передаешь 4, вот и ошибка
|
|||
7
Капитан О
21.03.12
✎
08:26
|
(5) найди эту функцию и посмотри в заголовок
|
|||
8
thezos
21.03.12
✎
08:26
|
воспользуйтесь услугами специалиста
|
|||
9
Капитан О
21.03.12
✎
08:26
|
(6) девять
|
|||
10
povar
21.03.12
✎
08:28
|
(9) да ты просто капитан О
|
|||
11
zloy
21.03.12
✎
08:32
|
Процедура ОбработкаПроведенияПоКассе()
Регистр.Касса.Фирма = Фирма; Регистр.Касса.Касса = Касса; Регистр.Касса.Валюта = Валюта; Регистр.Касса.СуммаВал = Сумма; Регистр.Касса.СуммаУпр = глПересчет(Сумма,Валюта,Курс,глДоллары,ДатаДок,Кратность); Регистр.Касса.СуммаРуб = глПересчет(Сумма,Валюта,Курс,глРубли,ДатаДок,Кратность); Регистр.Касса.КодОперации = РабочийКО; Регистр.Касса.ДвижениеДенежныхСредств = ДвижениеДенежныхСредств; Регистр.Касса.ДвижениеПриходВыполнить(); КонецПроцедуры // ОбработкаПроведенияПоКассе() |
|||
12
zloy
21.03.12
✎
08:32
|
это?
|
|||
13
Капитан О
21.03.12
✎
08:33
|
(11) таак, правильно. а теперь глФРПечататьЧек
|
|||
14
povar
21.03.12
✎
08:33
|
(12) )) интересно, какой был ход твоих мыслей, чтобы скопипастить именно этот кусок кода ?
|
|||
15
zloy
21.03.12
✎
08:35
|
Если глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,0,"") = 1 Тогда
НомерЧекаККМ = ?(НомерЧека = 0, -1, НомерЧека); ПриЗаписиПерепроводить(0); Записать(); ПриЗаписиПерепроводить(1); КонецЕсли; КонецПроцедуры |
|||
16
zloy
21.03.12
✎
08:36
|
вот)
|
|||
17
povar
21.03.12
✎
08:37
|
бу гага
|
|||
18
Капитан О
21.03.12
✎
08:38
|
(15) уже лучше. может быть, есть где-то сама функция?
|
|||
19
Гефест
21.03.12
✎
08:38
|
(15) Уже теплее, пробуй еще
|
|||
20
zloy
21.03.12
✎
08:40
|
Процедура ПечатьЧека()
Если КодОперации <> Перечисление.КодыОпераций.ОплатаОтПокупателя Тогда Сообщить("Чек может быть напечатан только при получении оплаты от покупателя!"); Возврат; КонецЕсли; Если глФРДляПриемаНаличныхОтЮрЛиц <> 1 Тогда Сообщить("Фискальный регистратор не предназначен для отражения наличных денежных расчетов."); Возврат; КонецЕсли; Если НомерЧекаККМ <> 0 Тогда Предупреждение("Чек уже пробит на фискальном регистраторе!",60); Возврат; ИначеЕсли глФРВкл=0 Тогда Предупреждение("Фискальный регистратор не подключен!",60); Возврат; ИначеЕсли (ОблагаетсяНП=1) и (СтавкаНП.Ставка<>0) Тогда Предупреждение("Чтобы распечатать чек на фискальном регистраторе" + РазделительСтрок + "необходимо, чтобы ставка НП была равна 0!",60); Возврат; ИначеЕсли ПометкаУдаления()=1 Тогда Предупреждение("Документ помечен на удаление, поэтому" + РазделительСтрок + "нельзя пробить чек на фискальном регистраторе!",60); Возврат; ИначеЕсли Проведен()=0 Тогда Если Вопрос("Провести документ и пробить чек на фискальном регистраторе?","Да+Нет")="Нет" Тогда Возврат; КонецЕсли; Попытка Записать(); Провести(); Исключение Возврат; КонецПопытки; ИначеЕсли Модифицированность()=1 Тогда Если Вопрос("Сохранить документ и пробить чек на фискальном регистраторе?","Да+Нет")="Нет" Тогда Возврат; КонецЕсли; Попытка Записать(); Исключение Возврат; КонецПопытки; КонецЕсли; Список = СоздатьОбъект("ТаблицаЗначений"); Список.НоваяКолонка("ТовНаим" , "Строка"); Список.НоваяКолонка("Цена" , "Число"); Список.НоваяКолонка("Количество", "Число"); Список.НоваяКолонка("НДС" , "Число"); Список.НоваяСтрока(); Список.ТовНаим = ?(ПустаяСтрока(ПринятоОт)=0,"Принято от ","")+СокрЛП(СокрЛП(ПринятоОт)+" "+СокрЛП(Основание)); Список.Цена = Сумма; Список.Количество = 1; Список.НДС = глНачисляемыйНДС(?(СтавкаНДС.Выбран() = 1, СтавкаНДС, глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС")))*100; СуммаЧека = Сумма; Получено = Сумма; Скидка = 0; ПризнВозврата = 0; НомерСекции = 1; НомерЧека = 0; Если глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,0,"") = 1 Тогда НомерЧекаККМ = ?(НомерЧека = 0, -1, НомерЧека); ПриЗаписиПерепроводить(0); Записать(); ПриЗаписиПерепроводить(1); КонецЕсли; КонецПроцедуры |
|||
21
zloy
21.03.12
✎
08:40
|
оно?)
|
|||
22
povar
21.03.12
✎
08:40
|
(20) холодно
|
|||
23
Гефест
21.03.12
✎
08:41
|
(20) Холодно
|
|||
24
zloy
21.03.12
✎
08:41
|
там же искать?
|
|||
25
povar
21.03.12
✎
08:42
|
(24) в компьютере ищи
|
|||
26
mishaPH
21.03.12
✎
08:42
|
глФРПечататьЧек функцию найди. в глобальнике
|
|||
27
zloy
21.03.12
✎
08:42
|
Модуль документа
Перем РабочийКО; // рабочий код операции, (по которому будет проведена операция) //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ // //****************************************************************************** // ОбработкаПроведенияПоКассе() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Описание: // Обработка проведения документа по регистру "Касса". // Процедура ОбработкаПроведенияПоКассе() Регистр.Касса.Фирма = Фирма; Регистр.Касса.Касса = Касса; Регистр.Касса.Валюта = Валюта; Регистр.Касса.СуммаВал = Сумма; Регистр.Касса.СуммаУпр = глПересчет(Сумма,Валюта,Курс,глДоллары,ДатаДок,Кратность); Регистр.Касса.СуммаРуб = глПересчет(Сумма,Валюта,Курс,глРубли,ДатаДок,Кратность); Регистр.Касса.КодОперации = РабочийКО; Регистр.Касса.ДвижениеДенежныхСредств = ДвижениеДенежныхСредств; Регистр.Касса.ДвижениеПриходВыполнить(); КонецПроцедуры // ОбработкаПроведенияПоКассе() //****************************************************************************** Процедура ОбработкаПроведенияПоВзаиморасчетам() Перем ТаблицаДолгов; Перем ВремРегистры; Перем ВремВзаиморасчеты; СписокПараметров=СоздатьОбъект("СписокЗначений"); СписокПараметров.ДобавитьЗначение(ТекущийДокумент(),"ТекДок"); СписокПараметров.ДобавитьЗначение(Фирма, "Фирма"); СписокПараметров.ДобавитьЗначение(-1, "ЗнакДвижения"); // уменьшение долга клиента СписокПараметров.ДобавитьЗначение(РабочийКО, "КодОперации"); ВремРегистры = СоздатьОбъект("Регистры"); Если (КодОперации=глКО.ОплатаОтПокупателя) или (КодОперации=глКО.РозничнаяВыручка) или (КодОперации=глКО.РозничнаяВыручкаЕНВД) Тогда ВремВзаиморасчеты=ВремРегистры.Покупатели; ИначеЕсли КодОперации=глКО.ВозвратОплатыОтПоставщика Тогда ВремВзаиморасчеты=ВремРегистры.Поставщики; КонецЕсли; глФильтрДолгов(Контекст, Договор, СписокПараметров, ВремВзаиморасчеты); Если ИтогиАктуальны() = 0 Тогда ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; ТаблДолгов = СоздатьОбъект("ТаблицаЗначений"); ТаблДолгов.НоваяКолонка("КредДокумент"); ТаблДолгов.НоваяКолонка("ВидДолга"); ТаблДолгов.НоваяКолонка("СтавкаНДС"); ТаблДолгов.НоваяКолонка("СтавкаНП"); ТаблДолгов.НоваяКолонка("Сумма"); ТаблДолгов.НоваяКолонка("СуммаУпр"); ТаблДолгов.НоваяКолонка("СуммаРуб"); ТаблДолгов.НоваяКолонка("СуммаНДС"); ТаблДолгов.НоваяКолонка("СуммаНП"); ТаблДолгов.НоваяКолонка("Себестоимость"); ТаблДолгов.НоваяКолонка("ОблагаетсяНП"); ТаблДолгов.НоваяКолонка("ДоговорКомитента"); КурсДоллара = глКурсДляВалюты(глДоллары,ДатаДок); КратДоллара = глКратностьДляВалюты(глДоллары,ДатаДок); КурсРубля = глКурсДляВалюты(глРубли,ДатаДок); КратРубля = глКратностьДляВалюты(глРубли, ДатаДок); ТаблДолгов.НоваяСтрока(); ТаблДолгов.КредДокумент = ТекущийДокумент(); Если (КодОперации = глКО.РозничнаяВыручка) Тогда ТаблДолгов.ВидДолга = глВД.РозничнаяВыручка; ИначеЕсли КодОперации=глКО.РозничнаяВыручкаЕНВД Тогда ТаблДолгов.ВидДолга = глВД.РозничнаяВыручкаЕНВД; иначе ТаблДолгов.ВидДолга = глВД.Аванс; КонецЕсли; // суммы ВалютаВзаим = Договор.ВалютаВзаиморасчетов; ТаблДолгов.СуммаУпр = ?(ВалютаВзаим=глДоллары,СуммаВзаиморасчетов,глПересчет(Сумма,Валюта,Курс,глДоллары,КурсДоллара,Кратность,КратДоллара)); ТаблДолгов.СуммаРуб = ?(ВалютаВзаим=глРубли ,СуммаВзаиморасчетов,глПересчет(Сумма,Валюта,Курс,глРубли,КурсРубля,Кратность,КратРубля)); ТаблДолгов.Сумма = СуммаВзаиморасчетов; ТаблДолгов.СуммаНДС = 0; ТаблДолгов.СуммаНП = 0; ТаблДолгов.СтавкаНДС= СтавкаНДС; ТаблДолгов.СтавкаНП = ?(ОблагаетсяНП=1,СтавкаНП,ПолучитьПустоеЗначение("Справочник.СтавкиНП")); ТаблДолгов.Себестоимость = 0; ТаблДолгов.ОблагаетсяНП = ОблагаетсяНП; глДвижениеДолгов(Контекст,Договор,ТаблДолгов,СписокПараметров,ВремВзаиморасчеты); ОбработкаПроведенияПоКассе(); КонецПроцедуры // ОбработкаПроведенияПоВзаиморасчетам() //****************************************************************************** Процедура ОбработкаПроведенияПоПодотчетникам() Перем ВремРегистры; Перем ВремПодотчетныеЛица; СписокПараметров=СоздатьОбъект("СписокЗначений"); СписокПараметров.ДобавитьЗначение(ТекущийДокумент(),"ТекДок"); СписокПараметров.ДобавитьЗначение(Фирма, "Фирма"); СписокПараметров.ДобавитьЗначение(-1, "ЗнакДвижения"); // уменьшение долга подотчетника СписокПараметров.ДобавитьЗначение(РабочийКО, "КодОперации"); ВремРегистры = СоздатьОбъект("Регистры"); ВремПодотчетныеЛица = ВремРегистры.ПодотчетныеЛица; глФильтрПодотчетников(Контекст, ФизЛицо, Валюта, СписокПараметров, ВремПодотчетныеЛица); Если ИтогиАктуальны() = 0 Тогда ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; ОбработкаПроведенияПоКассе(); глОбработкаПроведенияПоПодотчетнику(Контекст,ФизЛицо,Валюта, Сумма, глПересчет(Сумма,Валюта,Курс,глДоллары, ДатаДок,Кратность), глПересчет(Сумма,Валюта,Курс,глРубли, ДатаДок,Кратность), СписокПараметров,ВремПодотчетныеЛица); КонецПроцедуры //ОбработкаПроведенияПоПодотчетникам() Процедура ОбработкаПроведенияПоКнигеПродаж() Рег = СоздатьОбъект("Регистр.Покупатели"); Рег.ВыбратьДвиженияДокумента(ТекущийДокумент()); Пока Рег.ПолучитьДвижение() = 1 Цикл Если Рег.ВидДолга = глВД.РозничнаяВыручка Тогда ТекДок = ТекущийДокумент(); РегКнига = Регистр.КнигаПродаж; РегКнига.КредДокумент = ТекДок; РегКнига.ВидДолга = глВД.РозничнаяВыручка; РегКнига.СтавкаНДС = СтавкаНДС; СтНП =?(ОблагаетсяНП =1, СтавкаНП.Ставка/100,0); РегКнига.СуммаНП = Рег.СуммаРуб * СтНП/(1+СтНП); РегКнига.СуммаРуб = Рег.СуммаРуб; РегКнига.СуммаНДС = (Рег.СуммаРуб-РегКнига.СуммаНП) * глВыделяемыйНДС(СтавкаНДС); РегКнига.КодОперации = глКО.Прочее; РегКнига.ДокументОплаты = ТекДок; РегКнига.ДвижениеРасходВыполнить(); // Сделаем движения по книге продаж по оплате ИначеЕсли (Рег.ВидДолга = глВД.ДолгЗаТоварыВРознице) или (Рег.ВидДолга = глВД.ДолгЗаПродукциюВРознице) или (Рег.ВидДолга = глВД.ДолгЗаПолуфабрикатыВРознице) или (Рег.ВидДолга = глВД.ДолгЗаУслугиВРознице) или (Рег.ВидДолга = глВД.ДолгЗаРаботыВРознице) Тогда ТекДок = ТекущийДокумент(); РегКнига = Регистр.КнигаПродаж; РегКнига.КредДокумент = Рег.КредДокумент; ВремРегистры = СоздатьОбъект("Регистры"); ВремКнигаПродаж = ВремРегистры.КнигаПродаж; ВремКнигаПродаж.УстановитьЗначениеФильтра("КредДокумент",Рег.КредДокумент,1); ВремКнигаПродаж.УстановитьЗначениеФильтра("ВидДолга", Рег.ВидДолга, 1); // при необходимости делаем временный расчет итогов Если ИтогиАктуальны() = 0 Тогда ВремКнигаПродаж.ВременныйРасчет(); ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; ТИКнигаПродаж = СоздатьОбъект("ТаблицаЗначений"); ВремКнигаПродаж.ВыгрузитьИтоги(ТИКнигаПродаж,1,1); ТИКнигаПродаж.ВыбратьСтроки(); ОстПогСумма = Рег.СуммаРуб; Пока ТИКнигаПродаж.ПолучитьСтроку() = 1 Цикл СуммаСписания = Мин(ОстПогСумма, ТИКнигаПродаж.СуммаРуб); Если ТИКнигаПродаж.СуммаРуб = 0 Тогда Продолжить; Иначе КоэффСписания = СуммаСписания/ТИКнигаПродаж.СуммаРуб; КонецЕсли; РегКнига.ВидДолга = ТИКнигаПродаж.ВидДолга; РегКнига.СтавкаНДС = ТИКнигаПродаж.СтавкаНДС; РегКнига.СтавкаНП = Рег.СтавкаНП; РегКнига.СуммаНДС = ТИКнигаПродаж.СуммаНДС * КоэффСписания; РегКнига.СуммаНП = ТИКнигаПродаж.СуммаНП * КоэффСписания; РегКнига.СуммаРуб = СуммаСписания; РегКнига.КодОперации= глКО.Прочее; РегКнига.ДокументОплаты = ТекДок; РегКнига.ДвижениеРасходВыполнить(); ОстПогСумма = ОстПогСумма - СуммаСписания; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры //****************************************************************************** // ПроверкаДоговора() // // Параметры: // Нет. // // Возвращаемое значение: // 1 - если договор рублевый, 0 - если валютный // // Описание: // Проверяет является ли договор, для приема розничной выручки рублевым // Функция ПроверкаДоговора() Если Договор.ВалютаВзаиморасчетов = глРубли Тогда Возврат 1; Иначе глНеПроводить(Контекст, "Розничную выручку можно принимать только по договору в валюте бух. учета!"); Возврат 0; КонецЕсли; КонецФункции // ПроверкаДоговора() //****************************************************************************** // ПроведениеПоРегистрам() // // Параметры: // Нет. // // Возвращаемое значение: // Нет. // // Описание: // Проведение по регистрам оперативного учета. // Процедура ПроведениеПоРегистрам() // Удаление движений по регистрам. Для Номер = 1 По Метаданные.Регистр() Цикл ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор); КонецЦикла; Если КодОперации=глКО.ОплатаОтПокупателя Тогда ОбработкаПроведенияПоВзаиморасчетам(); ИначеЕсли КодОперации=глКО.ВозвратОплатыОтПоставщика Тогда ОбработкаПроведенияПоВзаиморасчетам(); ИначеЕсли КодОперации=глКО.ВозвратПодотчетныхСумм Тогда ОбработкаПроведенияПоПодотчетникам(); ИначеЕсли (КодОперации=глКО.РозничнаяВыручка) Тогда Если ПроверкаДоговора() = 0 Тогда Возврат; КонецЕсли; ОбработкаПроведенияПоВзаиморасчетам(); ОбработкаПроведенияПоКнигеПродаж(); ИначеЕсли (КодОперации=глКО.РозничнаяВыручкаЕНВД) Тогда Если ПроверкаДоговора() = 0 Тогда Возврат; КонецЕсли; ОбработкаПроведенияПоВзаиморасчетам(); Иначе ОбработкаПроведенияПоКассе(); КонецЕсли; КонецПроцедуры // ПроведениеПоРегистрам() //////////////////////////////////////////////////////////////////////////////// // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ // //****************************************************************************** // Предопределенная процедура. // Процедура ОбработкаПроведения(ВидыДвижений) // Проверка заполненности обязательных реквизитов. СписокОбязатРеквизитов = "Фирма,Валюта,Касса,Сумма"; Если (КодОперации=глКО.ОплатаОтПокупателя) или (КодОперации=глКО.РозничнаяВыручка) или (КодОперации=глКО.РозничнаяВыручкаЕНВД) или (КодОперации=глКО.ВозвратОплатыОтПоставщика) Тогда СписокОбязатРеквизитов = СписокОбязатРеквизитов + ",Контрагент,Договор"; ИначеЕсли (КодОперации=глКО.ВозвратПодотчетныхСумм) Тогда СписокОбязатРеквизитов = СписокОбязатРеквизитов + ",ФизЛицо"; КонецЕсли; Если глВсеРеквизитыДокументаЗаполнены(Контекст,СписокОбязатРеквизитов)=0 Тогда Возврат; КонецЕсли; Если ПустоеЗначение(АвансовыйОтчет) = 0 Тогда Если АвансовыйОтчет.ФизЛицо <> ФизЛицо Тогда глНеПроводить(Контекст,"Физ. лицо авансового отчета не соответствует физ. лицу документа."); КонецЕсли; Если АвансовыйОтчет.Валюта <> Валюта Тогда глНеПроводить(Контекст,"Валюта авансового отчета не соответствует валюте документа."); КонецЕсли; Если АвансовыйОтчет.Фирма <> Фирма Тогда глНеПроводить(Контекст,"Фирма авансового отчета не соответствует фирме документа."); КонецЕсли; КонецЕсли; Если Валюта <> глРубли Тогда РабочийКО = глКО.ЗначениеПоИдентификатору(""+КодОперации.Идентификатор()+"Вал"); Иначе РабочийКО = КодОперации; КонецЕсли; // Проведение по регистрам оперативного учета. Если (ПустоеЗначение(ВидыДвижений) = 1) ИЛИ (Найти(ВидыДвижений, "Регистр") <> 0) Тогда ПроведениеПоРегистрам(); Если СтатусВозврата() = 0 Тогда Возврат; КонецЕсли; КонецЕсли; глПриПроведении(Контекст, ВидыДвижений); КонецПроцедуры //ОбработкаПроведения() //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ |
|||
28
zloy
21.03.12
✎
08:42
|
форма
|
|||
29
zloy
21.03.12
✎
08:42
|
////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ // Перем СписокДействий; // для механизма кнопки "Действия" Перем НачальнаяДатаДокумента; // для механизма контроля уникальности номеров Перем ВидСчетаФактуры; Перем ТаблицаПечФорм; // список печатных форм документа Перем НомерТекущейФормы; // Для контроля необходимости пересчетов Перем СтараяДата, СтараяФирма, СтараяВалюта, СтарыйКурс, СтараяКратность, СтароеФизЛицо, СтарыйАвансовыйОтчет; Перем СтарыйДоговор, СтарыйКонтрагент; // для контроля изменений при записи Перем НачВалюта, НачКурс, НачКратность, НачКонтрагент, НачДоговор, НачФирма, НачСумма; Перем ТекущийДолг; Перем Парам; //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ // //****************************************************************************** // ТекстВалюты(Вал) // // Параметры: // Вал - элемент справочника Валюты // // Возвращаемое значение: // Краткое наименование валюты, // <нет>, если передано пустое значение // // Описание: // Формирует текстовую строку о переданной валюте // Функция ТекстВалюты(Вал) Возврат ?(ПустоеЗначение(Вал)=0,Вал.Наименование,"<нет>"); КонецФункции // ТекстВалюты() //***************************************************************************** // ЗаголовокФормы() // // Возвращаемое значение: // Строка - Название документа // //Описание: // Формирует название документа и заголовок формы диалога // Функция ЗаголовокФормы() Перем Заголовок, Название; Заголовок = "Приходный кассовый ордер"; Название = "ПКО №"; Если Выбран() = 1 Тогда Если Проведен() = 1 Тогда Заголовок = Заголовок + ". Проведен"; Иначе Заголовок = Заголовок + ". Не проведен"; КонецЕсли; Иначе Заголовок = Заголовок + ". Новый"; КонецЕсли; Форма.Заголовок(Заголовок); Возврат Название; КонецФункции //ЗаголовокФормы() //****************************************************************************** Процедура УправлениеВидимостью() // Закладка "Общее". Форма.Закладки.Установить("Общее", "Общий1, Общий2, Операция, Прочее"); // Закладка "Печать". Форма.Закладки.Установить("Печать", "Общий1, Общий2, Печать"); // Удаление лишних закладок. КоличествоЗакладок = 2; Пока КоличествоЗакладок < Форма.Закладки.РазмерСписка() Цикл Форма.Закладки.УдалитьЗначение(Форма.Закладки.РазмерСписка()); КонецЦикла; // Установка текущей закладки - при открытии формы. Если Форма.Закладки.ТекущаяСтрока() = 0 Тогда Форма.Закладки.ТекущаяСтрока(1); КонецЕсли; Если (КодОперации = глКО.ОплатаОтПокупателя) ИЛИ (КодОперации = глКО.ВозвратОплатыОтПоставщика)ИЛИ (КодОперации = глКО.РозничнаяВыручка) ИЛИ (КодОперации = глКО.РозничнаяВыручкаЕНВД) Тогда Форма.Закладки.Установить("Общее", "Общий1, Общий2, Операция, Взаиморасчеты"); ИначеЕсли (КодОперации = глКО.ВозвратПодотчетныхСумм) Тогда Форма.Закладки.Установить("Общее", "Общий1, Общий2, Операция, Подотчетник"); Иначе // Закладка "Налоговый учет" с указанием данных НУ Форма.Закладки.Установить("Налоговый учет", "Общий1, Общий2, Операция, ПрочееНУ"); КонецЕсли; Если (КодОперации = глКО.РозничнаяВыручка) ИЛИ (КодОперации = глКО.РозничнаяВыручкаЕНВД) Тогда Форма.ТекстОснование.Заголовок("№ ленты ККМ:"); Иначе Форма.ТекстОснование.Заголовок("Основание:"); КонецЕсли; Форма.СписокСтавокНП.Доступность(ОблагаетсяНП); Форма.ИспользоватьСлой(Форма.Закладки.ПолучитьЗначение(Форма.Закладки.ТекущаяСтрока()), 2); КонецПроцедуры //****************************************************************************** // УправлениеДоступностью() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // // Описание: // Здесь описывается процедура. // Процедура УправлениеДоступностью() Если Форма.ТолькоПросмотр() = 0 Тогда Если Договор.ВалютаВзаиморасчетов = Валюта Тогда Форма.кнСуммаВзаиморасчетов.Доступность(0); Иначе Форма.кнСуммаВзаиморасчетов.Доступность(1); КонецЕсли; Если Валюта = глРубли Тогда Форма.Курс.Доступность(0); Иначе Форма.Курс.Доступность(1); КонецЕсли; КонецЕсли; Если КодОперации = глКО.РозничнаяВыручкаЕНВД Тогда Если ОблагаетсяНП <> 0 Тогда ОблагаетсяНП = 0; КонецЕсли; СписокСтавокНДС.ТекущаяСтрока(1); СписокСтавокНП.ТекущаяСтрока(1); Форма.СписокСтавокНДС.Доступность(0); Форма.СписокСтавокНП.Доступность(0); Форма.ОблагаетсяНП.Доступность(0); Иначе Форма.СписокСтавокНДС.Доступность(1); Форма.СписокСтавокНП.Доступность(1); Форма.ОблагаетсяНП.Доступность(1); КонецЕсли; КонецПроцедуры // УправлениеДоступностью() //****************************************************************************** Процедура ЗаполнитьСписокСтавокНП() Перем ВыборкаСтавокНП; СписокСтавокНП.ДобавитьЗначение(ПолучитьПустоеЗначение("Справочник.СтавкиНП"),"<авто>"); ВыборкаСтавокНП = СоздатьОбъект("Справочник.СтавкиНП"); ВыборкаСтавокНП.ВыбратьЭлементы(); Пока ВыборкаСтавокНП.ПолучитьЭлемент()=1 Цикл Если ВыборкаСтавокНП.ПометкаУдаления() = 0 Тогда СписокСтавокНП.ДобавитьЗначение(ВыборкаСтавокНП.ТекущийЭлемент(), Строка(ВыборкаСтавокНП.Ставка)+"%"); КонецЕсли; КонецЦикла; КонецПроцедуры //****************************************************************************** Процедура ЗаполнитьСписокСтавокНДС() пНДС = Перечисление.СтавкиНДС; СписокСтавокНДС.ДобавитьЗначение(ПолучитьПустоеЗначение("Перечисление.СтавкиНДС"),"<авто>"); Для Сч=1 По пНДС.КоличествоЗначений() Цикл СписокСтавокНДС.ДобавитьЗначение(пНДС.ЗначениеПоНомеру(Сч),Строка(пНДС.ЗначениеПоНомеру(Сч))); КонецЦикла; КонецПроцедуры //****************************************************************************** Процедура ЗаполнитьСписокВидовОплаты() СписокВидовОплаты.ДобавитьЗначение(глКО.ОплатаОтПокупателя); СписокВидовОплаты.ДобавитьЗначение(глКО.ВозвратОплатыОтПоставщика); СписокВидовОплаты.ДобавитьЗначение(глКО.ВозвратПодотчетныхСумм); СписокВидовОплаты.ДобавитьЗначение(глКО.РозничнаяВыручка); СписокВидовОплаты.ДобавитьЗначение(глКО.РозничнаяВыручкаЕНВД); СписокВидовОплаты.ДобавитьЗначение(глКО.Прочее); КонецПроцедуры //****************************************************************************** Процедура ВыборСтавкиНП() Перем Позиция; Позиция = СписокСтавокНП.ТекущаяСтрока(); Если Позиция > 0 Тогда СтавкаНП = СписокСтавокНП.ПолучитьЗначение(Позиция); КонецЕсли; КонецПроцедуры //****************************************************************************** Процедура ВыборСтавкиНДС() Перем Позиция; Позиция = СписокСтавокНДС.ТекущаяСтрока(); Если Позиция > 0 Тогда СтавкаНДС = СписокСтавокНДС.ПолучитьЗначение(Позиция); КонецЕсли; КонецПроцедуры //****************************************************************************** Функция ТекстВалютыВзаим() Форма.ТекстСуммаВзаиморасчетов.Заголовок(глФРМ(СуммаВзаиморасчетов,Договор.ВалютаВзаиморасчетов)); Возврат ТекстВалюты(Договор.ВалютаВзаиморасчетов); КонецФункции //****************************************************************************** // ПересчетСуммыВзаиморасчетов() // // Возвращаемое значение: НЕТ // // Описание: // Пересчитывает сумму в валюте взаиморасчетов. Процедура ПересчетСуммыВзаиморасчетов() Если ПустоеЗначение(Договор.ВалютаВзаиморасчетов) =1 Тогда СуммаВзаиморасчетов = 0; Иначе СуммаВзаиморасчетов = глПересчет(Сумма, Валюта,Курс, Договор.ВалютаВзаиморасчетов,ДатаДок,Кратность); КонецЕсли; Форма.Обновить(); КонецПроцедуры //****************************************************************************** // РасчетТекущегоДолга() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Описание: // Производит вызов глобальной функции расчета суммы текущего долга контрагента. // В зависимости от характера задолженности устанавливает // цвет элемента диалога "Сумма долга". (Если долг >= 0 - синий, иначе - красный) // Процедура РасчетТекущегоДолга() Если (КодОперации = глКО.ОплатаОтПокупателя) или (КодОперации = глКО.РозничнаяВыручка) или (КодОперации = глКО.РозничнаяВыручкаЕНВД) Тогда ТекущийДолг = глТекущийДолг(Фирма, Договор, "Покупатель"); ИначеЕсли (КодОперации = глКО.ВозвратОплатыОтПоставщика) Тогда ТекущийДолг = глТекущийДолг(Фирма, Договор, "Поставщик"); Иначе ТекущийДолг = 0; КонецЕсли; Форма.ТекстТекущийДолг.Заголовок(глФРМ(ТекущийДолг,Договор.ВалютаВзаиморасчетов)); Если ТекущийДолг < 0 Тогда Форма.ТекстТекущийДолг.Цвет(255); Иначе Форма.ТекстТекущийДолг.Цвет(0,0,128); КонецЕсли; КонецПроцедуры //РасчетТекущегоДолга() //****************************************************************************** // ЗаполнениеПоДокументуОснованию() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // // Описание: // Производит заполнение документа по документу - основанию. // Функция ЗаполнениеПоДокументуОснованию() Если ДокОснование.Выбран()=0 Тогда Возврат "Не выбран документ - основание"; КонецЕсли; ВидОсн = ДокОснование.Вид(); Если (ВидОсн <> "ЗаявкаПокупателя") и (ВидОсн <> "ВозвратПоставщику") и (ВидОсн <> "ОтчетКомиссионера") и (ВидОсн <> "РеализацияПрочее") и (ВидОсн <> "Реализация") и (ВидОсн <> "РеализацияРозница") и (ВидОсн <> "РКО") Тогда Возврат "Неверный вид документа - основания!"; КонецЕсли; Валюта = ДокОснование.Валюта; Контрагент = ДокОснование.Контрагент; Договор = ДокОснование.Договор; СуммаВзаиморасчетов = ДокОснование.СуммаВзаиморасчетов; Если (ВидОсн = "ВозвратПоставщику") или (ВидОсн = "РКО")Тогда КодОперации = глКО.ВозвратОплатыОтПоставщика; Курс = ДокОснование.Курс; Кратность = ДокОснование.Кратность; Если ВидОсн = "РКО" Тогда Касса = ДокОснование.Касса; ОблагаетсяНП = ДокОснование.ОблагаетсяНП; Сумма = ДокОснование.Сумма; // Возвращаем ту же сумму, что и получили и по тому же курсу // Если подотчетник Если ДокОснование.КодОперации = глКО.ВыдачаПодотчет Тогда КодОперации = глКО.ВозвратПодотчетныхСумм; ФизЛицо = ДокОснование.ФизЛицо; КонецЕсли; Иначе // ВозвратПоставщику ОблагаетсяНП = ДокОснование.УчитыватьНП; //Возврат оплачиваем по курсу документа возврата Сумма = глПересчет(ДокОснование.Итог("Сумма") + ?(ДокОснование.СуммаВклНДС = 1, 0,ДокОснование.Итог("СуммаНДС")) + ?(ДокОснование.СуммаВклНП = 1, 0,ДокОснование.Итог("СуммаНП")), ДокОснование.Валюта, ДокОснование.Курс, Валюта, ДатаДок, ДокОснование.Кратность); КонецЕсли; Иначе КодОперации = глКО.ОплатаОтПокупателя; Курс = глКурсДляВалюты(Валюта, ДатаДок); // Курс мог измениться Кратность = глКратностьДляВалюты(Валюта, ДатаДок); // Оплачиваем по умолчанию сумму, которую считаем нужным оплатить по взаиморасчетам Если СуммаВзаиморасчетов = 0 Тогда Сумма = 0; Иначе Сумма = глПересчет(СуммаВзаиморасчетов, Договор.ВалютаВзаиморасчетов, ДатаДок, Валюта, Курс,, Кратность); КонецЕсли; Если ВидОсн = "ОтчетКомиссионера" Тогда ОблагаетсяНП = 0;; ИначеЕсли ВидОсн = "РеализацияРозница" Тогда Если ДокОснование.ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам Тогда Если ДокОснование.ОблагаетсяЕНВД = 1 Тогда КодОперации = глКО.РозничнаяВыручкаЕНВД; Иначе КодОперации = глКО.РозничнаяВыручка; КонецЕсли; КонецЕсли; Иначе ОблагаетсяНП = ДокОснование.УчитыватьНП; КонецЕсли; КонецЕсли; СтараяВалюта = Валюта; СтарыйКурс = Курс; СтараяКратность = Кратность; Если Контрагент.ЮрФизЛицо.Выбран() = 1 Тогда ПринятоОт = Контрагент.ЮрФизЛицо.ПолнНаименование; ИначеЕсли ФизЛицо.Выбран() = 1 Тогда ПринятоОт = ФизЛицо.ПолнНаименование; КонецЕсли; Возврат ""; КонецФункции // ЗаполнениеПоДокументуОснованию() //***************************************************************************** // ПоКнопкеОснование() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Описание: // Вызывается по кнопке выбора документа основания // Процедура ПоКнопкеОснование() // если документ основание уже есть, откроем его Если ПустоеЗначение(ДокОснование) = 0 Тогда ОткрытьФорму(ДокОснование); Возврат; КонецЕсли; // если документа - основания нет, позволяем выбрать его ДокОсн = глВыбратьОснование(Контекст); Если ПустоеЗначение(ДокОсн) = 0 Тогда // Выбрали основание глЗаполнитьШапкуНаОсн(Контекст, ДокОсн); Основание = глПредставлениеДокумента(ДокОсн); ТекстВопроса = "Заполнить сумму по документу основанию?"; Если Сумма <> 0 Тогда ТекстВопроса = ТекстВопроса + РазделительСтрок +" (перед заполнением сумма будет обнулена)"; КонецЕсли; Если Вопрос(ТекстВопроса, "Да+Нет", 60) <> "Да" Тогда Возврат; КонецЕсли; Сумма = 0; Результат = ЗаполнениеПоДокументуОснованию(); Если ПустоеЗначение(Результат) = 0 Тогда Предупреждение(Результат, 60); КонецЕсли; СтарыйКонтрагент = Контрагент; СтарыйДоговор = Договор; РасчетТекущегоДолга(); УправлениеДоступностью(); КонецЕсли; КонецПроцедуры //ПоКнопкеОснование() //****************************************************************************** // ПодготовитьСумму(ИспСумма, ИспВалюта) // // Параметры: // Нет // // Возвращаемое значение: // 0 - // Описание: // Функция ПодготовитьСумму(ИспСумма) ИспСумма = Окр(ИспСумма, 2, 1); ЦелСумма = Цел(ИспСумма); КопСумма = 100 * (Окр(ИспСумма - ЦелСумма, 2, 1)); Возврат "" + ЦелСумма + " руб. " + Формат(КопСумма , "Ч(0)2") + " коп."; КонецФункции // ПодготовитьСумму() //****************************************************************************** // ПредставлениеСтавкиНДС(Ставка) // // Параметры: // Ставка // // Возвращаемое значение: // Нет // // Описание: // ТекстОписания // Функция ПредставлениеСтавкиНДС(Сумма, Ставка) Рез = "" + Перечисление.СтавкиНДС.БезНДС; Если ПустоеЗначение(Ставка) = 0 Тогда Если Ставка <> Перечисление.СтавкиНДС.БезНДС Тогда Рез = " НДС(" + Ставка + ") " + ПодготовитьСумму(Сумма); КонецЕсли; КонецЕсли; Возврат Рез; КонецФункции // ПредставлениеСтавкиНДС() //****************************************************************************** // ПредставлениеСтавкиНП(Ставка, Сумма) // // Параметры: // Ставка, Сумма // // Возвращаемое значение: // Нет // // Описание: // ТекстОписания // Функция ПредставлениеСтавкиНП(Сумма, Ставка) Рез = ""; Если Ставка > 0 Тогда Рез = " НП(" + Ставка + "%) " + ПодготовитьСумму(Сумма); КонецЕсли; Возврат Рез; КонецФункции // ПредставлениеСтавкиНП() //****************************************************************************** // ПолнаяСуммаОсн() // // Параметры: // // // Возвращаемое значение: // Нет // // Описание: // ТекстОписания // Функция РасчетКоэффициента(СуммаДок) // вычислим сумму документа основания со всеми налогами Рез = глПересчет(ДокОснование.Итог("Сумма"), ДокОснование.Валюта, ДокОснование.Курс, глРубли, 1, ДокОснование.Кратность); Если ДокОснование.Вид() <> "ОтчетКомиссионера" Тогда Если ДокОснование.УчитыватьНП = 1 Тогда Если ДокОснование.СуммаВклНП = 0 Тогда Рез = Рез + глПересчет(ДокОснование.Итог("СуммаНП"), ДокОснование.Валюта, ДокОснование.Курс, глРубли, 1, ДокОснование.Кратность); КонецЕсли; КонецЕсли; КонецЕсли; Если ДокОснование.УчитыватьНДС = 1 Тогда Если ДокОснование.СуммаВклНДС = 0 Тогда Рез = Рез + глПересчет(ДокОснование.Итог("СуммаНДС"), ДокОснование.Валюта, ДокОснование.Курс, глРубли, 1, ДокОснование.Кратность); КонецЕсли; КонецЕсли; Если Рез = 0 Тогда Рез = 1; Иначе Рез = СуммаДок / Рез; КонецЕсли; Возврат Рез; КонецФункции // ПолнаяСуммаОсн() //****************************************************************************** // ПриВыбореСубконто(ИдРеквизита, НомерРеквизита) // // Параметры: // ИдРеквизита - общая часть идентификатора реквизитов (например "Субконто" или // "СубконтоНУ") // НомерРеквизита - Порядковый номер в названии реквизита // // Возвращаемое значение: // Нет // // Описание: // При изменении значения в реквизитах "Субконто" или "СубконтоНУ", проверяет // не являются ли типы последующих реквизитов подчиненными справочниками. Если // являются, то в случае несоответствия между владельцем и подчиненным элементом // значение подчиненного элемента очищается. // (Например Контрагент - Договор) // Процедура ПриВыбореСубконто(ИдРеквизита, НомерРеквизита) СубкВлад = ПолучитьАтрибут(ИдРеквизита+НомерРеквизита); Если ТипЗначенияСтр(СубкВлад) = "Справочник" Тогда Для т = НомерРеквизита + 1 По 3 Цикл СубкПодч = ПолучитьАтрибут(ИдРеквизита+т); Если ТипЗначенияСтр(СубкПодч) = "Справочник" Тогда Если (СубкПодч.Выбран() = 1) и (ТипЗначенияСтр(СубкПодч.Владелец) = "Справочник") Тогда Если СубкПодч.Владелец.Вид() = СубкВлад.Вид() Тогда Если (СубкПодч.Владелец.Выбран() = 0) или (СубкПодч.Владелец <> СубкВлад) Тогда УстановитьАтрибут(ИдРеквизита+т, ""); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры // ПриВыбореСубконто() //****************************************************************************** // Печать(СразуНаПринтер, КолЭкз) // // Параметры: // СразуНаПринтер - (1) если печать на принтер, (0) - с предварительным просмотром // КолЭкз - количество экземпляров печати // // Возвращаемое значение: // нет. // // Описание: // Процедура Печать(СразуНаПринтер = 0,КолЭкз = 1) Перем ЗначенияПоНП, ЗначенияПоНДС; Наименование = Фирма.ЮрЛицо.ПолнНаименование; ИНН = Фирма.ЮрЛицо.ИНН; Руководитель = глФамилияИмяОтчество(Фирма.ЮрЛицо.Руководитель.Получить(ДатаДок)); Глбухгалтер = глФамилияИмяОтчество(Фирма.ЮрЛицо.Глбухгалтер.Получить(ДатаДок)); Кассир = глФамилияИмяОтчество(Фирма.ЮрЛицо.Кассир.Получить(ДатаДок)); СтрСумма = ""; Коэфф = 1; КоэффРассчитан = 0; СуммаРуб = глПересчет(Сумма, Валюта, Курс, глРубли, 1, Кратность); СуммаНПРубВсего = 0; Если Проведен()=1 Тогда Рез = ""; глОпределитьКоррСчетаДокумента(ТекущийДокумент(),Рез,"50",1); КрСчДб = Рез.Получить("СчетаДебета"); КрСчКр = Рез.Получить("СчетаКредита"); КонецЕсли; Если ОблагаетсяНП = 1 Тогда // НП облагается Если ПустоеЗначение(СтавкаНП) = 1 Тогда // Ставка НП не установлена (авто) Если ПустоеЗначение(ДокОснование) = 1 Тогда // рассчитаем сумму НП по ставке по умолчанию Ставка = глЗначениеПоУмолчанию("ОсновнаяСтавкаНП"); СуммаНПРубВсего = СуммаРуб * Ставка.Ставка / (100 + Ставка.Ставка); СтрСумма = ПредставлениеСтавкиНП(СуммаНПРубВсего, Ставка.Ставка); Иначе Если Докоснование.Вид() = "РКО" Тогда Ставка = глЗначениеПоУмолчанию("ОсновнаяСтавкаНП"); Если Ставка.Ставка > 0 Тогда СуммаНПРубВсего = СуммаРуб * Ставка.Ставка / (100 + Ставка.Ставка); СтрСумма = ПредставлениеСтавкиНП(СуммаНПРубВсего, Ставка.Ставка); КонецЕсли; Иначе Если ДокОснование.УчитыватьНП = 1 Тогда // выгрузим в тз колонки ставки и сумму и свернем по ставке ДокОснование.ВыгрузитьТабличнуюЧасть(ЗначенияПоНП, "СтавкаНП,СуммаНП"); ЗначенияПоНП.Свернуть("СтавкаНП", "СуммаНП"); // вычислим сумму документа основания со всеми налогами Коэфф = РасчетКоэффициента(СуммаРуб); КоэффРассчитан = 1; ЗначенияПоНП.ВыбратьСтроки(); Пока ЗначенияПоНП.ПолучитьСтроку() = 1 Цикл Если ЗначенияПоНП.СуммаНП > 0 Тогда СуммаНПРуб = глПересчет(ЗначенияПоНП.СуммаНП, ДокОснование.Валюта, ДокОснование.Курс, глРубли, 1, ДокОснование.Кратность) * Коэфф; глДобавитьРеквизит(СтрСумма, "; ", ПредставлениеСтавкиНП(СуммаНПРуб, ЗначенияПоНП.СтавкаНП.Ставка)); СуммаНПРубВсего = СуммаНПРубВсего + СуммаНПРуб; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; Иначе // рассчитаем НП по заданной ставке Если СтавкаНП.Ставка <> 0 Тогда СуммаНПРубВсего = СуммаРуб * СтавкаНП.Ставка / (100 + СтавкаНП.Ставка); СтрСумма = ПредставлениеСтавкиНП(СуммаНПРубВсего, СтавкаНП.Ставка); КонецЕсли; КонецЕсли; КонецЕсли; СуммаРубБезНП = СуммаРуб - СуммаНПРубВсего; Если ПустоеЗначение(СтавкаНДС) = 1 Тогда // Ставка НДС не установлена (авто) Если ПустоеЗначение(ДокОснование) = 1 Тогда Если КодОперации = Перечисление.КодыОпераций.РозничнаяВыручкаЕНВД Тогда Ставка = Перечисление.СтавкиНДС.БезНДС; Иначе // рассчитаем сумму НДС по ставке по умолчанию Ставка = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС"); КонецЕсли; СуммаНДСРуб = СуммаРубБезНП * глВыделяемыйНДС(Ставка); Если СуммаНДСРуб <> 0 Тогда глДобавитьРеквизит(СтрСумма, "; ", ПредставлениеСтавкиНДС(СуммаНДСРуб, Ставка)); КонецЕсли; Иначе Если Докоснование.Вид() = "РКО" Тогда Ставка = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС"); СуммаНДСРуб = СуммаРубБезНП * глВыделяемыйНДС(Ставка); глДобавитьРеквизит(СтрСумма, "; ", ПредставлениеСтавкиНДС(СуммаНДСРуб, Ставка)); Иначе Если ДокОснование.УчитыватьНДС = 1 Тогда // выгрузим в тз колонки ставки и сумму и свернем по ставке ДокОснование.ВыгрузитьТабличнуюЧасть(ЗначенияПоНДС, "СтавкаНДС,СуммаНДС"); ЗначенияПоНДС.Свернуть("СтавкаНДС", "СуммаНДС"); // вычислим сумму документа основания со всеми налогами Если КоэффРассчитан = 0 Тогда Коэфф = РасчетКоэффициента(СуммаРуб); КонецЕсли; ЗначенияПоНДС.ВыбратьСтроки(); Пока ЗначенияПоНДС.ПолучитьСтроку() = 1 Цикл Если ЗначенияПоНДС.СуммаНДС > 0 Тогда СуммаНДСРуб = глПересчет(ЗначенияПоНДС.СуммаНДС, ДокОснование.Валюта, ДокОснование.Курс, глРубли, 1, ДокОснование.Кратность) * Коэфф; глДобавитьРеквизит(СтрСумма, "; ", ПредставлениеСтавкиНДС(СуммаНДСРуб, ЗначенияПоНДС.СтавкаНДС)); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; Иначе // рассчитаем НДС по заданной ставке ПроцНДС = глВыделяемыйНДС(СтавкаНДС); Если ПроцНДС <> 0 Тогда СуммаНДСРуб = СуммаРубБезНП * ПроцНДС; глДобавитьРеквизит(СтрСумма, "; ", ПредставлениеСтавкиНДС(СуммаНДСРуб, СтавкаНДС)); КонецЕсли; КонецЕсли; Если ПустоеЗначение(СтрСумма) = 0 Тогда СтрСумма = "В том числе " + СтрСумма; Иначе СтрСумма = "без налога (НДС)"; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.Вывести(); Если СразуНаПринтер = 0 Тогда Таб.Опции(0,0,0,0,"ОпцииПечатиПриходногоОрдера","ОпцииПечатиПриходногоОрдера"); Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда Таб.Защита(1); Иначе Таб.Защита(0); КонецЕсли; Таб.ТолькоПросмотр(1); Таб.Показать(глНазваниеДокументаВжурнале(Контекст),""); Иначе Таб.ПараметрыСтраницы(,,,,,,,,,1,,); Таб.КоличествоЭкземпляров(КолЭкз); Таб.Напечатать(0); КонецЕсли; КонецПроцедуры //****************************************************************************** // ПризнакПробитияЧека() // // Параметры: // Нет // // Возвращаемое значение: // Строка - информация о чеке // // Описание: // Возвращает информацию о пробитом чеке или пустую строку, если чек не пробит. // Функция ПризнакПробитияЧека() Если НомерЧекаККМ <> 0 Тогда Если НомерЧекаККМ > 0 Тогда Возврат "№ чека: "+СокрЛП(НомерЧекаККМ); Иначе Возврат "Чек пробит"; КонецЕсли; Иначе Возврат ""; КонецЕсли; КонецФункции //****************************************************************************** // ПечатьЧека() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Описание: // Печатает чек на фискальном регистраторе // Процедура ПечатьЧека() Если КодОперации <> Перечисление.КодыОпераций.ОплатаОтПокупателя Тогда Сообщить("Чек может быть напечатан только при получении оплаты от покупателя!"); Возврат; КонецЕсли; Если глФРДляПриемаНаличныхОтЮрЛиц <> 1 Тогда Сообщить("Фискальный регистратор не предназначен для отражения наличных денежных расчетов."); Возврат; КонецЕсли; Если НомерЧекаККМ <> 0 Тогда Предупреждение("Чек уже пробит на фискальном регистраторе!",60); Возврат; ИначеЕсли глФРВкл=0 Тогда Предупреждение("Фискальный регистратор не подключен!",60); Возврат; ИначеЕсли (ОблагаетсяНП=1) и (СтавкаНП.Ставка<>0) Тогда Предупреждение("Чтобы распечатать чек на фискальном регистраторе" + РазделительСтрок + "необходимо, чтобы ставка НП была равна 0!",60); Возврат; ИначеЕсли ПометкаУдаления()=1 Тогда Предупреждение("Документ помечен на удаление, поэтому" + РазделительСтрок + "нельзя пробить чек на фискальном регистраторе!",60); Возврат; ИначеЕсли Проведен()=0 Тогда Если Вопрос("Провести документ и пробить чек на фискальном регистраторе?","Да+Нет")="Нет" Тогда Возврат; КонецЕсли; |
|||
30
povar
21.03.12
✎
08:43
|
действительно злой буратина
|
|||
31
zloy
21.03.12
✎
08:44
|
помогайте чё делать
|
|||
32
Гефест
21.03.12
✎
08:44
|
Интересно, а глобальник форум прожует?
|
|||
33
povar
21.03.12
✎
08:45
|
(32) сразу на год в бан
|
|||
34
Капитан О
21.03.12
✎
08:45
|
(31) копипасти ещё, когда-нибудь попадёшь
|
|||
35
povar
21.03.12
✎
08:45
|
(31) найди Функция глФРПечататьЧек(
|
|||
36
mishaPH
21.03.12
✎
08:46
|
(31) найди в глобальном модуле блеать глФРПечататьЧек . буть мужиком
|
|||
37
zloy
21.03.12
✎
08:48
|
нашел
|
|||
38
zloy
21.03.12
✎
08:48
|
//******************************************************************************
// глФРПечататьЧек(СписокТоваров, СуммаЧека, Получено, ПризнВозврата, НомерСекции, НомерЧека) // // Параметры: // СписокТоваров - таблица значений с информацией о проданных или возвращенных товарах // СуммаЧека - итоговая сумма чека // Получено - сумма, полученная от покупателя // ПризнВозврата - 1 - чек на возврат, 0 - чек на продажу // НомерСекции - номер секции // НомерЧека - выходной параметр. Номер чека, пробитого на фискальном регистраторе // // Возвращаемое значение: // 1 - операция успешно завершена, 0 - нет. // // Описание: // печатает чек на фискальном регистраторе // Функция глФРПечататьЧек(СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,БезНал,Продавец,СумБонуса) Экспорт Рез = 0; Если глФРВкл = 1 Тогда Параметры = СоздатьОбъект("СписокЗначений"); Параметры.Установить("Процесс" , "печатать_чек"); Параметры.Установить("Объект" , глФР); Параметры.Установить("ПарольПользователя", глФРПарольПользователя); Параметры.Установить("СписокТоваров" , СписокТоваров); Параметры.Установить("СуммаЧека" , СуммаЧека); Параметры.Установить("Получено" , Получено); Параметры.Установить("Скидка" , Скидка); Параметры.Установить("Возврат" , ПризнВозврата); Параметры.Установить("НомерСекции" , НомерСекции); Параметры.Установить("ПриемНаличныхОтЮрЛиц", глФРДляПриемаНаличныхОтЮрЛиц); Параметры.Установить("БезНал", БезНал); Параметры.Установить("Продавец", Продавец); Параметры.Установить("СумБонуса", СумБонуса); РезТекст = глОборудованиеКоманда("ФР", глФРОбработка, Параметры); Если ПустоеЗначение(РезТекст) = 0 Тогда Сообщить(РезТекст); Иначе Если Параметры.Получить("Результат") = 0 Тогда Сообщить("Фискальный регистратор: ошибка при печати чека"); Сообщить(Параметры.Получить("ОписаниеРезультата")); Иначе НомерЧека = Параметры.Получить("НомерЧека"); Рез = 1; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Рез; КонецФункции // глФРПечататьЧек() |
|||
39
Капитан О
21.03.12
✎
08:49
|
(37) поздравляю. сколько параметров?
|
|||
40
Гефест
21.03.12
✎
08:50
|
Молодец. Какие мысли появляются?
|
|||
41
zloy
21.03.12
✎
08:50
|
да хз
параметры же это вот? Параметры = СоздатьОбъект("СписокЗначений"); Параметры.Установить("Процесс" , "печатать_чек"); Параметры.Установить("Объект" , глФР); Параметры.Установить("ПарольПользователя", глФРПарольПользователя); Параметры.Установить("СписокТоваров" , СписокТоваров); Параметры.Установить("СуммаЧека" , СуммаЧека); Параметры.Установить("Получено" , Получено); Параметры.Установить("Скидка" , Скидка); Параметры.Установить("Возврат" , ПризнВозврата); Параметры.Установить("НомерСекции" , НомерСекции); Параметры.Установить("ПриемНаличныхОтЮрЛиц", глФРДляПриемаНаличныхОтЮрЛиц); Параметры.Установить("БезНал", БезНал); Параметры.Установить("Продавец", Продавец); Параметры.Установить("СумБонуса", СумБонуса); |
|||
42
Капитан О
21.03.12
✎
08:51
|
(41) позови программиста
|
|||
43
Гефест
21.03.12
✎
08:51
|
Да что тебя по коду носит, брось якорь возле глФРПечататьЧек и там думай
|
|||
44
zloy
21.03.12
✎
08:52
|
вы мне скажите как это исправить, чтобы я смог напечатать ПКО
|
|||
45
Капитан О
21.03.12
✎
08:52
|
(44) пригласи специалиста, он тебе всё сделает за недорого и даже не испортит
|
|||
46
zloy
21.03.12
✎
08:53
|
объясняйте
|
|||
47
povar
21.03.12
✎
08:53
|
поднял настроение с утра, молодец
|
|||
48
Капитан О
21.03.12
✎
08:53
|
||||
50
mishaPH
21.03.12
✎
08:54
|
глФРПечататьЧек(СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,БезНал,Продавец,СумБонуса)
это глобальник глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,0,""<<?>>) это твой. у тебя не хватает 1 параметра. сумма бонуса. замени свой на глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,0,"",0) |
|||
51
catena
21.03.12
✎
08:54
|
(44)
Функция глФРПечататьЧек(РАЗ_СписокТоваров, ДВА_СуммаЧека, ТРИ_Получено, ЧЕТЫРЕ_Скидка, ПЯТЬ_ПризнВозврата, ШЕСТЬ_НомерСекции, СЕМЬ_НомерЧека,ВОСЕМЬ_БезНал,ДЕВЯТЬ_Продавец,ДЕСЯТЬ_СумБонуса) Экспорт Если глФРПечататьЧек(РАЗ_Список, ДВА_СуммаЧека, ТРИ_Получено, ЧЕТЫРЕ_Скидка, ПЯТЬ_ПризнВозврата, ШЕСТЬ_НомерСекции, СЕМЬ_НомерЧека,ВОСЕМЬ_0,ДЕВЯТЬ_"") = 1 Тогда ДЕВЯТЬ меньше, чем ДЕСЯТЬ. |
|||
52
Mikeware
21.03.12
✎
08:55
|
(30) что буратина - это точно... на редкость деревянный...
|
|||
53
Ёпрст
21.03.12
✎
08:55
|
+49 вниматочно читаем про формальные и фактические параметры, много думаем - смотрим на свой код
|
|||
54
mishaPH
21.03.12
✎
08:56
|
Автор понятно что надо сделать?
|
|||
55
povar
21.03.12
✎
08:56
|
(52) палисандровый
|
|||
56
povar
21.03.12
✎
08:57
|
(51) рано еще цифры учить, надо на палочках научиться считать
|
|||
57
zloy
21.03.12
✎
09:01
|
Функция глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,<<?>>0,"",0) Экспорт
{Глобальный модуль(13478)}: Ожидается имя формального параметра Параметры.Установить("СписокТоваров" , СписокТоваров<<?>>); {Глобальный модуль(13487)}: Переменная не определена (СписокТоваров) Параметры.Установить("СуммаЧека" , СуммаЧека<<?>>); {Глобальный модуль(13488)}: Переменная не определена (СуммаЧека) Параметры.Установить("Получено" , Получено<<?>>); {Глобальный модуль(13489)}: Переменная не определена (Получено) Параметры.Установить("Скидка" , Скидка<<?>>); {Глобальный модуль(13490)}: Переменная не определена (Скидка) Параметры.Установить("Возврат" , ПризнВозврата<<?>>); {Глобальный модуль(13491)}: Переменная не определена (ПризнВозврата) Параметры.Установить("НомерСекции" , НомерСекции<<?>>); {Глобальный модуль(13492)}: Переменная не определена (НомерСекции) Параметры.Установить("БезНал", БезНал<<?>>); {Глобальный модуль(13494)}: Переменная не определена (БезНал) Параметры.Установить("Продавец", Продавец<<?>>); {Глобальный модуль(13495)}: Переменная не определена (Продавец) Параметры.Установить("СумБонуса", СумБонуса<<?>>); {Глобальный модуль(13496)}: Переменная не определена (СумБонуса) Возврат <<?>>Рез; {Глобальный модуль(13512)}: Оператор Return (Возврат) не может употребляться вне процедуры или функции Возврат Рез;<<?>> {Глобальный модуль(13512)}: Обнаружено логическое завершение исходного текста модуля <<?>>КонецФункции // глФРПечататьЧек() {Глобальный модуль(13514)}: Процедура или функция с указанным именем объявлена, но не определена в текущем модуле (глСоздатьТрассировку) <<?>>КонецФункции // глФРПечататьЧек() {Глобальный модуль(13514)}: Процедура или функция с указанным именем объявлена, но не определена в текущем модуле (глСообщениеТрассировки) <<?>>КонецФункции // глФРПечататьЧек() {Глобальный модуль(13514)}: Процедура или функция с указанным именем объявлена, но не определена в текущем модуле (глПоказатьТрассировку) <<?>>КонецФункции // глФРПечататьЧек() {Глобальный модуль(13514)}: Процедура или функция с указанным именем объявлена, но не определена в текущем модуле (глСообщениеПроведения) поменял, вот что выдало |
|||
58
Ёпрст
21.03.12
✎
09:04
|
(57) дятел, надо не в глобальнике менять, а в вызове функции добавить 1 параметр
|
|||
59
zloy
21.03.12
✎
09:05
|
объясни подробнее пжлст
|
|||
60
Гефест
21.03.12
✎
09:05
|
У тебя девушки надеюсь нет? Ты не туда суешь, совать надо при вызове процедуры, а не в описание процедуры
|
|||
61
povar
21.03.12
✎
09:05
|
даже Ёпрста довел, вот злодей
|
|||
62
zloy
21.03.12
✎
09:06
|
подробно расскажите где это поменять?
|
|||
63
ТакВотЖе
21.03.12
✎
09:06
|
никто человеку не сказал, что нужно архив базы сделать.
сейчас он наменяет. |
|||
64
Капитан О
21.03.12
✎
09:06
|
(62) как вариант: вызывать с десятью параметрами, а не с девятью
|
|||
65
zloy
21.03.12
✎
09:07
|
а как это сделать? что где поменять?
|
|||
66
Капитан О
21.03.12
✎
09:07
|
(65) вот ты скажи, тебе это всё зачем?
|
|||
67
povar
21.03.12
✎
09:07
|
автору не дают покоя, лавры Светы Семененко
|
|||
68
zloy
21.03.12
✎
09:07
|
чтобы ПКО вывести
|
|||
69
zloy
21.03.12
✎
09:08
|
помогайте не трольте
|
|||
70
mishaPH
21.03.12
✎
09:08
|
(65) я тебе же написал... где поменять. накуя ты в глобальнике поменял пля.
|
|||
71
Ёпрст
21.03.12
✎
09:08
|
(65) замени вот это
Если глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,0,"") = 1 Тогда вот этим Если глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека,0,"",0) = 1 Тогда Хотя это и не правильно, ну да ладно |
|||
72
Капитан О
21.03.12
✎
09:08
|
(68) зачем тебе ПКО вывести? зачем тебе вообще эта работа?
|
|||
73
Aswed
21.03.12
✎
09:09
|
Пятница???
|
|||
74
zloy
21.03.12
✎
09:09
|
для отчета в налоговую
|
|||
75
zloy
21.03.12
✎
09:09
|
ёпртс где это менять?
|
|||
76
Капитан О
21.03.12
✎
09:09
|
быстрый старт в профессию случаем не смотрел?
|
|||
77
povar
21.03.12
✎
09:10
|
франч ?
|
|||
78
Ёпрст
21.03.12
✎
09:10
|
Догадайся сам, найди знакомые буковки в коде
|
|||
79
Капитан О
21.03.12
✎
09:10
|
(78) ох, жесток ты
|
|||
80
Гефест
21.03.12
✎
09:11
|
(78) Там засада, в разных местах буквы одинаковые
|
|||
81
Aswed
21.03.12
✎
09:12
|
Я предлагаю начать с изучения алфавита.
|
|||
82
Ёпрст
21.03.12
✎
09:12
|
Вообще, тупой развод
|
|||
83
zloy
21.03.12
✎
09:13
|
ну где находится то эта функция? как открыть её чтобы поменять?
|
|||
84
povar
21.03.12
✎
09:14
|
суровый Свердловский 1Сник
|
|||
85
Aswed
21.03.12
✎
09:14
|
Милять ну нельзя же так же прям с утра то))))
Я кофе допить не могу, сижу ржу в голос))))) |
|||
86
mishaPH
21.03.12
✎
09:14
|
{Документ.ПКО.Форма.Модуль(897)}:
|
|||
87
Капитан О
21.03.12
✎
09:15
|
(83) продолжай выкладывать код, может, быстрее угадаешь
//надеюсь на бан |
|||
88
catena
21.03.12
✎
09:15
|
(83)У тя изначально ошибка где была? Документ.ПКО.Форма.Модуль(897) Найди и там и правь
|
|||
89
Ёпрст
21.03.12
✎
09:15
|
(83) используй силу, чтоб узнать где она , точнее где вызов этой функции.
|
|||
90
Aswed
21.03.12
✎
09:15
|
(88) Изначально ошибка в коде, только генетическом)))))
|
|||
91
catena
21.03.12
✎
09:16
|
(90)Ну не факт, может у него просто именно в этом таланту нет.
|
|||
92
Капитан О
21.03.12
✎
09:17
|
(91) вот такой вот генетический код попался, значит. ущербный только с одной стороны
|
|||
93
Aprobator
21.03.12
✎
09:17
|
сегодня попкорн с карамелью есть? А то тут шоу, чувствуется, еще надолго.
|
|||
94
Mikeware
21.03.12
✎
09:23
|
(84)он мечется между ебургом и челябинском... :-))
поэтому он вдвое суровеее.... |
|||
95
Aswed
21.03.12
✎
09:30
|
Ну вот. Обидели человека. Он ведь просто хотел здесь найти помощи, а вам лишь бы поржать. Животные!
|
|||
96
Aswed
21.03.12
✎
09:31
|
(0) Топик стартер, если ты здесь то пиши, я помогу. Я ни такой как они, я в самом деле хочу помочь.
|
|||
97
Mikeware
21.03.12
✎
09:36
|
(96) не поможешь...
|
|||
98
Ёпрст
21.03.12
✎
09:37
|
(96) врят ли, разве что у тебя есть знакомый нейрохирург
|
|||
99
Aswed
21.03.12
✎
09:41
|
(97) Тсссссс, он то об этом не знает;)
|
|||
100
Капитан О
21.03.12
✎
09:43
|
сто!
|
|||
101
zloy
21.03.12
✎
09:48
|
всё спасибо всем кто помогал, всё получилось!
|
|||
102
Mikeware
21.03.12
✎
09:53
|
побаяню:
идет мужик по нью-йорку, видит, стоит негр и пьет молоко прямо из пакета.... мужик постоял-постоял, посмотрел-посмотрел... головой покачал, и говорит негру: -"Не, не поможет..." © |
|||
103
catena
21.03.12
✎
10:03
|
(101)Рано. Хороший был старт, мог и до 300 тянуть.
|
|||
104
mishaPH
21.03.12
✎
10:52
|
(101) аминь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |