|
v7: Ввести на основании | ☑ | ||
---|---|---|---|---|
0
Yasher56
09.07.18
✎
12:59
|
Имеется ТиС 9.2.
В ней необходимо реализовать печать чека из документа реализации. В конфигураторе ставлю галку на является основанием для чекККМ. При попытке вывести на основании реализации чекККМ выводит Касса = ДокументОснование.Касса; {Документ.ЧекККМ.Форма.Модуль(879)}: Поле агрегатного объекта не обнаружено (Касса). Куда закопаться? |
|||
1
Salimbek
09.07.18
✎
13:01
|
(0) Можешь начать с Документ.ЧекККМ.Форма.Модуль(879)
|
|||
2
Cool_Profi
09.07.18
✎
13:02
|
Я буду неоргинальным, но в отладчик.... Наверное, у тебя у тебя в реалициии нет кассы...Или, что очень страннно - в чеке нет кассы....
Посмотри на Документ.ЧекККМ.Форма.Модуль(879) |
|||
3
uno-group
09.07.18
✎
13:03
|
Обратиться к программисту.
|
|||
4
Yasher56
09.07.18
✎
13:07
|
(3) из своего кармана платить заставят))
|
|||
5
Yasher56
09.07.18
✎
13:08
|
(1) ////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ // //****************************************************************************** // СписаниеОстатковТМЦ(ТаблНоменклатуры) // // Параметры: // ТаблНоменклатуры - таблица номенклатуры (должна содержать колонки // 1) "Номенклатура" // 2) "Количество" // 3) "СуммаРуб" (для розничного склада) // 4) "СкидкаРуб" (для розничного склада) // // Возвращаемое значение: // Нет // // Описание: // Проведение списания остатков ТМЦ со склада по регистру "ОстаткиТМЦ" // без контроля остатков. // Процедура СписаниеОстатковТМЦ(ТаблНоменклатуры) РегОстатки = Регистр.ОстаткиТМЦ; ТаблНоменклатуры.ВыбратьСтроки(); Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл ТекНоменклатура = ТаблНоменклатуры.Номенклатура; Если (ТекНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга) или (ТекНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) или (ТаблНоменклатуры.Количество = 0) Тогда Продолжить; КонецЕсли; // Измерения РегОстатки.Фирма = Фирма; РегОстатки.Склад = Склад; РегОстатки.Номенклатура = ТекНоменклатура; // Ресурсы РегОстатки.Количество = ТаблНоменклатуры.Количество; РегОстатки.ЦенаПрод = ТаблНоменклатуры.ЦенаПрод; // Реквизиты РегОстатки.Внутреннее = 0; РегОстатки.ДвижениеРасходВыполнить(); КонецЦикла; КонецПроцедуры // СписаниеОстатковТМЦ() //****************************************************************************** // ПроведениеПоРегистрам(ПараметрПроведения) // // Параметры: // ПараметрПроведения - строка - может принимать значение "НеКонтролироватьОстаткиТМЦ" // // Возвращаемое значение: // Нет. // // Описание: // Проведение по регистрам оперативного учета. В случае если ПараметрПроведения // равен "НеКонтролироватьОстаткиТМЦ" документ проводится без контроля // отрицательных остатков ТМЦ. // Процедура ПроведениеПоРегистрам(ПараметрПроведения) Перем ВремРегистры; Перем ВремОстаткиТМЦ, ВремРезервыТМЦ; Перем КодОперации; Перем ФирмаДляОстатковТМЦ; // Удаление движений по регистрам. Для Номер = 1 По Метаданные.Регистр() Цикл ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор); КонецЦикла; ТаблицаУслуг = СоздатьОбъект("ТаблицаЗначений"); ТаблицаТМЦ = глПодготовитьТаблицуДокумента(Контекст,1,ТаблицаУслуг); КодОперации = глКО.РозничнаяПродажа; ФирмаДляОстатковТМЦ = глФирмаДляОстатковТМЦ(Фирма); СписокПараметров = СоздатьОбъект("СписокЗначений"); СписокПараметров.ДобавитьЗначение(ТекущийДокумент(), "ТекДок"); СписокПараметров.ДобавитьЗначение(Склад, "Склад"); СписокПараметров.ДобавитьЗначение(Фирма, "Фирма"); СписокПараметров.ДобавитьЗначение(ФирмаДляОстатковТМЦ, "ФирмаДляОстатковТМЦ"); СписокПараметров.ДобавитьЗначение(КодОперации, "КодОперации"); Если ВидОперации = Перечисление.ВидыОперацийЧекККМ.Чек Тогда // продажа Если ПараметрПроведения = "НеКонтролироватьОстаткиТМЦ" Тогда СписаниеОстатковТМЦ(ТаблицаТМЦ); Иначе ВремРегистры = СоздатьОбъект("Регистры"); ВремОстаткиТМЦ = ВремРегистры.ОстаткиТМЦ; ВремРезервыТМЦ = ВремРегистры.РезервыТМЦ; глФильтрОстатковТМЦ(Контекст,ТаблицаТМЦ,СписокПараметров,ВремОстаткиТМЦ,ВремРезервыТМЦ); Если ИтогиАктуальны()=0 Тогда ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; // остатки ТМЦ Если глСписаниеОстатковТМЦ (Контекст,ТаблицаТМЦ,СписокПараметров, ВремОстаткиТМЦ, ВремРезервыТМЦ)=0 Тогда Возврат; КонецЕсли; КонецЕсли; Иначе // чек на возврат глПриходОстатковТМЦ (Контекст,ТаблицаТМЦ,СписокПараметров); КонецЕсли; // оприходуем деньги в кассу Регистр.Касса.Фирма = Фирма; Регистр.Касса.Касса = Касса; Регистр.Касса.Валюта = Валюта; Регистр.Касса.СуммаВал = Итог("Сумма"); Регистр.Касса.СуммаУпр = глПересчет(Итог("Сумма"),Валюта,Курс,глДоллары,ДатаДок,Кратность); Регистр.Касса.СуммаРуб = глПересчет(Итог("Сумма"),Валюта,Курс,глРубли, ДатаДок,Кратность); Регистр.Касса.КодОперации = КодОперации; Если ВидОперации = Перечисление.ВидыОперацийЧекККМ.Чек Тогда // продажа Регистр.Касса.ДвижениеПриходВыполнить(); Иначе Регистр.Касса.ДвижениеРасходВыполнить(); КонецЕсли; КонецПроцедуры // ПроведениеПоРегистрам() //////////////////////////////////////////////////////////////////////////////// // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ // //****************************************************************************** // Предопределенная процедура. // Процедура ОбработкаПроведения(ПараметрПроведения) // ПараметрПроведения может принимать значение "НеКонтролироватьОстаткиТМЦ" // (например из обработки On_ams.ert - обработки обслуживания ККМ АМС-100Ф, // подключенной в режиме On-Line). В этом случае при проведении текущего // документа не выподняется контроль отрицательных остатков ТМЦ. // Проверка заполненности обязательных реквизитов. Если глВсеРеквизитыДокументаЗаполнены(Контекст, "Фирма,Склад,Валюта,Касса")=0 Тогда Возврат; КонецЕсли; НеобходимаяСумма = 0; СуществуютНезаполенныеСтроки = 0; ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл НеобходимаяСумма = НеобходимаяСумма + Сумма; Если ПустоеЗначение(Номенклатура) = 1 Тогда Сообщить("В строке " + НомерСтроки + " не выбрана номенклатура!","i"); СуществуютНезаполенныеСтроки = 1; КонецЕсли; КонецЦикла; Если СуществуютНезаполенныеСтроки = 1 Тогда СтатусВозврата(0); Возврат; КонецЕсли; // Проведение по регистрам оперативного учета. Если (ПустоеЗначение(ПараметрПроведения) = 1) или (Найти(ПараметрПроведения, "Регистр") <> 0) или (ПараметрПроведения = "НеКонтролироватьОстаткиТМЦ") Тогда ПроведениеПоРегистрам(ПараметрПроведения); Если СтатусВозврата() = 0 Тогда Возврат; КонецЕсли; КонецЕсли; глПриПроведении(Контекст, ПараметрПроведения); Если Касса.РежимККМ = Перечисление.РежимыККМ.ФР Тогда Если глФРВкл = 0 Тогда глНеПроводить(Контекст, "ККМ в режиме фискального регистратора не подключена!"); //{{MRG[ <-> ] // ИначеЕсли (Получено < НеобходимаяСумма) и (Получено<>0) и (ОплатаКартой = 0) Тогда //тщи если Получено < СуммаЧека, то значит оплата идет по банковской карте //}}MRG[ <-> ] //{{MRG[ <-> ] ИначеЕсли Получено < НеобходимаяСумма Тогда //}}MRG[ <-> ] глНеПроводить(Контекст, "Полученной суммы недостаточно для оплаты!"); ИначеЕсли глФРДляПриемаНаличныхОтЮрЛиц = 1 Тогда глНеПроводить(Контекст, "ККМ в режиме фискального регистратора предназначена для приема наличных платежей от юр. лиц!"); КонецЕсли; КонецЕсли; КонецПроцедуры //ОбработкаПроведения() //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ |
|||
6
1Сергей
09.07.18
✎
13:09
|
(5) Ввод на основании делается в форме документа, емнип
|
|||
7
Yasher56
09.07.18
✎
13:10
|
(6) в форме документа галочки проставлены
|
|||
8
FIXXXL
09.07.18
✎
13:12
|
(0) тебе Чек как документ в системе нужен? Или только распечатка на основе Реализации?
|
|||
9
vladko
09.07.18
✎
13:13
|
(7) тебе говорят, что модуль проведения документа не к чему тут постить, заполнение на основании в 7.7 осуществляется в модуле формы.
|
|||
10
Yasher56
09.07.18
✎
13:13
|
(8) конечно лучше всего добавить документ. а так пойдет как распечатка
|
|||
11
HK_Mers
09.07.18
✎
13:14
|
(0)В реализации есть реквизит Касса?
|
|||
12
Yasher56
09.07.18
✎
13:19
|
(11) нет. нужно добавить?
|
|||
13
Yasher56
09.07.18
✎
13:23
|
(11) после добавления пишет
Неверный вид документа - основания! |
|||
14
HK_Mers
09.07.18
✎
13:24
|
(12) даже не знаю что и сказать ... лучше, конечно, к программисту )
простое добавление уберет эту ошибку, но дальше всё равно будут вопросы. к тому же в данном случае добавить реквизит - самый плохой вариант |
|||
15
HK_Mers
09.07.18
✎
13:25
|
(13) значит не все галочки проставил
конфигурация измененная? сколько касс используется? |
|||
16
Yasher56
09.07.18
✎
13:26
|
(15) в конфигурацию подгружена обработка для онлайн касс с инфостарта. купленная за мои финансы. в остальном она типовая.
|
|||
17
Diman_Kr
09.07.18
✎
13:30
|
Без программиста вряд-ли взлетит!
|
|||
18
HK_Mers
09.07.18
✎
13:30
|
(16) "обработка для онлайн касс с инфостарта. купленная за мои финансы." (с)
т.е. это нормально у вас на предприятии? p.s. хотя и не такое ещё встречала. |
|||
19
Yasher56
09.07.18
✎
13:31
|
(18) да, нормально)) Вот и сижу ломаю голову
|
|||
20
Масянька
09.07.18
✎
13:31
|
(13) Процедура СделатьЧек()
// делаем сам чек ДокЧек = СоздатьОбъект("Документ.ЧекККМ"); ДокЧек.Новый(); ДокЧек.Склад = Склад; ДокЧек.Касса = Константа.КассаККМ; ДокЧек.Валюта = Валюта; ДокЧек.Курс = Курс; ДокЧек.Кратность = Кратность; ДокЧек.Получено = Итог("Сумма"); ДокЧек.ВидОперации = Перечисление.ВидыОперацийЧекККМ.Чек; ДокЧек.ДокОснование = ТекущийДокумент(); ДокЧек.Автор = Автор; ДокЧек.Проект = Проект; ДокЧек.Фирма = Фирма; ДокЧек.ЮрЛицо = Фирма.ЮрЛицо; ВыбратьСтроки(); Пока (ПолучитьСтроку() = 1) Цикл ДокЧек.НоваяСтрока(); ДокЧек.Номенклатура = Номенклатура; ДокЧек.Количество = Количество; ДокЧек.Единица = Единица; ДокЧек.Коэффициент = Коэффициент; ДокЧек.Цена = Цена; ДокЧек.Сумма = Сумма; КонецЦикла; ДокЧек.Записать(); ДокЧек.Провести(); // печатаем чек на ККМ Конт = "Пробить_чек"; ОткрытьФорму(ДокЧек.ТекущийДокумент(), Конт); //Конт.ПробитьЧекНаККМ(); //Конт.Форма.Закрыть(); КонецПроцедуры // СделатьЧек Но - полностью поддержу предыдущих оратор - позовите спеца. А учитесь - на кошках. |
|||
21
Масянька
09.07.18
✎
13:32
|
(16) Обработка - взята типовая (Equip), слегка отрихтована напильником. Совсем слегка.
|
|||
22
Yasher56
09.07.18
✎
13:33
|
(20) получается сделать кнопку, которая будет ссылаться на этот код?
|
|||
23
Масянька
09.07.18
✎
13:34
|
(22) Лучше на инфузориях... Хотя, блин, и их жалко...
Во - на тараканах! |
|||
24
HK_Mers
09.07.18
✎
13:35
|
(20) теперь ему ещё придется объяснить куда вставить эту процедуру.
а он на основании пытается делать. логичнее в чеке править Ввод на основании |
|||
25
Злопчинский
09.07.18
✎
13:35
|
Если виктуановская обработка то там есть подробнейшая инструкция как и что делать.
Если чек нужен для реального поступления денег в кассу или из кассы, то на основании реализации оформляется пко или рко и кассовый чек бьётся из пко или рко. Если бабло не поступает то никакого реквизита касса не нужно. Птгтняйте тараканов в голове |
|||
26
Злопчинский
09.07.18
✎
13:36
|
(18) а что здесь ненормального?
Вполне рядовая нормальная ситуация. |
|||
27
Duke1C
09.07.18
✎
13:36
|
(16) Ну смотря какую купил, если вот эту: http://catalog.mista.ru/public/603118/ (не реклама), то там есть механизм для печати чека как внешней печатной формы, и никакой огород городить не нужно
А вообще подход из (0) полностью неправильный. Мало того, что конфигурацию перепахать нужно будет, так еще и товар будет списываться 2 раза: и Реализацией и Чеком (ну разве что Реализацию потом распроводить, что тоже геморройно) Штатно нужно делать ПКО на основании Реализации и оттуда бить чек |
|||
28
Cool_Profi
09.07.18
✎
13:37
|
(23) Ну, тараканов тебе не занимать...
|
|||
29
Масянька
09.07.18
✎
13:38
|
(28) Завидуй мовчки.
|
|||
30
Масянька
09.07.18
✎
13:40
|
(25) (27) В принципе - без разницы. Только есть нюансы (вслух не скажу).
И отменить движения чека - религия запрещает? |
|||
31
Yasher56
09.07.18
✎
13:41
|
(27) в общем так как ламер в 1с 7.7, как эту обработку и впилил. Чеки печатает. все хорошо. но у нас есть оплата по терминалу. он к компу не подключен. соответственно списывается товар, но чек нужно отправить. вот и думаю как из реализации распечатать чек с пометкой оплата картой.
|
|||
32
Yasher56
09.07.18
✎
13:49
|
(27) подключил внешнюю печатную форму. чек вышел все хорошо.
единственное пишет: Не удалось записать в документ реквизиты чека ККМ: Объект заблокирован: Реализация К000002608 (09.07.18) Можно это как нибудь убрать? |
|||
33
Cool_Profi
09.07.18
✎
13:51
|
(29) Да мне своих хватает, чему завидовать?
|
|||
34
Kigo_Kigo
09.07.18
✎
14:05
|
Да возмите вы функция из чека
Функция ПробитьЧекНаККМ() перетащите в реализацию, повесте ее на кнопку - пробить чек, и бейте чеки сколько влезет без документа ЧекККМ |
|||
35
Duke1C
09.07.18
✎
14:09
|
(32) Видимо добавил принудительно реквизит НомерЧекаККМ в шапку Реализации, поэтому и пишет.
Убери его, номер чека будет писАться в комментарий документа |
|||
36
Duke1C
09.07.18
✎
14:12
|
+35 Это если мы говорим о разработке указанной мной в (27)
|
|||
37
Yasher56
09.07.18
✎
14:15
|
(35) в реквизитах в реализации нет номера чека ккм
|
|||
38
Duke1C
09.07.18
✎
14:21
|
(37) Тогда наоборот попробуй добавить:)
Помню у одного клиента выскакивало такое, не помню как решил. У меня все клиенты работают штатно, через ВПФ только один |
|||
39
Duke1C
09.07.18
✎
14:24
|
+38 версия обработки, кстати какая, может просто обновить надо
|
|||
40
Yasher56
09.07.18
✎
14:27
|
(39) версия 2.6.2. Понял причину почему выскакивает. Если документ сначала провели, а потом печатаем чек, то модуль чека пытается в документ добавить свой номер, а документ открыт и не позволяет перепровести его. если на непроведенном документе делать печать чека. то никакой ошибки не выскакивает.
Есть возможность убрать добавление реквизита? |
|||
41
Cthulhu
09.07.18
✎
14:58
|
Если Метаданные.Документ(Вид()).РеквизитШапки("ДокументОснование").Выбран()<>0 Тогда
Если ТипЗначения(ДокументОснование)=12 Тогда Если ДокументОснование.Выбран()<>0 Тогда Если Метаданные.Документ(ДокументОснование(Вид()).РеквизитШапки("Касса").Выбран()<>0 Тогда Касса=ДокументОснование.Касса; // только про тип+вид не забыть - а то может и не прописать Иначе Сообщить("Документ """+ДокументОснование +""" - не имеет реквизита ""Касса"" из которого вы пытаетесь что-то вытянуть!..","!!!") КонецЕсли; Иначе Сообщить("Реквизит """+ДокументОснование+""" - пустой, вытянуть ничего не получится!..","!!!") КонецЕсли; ИначеЕсли ТипЗначения(ДокументОснование)=11 Тогда // экзотика, конечно, но в принципе возможно: Если ДокументОснование.Выбран()<>0 Тогда Если Метаданные.Справочник(ДокументОснование(Вид()).Реквизит("Касса").Выбран()<>0 Тогда Касса=ДокументОснование.Касса; // только про тип+вид не забыть - а то может и не прописать Иначе Сообщить("Справочник """+ДокументОснование +""" - не имеет реквизита ""Касса"" из которого вы пытаетесь что-то вытянуть!..","!!!") КонецЕсли; Иначе Сообщить("Реквизит """+ДокументОснование+""" - пустой, вытянуть ничего не получится!..","!!!") КонецЕсли; Иначе Сообщить("Реквизит """+ДокументОснование +""" - не Документ и не Справочник, хз как и что вы из него вытягивать собираетесь!..","!!!") КонецЕсли; Иначе Сообщить("Документ вида """+ПредставлениеВида() +""" - не имеет реквизита ""ДокументОснование"" из которого вы пытаетесь вытянуть Кассу!..","!!!") КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |